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



Podobne dokumenty
(c) Politechnika Poznańska, Instytut Informatyki

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

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

Administracja bazy danych Oracle 10g

Zadania do wykonania na laboratorium

Archiwizacja i odtwarzanie bazy danych

System Oracle podstawowe czynności administracyjne

Zarządzanie strukturą bazy danych Oracle11g

Zarządzanie wolną przestrzenią w bloku. Rozszerzenia

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

Architektura Systemu Zarządzania Bazą Danych Oracle

(c) Politechnika Poznańska, Instytut Informatyki

Przyczyny awarii. Struktury wykorzystywane do odtwarzania bd. Archiwizowanie plików dziennika. Archiwizowanie danych. danych

Server Oracle - System Zarządzania Bazą Danych - składa się z instancji Oracle i bazy danych Oracle Instancja Oracle - pewne procesy drugoplanowe i

1 Instalowanie i uaktualnianie serwera SQL Server

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

Bazy danych. Plan wykładu. Rozproszona baza danych. Fragmetaryzacja. Cechy bazy rozproszonej. Replikacje (zalety) Wykład 15: Rozproszone bazy danych

Uprawnienia, role, synonimy

Wydajność hurtowni danych opartej o Oracle10g Database

Block Change Tracking

PODSTAWY BAZ DANYCH. 7. Metody Implementacji Baz Danych. 2009/ Notatki do wykładu "Podstawy baz danych" 1

Administracja i programowanie pod Microsoft SQL Server 2000

Szkolenie obejmuje zagadnienia związane z tworzeniem i zarządzaniem bazą danych Oracle, jej zasobami i dostępem do danych.

Ustawienie na poziomie sesji (działa do zmiany lub zakończenia sesji zamknięcia połączenia).

Administracja bazy danych Oracle 10g

Przygotowanie bazy do wykonywania kopii bezpieczeństwa

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

Oracle11g: Wprowadzenie do SQL

Ćwiczenie 2. Struktura bazy danych Oracle

System plików warstwa fizyczna

System plików warstwa fizyczna

System plików warstwa fizyczna

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

Bazy danych. Plan wykładu. Model logiczny i fizyczny. Operacje na pliku. Dyski. Mechanizmy składowania

Internetowe bazy danych

Wykład 8. SQL praca z tabelami 5

Konfiguracja bazy danych zwiększająca możliwość odtworzenia jej po awarii nośnika

Zarządzanie kontami użytkowników w i uprawnieniami

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

PODSTAWY BAZ DANYCH Wykład 6 4. Metody Implementacji Baz Danych

Tabela wewnętrzna - definicja

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

Administracja bazy danych Oracle 10g

Ćwiczenie 2. Struktura bazy danych Oracle

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

Oracle PL/SQL. Paweł Rajba.

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

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

SZKOLENIE: Administrator baz danych. Cel szkolenia

Zarządzanie obiektami bazy danych Oracle11g

Oracle ³atwiejszy ni przypuszczasz. Wydanie III

Zarządzanie transakcjami

Zakres wykładów (2) T orzenie, monitorowanie i usuwanie uż u ytkowników. ytkowników Kontrolowanie haseł Kontrolowanie hase i zasobów systemowych i

Optymalizacja poleceń SQL Statystyki

Wpływ ustawień parametru wieloblokowego sekwencyjnego czytania danych na czas wykonywania zapytania SQL w bazie danych Oracle 11g

Odtwarzanie po awarii plików bazy danych

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu):

wykład Organizacja plików Opracował: dr inż. Janusz DUDCZYK

060 SQL FIZYCZNA STRUKTURA BAZY DANYCH. Prof. dr hab. Marek Wisła

Cele. Definiowanie wyzwalaczy

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Wykonywanie kopii bezpieczeństwa w bazie Oracle 11g

Administracja i programowanie pod Microsoft SQL Server 2000

Relacyjne bazy danych. Podstawy SQL

Spis treści. Przedmowa

Cwiczenie 7. Retrospekcja

Tytuł kursu: Oracle 11g XE Administracja (kompleksowe)

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

Zarządzanie obiektami bazy danych Oracle11g

Ładowanie i reorganizacja

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

Podstawy systemów UNIX Podstawy RMAN

Od czego zacząć przy budowaniu środowisk wysokiej dostępności?

Pakiety podprogramów Dynamiczny SQL

1.5.3 Do czego słuŝą tymczasowe przestrzenie Zarządzanie plikami danych

Fizyczna struktura bazy danych w SQL Serwerze

Fizyczna organizacja danych w bazie danych

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

Kopie zapasowe w SQL Server. Michał Bleja

Microsoft SQL Server Podstawy T-SQL

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

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

Partycjonowanie tabel (1)

Administracja i programowanie pod Microsoft SQL Server 2000

Bazy danych 2. Wykład 1

Systemy GIS Tworzenie zapytań w bazach danych

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

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

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

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

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

przykłady problemów; realizacja dostaw części od producenta do klienta:

Tworzenie raportów XML Publisher przy użyciu Data Templates

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Transakcje. (c) Instytut Informatyki Politechniki Poznańskiej

Transkrypt:

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.