Struktura pamětí a procesů v DB Oracle Radek Strnad radek.strnad@gmail.com 1
Základní rozdělení paměti Software codes area Chráněná část spustitelného kódu samotné DB. System global area (SGA) Sdílená pamět obsahující tzv. SGA komponenty Data a kontrolní informace pro jednu instanci DB Program global area (PGA) Dedikovaná část paměti pro každou instanci serverového procesu Vyhrazena právě jednomu procesu 2
Základní rozdělení paměti 3
System Global Area (SGA) Každá instance Oracle DB má přidělené SGA Všechny procesy serveru mají právo read, některé i write SGA drží informace o stavu DB SGA obsahuje několi paměťových komponent (tzv. pools) 4
SGA Database Buffer Cache Drží v paměti načtené datové bloky Uživatelé připojení k instanci DB sdílí tuto komponentu Write list Dirty buffers Least recently used list Free buffers Pinned buffers Dirty buffers 5
SGA Redo Log Buffer Buffer uchovávající informace o změnách v DB Redo entries Nezbytné pro rekonstrukci DB INSERT, UPDATE, DELETE, CREATE, ALTER, DROP 6
SGA Shared pool Library cache PL/SQL procedures Sdílené i privátní SQL oblasti Dictionary cache Tabulky a pohledy obsahující informace o databázi, její struktuře a uživatelích Cache výsledků Včetně částí Zvýšení výkonu při znovuspuštění 7
SGA Large pool Oblast paměti schopna alokace velkých objemů dat session memory I/O procesy serveru zálohování Závisí na konfiguraci administrátorem (nemusí být povoleno) 8
SGA - Java pool, Streams pool Java pool Vyhrazené pro kód psaný v Jave Vyžaduje odlišnou správu paměti Streams pool Slouží jako buffer pro zprávy Oracle Streams 9
Základní rozdělení paměti 10
Program Global Area (PGA) Session memory Drží proměnné session (login,...) Private SQL area Hodnoty proměnných Informace o spuštěných SQL dotazech Struktura PGA se liší, pokud server není shared 11
Procesy přístup k DB Uživatelská aplikace nebo nástroj Oracle (SQL*Plus) Předává SQL dotaz Oracle DB Oracle DB server Interpretuje a provádí SQL dotaz 12
Procesy - rozdělení Vyhrazené procesy pro každého uživatele Sdílené procesy Uživatelské procesy Spouští SQL příkazy, případně Serverové procesy Oracle database server code serverové procesy, procesy na pozadí Závisí na konfiguraci Oracle DB a OS Dedicated server vs. Shared server 13
Shared Server Architecture Eliminuje potřebu vyrazeného procesu pro každé připojení Dispatcher přesměruje příchozí požadavek mezi shared server procesy Volný proces se zhostí požadavku Dochází k šetření prostředků 14
Shared server architecture 15
Dedicated server architecture 16
Server architecture 17
Uživatelské procesy Connection Komunikační spojnice mezi uživatelským programem a instancí Oracle DB Session Připojení uživatele s nastavení proměnných (login) Otevření / zavření Jeden uživatel může mít mnoho aktivních sessions Dedicated server vytvoří server proces pro každou session 18
Oracle DB Server Processes Zpracovává požadavky uživatelských procesů Provádí SQL dotazy Čte datové bloky z disku / sdílených bufferů v SGA Vrací výsledky v podobě srozumitelné pro uživatelské procesy 19
Background Processes Pro zvýšení výkonu DB Ne všechny běží vždy Informace o procesesch je v V$BGPROCESS Spouštěny zpravidla automaticky 20
21
Archiver Processes (ARCn) Kopíruje redo logy na vyhrazené úložiště Zapisování se provádí po naplnění souboru (log switch) Při vysoké zátěži může běžet více ARC procesů LOG_ARCHIVE_MAX_PROCESSES 22
Database Writer Process (DBWn) Zapisuje obsah bufferů do souborů na disku. Dirty buffers (SGA Buffer Cache) Typicky jeden proces DBW0 Obzvlášť u uniprocesorového systému Lze nakonfigurovat DBW0 DBWj (20) DB_WRITER_PROCESSES Zápis se provádí v dávkách kvůli efektivnosti 23
24
Job Queue Process (CJQn) Řadí a spouští paralelně uživatelské úlohy Tabulka požadovaných úloh JOB$ Job queue slave processes J000... J999 Úloha provedena, proces navrácen CJQ, zjišťuje se další JOB_QUEUE_PROCESSES 25
Log Writer Process (LGWR) Management redo log bufferů zápis na disk Commit records Redo log buffers Každé tři sekundy Pokud je buffer naplněný z jedné třetiny Pokud DBWn modifikuje buffery na disku LGWR zapisuje do mirrorovaných souborů Hlídá se poškozenost souboru Nenastává výpadek, problém se zapíše do system logu 26
Process Monitor Process (PMON) Zotavuje systém po pádu uživatelského procesu Čistí buffery a obnovuje užívané zdroje Odemyká zámky Odstraní ID ze seznamu aktivních procesů 27
Recoverer Process (RECO) Využívá se u distribuovaných systémů Znovuobnovuje spojení při přerušení Inkrementální čas Znovuobnoví běžící transakce z patřičných tabulek 28
System Monitor Process (SMON) Obnovuje databázi při startu Pouze pokud je potřeba (např. Při havárii celého systemu) Vyprazdňuje již nepotřebné datové segmenty 29
Děkuji za pozornost Dotazy? 30