Nelle prime lezioni della guida abbiamo parlato brevemente dell'istanza, ovvero l'insieme di precise aree di memoria, che nel complesso formano la SGA, e dei processi di background. Le dimensioni delle aree di memoria che formano l'SGA sono stabilite da parametri di inizializzazione.
Area di memoria | parametro |
---|---|
Database Buffer Cache | DB_CACHE_SIZE |
Redo Log Buffer | LOG_BUFFER |
Shared Pool | SHARED_POOL_SIZE |
Large Pool (opzionale) | LARGE_POOL_SIZE |
Java Pool (opzionale) | JAVA_POOL_SIZE |
I processi di background sono riconoscibili attraverso sigle.
Processo | sigla |
---|---|
Database Writer | DBWn |
Log Writer | LGWR |
Checkpoint | CKPT |
System Monitor | SMON |
Process Monitor | PMON |
Archiver | ARCn |
Recoverer | RECO |
Dispatcher | Dnnn |
Shared Server | Snnn |
Per informazioni più dettagliate sulla SGA dell'architettura Oracle9i Server possiamo leggere questa lezione in lingua inglese.
Nota: per eseguire lo shutdown o lo startup di un database dobbiamo collegarci al DB con privilegio SYSDBA
e quindi essere utenti del SO nel gruppo ORA_DBA
. Possiamo anche usare un pc con software Oracle Client, quindi remoto, purché l'utente del sistema operativo sia sempre inserito nel gruppo ORA_DBA
sul pc dove è installato Oracle Server.
Gli esempi che seguono sono stati eseguiti con collegamento al database "ARCHIVIO", direttamente sul pc dove è installato Oracle Server.
SHUTDOWN
Eseguire l'operazione di shutdown significa arrestare il database ed eliminare temporaneamente le istanze terminando tutti i relativi processi, in particolare quando creiamo un nuovo database viene generato un servizio di sistema (del SO) per la partenza dell'istanza associata. Questo servizio (da non confondere con i servizi di rete) spesso è configurato per partire automaticamente all'avvio del sistema operativo.
Avviata l'operazione di shutdown di un database, Oracle compie alcune azioni:
- scrive il contenuto dell'area di memoria Redo Log Buffer nei redo log file. Tutti i dati modificati dagli utenti con i comandi
INSERT
,UPDATE
eDELETE
presenti al momento nel "Database Buffer Cache" vengono salvati nei corrispondenti data file; - chiude i data file e i redo log file. I control file, invece, continuano a rimanere aperti ma il database non è più disponibile per le classiche attività degli utenti, nessuno può più collegarsi fino al successivo startup;
- l'istanza smonta il database. Smontare il database significa chiusura dei control file, mentre le aree di memoria allocate e i processi di background continuano ad essere in esecuzione;
- l'istanza viene terminata: l'SGA viene eliminata dalla memoria RAM del computer e i processi di background sono anch'essi terminati.
SHUTDOWN NORMAL dell'istanza Oracle.
È la procedura di arresto "normale" che consente a chi sta lavorando di terminare il proprio lavoro prima di terminare l'istanza di ogni utente.
Per esempio apriamo una finestra DOS e colleghiamoci al database come amministratori di sistema (con autenticazione del sistema operativo), poi procediamo con lo shutdown del DB e dell'istanza associata.
SQL> SHUTDOWN NORMAL Database chiuso. NOMOUNT del database eseguito. Istanza ORACLE chiusa.
Oracle adotta questo comportamento:
- non consente nuove connessioni al database;
- attende che tutti gli utenti ancora connessi si disconnettano dal database. Questo significa che tutti i client connessi continuano tranquillamente a lavorare;
- quando l'ultimo client connesso ha effettuato la disconnessione, Oracle chiude il database, smonta l'istanza e la termina.
SHUTDOWN IMMEDIATE dell'istanza Oracle
Diversamente dal precedente esempio, se usassimo il comando SHUTDOWN IMMEDIATE Oracle:
- non consente nuove connessioni al database;
- termina tutte le connessioni attive al database, senza attendere che gli utenti finiscano il loro lavoro;
- effettua un ROLLBACK di tutte le operazioni non salvate dal COMMIT;
- chiude il database, smonta l'istanza e la termina.
Questo comando è da usare con molta cautela perché gli utenti collegati potrebbero perdere una parte del loro lavoro (vedi punto 3).
STARTUP dell'istanza Oracle
Lo startup consiste nell'avvio del server ed è un processo complesso che possiamo brevemente riassumere in questi tre passi:
- partenza dell'istanza associata al database;
- l'istanza monta il database;
- l'istanza apre il database per il normale utilizzo.
Per fare un esempio apriamo una finestra DOS e colleghiamoci al database come amministratori.
Collegamento al server
Poi digitiamo
SQL> STARTUP
Ora il database è pronto a ricevere le connessioni da parte dei client remoti. Quando eseguiamo il comando STARTUP Oracle procede in questo modo:
- inizialmente alloca le aree di memoria della SGA ed avvia i processi di background;
- monta il database ma non lo apre. Montare il database significa aprire i corrispondenti control file;
- infine apre il database.
Se Oracle non ha sollevato alcun errore in nessuna delle tre fasi allora il database è pronto per l'accesso da parte degli utenti.