Archive for Maggio 2009
Note su Oracle
Di seguito gli appunti di un seminario Oracle seguito qualche anno fa (20/04/2004) che ho ritenuto utile trascrivere.
Un database Oracle consiste di:
- Memoria SGA: DB Buffer Cache, Shared Pool, Redolog Buffer
- Processi: DBWR, LGWR, SMON, PMON, CKPT
- File: Datafile, Control File, Redo Log File
DB Buffer Cache: fa permanere in memoria i dati piu’ frequentemente usati
Shared Pool: cache dei piani di esecuzione degli statement SQL arrivati al database
Redo Log Buffer: registro delle operazioni che hanno modificato il database
DBWR: scrive i dati nei datafile
LGWR: scrive le operazioni dal Redolog Buffer al Redolog File
SMON: system monitor, legge il control file per attivare le attivita’ di recovery in caso di crash
PMON: gestore dei processi, libera le risorse usate dalle connessioni scadute
CKPT: check point, si occupa della sicronizzazione tra i dati in memoria e su disco

Le operazioni in caso di istruzione SQL di Select sono le seguenti:
- Parsing
- Calcolo del piano di esecuzione
- Fetch
Ma se l’istruzione e’ gia’ presente in shared pool la sola fase di fetch viene eseguita
La fetch preleva i dati da la DB buffer cache se gia’ presenti in memoria altrimenti li preleva da datafile.
Le operazioni in caso di istruzione che modifica i dati sono le seguenti:
- Scrittura di un Rollback Block nella DB buffer cache
- Scrittura dell’operazione fatta nel Redo Log Buffer
L’operazione di commit non sincronizza i datafile ma semplicemente i Redolog, l’operazione di modifica viene riportata nel Redo Log File.
Il blocco modificato viene marcato come sporco (Dirty) e non potra’ essere modificato fino a che non verra effettuata la sicronizzazione (di default dopo 3 minuti oppure prima se viene superato il numero di blocchi dirty di soglia). E necessaria una sincronizzazione (Check Point) anche nel caso di un Redo Log pieno.
Il Check Point produce un numero l’SCN scritto nel Control File e nel Redo Log file. In caso di auto recovery tutte le operazioni successive all’ultimo SCN sono quelle necessarie al recovery.
Gli stati di apertura di un database sono nell’ordine:
- shutdown
- nomount: viene letto il parameter file init<SID>.ora
- mount: viene letto il control file
- open:
Le opzioni di chiusura di un database sono:
- abort
- immediate
- transactional
- normal
Alla fine della creazione di un database generalmente possono essere cancellate:
- la cartella template assistant/dbca
- e i tablespace TOOLS, USERS, INDX