Architektura bazy danych Oracle Database – budowa systemu

Architektura bazy danych Oracle Database – jak to działa?

Poruszając się po tematyce związanej z organizacją informacji, nie sposób pominąć ważnego tematu, jakim jest architektura bazy danych Oracle Database. W niniejszym artykule omówię temat nie tylko samej budowy bazy, ale również poszczególnych jej komponentów. Dowiesz się, jak działa baza Oracle oraz jakie główne struktury w niej występują.

eBook Niezbędnik Administratora Baz Danych cover

Architektura bazy danych Oracle Database – części składowe

Co takiego składa się na bazę danych Oracle, czyli najpopularniejszy komercyjny RDBMS? Przede wszystkim, aby poprawnie administrować danymi w ramach systemu Oracle, potrzebna jest baza oraz instancja. Odpowiednio dopasowana budowa systemu pozwala jej administratorom i użytkownikom uzyskać dostęp do danych. Przemyślana architektura Oracle Database zapewnia nam bezpieczeństwo przechowywanych w bazie informacji i wysoką wydajność.

Warto pochylić się nad oboma hasłami, by wyjaśnić ich zależność i funkcjonalność w ramach Oracle Database.

Baza danych Oracle Database a instancja

Kiedy potocznie mówi się o bazie danych Oracle, tak naprawdę chodzi o dwa komponenty jakimi są baza danych sama w sobie i instancja. To drugie pojęcie dotyczy zestawu obszarów pamięci oraz procesów na systemie operacyjnym. Procesy odpowiedzialne są za wykonywanie realnych zadań, wykorzystując do tego obszary pamięci. Z kolei pod pojęciem bazy danych kryje się zestaw plików przechowywujących nasze dane.

Warto wyjaśnić, że instancja bazy danych Oracle związana jest zawsze z tylko jedną bazą danych. Na obszary pamięci instancji składają się struktury współdzielone i prywatne.

Zarówno w SQL Server, jak również MySQL, budowa baz danych daje możliwość magazynowania wielu logicznych baz danych. Od wersji Oracle Database 12c możliwość ta pojawia się również w produkcie firmy Oracle, pod postacią kontenerów Pluggable Database(PDB). Należy jednocześnie zaznaczyć, iż istnieje kilka specyficznych cech, którymi rządzą się instancje baz danych Oracle:

  • Możesz uruchomić instancję bez dawania jej dostępu do plików bazy danych. W ten sposób najpierw uruchamiasz database instance, a dopiero w jej ramach tworzysz konkretną bazę.
  • Jedna instancja obsługiwać może wyłącznie jedną bazę jednocześnie, choć kilka z nich może mieć dostęp do tej samej bazy. Ma to szczególne znaczenie, gdy pliki zdecydujesz się magazynować w środowisku klastrowym – Oracle Real Application Cluster(Oracle RAC, wraz z Oracle ASM). Wówczas możesz zapewnić sobie dostępność i skalowalność na najwyższym poziomie.
  • Baza danych może istnieć bez instancji Oracle. Zarządzanie będzie wówczas jednak niemożliwe, gdyż nie będzie żadnych procesów operujących na danych. Całość jest wówczas jedynie zbiorem plików.

Instancja i jej obszary pamięci

Dodatkowo warto wiedzieć, że w skład obszarów pamięci instancji Oracle wchodzą: System Global Area (SGA), Program Global Area (PGA). SGA to bufor pamięci współdzielonej, który zawiera informacje wspólne dla wszystkich procesów instancji bazodanowej. To właśnie w SGA przechowywane są choćby informacje na temat wykonywanych na bazie danych zapytań. Z kolei PGA to pamięć prywatna, alokowana do każdej sesji podczas jej trwania.

Uruchomienie instancji powoduje alokacje SGA i PGA w RAM maszyny bazodanowej. Następny krok, czyli tak zwane zamontowanie bazy danych umożliwia instancji pracę na plikach danych. Po montowaniu administrator ma możliwość otwarcia bazy danych dla użytkowników, którzy od tej chwili mogą już łączyć się i wykonywać swoje zapytania SQL.

Struktury przechowywania w bazach danych Oracle

W Oracle Database wyróżnia się struktury fizyczne i logiczne. Przyjrzyjmy się każdej z nich.

Struktura fizyczna bazy danych – Physical Storage Structures

Fizyczna struktura bazy danych Oracle to nic innego jak pliki znajdujące się na dysku twardym serwera bazodanowego. Kiedy tworzysz nową bazę, procesy Oracle budują kluczowe z nich, m.in.:

  • Plik danych zawierający nasze dane. Mogą to być dane klientów lub szczegóły dotyczące poszczególnych zamówień. Logiczne dane, w tym każda tabela i indeks, są fizycznie przetrzymywane w tych plikach.
  • Pliki kontrolne zawierające specyficzne metadane. Każdy plik kontrolny posiada informacje opisujące fizyczną strukturę bazy, na którą składa się nazwa bazy danych oraz umiejscowienie poszczególnych jej plików.
  • Pliki dziennika powtórzeń zawierające wszelkie informacje na temat zmian, jakie zaszły w plikach danych. Potrzebne są do ewentualnego odtworzenia bazy do stanu spójnego, w wypadku awarii.
Ponad 400 zadowolonych kursantów!

Struktura logiczna bazy danych – Logical Storage Structures

Struktury logiczne bazy danych Oracle to jednostki alokacji przestrzeni dyskowej. Podział poniżej zaprezentowany ma na celu optymalizacje zużywanego przez bazę danych miejsca na dysku twardym. Należy wymienić cztery elementy tego typu występujące w Oracle Database:

  • Blok danych, Oracle przechowuje dane w blokach, które nazywa się również blokami logicznymi. Domyślnie jeden blok w nomenklaturze Oracle, odpowiada 8kB na dysku twardym. Wartość ta jest oczywiście modyfikowalna na poziomie Tablespace, o którym zaraz będzie mowa.
  • Extent, czyli zbiór kilku omówionych wyżej bloków logicznych.
  • Segmenty, czyli zbiór extentów. Segment to nic innego jak tabela, indeks lub inny obiekt bazodanowy.
  • Tablespace, czyli logiczny zbiór tabel, indeksów i inny obiektów bazodanowych(segmentów). Każdy tablespace ma przypisane do siebie pliki danych z struktury fizycznej Oracle Database. Tablespace musi posiadać co najmniej jeden plik danych.

Podejście takie zapewnia możliwość alokowania miejsca na dysku twardym w różnych rozmiarach w zależności od potrzeb. Dobrze zoptymalizowana konfiguracja bazy danych Oracle w zakresie jej struktury logicznej, pozwala w znacznym stopniu na ograniczenie defragmentacji.

Szersze omówienie tematu struktury logicznej baz danych znajdziesz w artykułach: Segmenty Oracle i Tablespace Oracle!

Struktura logiczna bazy danych Oracle Database
Struktura logiczna storage – slajd z kursu Praktyczna Administracja Oracle Database

Procesy w Oracle Database

Procesy bazodanowe możemy podzielić na dwie grupy. Omówię teraz po krótce każdą z nich.

Procesy servera i użytkownika – Server Processes i User Processes

Oprogramowanie bazodanowe tworzy procesy serwerowe, które odpowiedzialne są za zarządzanie zapytaniami użytkownika w ramach instancji bazy. Poprzez user process rozumie się aplikację lub narzędzie, które podłącza się do Oracle, np. SQL Developer. Narzędzie to jest przeważnie aplikacją zainstalowaną na stacji roboczej użytkownika bazy danych, lub aplikacją uruchomioną na serwerze aplikacyjnym. Procesy, za które odpowiedzialny jest serwer Oracle, mogą:

  • Analizować i uruchamiać instrukcje SQL, które wydaje się za pośrednictwem aplikacji.
  • Wczytywać niezbędne bloki danych z plików na dysku do współdzielonych buforów SGA, jeśli bloki nie są jeszcze tam obecne.
  • Zwracać wyniki w taki sposób, by aplikacja mogła przetworzyć informacje danych bazy.

Procesy w tle – Background Processes

Drugim elementem, który każda baza Oracle oferuje w systemie zarządzania, są wszelkiego rodzaju procesy w tle. Ich celem jest maksymalizacja wydajności i akomodacja wielu użytkowników bazy. System może współdzielić wiele różnych procesów w ramach serwera bazy danych, do których zaliczamy między innymi:

  • Database Writer (DBWn).
  • Log Writer (LGWR).
  • System monitor (SMON).
  • Process monitor (PMON).
  • Recovery (RECO).
  • Manageability monitor (MMON).
  • Oraz wiele innych.
Architektura Oracle Database
Architektura Oracle Database – slajd z kursu Praktyczna Administracja Oracle Database

Architektura systemu przechowywania danych SQL – podsumowanie

Odpowiednio dostosowany system bazodanowy do obsługi firmowych informacji to niezwykle istotna rzecz. Znając, jak zbudowane są bazy, w których magazynować można dane i informacje firmowe, pora przygotować się do dalszej pracy z produktami firmy Oracle.

Mamy nadzieję, że mój krótki poradnik wprowadził Cię w podstawowe zagadnienia architektury Oracle Database.