Struktura bazy danych Oracle Organizacja przestrzeni danych
Transkrypt
Struktura bazy danych Oracle Organizacja przestrzeni danych
Organizacja przestrzeni danych Struktura bazy danych Oracle (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ Organizacja przestrzeni danych (2) baza danych przestrzeń tabel system plik 1 plik 2 przestrzeń tabel dane • struktury logiczne - przestrzenie tabel (ang. ang. tablespaces), tablespaces), schematy, schematy, obiekty (relacje, relacje, indeksy, indeksy, klastry, klastry, klastry haszowe (ang. ang. hash cluster), cluster), perspektywy, perspektywy, sekwencery, sekwencery, synonimy, synonimy, moduły PL/SQL); • struktury pośrednie - odzworowujące struktury logiczne w fizyczne; fizyczne; bloki, bloki, rozszerzenia (ang. ang. extents), extents), segmenty; segmenty; • struktury fizyczne - zaleŜne od własności systemu operacyjnego (systemy plikowe, plikowe, urządzenia surowe (ang. ang. raw devices)), )), trzy kategorie struktur: : pliki danych, devices struktur danych, dzienniki (ang. . redo log), ), pliki kontrolne; ; ang log kontrolne (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ Przestrzenie tabel • przeznaczenie: przeznaczenie: – zarządzanie przestrzenią dyskową, – określanie limitów zasobów dla uŜytkowników (ang. ang. quota), quota), – zarządzanie dostępnością danych, danych, stany: stany: online i offline, – wykonywanie częściowej kopii bezpieczeństwa (ang. ang. backup) backup) lub częściowego odtwarzanie (ang. ang. recovery), recovery), • przestrzeń tabel SYSTEM i SYSAUX • przestrzenie niesystemowe: niesystemowe: – temporalne – wycofania – trwałe plik 3 (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ Trwała przestrzeń przestrzeń tabel • wykorzystywane wykorzystywane składowania trwałych danych: tabel, indeksów, klastrów tabel, partycji tabel, zmaterializowanych perspektyw, obiektów LOB CREATE [PERMANENT] TABLESPACE nazwa DATAFILE 'plik' SIZE rozmiar [AUTOEXTEND ON [NEXT rozmiar] [MAXSIZE rozmiar]] [DEFAULT STORAGE (parametry składowania obiektów)] [BLOCKSIZE rozmiar [K]] SIZE rozmiar [K | M | G | T] [BIGFILE | SMALLFILE] SMALLFILE] create tablespace LAB_DANE datafile ‘c:\ c:\lab\ lab\lab_dane01.dbf’ size 50M, datafile ‘d:\ ‘d:\lab\ lab\lab_dane02.dbf’ size 20M autoextend on next 10M maxsize 50M (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ Manipulowanie przestrzeniami tabel • dodanie pliku, pliku, zmiana domyślnego składowania ALTER TABLESPACE nazwa ADD DATAFILE 'plik' SIZE rozmiar [AUTOEXTEND ON [NEXT rozmiar] [MAXSIZE rozmiar]] [DEFAULT STORAGE (parametry składowania obiektów)] alter tablespace LAB_DANE add datafile ‘c:\ c:\lab\ lab\lab_dane03.dbf’ size 50M autoextend on next 10M maxsize UNLIMITED; Temporalna przestrzeń tabel • wykorzystywana do sortowania i składowanie tabel tymczasowych • nie moŜe zawierać trwałych danych CREATE TEMPORARY TABLESPACE nazwa TEMPFILE 'plik' SIZE rozmiar [AUTOEXTEND ON [NEXT rozmiar] [MAXSIZE rozmiar]] [DEFAULT STORAGE (parametry składowania obiektów)] [BLOCKSIZE rozmiar [K]] [BIGFILE | SMALLFILE] SMALLFILE] create temporary tablespace LAB_TEMP tempfile tempfile ‘c:\ c:\lab\ lab\lab_temp.dbf’ size 20M; • zmiana typu TEMPORARYTEMPORARY-PERMANENT alter tablespace LAB_TEMP permanent; alter tablespace LAB_TEMP temporary; (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ Manipulowanie przestrzeniami tabel (2) • włączanie i wyłączanie przestrzeni tabel ALTER TABLESPACE nazwa ONLINE | OFFLINE [NORMAL | IMMEDIATE | TEMPORARY] • zmiana nazwy i lokalizacji pliku • przestrzeń table musi być wyłączona • plik docelowy musi istnieć ALTER TABLESPACE nazwa RENAME DATAFILE 'plik_ 'plik_Ŝródłowy' ródłowy' TO 'plik_docelowy' alter tablespace LAB_DANE rename datafile ‘c:\ c:\lab\ lab\lab_dane03.dbf’ to ‘d:\ ‘d:\baza\ baza\lab\ lab\lab_dane03.dbf’; (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ Manipulowanie przestrzeniami tabel (3) Struktury pośrednie • zmiana typu READ WRITE -> READ ONLY – przestrzeń tabel włączona (ONLINE) – brak transakcji w przestrzeni tabel – brak aktywnych segmentów wycofania w przestrzeni tabel – przestrzeń nie podlega archiwizacji online segment 80 KB alter tablespace LAB_DANE read only; alter tablespace LAB_DANE read write; • usunięcie przestrzeni tabel DROP TABLESPACE nazwa [INCLUDING CONTENTS [AND DATAFILES] [CASCADE CONSTRAINTS]] rozszerzenie 16 KB 2KB 2KB 2KB 2KB 2KB 2KB 2KB 2KB 2KB 2KB 2KB 2KB rozszerzenie 2KB64KB2KB 2KB 2KB 2KB 2KB 2KB 2KB 2KB 2KB 2KB 2KB 2KB 2KB 2KB 2KB 2KB 2KB 2KB 2KB 2KB 2KB 2KB 2KB 2KB 2KB 2KB 2KB bloki bazy danych (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ Segment • zbiór rozszerzeń przydzielonych pojedynczemu obiektowi • typy segmentów – danych • tabeli, tabeli, tabeli indeksowej, indeksowej, tabeli zagnieŜdŜonej, onej, partycji tabeli, tabeli, indeksu, indeksu, partycji indeksu, indeksu, klastra, klastra, LOB, indeksu LOB – temporalny – wycofania (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ Zarządzanie rozszerzeniami segmentów Lokalne automatyczne Przez słownik bd ręczne UET$ FET$ Rozszerzenie • składa się z ciągłego obszaru bloków • obszar ten musi się znajdować w jednym pliku (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ Lokalne zarządzanie jest sterowane bitmapami w plikach danych (domyślne od 9.2) Zarządzanie przez słownik danych Jest sterowane tabelami UET$ i FET$ (domyślne dla przestrzeni Tabel SYSTEM) (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ Automatyczne zarządzanie rozszerzeniami segmentów Ręczne zarządzanie rozszerzeniami segmentów • • Wygodne w uŜyciu • Lepsze wykorzystanie przestrzeni dyskowej, w szczególności gdy rozmiary wierszy w poszczególnych tabelach istotnie się róŜnią • Lepsza wydajność przy współbieŜnym dostępie CREATE TABLESPACE nazwa ... EXTENT MANAGEMENT LOCAL [AUTOALLOCATE [AUTOALLOCATE | UNIFORM rozmiar] • Umieszczenie segmentu w przestrzeni tabel • CREATE TABLE tabela ... TABLESPACE nazwa; (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ Ręczne zarządzanie rozszerzeniami segmentów - przykład CREATE TABLE nazwa ... TABLESPACE przestrzeń_tabel_zarządzana_przez_słownik STORAGE (MINEXTENTS (MINEXTENTS 1 INITIAL 100K NEXT 10KB PCTINCREASE 20 MAXEXTENTS 10) pierwsze rozszerzenie drugie rozszerzenie trzeci rozszerzenie 100KB 10KB 12KB Za pomocą parametrów składowania: – INITIAL • min. = 2*DB_BLOCK_SIZE • domyślna = 5*DB_BLOCK_SIZE – NEXT • min. = 1*DB_BLOCK_SIZE • domyślna = 5*DB_BLOCK_SIZE – MINEXTENTS • domyślna = 1 – PCTINCREASE • min. = 0 • domyślna = 50 – MAXEXTENTS • min. = 1 • max. = UNLIMITED = 2.147.483.645 W przestrzeniach tabel zarządzanych przez słownik CREATE TABLESPACE nazwa ... EXTENT MANAGEMENT DICTIONARY (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ Domyślne parametry składowania dla wszystkich obiektów w przestrzeni tabel [CREATE | ALTER] TABLESPACE nazwa ... DEFAULT STORAGE (parametry składowania obiektów) MINEXTENT rozmiar ALTER TABLESPACE dane ... DEFAULT STORAGE (INITIAL 1M NEXT 1M PCTINCREASE 0) MINEXTENT 1M segment (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ Blok bazy danych • • • • Zarządzanie wolnymi blokami w obiekcie najmniejsza jednostka alokacji przestrzeni dyskowej odpowiada określonej liczbie bajtów jest wielokrotnością rozmiaru bloku SO rozmiar określony parametrem konfiguracyjnym DB_BLOCK_SIZE, DB_BLOCK_SIZE, lub podczas tworzenia przestrzeni tabel Ręczne Automatyczne (zalecane) Struktura bloku nagłówek • nagłówek zawiera m.in. informacje na temat: temat: – segmentu, segmentu, w skład którego wchodzi blok – transakcji operujących na danych bloku – katalog tabel – adresy rekordów wolna przestrzeń dane (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ 0 0 1 1 0 0 Bloki danych w automatycznie zarządzanym obiekcie Wypełnione bloki Ręczne zarządzanie wolnymi blokami nagłówek 0 1 0 1 1 0 wolna przestrzeń dane nagłówek 30% 25% 50% 75% 100% CREATE TABLESPACE .... EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO; AUTO; (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ nagłówek wolna przestrzeń 30% wolna przestrzeń 30% 70% 70% dane 30% 70% dane PCTFREE = 30 PCTUSED = 50 nagłówek DELETE wolna przestrzeń INSERT, UPDATE 70% Poziom wypełnienia 0% Blok nagłówkowy (zawiera wskaźniki do pierwszych bloków list wolnych bloków) Bloki danych w kaŜdym zbiorze wolnych bloków (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ Automatyczne zarządzanie wolnymi blokami Mapa bitowa Bloki bitmapowe (sterują dostępem do wolnych bloków) 50% (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ dane 50% Ręczne zarządzanie wolnymi blokami(2) blokami(2) PCTUSED=40% Blok poza listą wolnych bloków Blok na liście wolnych bloków 0% Perspektywy słownika danych udostępniające informacje nt. rozszerzeń i segmentów • PCTFREE=10% • 100100-PCTFREE=90% PCTUSED=40% 100% CREATE TABLE nazwa_tabeli. nazwa_tabeli. . . PCTFREE integer PCTUSED integer (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ Perspektywy słownika danych udostępniające informacje nt. rozszerzeń i segmentów (2) • wyświetlenie wolnej przestrzeni we wszystkich przestrzeniach tabel select tablespace_name, tablespace_name, sum(bytes)/1024 “free kB” kB” from dba_free_space group by tablespace_name; tablespace_name; • wyświetlenie zajętej przestrzeni we wszystkich przestrzeniach tabel select tablespace_name, tablespace_name, sum(bytes)/1024 “used kB” kB” from dba_extents group by tablespace_name; tablespace_name; (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ DBA_EXTENTS – SEGMENT_NAME – TABLESPACE_NAME – FILE_ID • DBA_FREE_SPACE – BLOCKS – TABLESPACE_NAME DBA_SEGMENTS – BLOCKS – SEGMENT_NAME – SEGMENT_TYPE – TABLESPACE_NAME – EXTENTS – BLOCKS – INITIAL_EXTENT, NEXT_EXTENT, MIN_EXTENTS, MAX_EXTENTS, PCT_INCREASE (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ Perspektywy słownika danych udostępniające informacje nt. przestrzeni tabel i ich plików • DBA_TABLESPACES – TABLESPACE_NAME – NEXT_EXTENT – MAX_EXTENTS – PCT_INCREASE – STATUS (ONLINE, OFFLINE READ ONLY) – CONTENT (PERMANENT, TEMPORARY) • DBA_DATA_FILES – FILE_NAME – TABLESPACE_NAME – BYTES – AUTOEXTENSIBLE – MAXBYTES – INCREMENT_BY (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ Pliki bazy danych Dziennik powtórzeń • pliki danych – obiekty bazy danych i dane – opisy uŜytkowników – opisy przestrzeni tabel • pliki dziennika powtórzeń – rejestracja zatwierdzonych i niezatwierdzonych zmian w bazie danych • pliki kontrolne – opis fizycznej struktury bazy danych – informacje wykorzystywane do odtwarzania • plik parametrów – parametry definiujące własności i sposób pracy bd • plik haseł (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ 1 b) 2 1 LGWR 2 log2.ora log2.ora log1.ora log1.ora 3 3 4 5 ARCH arch01.arc arch02.arc arch03.arc (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ Dziennik powtórzeń (3) • LGWR zapisuje informacje do bieŜącego pliku dziennika gdy: gdy: • następuje zatwierdzenie transakcji • tryby pracy dziennika – bez archiwizacji (NOARCHIVELOG) – z archiwizacją (ARCHIVELOG) LGWR rejestruje zmiany w bazie danych zawartość zapisywana w plikach rodzaje dziennika – włączony (online) – zarchiwizowany (offline, archived) • zapisywanie plików dziennika - proces LGWR – cyklicznie • archiwizowanie plików dziennika - proces ARCH (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ Dziennik powtórzeń (2) a) • • • • bufor ten jest w jednej trzeciej zapełniony • upłyną trzy sekundy od ostatniego zapisu • zostaje zgłoszony punkt kontrolny • zanim DBWR dokona jakiegokolwiek zapisu na dysk zawartości bufora danych • przełączenie pliku dziennika – po zapełnieniu się bieŜącego pliku dziennika automatycznie – manualnie alter system switch logfile; logfile; (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ Grupy plików dziennika powtórzeń • zwiększenie niezawodności • równoległe zapisywanie do wszystkich plików grupy dysk C grupa 1 log1.ora grupa 2 log2.ora dysk D 1 1 2 LGWR 3 grupa 3 2 log1.ora log2.ora create database LAB datafile 'C:\ 'C:\lab\ lab\system01.dbf' size 20M logfile group 1 ('C:\ ('C:\lab\ lab\log1.ora', 'D:\ 'D:\lab\ lab\log1.ora') size 100K, group 2 ('C:\ \ lab\ \ log2.ora', 'D:\ \ lab\ ('C: lab 'D: lab\log2.ora') size 100K, group 3 ('C:\ ('C:\lab\ lab\log3.ora', 'D:\ 'D:\lab\ lab\log3.ora') size 100K character set EE8MSWIN1250; log3.ora (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ Modyfikowanie grup plików dziennika powtórzeń alter database add logfile group nr_grupy ('log1.ora', 'log2.ora', ..., 'logn.ora ') size rozmiar; 'logn.ora') rozmiar; alter database add logfile group 4 ('c:\ ('c:\oracle\ oracle\log4.ora', 'd:\ 'd:\oracle\ oracle\log4.ora') size 100k; alter database add logfile member 'logn.ora' logn.ora' to group nr_grupy; nr_grupy; alter database drop logfile member 'logn.ora '; 'logn.ora'; (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ • tworzenie - w czasie tworzenia bazy danych 3 log3.ora alter database drop logfile group nr_grupy; nr_grupy; Grupy plików dziennika powtórzeń (2) (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ Plik kontrolny • zawiera: zawiera: • nazwę bazy danych • datę utworzenia bazy danych • informacje o wszystkich grupach dziennika powtórzeń wraz ze wskazaniem bieŜącej grupy • nazwę, lokalizację i rozmiar kaŜdego pliku dziennika powtórzeń • numer sekwencyjny bieŜącego pliku dziennika powtórzeń • nazwę, lokalizację, rozmiar i status (tylko (tylko do odczytu, odczytu, do odczytu i zapisu, zapisu, włączony, wyłączony, wymagający odtworzenia) odtworzenia) kaŜdego pliku danych • informacje dotyczące punktu kontrolnego (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ Plik kontrolny (2) • niezbędny do zamontowania i otwarcia bazy danych • stosować wiele aktywnych kopii plików kontrolnych dla jednej bazy danych, umieszczonych na róŜnych dyskach • informacje o nazwach i połoŜeniu plików kontrolnych -> wartość parametru konfiguracyjnego CONTROL_FILES – np. CONTROL_FILES = (C:\ (C:\lab\ lab\ctl1LAB.ora, D:\ D:\lab\ lab\ctl2LAB.ora) • wszystkie pliki kontrolne są jednocześnie na bieŜąco zapisywane w trakcie pracy bazy danych • zawartość plików kontrolnych jest uaktualniana m.in. gdy: • administrator dodaje, zmienia nazwę lub usuwa plik przestrzeni tabel lub plik dziennika powtórzeń; • wystąpił punkt kontrolny; • nastąpiło przełączenie plików dziennika powtórzeń. (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ Zarządzanie plikiem spfile • Tworzenie spfile z init CREATE SPFILE [=plik_spfile [=plik_spfile]] FROM PFILE [=plik_init [=plik_init]] • Tworzenie init z spfile CREATE PFILE [=plik_init [=plik_init]] FROM SPFILE [plik_spfile [plik_spfile]] Plik konfiguracyjny • zawiera parametry konfiguracyjne instancji bazy danych – tekstowy - po stronie klienta sqlplus, sqlplus, nazwa: nazwa: init<SID>.ora init<SID>.ora – binarny - po stronie serwera spfile<SID>.ora • połoŜenie – $ORACLE_HOME/dbs $ORACLE_HOME/dbs – %ORACLE_HOME\ %ORACLE_HOME\database db_name = LAB db_files = 20 control_files = (C: (C:\\lab\ lab\ctl1LAB.ora, D:\ D:\lab\ lab\ctl2LAB.ora ) compatible = 8.0.5 db_block_size = 2048 db_file_multiblock_read_count = 8 db_block_buffers = 200 shared_pool_size = 3500000 log_checkpoint_interval = 10000 processes = 50 open_cursors = 100 dml_locks = 100 log_buffer = 8192 max_dump_file_size = 10240 remote_login_passwordfile = NONE background_dump_dest = D:\ D:\bdump user_dump_dest = D:\ D:\udump (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ Plik haseł • umoŜliwia autoryzację dostępu do bazy danych dla uŜytkowników z uprawnieniami administratora • zawiera hasło uŜytkownika SYS w roli SYSDBA -> jeśli parametr kofiguracyjny REMOTE_LOGIN_PASSWORDFILE=SHARED • zawiera hasło uŜytkownika SYS i innych uŜytkowników posiadających rolę SYSDBA i/lub SYSOPER -> jeśli parametr kofiguracyjny REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE • Tworzenie - program orapwd, orapwd, oradim • Zmiana wartości parametrów w spfile ALTER SYSTEM SET parametr = wartość [SCOPE = {SPFILE | MEMORY | BOTH} BOTH} (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ (c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ