430 likes | 656 Views
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.
E N D
Architekturadatabá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
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 • AlertandTraceFiles • BackupFiles
Co je to instance databáze • Skládáse z • bloku přidělené paměti, který je vyhrazenýv SystemGlobal Area (SGA) • z procesů, které běží na pozadí a komunikují s SGA a databázovými soubory na disku
Data File • Veškerá data databáze uložena v Data Files • Uložena data logických databázových struktur
ControlFile • 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
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.
AlertandTrace 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.
Archive Log • Při ARCHIVELOGrežimu lze všechny zápisy do RedoLogs automaticky archivovat
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
Logické úložné struktury • Tabulkový prostor • tablespace • Vztah • Datový blok (Data block) • Rozsah (Extent) • Segment
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ímsystémem
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 (Rowdirectory) • Informace o počtu řádků • Adresy řádků • Všechny tyto informace tvoří tzv. Overhead
Řízení volného místa • PCTFREE • Určuje minimální velikost (%)datového bloku, který musí být rezervován na data
Ří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
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
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 (Temporarysegments) • Návratové segmenty (Undosegments)
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.
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í
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
Základní přehled • Tabulky • Pohledy • Materializované pohledy • Sequence Generatory • Synonyma • Indexy • Index-Organized Tabulky • Clustery
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 (SystemGlobal 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).
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
Buffercache • 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
Shared pool • Součást SGA • Rozděleno na • Vyrovnávací paměť knihoven (Librarycache) • Vyrovnávací paměť pro SQL (PL/SQL) • Prováděcí plány • Pozor na poddimenzovanou velikost • Vyrovnávací paměť datového slovníku (Dictionarycache) • Informace o tabulkách (struktury tabulek) ve schématu SYS, SYSTEM • Obsahuje metadata databáze • Velké čtení v době parsování SQL
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ř. Hashjoin
Procesy Oracle • Serverové procesy (Server processes) • Obsluha uživatelských požadavků • Background procesy • PMON • SMON • DBWn • LGWR • RECO • ARCn
Procesy Oracle • Oracle hell ;)
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
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ů
Proces DBWn • Databázový zapisovač • Zapisuje nové nebo změněné datové bloky (dirtyblocks) z vyrovnávací paměti do datových souborů • Až 20 procesů DBW0 – DBW20 • Určován parametrem DB_ WRITER_PROCESSES
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
Proces RECO • Proces obnovy • ošetřuje selhání distribuovaných transakcí
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í