Oracle Database 12c: podstawy administracji. Maciej Zakrzewicz ExplainIT.pl

Podobne dokumenty
UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

startup pfile= '$HOME/admin/pfile/initDBx.ora'; create spfile from pfile= '$HOME/admin/pfile/initDBx.ora';

Zarządzanie obiektami bazy danych Oracle11g

Zarządzanie strukturą bazy danych Oracle11g

Partycjonowanie tabel (1)

Partycjonowanie. Partycjonowanie tabel (1)

PODSTAWY BAZ DANYCH Wykład Partycjonowanie tabel i indeksów

Uprawnienia, role, synonimy

PODSTAWY BAZ DANYCH. 10. Partycjonowanie tabel i indeksów. 2009/ Notatki do wykładu "Podstawy baz danych"

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z

Zadania do wykonania na laboratorium

Wydajność hurtowni danych opartej o Oracle10g Database

Przed modyfikacją buforów danych proces serwera zapisuje w buforze dziennika powtórzeń wszystkie zmiany dokonane w bazie danych.

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2. zadania

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

Hurtownie danych - przegląd technologii

ORACLE partycjonowanie

Wykład IV Modelowanie danych, projektowanie systemu informatycznego Modelowanie konceptualne implementacyjne Modelowanie pojęciowe na encjach

(a) T (b) N (c) N (d) T

Zbiór pytań nr 2. 1 Tabela DEPARTMENTS ma następującą strukturę:

Ile rekordów będzie zawierała tabela przy założeniu, że na początku była pusta?

1 Projekt fizyczny 1. 3 Perspektywy słownika danych Źródła 12

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

Bazy danych - Materiały do laboratoriów VIII

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Projektowanie systemów baz danych

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

(c) Politechnika Poznańska, Instytut Informatyki

Wykład 8. SQL praca z tabelami 5

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Bazy danych wykład szósty Więzy i wyzwalacze. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Zarządzanie wolną przestrzenią w bloku. Rozszerzenia

Administracja bazy danych Oracle 10g

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane.

Cwiczenie 7. Retrospekcja

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

SQL :: Data Definition Language

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Język SQL, zajęcia nr 1

bazy danych - heterogeniczność producenci funkcjonalność modele danych protokoły komunikacyjne

Bazy danych. Polecenia SQL

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Architektura Systemu Zarządzania Bazą Danych Oracle

Język SQL. Rozdział 8. Język manipulowania danymi DML

kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli

Bazy danych Ćwiczenia projektowe

Oracle PL/SQL. Paweł Rajba.

Oracle11g: Wprowadzenie do SQL

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Bazy danych Ćwiczenia projektowe

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

PL/SQL. Zaawansowane tematy PL/SQL. Piotr Medoń

Relacyjne bazy danych. Podstawy SQL

Ref. 7 - Język SQL - polecenia DDL i DML

Wykład 2. SQL 1 Structured Query Lenguage

Organizacja przestrzeni danych (2) Struktura bazy danych Oracle. Przestrzenie tabel. baza danych. tabel. tabel. struktury. (relacje, schematy,

Wykład 5. SQL praca z tabelami 2

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Oracle10g Database: struktury fizyczne dla hurtowni danych

Paweł Rajba

Autor: Joanna Karwowska

Widok Connections po utworzeniu połączenia. Obszar roboczy

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Cele. Definiowanie wyzwalaczy

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

System Oracle podstawowe czynności administracyjne

Język SQL. Rozdział 9. Język definiowania danych DDL, cześć 1. Tworzenie relacji, typy danych, wartości domyślne atrybutów, słownik bazy danych.

Internetowe bazy danych

Bazy danych Ćwiczenia projektowe

PODSTAWY BAZ DANYCH 13. PL/SQL

SQL w języku PL/SQL. 2) Instrukcje języka definicji danych DDL DROP, CREATE, ALTER, GRANT, REVOKE

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Bazy Danych i Usługi Sieciowe

Nowe technologie baz danych

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Relacyjne bazy danych. Podstawy SQL

"Kilka słów" o strojeniu poleceń SQL w kontekście Hurtowni Danych wprowadzenie. Krzysztof Jankiewicz

Procedury wyzwalane. Rozdział 13. Procedury wyzwalane. Cele stosowania procedur wyzwalanych. Definiowanie procedury wyzwalanej DML

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

Bazy danych 6. Klucze obce. P. F. Góra

Bazy danych 10. SQL Widoki

Aspekty aktywne baz danych

Zbiór pytań nr 5. 2 Które stwierdzenie opisuje najlepiej zbiór uprawnień dostępny po wykonaniu

Wykład 05 Bazy danych

Cwiczenie 4. Połączenia, struktury dodatkowe

Administracja i programowanie pod Microsoft SQL Server 2000

Używany kiedy pełna treść instrukcji SQL jest nieznana przed uruchomieniem programu.

Plan ćwiczenia. Rozdział 16 Uwierzytelnianie i autoryzacja w bazie danych. Użytkownicy i schematy (1) Użytkownicy i schematy (2) baza danych: ZESP99

Transkrypt:

Maciej Zakrzewicz ExplainIT.pl

ROZDZIAŁ 7 ZARZĄDZANIE TABELAMI 2 2

PLAN ROZDZIAŁU zarządzanie tabelami bazy danych Rodzaje tabel Segmenty, ekstenty, bloki ROWID Wskaźnik wysokiej wody Tworzenie podstawowych typów tabel: tabele zwykłe tabele partycjonowane tabele kompresowane tabele tymczasowe tabele szyfrowane Ograniczenia integralnościowe Operacje administracyjne 3

TABELE rodzaje tabel bazy danych Podział logiczny Podział wg trwałości danych relacyjne trwałe obiektowe tymczasowe Podział fizyczny Tabele szyfrowane sterta (heap) tabela-indeks (index-organized table) klaster indeksowy klaster haszowy partycjonowana kompresowana zewnętrzna 4

JAK TABELE SĄ ZAPISANE W PLIKACH DANYCH struktury fizycznej reprezentacji tabeli w plikach danych zapisana jako segment tabela rozbity na ekstent 0 ekstent 2 blok blok blok blok blok blok ekstent 1 blok blok blok plik danych plik danych przestrzeń tabel 5

JAKIE EKSTENTY MA MOJA TABELA perspektywa dba_extents SQL> select segment_name, extents from dba_segments where segment_name='demo' and owner='scott'; SEGMENT_NAME EXTENTS ------------- ------- DEMO 6 SQL> select extent_id, file_id, block_id, bytes from dba_extents where segment_name='demo' and owner='scott' EXTENT_ID FILE_ID BLOCK_ID BYTES ---------- ---------- ---------- ---------- 0 6 216 65536 1 6 224 65536 2 6 232 65536 3 6 240 65536 4 6 248 65536 5 6 256 65536 6

JAK WYMIAROWANE SĄ EKSTENTY zasady przydziału ekstentów dla tabeli Tabela automatycznie otrzymuje od serwera nowy ekstent gdy brakuje miejsca w dotychczasowych ekstentach Rozmiar przydzielanego ekstentu zależy od ustawień przestrzeni tabel: EXTENT MANAGEMENT LOCAL UNIFORM SIZE x każdy ekstent ma rozmiar X efektywne dla dużych tabel (można uzyskać niską fragmentację) EXTENT MANAGEMENT LOCAL AUTOALLOCATE 16 pierwszych ekstentów tabeli ma rozmiar 8 bloków (np. 64KB) kolejne ekstenty mają rozmiar 128 bloków (np. 1MB) w rezultacie szybko rosnące tabele otrzymują coraz większe ekstenty 7

JAK ZBUDOWANY JEST BLOK DANYCH wewnętrzna budowa bloku danych Header Table Directory Row Directory Free Space Row Data Rozmiar bloku jest jednakowy w całej przestrzeni tabel (zwykle też w całej bazie danych) domyślnie 8KB Każdy blok należy do dokładnie jednego ekstentu Wstawiane rekordy stopniowo wypełniają wolne miejsce w bloku Po zapełnieniu bloku, kolejne rekordy są zapisywane do następnego bloku 8

JAK BLOK JEST WYPEŁNIANY REKORDAMI rezerwowanie wolnej przestrzeni dla przyszłych modyfikacji Nowe rekordy są umieszczane w bloku tak długo, aż ilość wolnego miejsca spadnie poniżej parametru PCTFREE Pozostawiane wolne miejsce posłuży w przyszłości do rozszerzania rekordów w wyniku ich modyfikacji Domyślne PCTFREE = 10% Zalecane PCTFREE = 0 dla tabel, które: nigdy nie podlegają modyfikacji posiadają rekordy stałej długości Brak wolnego miejsca na modyfikację spowoduje migrację rekordu do innego bloku w pierwotnym bloku pozostanie wskaźnik przekierowania gorsza wydajność 9

JAK ODNALEŹĆ ZMIGROWANE REKORDY wyszukanie i naprawienie zmigrowanych rekordów SQL> analyze table demo compute statistics; SQL> select num_rows, chain_cnt from dba_tables where table_name='demo' and owner='scott'; NUM_ROWS CHAIN_CNT ---------- ---------- 8192 40 SQL> @?/rdbms/admin/utlchain.sql SQL> analyze table demo list chained rows; SQL> select head_rowid from chained_rows; HEAD_ROWID ------------------ AAAWxFAAGAAAAJAACH AAAWxFAAGAAAAJAACI... Naprawienie zmigrowanych rekordów polega na ich usunięciu i ponownym umieszczeniu w tabeli W przypadku małych tabel: alter table DEMO move; expdp/impdp Jednocześnie warto skorygować PCTFREE na przyszłość 10

CO TO JEST ROWID struktura identyfikatora rekordu Każdy rekord posiada niepowtarzalny adres fizyczny pseudokolumnę ROWID ROWID ma rozmiar 10 bajtów: bity 1 do 32 (bajty 1 do 4): identyfikator obiektu (0-4294967295) bity 33 do 44 (bajt 5 i pół bajtu 6): numer pliku (0-4095) bity 45 do 64 (pół bajtu 6 i bajty 7 i 8): numer bloku w pliku (0-1048575) bity 65 do 80 (bajty 9 i 10): numer rekordu w bloku (0-65535) Podczas wyświetlania (np. select rowid from emp) stosowane jest kodowanie radix 64 (A-Za-z0-9+/): OOOOOOFFFBBBBBBRRR W przestrzeniach tabel BIGFILE, numer pliku i numer bloku są łączone w numer bloku Pakiet DBMS_ROWID umożliwia dekodowanie ROWID: SQL> select DBMS_ROWID.ROWID_OBJECT(rowid) "OBJECT", DBMS_ROWID.ROWID_RELATIVE_FNO(rowid) "FILE", DBMS_ROWID.ROWID_BLOCK_NUMBER(rowid) "BLOCK", DBMS_ROWID.ROWID_ROW_NUMBER(rowid) "ROW" from demo 11

WSKAŹNIK WYSOKIEJ WODY High Water Mark (HWM) zapisana jako segment tabela ekstent 0 ekstent 1 plik danych przestrzeń tabel rozbity na ekstent 2 plik danych Wskaźnik wysokiej wody (HWM) wskazuje ostatni blok tabeli kiedykolwiek użyty do zapisu rekordów. Przesuwa się w przód automatycznie. Nie cofa się przy DELETE! Używany do zatrzymania pełnego odczytu tabeli. 12

JAK PRZESUWA SIĘ HWM podczas wstawiania i usuwania rekordów - demonstracja CREATE TABLE test ( id NUMBER(10), desc VARCHAR2(100)) PCTFREE 10; ANALYZE TABLE test COMPUTE STATISTICS; SELECT BLOCKS, EMPTY_BLOCKS FROM USER_TABLES WHERE TABLE_NAME='TEST'; HWM DECLARE i NUMBER(10); BEGIN FOR i IN 1..10000 LOOP INSERT INTO test VALUES (i,'x'); END LOOP; END; HWM = 20 DELETE test; HWM = 20 blok blok 4kB 4kB blok blok...... blok blok 4kB 4kB blok blok TRUNCATE TABLE test; HWM = 0 blok blok blok blok 13

JAK PRZESUWA SIĘ HWM ALTER TABLE SHRINK SPACE blok 4kB blok 4kB blok 4kB blok blok blok blok blok blok blok 4kB alter table TEST shrink space compact blok 4kB blok 4kB blok 4kB blok blok blok blok blok blok blok 4kB alter table TEST shrink space blok 4kB blok 4kB blok 4kB blok blok blok 4kB Tabela musi mieć włączone pozwolenie na ROW MOVEMENT: alter table TEST enable row movement; 14

JAK UTWORZYĆ TABELĘ ZWYKŁĄ (STERTA) polecenie SQL i własności create table DEMO ( ID number(8), NAZWA varchar2(100), CENA number(8,2)) tablespace USERS [pctfree 20] [nologging]; Domyślna struktura tabeli Fizyczna kolejność rekordów wynika z kolejności ich wstawiania Klauzula NOLOGGING umożliwia pominięcie zapisów operacji INSERT do dziennika powtórzeń gdy dla tabeli będą wykonywane: INSERT ścieżką bezpośrednią SQL*Loader ścieżką bezpośrednią 15

JAK NAZYWAĆ TABELĘ zasady i ograniczenia dotyczące nazw obiektów Od 1 do 30 znaków wyjątek: łączniki bazy danych (db link) do 128 znaków Nie wolno stosować słów kluczowych SQL (np. SELECT) Pierwszy znak musi być literą Dozwolone znaki: litery, cyfry, _, $, # Małe litery są zamieniane na wielkie Powyższe ograniczenia (oprócz limitu długości) można ominąć otaczając nazwę obiektu znakami cudzysłowia w przyszłości każde odwołanie do takiego obiektu też musi otaczać jego nazwę znakami cudzysłowia! 16

JAK UTWORZYĆ TABELĘ PARTYCJONOWANĄ polecenie SQL i własności create table DEMO ( ID number(8), NAZWA varchar2(100), CENA number(8,2)) pctfree 20 partition by range (CENA) (partition CHEAP values less than (1000) tablespace DATA01, partition MEDIUM values less than (10000) tablespace DATA02, partition HIGH values less than (maxvalue) tablespace DATA03) Partycjonowanie zakresowe podział tabeli na partycje każda partycja to oddzielny segment rekordy są automatycznie umieszczane w odpowiedniej partycji na podstawie wartości kolumny partycjonującej 17

METODY PARTYCJONOWANIA TABEL partycjonowanie jednopoziomowe i dwupoziomowe Jednopoziomowe: zakresowe (Range) haszowe (Hash) listowe (List) Dwupoziomowe (subpartycje) Pozostałe Range-hash Range-list Range-range List-list List-range interwałowe (Interval) systemowe (System) referencyjne (Reference) od: 1.01 do: 28.02 od: 1.03 do: 30.04 od: 1.05 do: 30.06 od: 1.07 do: 31.08 RANGE Region Północ Gdańsk Olsztyn Region Południe Kraków Wrocław Region Centrum Warszawa Łódź LIST 33% rekordów 33% rekordów 33% rekordów HASH 18

Partition s2 store_id less than (maxvalue) Partition s1 store_id less than (5) TABELE PARTYCJONOWANE: WYDAJNOŚĆ korzyści z partycjonowania tabel Partition Pruning SALES partitioned table revenue store_id 127,00 1 340,00 1 720,11 3 110,00 3 revenue store_id 99,00 5 1250,10 5 500,00 7 230,50 8 Tabela partycjonowana Optymalizator zapytań pomija odczyt partycji, które na pewno nie zawierają szukanych rekordów Przykład zapytania: SELECT SUM(revenue) FROM stores WHERE store_id BETWEEN 6 AND 8 19

Partition s2 store_id less than (maxvalue) Partition k2 Partition s1 store_id less than (5) Partition k1 TABELE PARTYCJONOWANE: WYDAJNOŚĆ korzyści z partycjonowania tabel Partition-Wise Joins SALES partitioned table revenue store_id 127,00 1 340,00 1 720,11 3 110,00 3 revenue store_id 99,00 5 1250,10 5 500,00 7 230,50 8 STORES partitioned table store_id city 1 New Orleans 2 Chicago 4 New York store_id city 5 Los Angeles 7 Chicago 8 New Orleans Tabele ekwipartycjonowane (taki sam schemat partycjonowania) Połączenie tabel może być realizowane jako połączenia par partycji Przykład zapytania: SELECT SUM(revenue) FROM sales NATURAL JOIN stores WHERE city= New Orleans 20

PARTYCJE: OPERACJE ADMINISTRACYJNE operacje na tabelach partycjonowanych polecenie ALTER TABLE Dodawanie partycji i subpartycji (ADD PARTITION) Zmiana liczby haszowych partycji i subpartycji (COALESCE PARTITION) Usuwanie partycji i subpartycji (DROP PARTITION) Zastąpienie partycji i subpartycji tabelą (EXCHANGE PARTITION) Scalanie partycji i subpartycji (MERGE PARTITIONS) Modyfikacja parametrów domyślnych (MODIFY DEFAULT ATTRIBUTES) Modyfikacja parametrów partycji i subpartycji (MODIFY PARTITION) Dodawanie/usuwanie wartości do list partycjonowania listowego (MODIFY PARTITION ADD/DROP VALUES) Przenoszenie partycji i subpartycji (MOVE PARTITION) Zmiana nazwy partycji i subartycji (RENAME PARTITION) Podział partycji i subpartycji (SPLIT PARTITION) Obcinanie partycji i subpartycji (TRUNCATE PARTITION) 21

JAK UTWORZYĆ TABELĘ KOMPRESOWANĄ polecenie SQL i własności create table DEMO ( ID number(8), NAZWA varchar2(100), CENA number(8,2)) tablespace USERS pctfree 20 row store compress basic Metody kompresji: row basic row advanced [column for query] [column for archive] Kompresja na poziomie bloku Każdy blok tabeli jest kompresowany oddzielnie Blok w Buffer Cache także jest w postaci skompresowanej 22

JAK DZIAŁA KOMPRESJA BLOKÓW w tabelach kompresowanych pusty blok nowe rekordy nowe rekordy nowe rekordy dane bez kompresji osiągnięto PCTFREE: startuje kompresja dane skompresowane dane skompresowane i nieskompresowane Kompresja bloku jest wykonywana w chwili osiągnięcia poziomu wypełnienia (100%-PCTFREE) 23

JAK UTWORZYĆ TABELĘ ZEWNĘTRZNĄ polecenie SQL i własności create directory DYSK1 as '/home/oracle'; create table DEMO ( ID number(8), NAZWA varchar2(100), CENA number(8,2)) organization external ( type ORACLE_LOADER default directory DYSK1 access parameters ( records delimited by newline load when (ID!= BLANKS) fields terminated by ';' ( ID char(8), NAZWA char(100), CENA char(10))) location ('DANE.TXT')) Plik DANE.TXT: 1;LenovoX1 Carbon;7999 2;Dell Inspiron 15;2500 3;HP Stream 13;990 Plik z danymi odczytywany podczas każdego zapytania do tabeli zewnętrznej 24

JAK UTWORZYĆ TABELĘ TYMCZASOWĄ polecenie SQL i własności create global temporary table DEMO ( ID number(8), NAZWA varchar2(100), CENA number(8,2)) Zapisywana w tymczasowej przestrzeni tabel Ograniczenia nie może być partycjonowana, klastrowana, IOT nie może posiadać kluczy obcych nie może posiadać tabel zagnieżdżonych nie stosuje równoległych UPDATE, DELETE i MERGE are not supported nie obsługuje transakcji rozproszonych nie może zawierać kolumn INVISIBLE 25

WŁASNOŚCI TABEL TYMCZASOWYCH trwałość definicji, nietrwałość danych Definicja tabeli jest trwała Dane tabeli są nietrwałe są tracone po zakończeniu sesji (ON COMMIT PRESERVE ROWS) lub po zakończeniu bieżącej transakcji (ON COMMIT DELETE ROWS) Definicja tabeli tymczasowej jest widoczna dla wszystkich uprawnionych sesji Dane tabeli tymczasowej są widoczne tylko dla sesji, która je wprowadziła do tabeli Mogą być wykorzystywane przez programistów jako pamięć prywatna, przeznaczona do przetwarzania dużych zbiorów danych Mogą mieć indeksy, ograniczenia integralnościowe i wyzwalacze Mogą być wykorzystywane przez perspektywy i synonimy oraz łączone z innymi tabelami Dlaczego warto korzystać z tabel tymczasowych? redukcja ilości generowanych danych Undo i Redo poprawa wydajności przetwarzania danych tymczasowych 26

JAK UTWORZYĆ TABELĘ SZYFROWANĄ polecenie SQL i własności create table DEMO ( ID number(8), NAZWA varchar2(100) encrypt, CENA number(8,2)) Wyłączenie szyfrowania kolumny: alter table DEMO modify NAZWA decrypt Wymagane jest wcześniejsze przygotowanie i otwarcie portfela z kluczami szyfrującymi na poziomie instancji Oracle Możliwość wskazania algorytmu kryptograficznego, np.: encrypt using 'AES256' no salt Dane zachowują postać zaszyfrowaną w Buffer Cache, plikach danych i dziennika powtórzeń, kopiach bezpieczeństwa Zajmują więcej miejsca na dysku 27

JAK PRZYGOTOWAĆ PORTFEL Z KLUCZEM SZYFRUJĄCYM na poziomie instancji Oracle Wskaż lokalizację pliku portfela w sqlnet.ora Zrestartuj Listenera ENCRYPTION_WALLET_LOCATION= (SOURCE=(METHOD=FILE)(METHOD_DATA= (DIRECTORY=/u01/app/oracle/product/12.1.0/dbhome_1/wallet))) lsnrctl stop lsnrctl start Wygeneruj portfel z Master Key (zabezpiecza właściwe klucze w słowniku danych), ustaw hasło do portfela SQL> alter system set encryption key identified by pass"; Przy każdym starcie instancji Oracle otwieraj portfel za pomocą hasła SQL> alter system set wallet open identified by pass"; 28

TABELE: OPERACJE ADMINISTRACYJNE zmiana struktury tabeli Dodawanie kolumny: alter table EMP add (DEPT_ID number) Modyfikacja definicji kolumny: alter table EMP modify (NAME varchar2(100)) Usuwanie kolumny: alter table EMP drop column COMM Oznaczenie kolumny jaki niepotrzebnej (do późniejszego usunięcia) : alter table EMP set unused column COMM Usunięcie wszystkich kolumn zaznaczonych jako niepotrzebne: alter table EMP drop unused columns Zmiana nazwy kolumny: alter table EMP rename column COMM to C Przełączenie tabeli w tryb read-only: alter table EMP read only Przeniesienie tabeli do innej przestrzeni tabel: alter table EMP move tablespace USERS 29

TABELE: OPERACJE ADMINISTRACYJNE usuwanie i obcinanie tabeli TRUNCATE TABLE: usuwa wszystkie rekordy tabeli, pozostawia jej definicję DROP TABLE: usuwa wszystkie rekordy tabeli oraz jej definicję można odzyskać usuniętą tabelę z RECYCLE BIN jeśli nie wykonano PURGE (RECYCLE BIN może być wyłączony) TRUNCATE TABLE vs. DELETE TRUNCATE to komenda DDL, wykonująca niejawny COMMIT DELETE to komenda DML (ROLLBACK jest możliwy) DELETE może usuwać wybrane rekordy (WHERE), TRUNCATE zawsze usuwa wszystkie TRUNCATE jest szybsze DELETE indywidualnie usuwa każdy rekord, TRUNCATE zwalnia zaalokowaną pamięć 30

JAKIE TABELE ZNAJDUJĄ SIĘ W BAZIE DANYCH perspektywa DBA_TABLES SQL> select owner, table_name, tablespace_name, pct_free, read_only, compression, temporary, partitioned from dba_tables where owner='hr'; OWNER TABLE_NAME TABLESPACE_NAME PCT_FREE REA COMPRESS T PAR ----- ----------- --------------- -------- --- -------- - --- HR COUNTRIES EXAMPLE 0 NO DISABLED N NO HR JOB_HISTORY EXAMPLE 10 NO DISABLED N NO HR EMPLOYEES EXAMPLE 10 NO DISABLED N NO HR JOBS EXAMPLE 10 NO DISABLED N NO HR DEPARTMENTS EXAMPLE 10 NO DISABLED N NO HR LOCATIONS EXAMPLE 10 NO DISABLED N NO HR REGIONS EXAMPLE 10 NO DISABLED N NO 31

OGRANICZENIA INTEGRALNOŚCIOWE DLA TABEL rodzaje i własności Ochrona poprawności danych NOT NULL PRIMARY KEY UNIQUE REFERENCES CHECK Zarządzanie ograniczeniami integralnościowymi ALTER TABLE <table> ENABLE CONSTRAINT <constraint> ALTER TABLE <table> DISABLE CONSTRAINT <constraint> ALTER TABLE <table> DROP CONSTRAINT <constraint> ALTER TABLE <table> DROP CONSTRAINT <constraint> CASCADE ALTER TABLE <table> ADD CONSTRAINT <constraint> <definition> DROP TABLE <table> CASCADE CONSTRAINTS 32

OGRANICZENIA INTEGRALNOŚCIOWE DLA TABEL stan ograniczeń integralnościowych Ograniczenie integralnościowe może przyjąć jeden ze stanów: ENABLE VALIDATE musi być spełnione przez nowe i istniejące rekordy ENABLE NOVALIDATE musi być spełnione przez nowe rekordy DISABLE VALIDATE musi być spełnione przez istniejące rekordy DISABLE NOVALIDATE brak walidacji RELY brak walidacji, jedynie wskazówka dla optymalizatora zapytań Moment walidacji ograniczeń integralnościowych: IMMEDIATE w chwili wykonywania modyfikacji danych (domyślnie) DEFERRED w chwili zatwierdzania transakcji (konieczne użycie DEFERRABLE w definicji ograniczenia integralnościowego) INITIALLY DEFERRED domyślnie DEFERRED INITIALLY IMMEDIATE domyślne IMMEDIATE, można przełączyć w DEFERRED za pomocą "SET CONSTRAINTS... DEFERRED" 33

JAKIE OGRANICZENIA INTEGRALNOŚCIOWE MA TABELA perspektywy dba_constraints i dba_cons_columns SQL> select constraint_name, constraint_type, deferrable, deferred, search_condition from dba_constraints where owner='scott' and table_name='demo'; CONSTRAINT_NAME C DEFERRABLE DEFERRED SEARCH_CONDITION --------------- - -------------- --------- ------------------- SYS_C0010353 P NOT DEFERRABLE IMMEDIATE SYS_C0010352 C NOT DEFERRABLE IMMEDIATE CENA>0 SYS_C0010351 C NOT DEFERRABLE IMMEDIATE "NAZWA" IS NOT NULL create table DEMO ( ID number(8) PRIMARY KEY, NAZWA varchar2(100) NOT NULL, CENA number(8,2) CHECK (CENA>0)) SQL> select constraint_name, column_name from dba_cons_columns where owner='scott' and table_name='demo'; CONSTRAINT_NAME COLUMN_NAME --------------- ----------- SYS_C0010353 ID SYS_C0010352 CENA SYS_C0010351 NAZWA 34