Struktura RDBMS Oracle
Struktura RDBMS Oracle
Instancja
Pliki
bazy
danych
Architektura Oracle
Architektura Oracle
Baza danych odnosi się do fizycznego
składowania informacji, jest bytem fizycznym –
składa się ze plików zapisanych na dyskach
Instancja odnosi się do oprogramowania
działającego na serwerze, zapewniającego dostęp
do informacji w bazie danych, jest bytem
logicznym – składa się ze struktur
w pamięci i procesów na serwerze
•
W pliku kontrolnym zawarte są informacje
W pliku kontrolnym zawarte są informacje
dotyczące położenia innych plików fizycznych
dotyczące położenia innych plików fizycznych
tworzących bazę danych – plików danych i plików
tworzących bazę danych – plików danych i plików
dziennika powtórzeń oraz kluczowe informacje
dziennika powtórzeń oraz kluczowe informacje
dotyczące treści i statusu bazy danych:
dotyczące treści i statusu bazy danych:
–
nazwa bazy danych i czas jej utworzenia
nazwa bazy danych i czas jej utworzenia
–
nazwy i położenie plików danych i plików dziennika
nazwy i położenie plików danych i plików dziennika
powtórzeń
powtórzeń
–
informacje o przestrzeniach tabel
informacje o przestrzeniach tabel
–
historia dziennika, archiwalne informacje dziennika
historia dziennika, archiwalne informacje dziennika
–
informacje o zestawie kopii zapasowych
informacje o zestawie kopii zapasowych
–
informacje o kopiach plików danych
informacje o kopiach plików danych
–
informacje o punktach kontrolnych
informacje o punktach kontrolnych
Struktura fizyczna
Struktura fizyczna
•
Inicjowanie bazy danych – odczytanie parametrów
Inicjowanie bazy danych – odczytanie parametrów
inicjacyjnych (sposób wykorzystania infrastruktury
inicjacyjnych (sposób wykorzystania infrastruktury
fizycznej)
fizycznej)
Inicjowanie bazy danych
Inicjowanie bazy danych
Parametry uruchomieniowe przechowuje się w
pliku parametrów inicjowania instancji
INIT.ORA
a od wersji Oracle9i w repozytorium
noszącym nazwę pliku parametrów serwera
SPFILE
W pakiecie Oracle znajduje się przykładowy
plik inicjacji, a także asystent konfiguracji
CONTROL_FILES – położenie pliku kontrolnego
CONTROL_FILES – położenie pliku kontrolnego
DB_NAME – nazwa bazy danych
DB_NAME – nazwa bazy danych
Zbiór parametrów
Zbiór parametrów
uruchomieniowych
uruchomieniowych
• Każda baza powinna posiadać minimum
dwa pliki kontrolne na innych dyskach
fizycznych
• Utrata plików kontrolnych nie musi
oznaczać zniszczenia bazy danych –
istnieją metody ich odtwarzania
• W CONTROL_FILES można umieścić kilka
różnych lokalizacji, co spowoduje
automatyczne kopiowanie plików
kontrolnych
Pliki danych
Pliki danych
• każdy plik składa się z bloków bazy danych
Oracle, złożonych z bloków SO na dysku
• rozmiar bloku Oracle waha się od 2KB do 32 KB
(parametr DB_BLOK_SIZE)
• rozmiar bloku to najmniejsza ilość danych, którą
można zapisać lub odczytać
• pierwszy blok każdego pliku danych to nagłówek
pliku danych – zawiera on najważniejsze
informacje, konieczne do utrzymania spójności
bazy danych
Pliki danych
Pliki danych
• najważniejszy element nagłówka to struktura punktu
kontrolnego – logiczny znacznik czasu, wskazujący
moment zapisania ostatniej zmiany w pliku danych
• Ma on kluczowe znaczenie w procesie odtwarzania bazy
danych, ponieważ określa, z których dzienników
powtórzeń należy skorzystać przy doprowadzeniu pliku
danych do stanu sprzed awarii
• Z punktu widzenia warstwy fizycznej, plik danych jest
składowany jako zbiór bloków systemu operacyjnego
• Z punktu widzenia warstwy logicznej pliki danych
posiadają trzy pośrednie poziomy organizacji:
• bloki danych
• ekstenty
• segmenty
segmenty, ekstenty i bloki danych
blok
danych
ekstent
segment to obiekt taki jak tabela, czy
indeks złożony z jednego lub wielu
ekstentów
plik
danyc
h
segmenty, ekstenty i bloki danych
blok systemu operacyjnego
bloki Oracle
Pliki dziennika powtórzeń
Pliki dziennika powtórzeń
zawierają nagranie zmian dokonanych w bazie, będących
efektem transakcji i wewnętrznych operacji Oracle
Zapisanie zmian w dzienniku transakcji pozwala
odtworzyć zmiany utracone na skutek awarii,
zabezpieczając dzięki temu spójność transakcji
Każda z instancji Oracle używa wątku powtórzeń w celu
zapisania zmian dokonywanych w bazie
Oracle utrzymuje wiele kopii plików dziennika powtórzeń,
dokonuje i dokonuje zapisu do wszystkich elementów
dziennika powtórzeń synchronicznie
Po zapełnieniu jednego pliku dziennika powtórzeń,
automatycznie rozpoczyna korzystanie z następnego
• Instancja jest metodą wykorzystywaną do dostępu
do danych składającą się z procesów i pamięci
współdzielonej
• Instancja (suma buforów pod wspólną nazwą
Globalna przestrzeń systemowa SGA) – obszar
pamięci współużytkowanej wykorzystywany przez
Oracle’a do przechowywania informacji kontrolnych
instancji Oracle’a
• SGA jest przydzielana podczas uruchamiania
instancji i zwalniana podczas jej zatrzymywania
Globalna przestrzeń systemowa SGA
Globalna przestrzeń systemowa SGA
• bufory pamięci podręcznej bazy danych
– przechowują
ostatnio używane bloki danych. Gdy użytkownik chce
uzyskać dostęp do bloku danych, który nie znajduje
się w pamięci podręcznej, blok ten musi zostać
wczytany z dysku i w niej zapisany
• bufory dziennika powtórzeń
– czyli zmian
wprowadzonych do bazy – wykorzystywane do
odtwarzania po awarii systemu
• pula współużytkowania
– buforowane są różnego
rodzaju obiekty, którymi mogą się dzielić użytkownicy
np. zapytania i fragmenty zapytań SQL oraz ich
wyniki, informacje ze słownika danych
• Oracle automatycznie zarządza pamięcią alokowaną w
globalnym obszarze programu (Program Global Area)
instancji
W skład informacji zawartych w SGA
wchodzą:
DBWR
DBWR
–
–
Data Base WRiter
Data Base WRiter
– zapisuje bloki bazy danych z
– zapisuje bloki bazy danych z
pamięci podręcznej bufora SGA do plików dyskowych
pamięci podręcznej bufora SGA do plików dyskowych
LGWR
LGWR
– LoG WRiter – przechowuje informacje o
– LoG WRiter – przechowuje informacje o
powtórzeniach z bufora dziennika w SGA do wszystkich
powtórzeniach z bufora dziennika w SGA do wszystkich
kopii bieżącego pliku dziennika powtórzeń na dysku
kopii bieżącego pliku dziennika powtórzeń na dysku
PMON
PMON
–
–
Process MONitor –
Process MONitor –
monitoruje procesy oraz
monitoruje procesy oraz
zarządza zasobami bazy
zarządza zasobami bazy
SMON
SMON
–
–
System MONitor
System MONitor
– monitoruje system
– monitoruje system
zarządzający pamięcią SGA
zarządzający pamięcią SGA
ARCn
ARCn
– Archiver – odczytuje pliki dziennika powtórzeń po
– Archiver – odczytuje pliki dziennika powtórzeń po
ich zapełnieniu przez Oracle i zapisuje ich kopie
ich zapełnieniu przez Oracle i zapisuje ich kopie
Podstawowymi procesami drugoplanowymi
Podstawowymi procesami drugoplanowymi
wymaganymi przez bazę danych są:
wymaganymi przez bazę danych są:
• Przestrzeń tabel SYSTEM zawsze zawiera tabele słownika
danych
• Tabele słownika danych poprzedzone przedrostkiem V$ i
GV$ to tabele dynamiczne, nieprzerwanie aktualizowane,
by odzwierciedlać bieżący stan bazy danych Oracle
• Statyczne tabele słownika danych mogą mieć przedrostki:
– DBA_
– ALL_
– USER_
Słownik danych
Przestrzenie tabel
Przestrzenie tabel
Wszystkie dane składowane w bazie danych
Wszystkie dane składowane w bazie danych
Oracle muszą znajdować sie w przestrzeni tabel
Oracle muszą znajdować sie w przestrzeni tabel
Przestrzeń tabel jest strukturą logiczną – składa
Przestrzeń tabel jest strukturą logiczną – składa
się z plików danych
się z plików danych
Każda przestrzeń tabel musi zawierać co
Każda przestrzeń tabel musi zawierać co
najmniej jeden plik danych
najmniej jeden plik danych
Każdy plik może przynależeć tylko do jednej
Każdy plik może przynależeć tylko do jednej
przestrzeni tabel
przestrzeni tabel
Baza danych może składać się z najwyżej 64
Baza danych może składać się z najwyżej 64
tysięcy plików danych
tysięcy plików danych
przestrzenie tabel
przestrzenie tabel i
pliki danych
pliki danych
przestrzeń
tabel
narzędzi
przestrzeń
tabel
użytkownik
a
pliki
danych
pliki
danych
pliki
danych
pliki
danych
pliki
danych
pliki
danych
Indeks
Indeks
Plik danych nr 1
Plik danych nr 2
Przestrzeń tabel nr 1
Plik danych nr 3
Indeks
Przestrzeń tabel nr
2
zależności pomiędzy przestrzenią
zależności pomiędzy przestrzenią
tabel a plikami danych
tabel a plikami danych
Tablica
Tablica
Tablica
CREATE [UNDO] TABLESPACE nazwa przestrzeni
CREATE [UNDO] TABLESPACE nazwa przestrzeni
tabel
tabel
DATAFILE nazwa pliku danych rozmiar
DATAFILE nazwa pliku danych rozmiar
[instrukcja przechowywania]
[instrukcja przechowywania]
[BLOCKSIZE rozmiar [K]]
[BLOCKSIZE rozmiar [K]]
[TEMPORARY]
[TEMPORARY]
[EXTENT MANAGEMENT DICTIONARY]
[EXTENT MANAGEMENT DICTIONARY]
[EXTENT MANAGEMENT LOCAL[AUTOALLOCATE]]
[EXTENT MANAGEMENT LOCAL[AUTOALLOCATE]]
[EXTENT MANAGEMENT LOCAL[UNIFORM SIZE
[EXTENT MANAGEMENT LOCAL[UNIFORM SIZE
rozmiar [K/M]]]
rozmiar [K/M]]]
[SEGMENT SPACE MANAGEMENT AUTO]
[SEGMENT SPACE MANAGEMENT AUTO]
[SEGMENT SPACE MANAGEMENT MANUAL]
[SEGMENT SPACE MANAGEMENT MANUAL]
Tworzenie przestrzeni tabel
Tworzenie przestrzeni tabel
Tworzenie przestrzeni tabel
Tworzenie przestrzeni tabel
UNDO
– parametr określa, że tworzona przestrzeń tabel
będzie zawierać informacje służące do cofania
operacji
instrukcja przechowywania
- określa nazwę pliku,
rozmiar itp.
BLOCKSIZE
– tworzenie przestrzeni tabel o nie
standardowych rozmiarach bloków
TEMPORARY
– przestrzeń tabel będzie wykorzystywana
jako tymczasowa
EXTEND MANAGEMENT
– określa, czy przestrzeń tabel
będzie zarządzana słownikiem danych, czy lokalnie
SEGMENT SPACE MANAGEMENT
– instrukcja
wykorzystywana do ustawienia automatycznego (za
pomocą bitmapy) bądź ręcznego (za pomocą listy
wolnych bloków) zarządzania wolną przestrzenią w
segmentach
segment danych
– podstawowy typ segmentu,
który może być wykorzystywany do
przechowywania tabel oraz klastrów
segment indeksu
– do przechowywania
indeksów
segment przywracania (cofania operacji)
–
przechowywane są informacje służące do
wycofywania operacji - segmenty te zostały
zastąpione przestrzeniami tabel cofania
segment tymczasowy
– do przechowywania
danych generowanych podczas działania
Oracle’a - mogą być one używane do
sortowania i złączeń
przestrzeń tabel może
przestrzeń tabel może
zawierać:
zawierać:
• Transakcja – jednostka interakcji użytkownika z
bazą danych (szereg podstawowych poleceń
języka SQL realizowanych w bazie danych)
Własności transakcji
atomowość
– określa regułę
wszystko albo nic
zbiór
operacji składowych transakcji musi być wykonany w
całości albo nie wykonany wcale
spójność
– transakcja powinna przekształcić system z
jednego stanu spójnego w inny spójny stan
izolacja
– transakcja powinna być wykonywana
niezależnie od innych działających współbieżnie transakcji,
przetwarzanych w tym samym środowisku. Skutki
współbieżnego wykonania transakcji powinny być takie
same, jak wówczas gdyby wykonywano je w sposób
szeregowy
trwałość –
wyniki działania zatwierdzonych transakcji
powinny być zachowane w pamięci trwałej
Zarządzanie transakcjami rozproszonymi
Zarządzanie transakcjami rozproszonymi
Kończenie transakcji
•
Wszystkie transakcje kończą się na jeden z dwóch
sposobów:
–
sukcesem
oznaczającym trwałe wprowadzenie wszystkich
modyfikacji do bazy danych
–
porażką
, oznaczającą odwołanie transakcji i odtworzenie
stanu bazy sprzed jej rozpoczęcia transakcji
•
Z definicji, transakcja zakończona sukcesem nie
może zostać odwołana
•
System zarządzania zapisuje wszystkie
podejmowane przez transakcję czynności w
rejestrze transakcji - aby móc ją odwołać
Zakończenie transakcji
Status zakończenia:
Status zakończenia:
– zatwierdzenie,
– wycofanie.
Zakończenie jawne:
Zakończenie jawne:
– wykonanie poleceń kończących transakcję:
COMMIT
(zatwierdzenie) lub ROLLBACK (wycofanie).
Zakończenie niejawne:
Zakończenie niejawne:
– zakończenie sesji – zatwierdzenie,
– wykonanie operacji DDL lub DCL – zatwierdzenie,
– awaria – wycofanie.
Polecenie:
• zwolnienie założonych blokad,
• usunięcie punktów bezpieczeństwa,
• sprawdzenie odroczonych ograniczeń
integralnościowych,
• trwały zapis zmian, wprowadzonych
przez operacje w ramach transakcji,
• zmiany, wprowadzone przez transakcję,
są widoczne dla innych transakcji.
Zarządzanie transakcjami
Zarządzanie transakcjami
COMMIT
Polecenie:
– odtwarza stan bazy danych i
przywraca jej status do stanu po
ostatniej operacji COMMIT
– zmiany wprowadzone do bazy
danych po ostatniej operacji COMMIT
są odwracane
Zarządzanie transakcjami
Zarządzanie transakcjami
ROLLBACK
Zarządzanie transakcjami
rozproszonymi
• Transakcję kończy się poprzez jej zatwierdzenie
lub wycofanie - domyślnie, każda transakcja jest
jawnie kończona przez użytkownika
• Zakończenie jednej transakcji (zatwierdzenie lub
wycofanie) jest początkiem transakcji następnej
• Transakcję zatwierdza się poleceniem commit, a
wycofuje poleceniem rollback
• Wszystkie polecenia grupy DDL (np. create table,
create view, alter table, drop synonym) i
polecenia grupy DCL (np. grant, revoke) kończą
się niejawnym poleceniem commit
Zarządzanie transakcjami
rozproszonymi
• Długą transakcję można podzielić na
mniejsze, logicznie spójne fragmenty,
wprowadzając w transakcji tzw. punkty
zachowania (savepoints)
• Transakcję taką można wycofywać do
wskazanego punktu zachowania
Punkty bezpieczeństwa
transakcji
Wprowadzenie punktu zachowania
realizuje się poleceniem
savepoint
savepoint
nazwa_punktu_zachowania;
nazwa_punktu_zachowania;
• transakcja pozostaje aktywna,
• zmiany, wprowadzone przez operacje,
zrealizowane między punktem bezpieczeństwa
a poleceniem ROLLBACK są anulowane,
• punkty bezpieczeństwa, ustawione pomiędzy
punktem wskazanym a poleceniem ROLLBACK,
zostają usunięte.
Punkty bezpieczeństwa transakcji
Punkty bezpieczeństwa transakcji
Punkty bezpieczeństwa
transakcji
INSERT INTO...
SAVEPOINT S1;
DELETE...
SAVEPOINT S2;
UPDATE...
ROLLBACK;
INSERT INTO...
SAVEPOINT S1;
DELETE...
SAVEPOINT S2;
UPDATE...
ROLLBACK TO S1;
INSERT INTO...
SAVEPOINT S1;
DELETE...
SAVEPOINT S2;
UPDATE...
ROLLBACK TO S2;
I
II
III
Punkty bezpieczeństwa
transakcji
Usunięcie punktu bezpieczeństwa
Wycofanie do wskazanego punktu
zachowania
RELEASE SAVEPOINT
RELEASE SAVEPOINT
nazwa_punktu_zachowania
nazwa_punktu_zachowania
;
;
ROLLBACK
ROLLBACK
to savepoint
to savepoint
nazwa_punktu_zachowania
nazwa_punktu_zachowania
;
;