architektura databáze oracle
DESCRIPTION
Architektura databáze Oracle. Lubom ír Andrle lubomir.andrle @ unicorn.eu 2. přednáška 7 .10.2013. Obsah. Fyzická architektura Objekty schématu Logická architektura Paměťová architektura Datový slovník Procesní architektura. Fyzická architektura. Co je to databáze. - PowerPoint PPT PresentationTRANSCRIPT
![Page 2: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/2.jpg)
Obsah
• Fyzická architektura• Objekty schématu• Logická architektura• Paměťová architektura– Datový slovník
• Procesní architektura
![Page 3: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/3.jpg)
FYZICKÁ ARCHITEKTURA
![Page 4: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/4.jpg)
Co je to databáze
• Kolekce dat na disku uložená v jednom nebo více datových souborech– Jsou zde uložena veškerá data databáze
• Fyzicky se skládá z – DataFiles– ControlFiles– Redo Log Files– Archive Log Files– Alert and Trace Files– Backup Files
![Page 5: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/5.jpg)
Co je to instance databáze
• Skládá se z – bloku přidělené paměti, který je vyhrazený v
System Global Area (SGA)– z procesů, které běží na pozadí a komunikují s SGA
a databázovými soubory na disku
![Page 6: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/6.jpg)
Data File
• Veškerá data databáze uložena v Data Files– Uložena data logických databázových struktur
![Page 7: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/7.jpg)
Control File
• Obsahuje metadata – data o fyzické struktuře databáze
• Například– Název databáze– Jména a místo uložení datafiles a redo logů– Čas vytvoření databáze– …
• Při změnách struktury je ihned aktualizován
![Page 8: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/8.jpg)
Redo Log File• Při každém přidání, odstranění nebo změně dat v tabulce,
indexu nebo jiném objektu databáze Oracle je zapsán záznam do aktuálního souboru protokolu
• Každá databáze Oracle musí mít alespoň dva soubory protokolu– Když je jeden Redo Log zaplněn záznamy, je tento soubor označen jako
• ACTlVE v případě, kdy je potřebný pro případnou obnovu instance • INACTlVE, pokud není potřebný pro obnovu instance
– Záznamy se pak začnou zapisovat do dalšího souboru protokolu ze seznamu od začátku souboru a tento soubor je označen jako CURRENT.
![Page 9: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/9.jpg)
Alert and Trace Log• Kompletní audit nad veškerými operacemi
– Pokud dojde ke vzniku chyby při běhu databáze, Oracle obvykle zapisuje chybové zprávy do alert logu nebo v případě procesů běžících na pozadí do trace logu
– Jsou zde zaznamenány i všechny příkazy alter database i alter system, které provedl správce databáze.
![Page 10: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/10.jpg)
Archive Log• Při ARCHIVELOG režimu lze všechny zápisy do Redo Logs automaticky
archivovat
![Page 11: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/11.jpg)
LOGICKÁ ARCHITEKTURA
![Page 12: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/12.jpg)
Logická struktura
• Definuje logické úložné struktury– Datové bloky (Data blocks)– Rozsahy (Extents)– Segmenty (Segements)
• Toto logické rozdělení úložného prostoru umožňuje účinnější kontrolu nad využitím diskového místa
![Page 13: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/13.jpg)
Logické úložné struktury
• Tabulkový prostor– tablespace
• Vztah – Datový blok (Data block)– Rozsah (Extent)– Segment
![Page 14: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/14.jpg)
Datový blok
• Nejmenší úložnou jednotkou databáze Oracle• Velikost bloku – číslo udávající počet bajtů, které blok zabírá v
daném tabulkovém prostoru – Často definována jako násobek velikosti bloku,
definované operačním systémem
![Page 15: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/15.jpg)
Struktura datového bloku• Hlavička (Header)
– Základní informace• Adresa bloku, typ segmentu
• Tabulkový rejstřík (Table directory)– Informace tabulce řádků
• Řádkový rejstřík (Row directory)– Informace o počtu řádků– Adresy řádků
• Všechny tyto informace tvoří tzv. Overhead
![Page 16: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/16.jpg)
Řízení volného místa
• PCTFREE– Určuje minimální velikost (%) datového bloku,
který musí být rezervován na data
![Page 17: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/17.jpg)
Řízení volného místa
• PCTUSED– Určuje minimální velikost (%) datového bloku,
který muže být použit pro row data a overhead
![Page 18: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/18.jpg)
Extents (Rozsahy)
• Vyšší úrovní logického seskupování elementů v rámci databáze
• Sestává z jednoho nebo několika datových bloků
• V případě, kdy místo v segmentu dojde, Oracle alokuje nový extent
![Page 19: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/19.jpg)
Segment
• Skládá se z množiny rozsahů• V databázi Oracle rozlišujeme čtyři typy
segmentů:– Datové segmenty (Data segments)– Indexové segmenty (Index segments)– Dočasné segmenty (Temporary segments)– Návratové segmenty (Undo segments)
![Page 20: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/20.jpg)
Data segment
• Data segment v Oracle udržuje všechna data pro:– Databázovou tabulku– Partition v partitiované tabulce– Cluster v clusterované tabulce
• Oracle vytvoří data segment, vždy s novou tabulkou– CREATE TABLE, apod.
![Page 21: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/21.jpg)
Rollback segment
• Rollback segmenty – V Oracle 10g existuje návratový segment pouze v
tabulkovém prostoru SYSTEM• Čistě systémový segment
– V předchozích verzích byl návratový segment využíván pro ukládání undo informací
![Page 22: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/22.jpg)
Ostatní segmenty
• Index segment– Každý index je uložen ve svém vlastním indexovém
segmentu• Temporary segment– V případě, kdy provedení příkazu jazyka SQL
vyžaduje pro své dokončení diskový prostor je alokován dočasný segment
– Existují pouze po dobu trvání příkazu jazyka SQL
![Page 23: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/23.jpg)
Vztah logické a fyzické architektury
![Page 24: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/24.jpg)
OBJEKTY SCHÉMATU
![Page 25: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/25.jpg)
Základní přehled
• Tabulky• Pohledy• Materializované pohledy• Sequence Generatory• Synonyma• Indexy• Index-Organized Tabulky• Clustery
![Page 26: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/26.jpg)
PAMĚŤOVÁ ARCHITEKTURA
![Page 27: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/27.jpg)
Paměťové struktury• V paměti je spustitelný kód, informace o relacích, jednotlivé
procesy databáze a informace sdílené mezi procesy• Obsahují uživatelské příkazy jazyka SQL a také vyrovnávací
paměť, jejíž obsah je dle potřeby ukládán na disk a která obsahuje datové bloky databázových segmentů a informace o dokončených databázových transakcích.
• Datová oblast vyhrazená pro instanci Oracle se nazývá globální systémová oblast SGA (System Global Area)
• Pro každý server a proces běžící na pozadí v paměti existuje oblast s názvem globální programová oblast PGA (Program Global Area).
![Page 28: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/28.jpg)
Paměťové struktury
![Page 29: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/29.jpg)
Globální systémová oblast SGA
• Skupina paměťových struktur instance Oracle sdílená uživateli databázové instance
• Při spuštění instance Oracle je pro oblast SGA vyhrazena paměť v závislosti na hodnotách nastavených v inicializačním souboru parametrů
• Parametr SGA_MAX_SIZE– celková velikost všech oblastí SGA nesmí překročit
hodnotu SGA_MAX_SIZE
![Page 30: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/30.jpg)
Buffer cache
• Součást SGA• Udržuje data načtená z datafiles• Všechny uživatelské procesy jsou připojeny– Nevýhoda konkurenčního přístupu
![Page 31: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/31.jpg)
Shared pool
• Součást SGA• Rozděleno na – Vyrovnávací paměť knihoven (Library cache)
• Vyrovnávací paměť pro SQL (PL/SQL)• Prováděcí plány• Pozor na poddimenzovanou velikost
– Vyrovnávací paměť datového slovníku (Dictionary cache)• Informace o tabulkách (struktury tabulek) ve schématu SYS,
SYSTEM– Obsahuje metadata databáze
• Velké čtení v době parsování SQL
![Page 32: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/32.jpg)
Globální programová oblast SGA• Oddíl paměti alokovaný pro privátní použití jedním procesem• Konfigurace závisí na konfiguraci připojení databáze Oracle
– sdílený server (shared server) • uživatelé sdílejí připojení k databázi, čímž se minimalizuje využití paměti na serveru• informace o uživatelských relacích uloženy v oblasti SGA místo v oblasti PGA• ideální pro velký počet současných připojení k databázi s malým množstvím krátce trvajících
požadavků
– vyhrazený server (dedicated server)• V prostředí s vyhrazeným serverem má každý uživatelský proces vlastní připojení k databázi a
paměť vyhrazená pro relace je v oblasti PGA
• Obsahuje také oblast pro řazení– se použije vždy, když uživatelský požadavek vyžaduje provést řazení, popř. Hash join
![Page 33: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/33.jpg)
PROCESNÍ ARCHITEKTURA
![Page 34: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/34.jpg)
Procesy Oracle
![Page 35: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/35.jpg)
Procesy Oracle• Serverové procesy (Server processes)
– Obsluha uživatelských požadavků• Background procesy
– PMON– SMON– DBWn– LGWR– RECO– ARCn
![Page 36: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/36.jpg)
Procesy Oracle• Oracle hell ;)
![Page 37: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/37.jpg)
Proces SMON• System monitor
– V případě pádu systému nebo selhání instance, proces SMON provede obnovu instance aplikováním záznamů z online souboru protokolu na datové soubory
– Zabezpečuje čištění dočasných segmentů ve všech tabulkových prostorech (tablespaces)
– Jednou z úloh procesu SMON je i pravidelné slučování volného místa v tabulkových prostorech u tabulkových prostorů řízených slovníkem
![Page 38: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/38.jpg)
Proces PMON• Process monitor
– Pokud je uživatelské připojení přerušeno nebo uživatelský proces selže z jiného důvodu, provede proces PMON, potřebné úklidové práce
– Vyčistí vyrovnávací paměť a ostatní prostředky, které uživatelské připojení používalo
– Uživatelská relace například mohla provádět aktualizaci některých řádků v tabulce a tím tyto řádky uzamknout
• Ukázka práce PMON při odpojení relace– Vrátí zpět změny provedené transakcemi, které probíhaly před výpadkem– Označí ve vyrovnávací paměti bloky, použité transakcemi jako volné– Odstraní uzamčení na odpovídajících řádcích tabulky– Odstraní identifikátor odpojeného procesu ze seznamu aktivních procesů
![Page 39: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/39.jpg)
Proces DBWn• Databázový zapisovač
– Zapisuje nové nebo změněné datové bloky (dirty blocks) z vyrovnávací paměti do datových souborů
• Až 20 procesů DBW0 – DBW20– Určován parametrem DB_ WRITER_PROCESSES
![Page 40: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/40.jpg)
Proces LGWR
• Zapisovač protokolu – řídí správu vyrovnávací paměti protokolu– nejaktivnější proces v instanci s velkou aktivitou příkazů pro manipulaci s daty– transakce není považována za dokončenou, dokud proces LGWR nezapíše
úspěšně všechny záznamy, včetně záznamu o operaci commit, do souborů protokolu
![Page 41: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/41.jpg)
Proces RECO
• Proces obnovy– ošetřuje selhání distribuovaných transakcí
![Page 42: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/42.jpg)
Proces ARCn
• Proces archivátor– provádí kopírování souborů protokolu na ostatní
nadefinovaná umístění vždy, když se soubor protokolu zaplní
![Page 43: Architektura databáze Oracle](https://reader036.vdocuments.pub/reader036/viewer/2022062323/56816743550346895ddbf6bf/html5/thumbnails/43.jpg)
Q&A