Architektura Oracle

Autor: Marcin Kasiński
21.01.2011 13:24:00 +0200

Struktury pamięciowe

SGA

Globalny obszar systemu jest specjalnym blokiem pamięci, w którym baza danych zapisuje najczęściej wykonywane operacje na bazie, czy tez informacje związane z funkcjonowaniem bazy danych. Obszar ten stanowi statycznie podzielony obszar pamięci współużytkowanej przez wszystkie procesy bazy Oracle. Do wersji 9i wielkość tego bloku była pobierana z pliku init.ora i nie mogła być zmieniana w czasie pracy bazy. W celu zmiany tego parametru należy zatrzymać bazę, zmienić wartość parametru i uruchomić bazę ponownie. W wersji 9i bazy wartość ta może być generowana dynamicznie w czasie pracy aplikacji. Wielkość tego buforu określamy w parametrze DB_CACHE_SIZE. Od wersji 9i bazy Oracle wprowadzono również parametr SGA_MAX_SIZE określający, do jakiej wielkości może się rozrosnąć obszar SGA.

Pamięć podręczna słownika

Pamięć podręczna słownika jest częścią SGA zawierającą informacje często pobierane z tabel słownikowych. Tabele słownikowe zawierają informacje dotyczące wszystkich obiektów bazy danych. Do takich tabel odwołujemy bardzo często i wskazane jest, aby dane w nich zawarte nie były za każdym razem czytane z dysku, tylko z pamięci, co jest zdecydowanie szybsze. Rozmiar tej pamięci określa się poprzez parametr SHARED_POOL_SIZE pliku init.ora.

Bufor dziennika powtórzeń

Bufor dziennika powtórzeń zawiera informacje potrzebne do odtwarzania transakcji, które z tego bufora co pewien czas są zapisywane do plików czynnego dziennika powtórzeń. Polepsza to wydajność bazy danych, ponieważ dane nie są zapisywane do plików, tylko są buforowane w pamięci.

Obszar dzielony

Na obszar dzielony składa się omawiana wcześniej pamięć podręczna słownika oraz biblioteczna pamięć podręczna oraz dzielony obszar SQL.

Biblioteczna pamięć podręczna (library cache) pozwala na współużytkowanie najczęściej używanych poleceń SQL. Dzielony obszar SQL zawiera informacje dotyczące planu wykonania oraz sposób parsowania wykonanych instrukcji SQL. Obszar ten pozwala na przyspieszanie wykonywania tych instrukcji. Jeśli wykonujemy instrukcje, która znajduje się już w tym buforze system nie musi ponownie generować plan wykonania oraz sposób parsowania tej instrukcji, ponieważ dane te znajdują się w buforze. Dzielony obszar SQL, tak jak większość buforów bazy danych Oracle działa w oparciu o algorytm LRU. Bufor ma określoną wielkość, dane są zapisywane do bufora nieustannie. W przypadku, kiedy nie ma już miejsca w buforze najdłużej nie używane dane znajdujące się w buforze są z niego usuwane, aby zrobić miejsce na nowe dane.

Obszar dużych obiektów

Obszar dużych obiektów jest dodatkowym buforem danych do przechowywania dużych obiektów np. przy archiwizacji i odtwarzania danych. Wielkość tego bufora określa parametr LARGE_POOL_SIZE.

Obszar JAVA

Obszar JAVA jest wykorzystywany do buforowania poleceń języka JAVA.

Zwielokrotniony obszar buforów

Wartości dotyczące wielkości buforów danych dotyczą standardowej wielkości bufora danych. Tak samo jak możemy w bazie Oracle 9i używać segmentów o rożnych wielkościach bloków danych tak samo możemy ustawiać wielkości buforów w zależności od używanych w bazie wielkości bloków danych. Parametry te to np. DB_4K_CACHE_SIZE, DB_16K_CACHE_SIZE.

PGA

Obszar ten, to globalny obszar programu wykorzystywany przez pojedynczy proces i nie jest dzielony przez inne procesy.

Procesy drugoplanowe

SMON

Proces SMON (System Monitor) jest procesem drugoplanowym zajmującym się kontrola, czy podczas startu bazy danych nie wymaga ona automatycznego odtwarzania za pomocą plików czynnego dziennika powtórzeń, usuwanie zbędnych obiektów transakcji. Dodatkowo proces ten zajmuje się zarządzaniem fragmentacja bazy poprzez łączenie sąsiednich wolnych bloków w jedna większą całość.

PMON

Proces PMON (Process Monitor) zajmuje się zarządzaniem procesów użytkownika poprzez usuwanie pozostałości po niepoprawnie zakończonych procesach użytkownika.

DBWR

Proces DBWR (Database Writer) zajmuje się cyklicznym zapisywaniem danych zapisanych w obszarze SGA do plików danych. Takich procesów może być więcej niż jeden. Liczbę tych procesów określamy parametrem DB_WRITER_PROCESSES. W przypadku, kiedy system operacyjny, na którym zainstalowana jest baza danych nie obsługuje asynchronicznych operacji wejścia - wyjścia, stosujemy jeden proces DBWR oraz kilka podrzędnych procesów wejścia - wyjścia. Liczbę tych procesów określamy za pomocą parametru DBWR_IO_SLAVES

LGWR

Proces LGWR (Log Writer) zajmuje się zarządzaniem zapisem zawartości bufora dziennika powtórzeń do plików czynnego dziennika powtórzeń. Tak jak i w przednich procesach proces ten zapisuje dane cyklicznie, a nie na bieżąco.

CKPT

Proces CKPT (Checkpoint) jest procesem zajmującym się rejestracjami punktów kontrolnych. Punkty te poprzez aktualizacje nagłówków plików danych oraz plików sterujących mogą spowodować przyspieszenie czasu potrzebnego do odtworzenia instancji po awarii. Z procesem tym związane są dwa parametry pliku konfiguracyjnego LOG_CHECKPOINT_INTERVAL oraz LOG_CHECKPOINT_TIMEOUT.

ARCH

Proces ARCH (Archiver) działa w przypadku, kiedy baza danych uruchomiona jest w trybie ARCHIVELOG. W trybie tym, kiedy plik dziennika powtórzeń zapełni się tworzona jest kopia tego pliku. Za to właśnie odpowiada proces ARCH.

RECO

CJQx

LMSx

Dxxx

Sxxx

Segmenty wycofania

Segmenty wycofania są specjalnymi obiektami Oracle stosowanymi do zarządzania transakcjami. Kiedy rozpoczynamy transakcje segmenty wycofania wykorzystywane są do zapamiętania stanu modyfikowanych danych, tak, aby w przypadku wycofania transakcji łatwo można było wrócić do stanu sprzed rozpoczęcia tej transakcji.


powrót
Zachęcam do przedstawienia swoich uwag i opinii w polu komentarzy.

Komentarze

Dodaj Komentarz