Zapewnianie spójności i współbieżności transakcji Treść wykładu Rola procesu sekretarza dziennika (LGWR) w rejestrowaniu i zatwierdzaniu transakcji w plikach dziennika powtórzeń. Identyfikowanie i składników i przeznaczenia mechanizmu dzienników powtórzeń. Realizacja i znaczenie punktów kontrolnych. Zarządzanie współbieżnym dostępem oraz spójnością odczytu danych na poziomie polecenia.
Przegląd SGA DBWR CKPT LGWR ARCH Proces Serwera Proces Użytkownika Pliki Danych Pliki Dziennika Powtórzeń Pamięć Offline Plik kontrolny
Początek transakcji Początek sesji. Koniec poprzedniej transakcji. Zakończenie transakcji Zatwierdzenie transakcji Polecenie COMMIT. Transakcje Polecenie SQL (DDL) spowodowało niejawne zatwierdzenie. Poprawne wyjście z programu użytkownika z odłączeniem od serwera Oracle - zakończenie transakcji Przerwanie transakcji Polecenie ROLLBACK - zakończenie na żądanie użytkownika. Awaryjne wyjście z programu użytkownika bez odłączenia od serwera Oracle. Awaria (zasilania, procesora, dysku, pamięci)
Strata transakcji w pamięci SGA Przed modyfikacją buforów danych proces serwera zapisuje w buforze dziennika powtórzeń wszystkie zmiany dokonane w bazie danych. Kiedy wymagane jest odtwarzanie, system Oracle potrafi zrekonstruować zmiany dokonane w bazie danych i zapisy w segmentach wycofania na podstawie zapisów w dziennikach powtórzeń.
Bufor dziennika powtórzeń Bufor cykliczny, do którego procesy serwera zapisują informacje o dokonywanych zmianach. Może zostać pominięty przez użycie słowa kluczowego NOLOGGING w poleceniach: CREATE TABLE oraz CREATE INDEX, ładowania danych przez Oracle Loader. W czasie backupu online do bufora dziennika zapisywane są całe modyfikowane bloki
Zadanie plików dziennika powtórzeń SGA Pliki dziennika powtórzeń są wykorzystywane przy odtwarzaniu po awarii instancji danych zmodyfikowanych w pamięci. Pliki Dziennika Powtórzeń
Proces LGWR SGA DBWn LGWR Proces Serwera Proces Użytkownika Pliki Danych Pliki Dziennika Powtórzeń
Proces LGWR Zapisuje pozycje z bufora dziennika powtórzeń do plików dziennika powtórzeń kiedy: Wystąpi zdarzenie zatwierdzenia transakcji. Bufor dziennika powtórzeń zostanie zapełniony w jednej trzeciej. DBWR zakończy oczyszczanie buforów bloków przy punkcie kontrolnym. Wystąpi iti time-out t procesu LGWR(~2sek.). W buforze jest ponad 1 MB danych do zapisu.
Przebieg zatwierdzania transakcji w bazie danych Użytkownik wysyła COMMIT. LGWR zapisuje bufor dziennika powtórzeń do bieżącej grupy dziennika. Użytkownik otrzymuje komunikat, że transakcja została zatwierdzona. Blokady zasobów dotyczące bloków danych i bloków wycofania są zdejmowane (inne procesy serwera). DBWR ewentualnie zapisze bloki bazy danych na dysk
Własności COMMIT LGWR zapisuje trwale transakcje pozwalając DBWR na opóźnienie zapisów redukując czas I/O. Zapisy dziennika powtórzeń zawierające zmienione bajty i informację identyfikującą są krótkie. Zatwierdzenia w bazie danych zapisują w pojedynczej operacji pozycje dziennika powtórzeń z wielu transakcji żądających zatwierdzenia w tym samym czasie. Jeżeli nie wystąpi przepełnienie bufora dziennika powtórzeń, wymagany jest tylko jeden synchroniczny zapis na transakcję. Rozmiar transakcji nie ma wpływu na czas oczekiwania na wykonanie bieżącego polecenia COMMIT. Zapis, jeżeli to możliwe, jest wieloblokowy.
Przełączanie Dziennika Przydzielany nowy numer sekwencyjny dziennika. Dysk 1 Dysk 2 1A 2A 1B 2B 25 26 25 26 Grupa Dziennika 1 Element 1A, Dysk 1 Grupa Dziennika 2 Element 2A, Dysk 1 Element 1B, Dysk 2 Element 2B, Dysk 2 Numer Dziennika 25 Numer Dziennika 26
Punkty kontrolne bazy danych Punkty kontrolne bazy danych zapewniają, że wszystkie zmodyfikowane bufory bazy danych zostaną zapisane w plikach bazy danych. Pliki bazy danych są oznaczone jako pochodzące z bieżącej ż chwili, punkt kontrolny odnotowany jest w pliku kontrolnym i w nagłówkach plików danych. Parametr FAST_START_ START MTTR_TARGET TARGET określa dynamicznie punkty kontrolne w zależności od obciążenia. Parametr LOG_CHECKPOINT_TIMEOUT TIMEOUT określa odstęp czasu między kolejnym punktami kontrolnymi. Parametr LOG_CHECKPOINT_INTERVAL INTERVAL określa liczbę zapisanych od poprzedniego punktu kontrolnego bloków systemowych w pliku dziennika powtórzeń, jaka powoduje inicjalizację kolejnego punktu kontrolnego.
Punkt kontrolny występuje: Przy każdym przełączeniu dziennika. Gdy spodziewany czas odtwarzania instancji osiągnie i podany limit. Przy zamykaniu instancji (chyba, że z opcją ABORT). Jeżeli jest wymuszony przez DBA. Kiedy wyłączana jest przestrzeń tabel. Zgodnie z parametrami dotyczącymi punktu kontrolnego FAST_START_ MTTR_TARGET LOG _ CHECKPOINT _ INTERVAL LOG_CHECKPOINT_TIMEOUT
Synchronizacja Przy każdym punkcie kontrolnym modyfikowany jest numer sekwencyjny punktu kontrolnego w nagłówkach każdego ż z plików bazy danych i w pliku kontrolnym. W chwili uruchamiania i instancji system (SMON) sprawdza, czy wszystkie pliki mają ten sam numer sekwencyjny punktu kontrolnego. Częstsze punkty kontrolne zmniejszają czas potrzebny na odtwarzanie w przypadku awarii instancji ale mogą negatywnie wpływać na czas odtwarzania instancji.
Proces CKPT SGA DBWR CKPT Proces Serwera Pliki Kontrolne Proces Użytkownika Pliki Danych Plik Haseł Plik Parametrów Proces punktów kontrolnych CKPT dokonuje aktualizacji nagłówków plików danych i plików kontrolnych po wykonaniu punktu kontrolnego.
Proces(y) Archiwizatora (ARCn) SGA DBWn CKPT LGWR ARCn Proces Serwera Proces Użytkownika Pliki Danych Pliki Dziennika Powtórzeń Pamięć Offline
Proces(y) Archiwizatora (ARCn) Kopiuje(ą) pliki dziennika powtórzeń dla zapewnienia możliwości odtwarzania po awarii nośnika. Aktywowany tylko po wystąpieniu przełączenia dziennika. Opcjonalny, potrzebny tylko w trybie ARCHIVELOG. Może zapisywać na dysk lub taśmę.
Spójność odczytu SQL> SELECT first_name, dept_id, salary 2 FROM s_emp a 3 WHERE salary > (SELECT AVG(salary) FROM s_emp b 4 WHERE b.dept_id = a.dept_id); Spójność odczytu serwer Oracle Database zapewnia dzięki możliwości ś i odczytu zmodyfikowanych danych z segmentów wycofania
Model blokowania Odczytujący nie blokują zapisujących. Zapisujący nie blokują odczytujących. Spójność odczytu zapewniona przez użycie zapisów w segmentach wycofania. Zapewnione jest blokowanie na poziomie wiersza (domyślnie) a także na poziomie tabel. Blokowanie jest automatyczne, może też być wymuszane jawnie. Można jawnie zażądać blokad dzielonych i blokad wyłącznych. Blokowanie na poziomie wiersza jest dostępne dla każdego wiersza w bazie danych. Serwer Oracle nigdy nie zwiększa poziomu blokady (na przykład z poziomu wiersza do poziomu bloku lub tabeli).
Podsumowanie SGA DBWR CKPT LGWR ARCH Proces Serwera Proces Użytkownika Pliki Danych Pliki Dziennika Powtórzeń Pamięć Offline
Zarządzanie ą strukturą ą bazy danych Cele Zrozumienie zasady yprzydziału przestrzeni w bazie danych. Dopasowanie struktury bazy danych. Przygotowanie przestrzeni tabel. Opis różnych typów segmentów.
Architektura Przestrzeni Oracle Blok SO Część Blok BD Część Zbudowany z Część Zbudowany z Ekstent Używany Wolny Część Danych Zbudowany z Segment Indeksu Część Wycofania Tymczasowy Plik Zbudowany z Część W Miejsce dla Przestrzeń tabel Miejsce dla Instancja Część Zbudowany z Zbudowana z Częśćę Zbudowana z Kontroluje Kontrolowana przez Dysk logiczny Baza dancyh
Przestrzeń tabel Segment 20M Następny Ekstent 5M Inicjalny Ekstent 15M Przestrzeń tabel Bloki bazy danych Plik Baza danych
Zarządzanie zawartością w przestrzeniach tabel Lokalnie zarządzane przestrzenie tabel: Informacja o wolnych ekstentach jest zapisana w mapie bitowej w nagłówku pliku tej przestrzeni. Każdy bit jest związany z blokiem lub grupą bloków tej przestrzeni. Wartość bitu określa czy ekstent jest wolny czy zajęty. Metoda zalecana dla przestrzeni tymczasowych i wycofania. Metoda domyślna od wersji 10g Przestrzenie tabel zarządzane przez słownik danych: Informacje o ekstentach (poszczególnych segmentów i o acje o e ste tac (pos c egó yc seg e tó wolnych) są zapisane w słowniku danych w postaci listy.
Przestrzenie Tabel Przestrzeń tabel SYSTEM Zawiera informacje słownika danych, definicje pamiętanych ę procedur, pakietów i wyzwalaczy bazy danych. Wymagana do uruchomienia każdej bazy danych. Zawiera segment wycofania SYSTEM. S Może, choć nie powinna, zawierać dane użytkowników. Domyślnie zarządzana przez słownik danych. Dodatkowa systemowa przestrzeń tabel SYSAUX Zawiera dane narzędzi CMI (Common Management Infrastructure) Domyślnie zarządzana lokalnie Niesystemowa Przestrzeń Tabel y Pozwala na bardziej elastyczną administrację bazą danych. Zawiera segmenty wycofania, segmenty tymczasowe, dane aplikacji, dane indeksów i przestrzeń użytkowników. Zarządzana lokalnie albo przez słownik danych.
Lokalnie zarządzane przestrzenie tabel CREATE TABLESPACE userdata DATAFILE '/u01/oradata/userdata01.dbf' SIZE 500M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K; Redukują rywalizację o dostęp do tabel słownika danych. Podczas alokacji lub dealokacji ekstentów nie są generowane żadne informacje wycofania. Nie jest wymaganie scalanie sąsiednich wolnych ekstentów tó (SMON).
Przestrzenie tabel zarządzane ą przez słownik danych CREATE TABLESPACE userdata DATAFILE '/u01/oradata/userdata01.dbf' SIZE 500M EXTENT MANAGEMENT DICTIONARY DEFAULT STORAGE ( initial 1M NEXT 1M ); Ekstenty są ą zarządzane ą poprzez p słownik danych. Informacje o ekstentach są zorganizowane w postaci list. Każdy segment utworzony w takiej przestrzeni tabel może mieć własną klauzulę składowania. Wymagane jest scalanie sąsiednich i wolnych ekstentów. Metoda bardziej elastyczna lecz mniej efektywna pod względem wydajności.
Składnia Tworzenia Przestrzeni Tabel CREATE TABLESPACE przestrzeń_tabel ń t, DATAFILE spec_pliku EXTENT MANAGEMENT LOCAL DICTIONARY UNIFORM SIZE MINIMUM EXTENT DEFAULT STORAGE klauzula_przestrzeni ONLINE OFFLINE PERMANENT TEMPORARY DEFAULT STORAGE ( INITIAL liczba K ) M NEXT liczba K M MINEXTENTS liczba MAXEXTENTS liczba PCTINCREASE liczba
Tworzenie Przestrzeni Tabel (zarządzanej przez słownik danych) SQL> CREATE TABLESPACE utbs 2 DATAFILE /u01/oracle/d/utbs01.dbf SIZE 3M 3 DEFAULT STORAGE (INITIAL 50K NEXT 50K 4 MINEXTENTS 10 MAXEXTENTS 121 5 PCTINCREASE 0); Tablespace created. Zmiana parametrów składowania (tylko dla zarządzanych przez słownik danych) ALTER TABLESPACE userdata MINIMUM EXTENT 2M; ALTER TABLESPACE userdata DEFAULT STORAGE ( INITIAL 2M NEXT 2M MAXEXTENTS 999 );
Przestrzenie wycofania Wykorzystywane przez segmenty wycofania automatycznie tworzone przez system. Nie mogą zawierać innych obiektów niż segmenty wycofania (undo). Są zarządzane lokalnie. W poleceniu CREATE TABLESPACE można umieścić jedynie klauzule DATAFILE i EXTENT MANAGEMENT CREATE UNDO TABLESPACE d 1 CREATE UNDO TABLESPACE undo1 DATAFILE '/u01/oradata/undo101.dbf' SIZE 40M;
Składnia Dodawania Pliku i modyfikacji Przestrzeni Tabel ALTER TABLESPACE przestrzeń_tabel, ADD DATAFILE spec_pliku DEFAULT STORAGE klauzula_przestrzeni, RENAME DATAFILE nazwapliku TO nazwapliku ONLINE OFFLINE BEGIN END READ ONLY WRITE PERMANENT TEMPORARY NORMAL TEMPORARY IMMEDIATE BACKUP,
Ręczna Zmiana Rozmiaru Plików Danych SQL> ALTER DATABASE DATAFILE users02 2> RESIZE 100M; Statement processed. Automatyczna Zmiana Rozmiaru Plików Danych AUTOEXTEND OFF ON NEXT liczba K M MAXSIZE UNLIMITED liczba K M
Automatyczna Zmiana Rozmiaru Plików Danych SQL> ALTER TABLESPACE users 2> ADD DATAFILE users02 SIZE 10M 3> AUTOEXTEND ON 4> NEXT 512K 5> MAXSIZE 250M; Statement processed. SQL> ALTER DATABASE DATAFILE users02 2> AUTOEXTEND OFF; Statement processed.
Tymczasowe Przestrzenie Tabel Używane do przechowywania pośrednich wyników operacji sortowania Nie mogą zawierać żadnych y trwałych obiektów Tworzone przez DBA CREATE TEMPORARY TABLESPACE przestrzeń_tabel, TEMPFILE spec_pliku
Domyślna tymczasowa przestrzeń tabel Oracle Database pozwala na utworzenie domyślnej tymczasowej przestrzeni tabel w ramach całej bazy danych Pozwala wyeliminować wszystkie sortowania z przestrzeni tabel SYSTEM Może zostać utworzona przy pomocy poleceń CREATE DATABASE lub utworzona przez CREATE TEMPORARY TABLESPACE i wskazana jako domyślna poleceniem ALTER DATABASE. Jest zarządzana lokalnie l Nie może zostać usunięta do momentu utworzenia nowej domyślnej tymczasowej przestrzeni tabel. Nie może zostać wyłączona. Nie można uczynić trwałej przestrzeni tabel przestrzenią domyślną tymczasową.
Domyślna przestrzeń tabel Oracle Database pozwala wskazać domyślną przestrzeń tabel dla wszystkich użytkowników bazy danych. Przestrzeń domyślna będzie ę lokalizacją dla segmentów, w których definicji nie określono przestrzeni tabel, a dla schematu właściciela obiektu nie wskazano przestrzeni domyślnej.
Przestrzenie Tabel Tylko Do Odczytu (READ ONLY) SQL> ALTER TABLESPACE tspace_3 READ ONLY; Tablespace altered. SQL> ALTER TABLESPACE tspace_3 READ WRITE; Tablespace altered.
Status Offline Wyłączona przestrzeń tabel jest niedostępna dla użytkowników. Niektóre przestrzenie tabel nie mogą zostać wyłączone: SYSTEM SYSAUX Przestrzenie z aktywnymi segmentami wycofania Domyślna przestrzeń tymczasowa Wyłączenie przestrzeni tabel: ALTER TABLESPACE userdata OFFLINE; Włączenie przestrzeni tabel: ALTER TABLESPACE userdata ONLINE;
Usuwanie przestrzeni tabel Usuwa przestrzeń tabel ze słownika danych Opcjonalnie również ż może ż być ć usuwana zawartość klauzulą INCLUDING CONTENTS Pliki danych mogą również ż zostać ć opcjonalnie usunięte przy pomocy klauzuli AND DATAFILES. DROP TABLESPACE userdata INCLUDING CONTENTS AND DATAFILES;
Przenoszenie plików danych: ALTER TABLESPACE Przestrzeń tabel musi zostać wyłączona. Docelowe pliki danych muszą już istnieć. ALTER TABLESPACE userdata RENAME DATAFILE '/u01/oradata/userdata01.dbf' TO '/u01/oradata/userdata01.dbf'; Przenoszenie plików danych: ALTER DATABASE Docelowe pliki danych muszą już istnieć. Baza danych musi zostać ć zamontowana. ALTER DATABASE RENAME FILE '/u01/oradata/system01.dbf' TO '/u03/oradata/system01.dbf';
Zasady zarządzania przestrzeniami tabel Używaj wielu przestrzeni tabel Oddzielaj dane użytkowników od danych słownika danych. Oddzielaj dane różnych aplikacji. Umieszczaj różne pliki przestrzeni tabel na oddzielnych urządzeniach dyskowych by redukować rywalizację o I/O. Oddzielaj segmenty wycofania od segmentów danych. Wyłączaj poszczególne przestrzenie tabel pozostawiając inne włączone. ą Zarezerwuj przestrzenie tabel w zależności od typu użycia danych. Archiwizuj poszczególne przestrzenie tabel pojedynczo.
Zasady zarządzania przestrzeniami tabel zarządzanymi przez słownik danych Określaj parametry zarządzania przestrzenią w przestrzeniach tabel Określ domyślne parametry zarządzania przestrzenią ą dla obiektów tworzonych w przestrzeni tabel. Ustaw domyślne parametry zarządzania ą przestrzenią w przestrzeni tabel na podstawie szacunków dotyczących rozmiaru typowego obiektu. Przydzielaj ograniczenia wykorzystania przestrzeni tabel użytkownikom według potrzeb.
Konfigurowanie architektury Oracle Managed Files dla tworzonych przestrzeni tabel Tworzenie przestrzeni tabel z wykorzystaniem OMF wymaga ustawienia parametru: DB _ CREATE _ FILE _ DEST - domyślna lokalizacja plików danych. Parametr ten może ż zostać ć ustawiony w pliku parametrów i modyfikowany automatycznie przy pomocy polecenia ALTER SYSTEM: ALTER SYSTEM SET db_create_file_dest = '/u01/oradata/db01';
Tworzenie przestrzeni tabel z wykorzystaniem OMF Jeśli korzystamy z OMF, to klauzula DATAFILE polecenia CREATE TABLESPACE nie jest wymagana. CREATE TABLESPACE apps2_data DATAFILE SIZE 20M; Pliki danych są tworzone w katalogu opisanym parametrem DB_CREATE_FILE_DEST. Domyślnie pliki danych mają rozmiar 100M i mogą się atomatcnieroserać automatycznie rozszerzać. Usunięcie tak utworzonej przestrzeni tabel powoduje również automatyczne usunięcie jej plików z dysku. Pliki OMF mogą również zostać dodane do istniejącej przestrzeni tabel.
Uzyskiwanie informacji o przestrzeniach tabel Informacje o przestrzeniach tabel: DBA_TABLESPACES V$TABLESPACE Informacje o plikach danych: DBA_DATA_FILES V$DATAFILE Informacje o tymczasowych plikach danych: DBA_TEMP_FILES V$TEMPFILE
Segmenty Typ Segmentu Definicja i Segment wycofania Segment danych Segment indeksu Segment tymczasowy Zbiór ekstentów zawierający dane wycofania używane do wycofywania, spójności odczytu lub odtwarzania. Zbiór ekstentów zawierający całość danych tabeli, klastra lub danych innego typu. Zbiór ekstentów zawierający całość danych określonego indeksu albo jego partycji. Zbiór ekstentów zawierający dane należące do obiektu tymczasowego.
Segmenty Wycofania (bufory cykliczne) Ekstent 4 Ekstent t 1 Transakcja1 Transakcja2 Ekstent 3 Ekstent 2 Aktywny ekstent bez wolnej przestrzeni Nieaktywny ekstent z wolną przestrzenią
Segmenty danych Typ Segmentu Tbl Tabela Funkcja Zawiera wiersze pojedynczej j tabeli. Klaster indeksowy Klaster haszujący Partycja tabeli Tabela indeksowa Tabela zagnieżdżona Segment LOB Zawiera wiersze jednej lub wielu tabel zgrupowane według wartości wskazanej kolumny tabeli. Zawiera wiersze tabeli rozmieszczane za pomocą algorytmu haszowania. Zawiera wiersze tabeli o określonej wartości klucza. Tabela o zapisie danych uporządkowanych jak indeks według wartości ś iklucza. Zawiera dane tabeli, która jest elementem kolumny innej tabeli (wymaga opcji obiektowej). Służy do przechowywania danych o dużych rozmiarach (tekstowych, graficznych, video) przechowywanych w kolumnach tabel.
Segmenty indeksów Typ Segmentu Indeks Partycja indeksu Indeks LOB Funkcja Zawiera indeksy utworzone na jednej j lub wielu kolumnach tabeli. Służą do zwiększenia efektywności wyszukiwanie danych. Może być indeks tradycyjny (Bdrzewo) lub bitowy. Indeks jednej partycji tabeli (wymaga opcji obiektowej). Niejawnie tworzony segment, który służy do wyszukiwania określonych wartości kolumn LOB.
Segmenty Tymczasowe Tworzone automatycznie przez serwer Oracle przy wykonywaniu operacji wymagających sortowania takich jak: złączenia, grupowanie, sortowanie, tworzenie indeksów i innych. Tworzone w tymczasowej przestrzeni tabel dla użytkownika jeśli brak miejsca na sortowanie w pamięci wewnętrznej (PGA). Poszczególne ekstenty są przypisane do transakcji. Zwalniane na końcu transakcji (przez SMON) jeśli to jest przestrzeń typu PERMANENT. Nie chronione przez dziennik powtórzeń, ponieważ nie są konieczne dla zachowania spójności danych.
Podsumowanie Segment 20M Następny Ekstent 5M Inicjalny Ekstent 15M Przestrzeń tabel Bloki bazy danych Plik Baza danych
Zarządzanie przydziałem przestrzeni Zakres wykładu Przydzielanie ekstentów segmentom (obiektom bazy danych). Parametry zarządzania przydziałem przestrzeni bazy danych. Kontrola zużycia przestrzeni. Wykorzystanie parametrów używania przestrzeni. Wyświetlanie informacji o wykorzystanej i wolnej przestrzeni.
Przegląd Segment 20M Następny Ekstent 5M Inicjalny Ekstent 15M Przestrzeń tabel Bloki bazy danych Plik Baza danych
Ekstenty (rozszerzenia) Ekstenty są przydzielane gdy segment: jest tworzony (INITIAL EXTENT). rośnie (NEXT EXTENT). jest modyfikowany w celu przydziału ekstentów. Ekstenty są zwalniane gdy segment: jest usuwany. jest obcinany (polecenie TRUNCATE). jest większy niż zadeklarowany rozmiar optymalny, a zawiera wolne ekstenty (dotyczy tylko segmentów wycofania).
Sterowanie przydziałem ekstentów Parametry Zarządzania Przestrzenią (istotne dla przestrzeni zarządzanych przez słownik danych) INITIAL NEXT MAXEXTENTS MINEXTENTS PCTINCREASE OPTIMAL FREELISTS FREELIST GROUPS
Parametry zarządzania przestrzenią Parametr INITIAL Opis Rozmiar w bajtach pierwszego ekstentu przydzielanego dla segmentu. NEXT MAXEXTENTS UNLIMITED Rozmiar w bajtach następnego ekstentu przydzielanego dla segmentu. Całkowita liczbę ekstentów (w tym pierwszy) jaką Oracle ma prawo przydzielić obiektowi. Wartość minimalna -1. Wartość domyślna zależy od rozmiaru bloku i systemu operacyjnego. Określa, że ekstenty mają być automatycznie dodawane w miarę potrzeby. Nie należy używać tej opcji w przypadku segmentów wycofania i tabel słownika danych.
Parametry zarządzania przestrzenią (cd) Parametr MINEXTENTS PCTINCREASE OPTIMAL FREELISTS FREELIST GROUPS Opis Liczba ekstentów rezerwowana podczas tworzenia segmentu. Wartość domyślna to pojedynczy ekstent -1, z wyjątkiem segmentów wycofania, gdzie niezbędne są co najmniej dwa. Procent o jaki rośnie każdy kolejny ekstent w stosunku do poprzedniego. Domyślnie 50, z wyjątkiem segmentów wycofania, które nie używają tego parametru(0). Optymalny rozmiar segmentu wycofania w bajtach. Wartością domyślną jest NULL. Liczba list wolnych bloków stosowanych przy wstawianiu do tabeli. Domyślnie jest jedna. Liczba oddzielnych grup list wolnych bloków używanych przez instancje w opcji Real Application Clasters. Domyślnie jest jedna.
Kontrola przydziału ekstentów Efekty zmiany NEXT: Kolejny alokowany ekstent ma rozmiar NEXT. Nastpne ekstenty rosną w zależności od wartości parametru PCTINCREASE. Efekty zmiany PCTINCREASE Wartość NEXT jest obliczana z użyciem następującego wzoru: NEXT = NEXT * (1 + nowy PCTINCREASE/100) zaokrąglone do następnego bloku Oracle Efekty jednoczesnej zmiany NEXT oraz PCTINCREASE - -- Następny ekstent ma przypisaną nową wartość NEXT. Od tej pory wartość NEXT będzie obliczana na podstawie PCTINCREASE zwykłą metodą.
Kontrola przydziału ekstentów SELECT * FROM dba_free_space WHERE tablespace_name = APPL_DATA ORDER BY block_id; TABLESPACE_NAME FILE_ID BLOCK_ID BYTES BLOCKS --------------- ------- -------- ------ ------ APPL_DATA 3 2 4096 2 APPL_DATA 3 200 40960 20 APPL_DATA 3 220 40960 20 APPL_DATA 3 307 38912 19 APPL_DATA 3 327 49152 24 APPL_DATA 3 412 49152 24 APPL_DATA 3 531 40960 20 7 rows selected.
Bloki Danych Składniki bloku bazy danych Wspólny Zmienny Nagłówek Katalog Tabel Katalog Wierszy Wolna Przestrzeń Dane Wierszy
Parametry wykorzystania przestrzeni PCTFREE PCTUSED INITRANS MAXTRANS
PCTFREE = 20 PCTUSED = 40 Wspólny Zmienny Nagłówek Katalog Tabel Katalog Wierszy Wolna Przestrzeń Wiersze wstawiane są do osiągnięcia 80%, ponieważ PCTFREE wskazuje, że 20% przestrzeni bloku ma pozostać wolne na aktualizacje istniejących wierszy. Wspólny Zmienny Nagłówek Katalog Tabel Katalog Wierszy Wolna Przestrzeń Dane Wierszy Aktualizacje istniejących wierszy mogą używać zarezerwowanej w bloku wolnej przestrzeni. Żadne nowe wiersze nie będą wstawiane do bloku dopóki będzie używane co najmniej 40% przestrzeni. Dane Wierszy
PCTFREE = 20 PCTUSED = 40 Wspólny Zmienny Nagłówek Katalog Tabel Katalog Wierszy Wolna Przestrzeń Dane Wierszy Kiedy ilość wykorzystanej przestrzeni spadnie poniżej 40%, do bloku mogą być wstawiane nowe wiersze. Wiersze wstawiane są do osiągnięcia 80%, ponieważ PCTFREE wskazuje, że 20% przestrzeni bloku ma pozostać wolne na aktualizacje istniejących wierszy. Cykl się zamyka... Wspólny Zmienny Nagłówek Katalog Tabel Katalog Wierszy Wolna Przestrzeń Dane Wierszy
Kontrola wykorzystania przestrzeni Mała Wartość Parametru PCTFREE Powoduje pełniejsze zapełnienie bloków przez operacje wstawiania. Pozwala zmieścić dane w mniejszej liczbie bloków. Może zwiększyć koszty przetwarzania jeśli serwer Oracle często dokonuje reorganizacji bloków. Może powodować migrację wierszy.
Kontrola wykorzystania przestrzeni Duża Wartość Parametru PCTFREE Rezerwuje więcej przestrzeni dla przyszłych modyfikacji. Może wymagać większej liczby bloków na przechowanie danych. Obniża koszty przetwarzania ponieważ ż bloki rzadziej wymagają reorganizacji. Zmniejsza efekt wierszy w łańcuchach (chained rows).
Kontrola wykorzystania przestrzeni Mała Wartość PCTUSED Zmniejsza koszty przetwarzania, ponieważ bloki rzadziej są uznawane za wolne. Zwiększa niewykorzystywaną przestrzeń. Duża ż Wartość PCTUSED Zwiększa koszty przetwarzania, ponieważ bloki częściej są uznawane za wolne i są bardziej wypełniane. Poprawia wykorzystanie przestrzeni.
Kontrola wykorzystania przestrzeni Blok Danych Nagłówek Bloku Nagłówek Bloku Wskaźnik Wiersza Wskaźnik Wiersza Wskaźnik Wiersza Wskaźnik Wiersza Wskaźnik Wiersza Wskaźnik Wiersza Wskaźnik Wiersza Wolna Przestrzeń Wykorzystana Przestrzeń (dane wierszy) Zapis Transakcji Zapis Transakcji Zapis Transakcji Zapis Transakcji
Łańcuchy i migracja Nagłówek Bloku Nagłówek wiersza Długość kolumny 1 Dane kolumny 1 Długość kolumny 2 Dane kolumny 2 Dane kolumny 2 Długość kolumny 3 Dane kolumny 3 Długość kolumny 4-NULL Długość kolumny 5 Dane kolumny 5 Dane kolumny 6 Długość kolumny 6 Dane kolumny 6 Wskaźnik do Reszty Wiersza Wiersz w łańcuchu Nagłówek Bloku Łańcucha Długość kolumny 7 Dane kolumny 7 (ciąg dalszy wiersza)
Łańcuchy i migracja ANALYZE TABLE tabela LIST CHAINED ROWS schemat. Wyświetlanie informacji o ekstentach i segmentach Perspektywy Słownika Danych: USER/DBA_EXTENTS USER/DBA_FREE_SPACE USER/DBA_SEGMENTS DBA_TABLESPACES DBA_DATA_FILES DATA
Wyświetlanie ś i informacji o ekstentach i segmentach SQL> DESCRIBE dba_tablespaces NAME NULL? TYPE --------------- -------- ------------ TABLESPACE_NAME INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE STATUS CONTENTS NOT NULL NOT NULL NOT NULL NOT NULL VARCHAR2(30) NUMBER NUMBER NUMBER NUMBER NUMBER VARCHAR2(9) VARCHAR2(9)
Wyświetlanie informacji o ekstentach i segmentach SQL> SELECT tablespace_name, status, contents 2 FROM dba_tablespaces; TABLESPACE_NAME STATUS CONTENTS --------------- ------ --------- TOOLS USERS ONLINE ONLINE PERMANENT PERMANENT
Wyświetlanie informacji o ekstentach i segmentach SQL> DESCRIBE dba_data_files NAME NULL? TYPE --------------- -------- ------------ FILE_NAME FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS VARCHAR2(257) NUMBER VARCHAR2(30) NUMBER NUMBER VARCHAR2(9)
Wyświetlanie informacji o ekstentach i segmentach SQL> SELECT file_name, file_id, tablespace_name, bytes 2 FROM dba_data_files; FILE_NAME FILE_ID TABLESPACE_NAME BYTES ------------------------------- ------- --------------- -------- /home/dba01/data/system_01.dbf 1 SYSTEM 10485760...
Wyświetlanie informacji o ekstentach i segmentach SQL> SELECT * 2 FROM dba_free_space 3 ORDER BY file _ id, block _ id; TABLESPACE_NAME FILE_ID BLOCK_ID BYTES BLOCKS --------------- ------- -------- -------- ------ SYSTEM 1 900 18432 9 SYSTEM 1 909 4096 2 SYSTEM 1 1912 6572032 3209
Wyświetlanie informacji o ekstentach i segmentach SQL> SELECT free.tablespace_name, block_id, free.bytes, 2 free.blocks, df.file_name 3 FROM dba _ free _ space free, dba _ data _ files df 4 WHERE free.file_id = df.file_id 5 ORDER BY 1, 2; TBALESPACE_NAME BLOCK_ID BYTES BLOCKS FILE_NAME --------------- -------- ------- ------ ----------------------------- SYSTEM 1912 6572032 3209 /home/dba01/data/system _ 01.dbf SYSTEM 900 18432 9 /home/dba01/data/system_02.dbf SYSTEM 909 4096 2 /home/dba01/data/system_03.dbf...
Wyświetlanie informacji o ekstentach i segmentach SQL> DESCRIBE dba_segments NAME NULL? TYPE --------------- -------- ------------ OWNER SEGMENT_NAME NAME SEGMENT_TYPE TABLESPACE_NAME HEADER_FILE HEADER_BLOCK BYTES BLOCKS EXTENTS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE FREELISTS FREELISTS_GROUPS VARCHAR2(30) VARCHAR2(81) VARCHAR2(17) VARCHAR2(30) NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER
Wyświetlanie informacji o ekstentach i segmentach SQL> SELECT owner, segment_name, extents, max_extents 2 FROM dba_segments 3 ORDER BY owner, segment _ name; OWNER SEGMENT_NAME EXTENTS MAX_EXTENTS ------------- ------------ ------- ----------- SCOTT SYSTEM SYSTEM SYS... S_EMP 5 25 RBS1 20 121 RBS2 2 121 UNDO$ 50 99
Wyświetlanie informacji o ekstentach i segmentach SQL> SELECT tablespace_name, COUNT(*) AS segments, 2> sum(bytes) AS bytes 3> FROM dba _ segments 4> GROUP BY tablespace_name; TABLESPACE_NAME SEGMENTS BYTES --------------- -------- -------- APPL_DATA 4 81920 RBS 2 51200 SYSTEM 128 3364864 USER_DATA 40 512000
Wyświetlanie informacji o ekstentach i segmentach SQL> DESCRIBE dba_extents NAME NULL? TYPE --------------- -------- ------------ OWNER SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME EXTENT_ID FILE_ID ID BLOCK_ID BYTES BLOCKS NOT NULL NOT NULL NOT NULL NOT NULL VARCHAR2(30) VARCHAR2(81) VARCHAR2(17) VARCHAR2(30) NUMBER NUMBER NUMBER NUMBER NUMBER
Wyświetlanie informacji o ekstentach i segmentach SQL> SELECT * FROM dba_extents; OWNER SEGMENT_ NAME SEGMENT_ TYPE TABLESPACE NAME EXTENT_ID FILE_ID ID BLOCK_ID BYTES BLOCKS ----- -------- -------- ---------- --------- ------- -------- ------ ------... SCOTT SCOTT SCOTT SCOTT SCOTT... S_EMP S_EMP S_EMP S_EMP S_EMP TABLE TABLE TABLE TABLE TABLE USER_DATA 0 2 380 10240 5 USER_DATA 1 2 385 10240 5 USER_DATA 2 2 390 20240 10 USER_DATA 3 2 400 30720 15 USER_DATA 4 2 415 40960 20
Zwalnianie niewykorzystanej przestrzeni Przestrzeń poniżej znacznika wysokiej wody nie może być zwolniona. Znacznik wysokiej wody może być znaleziony za pomocą ą procedury pakietowej DBMS_SPACE.UNUSED_SPACE. Jeśli segment jest całkowicie pusty, przestrzeń może być zwolniona poleceniem: TRUNCATE TABLE table_name DROP STORAGE ALTER TABLE DEALLOCATE UNUSED schemat. KEEP liczba tabela K M
Zwalnianie niewykorzystanej przestrzeni Blok wykorzystany Blok niewykorzystany ID Ekstentu 0 1 2 3 4 ID Bloku 87 92 97 107 122 Blok wykorzystany Znacznik Wysokiej Wody Zwolniona przestrzeń Blok niewykorzystany ID Ekstentu 0 1 2 3 4 ID Bloku 87 92 97 107 122 Znacznik Wysokiej Wody
Zwalnianie niewykorzystanej przestrzeni tabeli SQL> ALTER TABLE big_emp DEALLOCATE UNUSED; Table altered. Wolna przestrzeń Blok wykorzystany ID Ekstentu 0 1 2 3 4 ID Bloku 87 92 97 107 122 Znacznik Wysokiej Wody Łączenie wolnej przestrzeni w TABLESPACE (dotyczy przestrzeni zarządzanych przaz słownik danych) SVRMGR> ALTER TABLESPACE users COALESCE;
Walidacja struktur indeksów i tabel Walidacja Indeksów Serwer Oracle sprawdza integralność każdego bloku danych i sprawdza czy blok nie jest uszkodzony. Serwer Oracle nie sprawdza czy każdy wiersz tabeli ma odpowiadającą pozycję w indeksie ani czy każda pozycja indeksu wskazuje na pewien wiersz w tabeli. Walidacja Tabel Serwer Oracle sprawdza integralność każdego bloku danych. Jeżeli użyto opcji CASCADE sprawdzana jest też struktura wszystkich indeksów tabeli i odpowiedniość między tabelą a jej indeksami.