Struktura pamětí a procesů v DB Oracle Radek Strnad
[email protected]
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
Serverové procesy
Spouští SQL příkazy, případně 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.
Typicky jeden proces DBW0
Obzvlášť u uniprocesorového systému
Lze nakonfigurovat DBW0 – DBWj (20)
Dirty buffers (SGA Buffer Cache)
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