Oracle DBA 9i - Cap. 6
Per default un database Oracle funziona in modalità
NOARCHIVELOG, ma è possibile cambiare
lo stato in qualunque momento in
ARCHIVELOG.
La modalità
ARCHIVELOG prevede l’attivazione del processo
ARCn
il cui compito è di eseguire una copia dei
RLF prima che essi vengano sovrascritti da
LGWR.
In questo modo si tiene traccia di tutti i comandi di modifica eseguiti sul database.
I vantaggi dell’
ARCHIVELOG sono essenzialmente:
- Maggiori opzioni disponibili per il Backup ed il Recovery
- Update di database in Stand By
- Utilizzo di Log Miner
I parametri di inizializzazione (
PFILE o
SPFILE) relativi all’Archiving sono:
LOG_ARCHIVE_DEST
indica la directory in cui verranno creati i file archiviati (
ARLF Archived Redo Log Files). Se volessi cambiarla posso usare il comando:
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST=‘nuova_dir’;
LOG_ARCHIVE_DUPLEX_DEST
Serve quando si vuol avere più di una copia degli RLF: indica la seconda directory in cui verrà eseguita l’ulteriore copia.
Questo parametro può essere obbligatorio od opzionale, dipende dal valore del parametro:
LOG_ARCHIVE_MIN_SUCCEED_DEST (vedi dopo).
Anche questo parametro può essere modificato con
ALTER SYSTEM:
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST=‘seconda_dir’;
LOG_ARCHIVE_DEST_n
Questo parametro è simile al precedente, ma permette di specificare fino a 10 destinazioni diverse, sia in locale che su
Pc remoti (utile nel caso si abbiano Database in Standby). Tuttavia questo parametro non è compatibile con
LOG_ARCHIVE_DEST e
LOG_ARCHIVE_DUPLEX_DEST
La sintassi è:
LOG_ARCHIVE_DEST_n = “null_string” |
((SERVICE = | LOCATION = ‘’)
[MANDATORY | OPTIONAL]
[REOPEN [= ]])
dove:
SERVICE lo uso se ho un Database remoto
(Es: LOG_ARCHIVE_DEST_2='SERVICE=standby1')
LOCATION indica la directory nel filesystem
(Es: LOG_ARCHIVE_DEST_1='LOCATION=c:bkarc')
MANDATORY indica che archiviazione è obbligatoria, cioè deve avvenire con esito positivo
prima che LGWR possa sovrascrivere il file.
OPTIONAL, che è il default, indica che il RLF originale può essere sovrascritto,
anche nel caso in cui l’operazione di copia specificata ha esito negativo, a patto che sia stato raggiunto il valore indicato
da LOG_ARCHIVE_MIN_SUCCEED_DEST.
REOPEN indica dopo quanti secondi (default è 300) ARCn deve riprovare l’operazione di
copia se la prima volta essa ha avuto esito negativo.
LOG_ARCHIVE_MIN_SUCCEED_DEST
Indica il numero minimo di destinazioni del processo ARCn (il default è 1) che devono avere esito positivo affinché
LGWR possa continuare con la sovrascrittura degli RLF.
Esempio: Se lo imposto a 1 e sto usando sia
LOG_ARCHIVE_DEST che
LOG_ARCHIVE_DUPLEX_DEST significa il primo è obbligatorio, ed il secondo opzionale.
Se invece lo imposto a 2, allora entrambi diventano obbligatori.
Ovviamente il parametro non può avere un valore maggiore del numero di destinazioni abilitate.
Se invece è minore delle destinazioni impostate a
MANDATORY, il parametro viene ignorato.
LOG_ARCHIVE_FORMAT
Indica il formato dei files che vengono creati dall’ARCn. Posso usare variabili quali
%S o
%s che indicano il log sequence number (
LSN)
con o senza gli zeri di riempimento, e
%t o
%T che
indica il Thread. I numeri di sequence (LSN) coincidono con quelli già visti nella sezione dedicata agli RLF. Esempi:
LOG_ARCHIVE_FORMAT=arch%s.arc
Genererà i files: arc200.arc, arc201.arc
LOG_ARCHIVE_FORMAT=arch%S.arc
Genererà i files: arc00200.arc, arc00201.arc
LOG_ARCHIVE_MAX_PROCESSES
Indica il numero di processi ARCn da attivare, e per default vale 1.
LOG_ARCHIVE_START
Può valere
TRUE (processo ARCn attivato) o
FALSE
(ARCn non attivato)
Posso comunque attivare il processo in qualunque momento usando:
SQL> ALTER SYSTEM ARCHIVE LOG [START | STOP];
6.1 Abilitare ARCHIVELOG
Per passare dalla modalità
NOARCHIVELOG alla modalità
ARCHIVELOG devo:
1) Eseguire lo SHUTDOWN
2) Impostare i parametri opportuni per attivare il processo ARCn e specificare sia il formato dei file che la directory in cui dovranno essere salvati.
(es
LOG_ARCHIVE_START=TRUE e
LOG_ARCHIVE_DEST=..)
3) Eseguire lo STARTUP MOUNT
4) Modificare lo stato del database mediante il comando:
SQL> ALTER DATABASE ARCHIVELOG [NOARCHIVELOG];
5) Aprire il database con:
SQL>ALTER DATABASE OPEN;
NB: Se il DB è in
ARCHIVELOG, e non ho attivato il processo ARCn, quando i RLF si riempiono
il Database si blocca. In ogni momento posso archiviare manualmente gli RLF con il comando:
SQL> ALTER SYSTEM ARCHIVE LOG ALL;
6.2 Viste di sistema
Per ricavare informazioni sullo stato dell’Archive o sui log prodotti, posso usare diversi comandi o viste:
SQL> ARCHIVE LOG LIST;
Devo essere connesso come SYDBA (utente SYS ad esempio), e ricavo:
- Modalità di log del database
- Archiviazione automatica
- Directory di destinazione dell'archiviazione
- Sequenza di log in linea meno recente
- Sequenza di log corrente
V$DATABASE
Indica se il database è in ARCHIVELOG o in NOARCHIVELOG. Es:
SQL> SELECT log_mode FROM V$DATABASE;
V$LOG
V$LOGFILE
V$LOG_HISTORY
Descritte nel capitolo precedente.
V$THREAD
Restituisce informazioni sui thread del database come il nome dell’istanza, lo stato del thread, il log sequence, SCN,
checkpoint timestamp. Poco significativa se ho una sola instanza.
V$ARCHIVED_LOG
Restituisce informazioni sui file archiviati.
V$ARCHIVE_DEST
Restituisce informazioni sulle directory di destinazione in cui verranno creati i file archiviati, e sullo loro stato
come MANDATORY o OPTIONAL (colonna
BINDING), se la destinazione è locale
(PRIMARY) o remota (STANDBY) (colonna
TARGET).
V$ARCHIVE_PROCESSES
Restituisce informazioni sullo stato (IDLE, o BUSY) dei processi ARCn, se sono attivi etc.
Vi invitiamo ad inviarci commenti, eventuali segnalazioni di errore e quant'altro.
Questo documento non è un documento ufficiale della Oracle Corporation. Oracle detiene tutti i diritti sulla propria documentazione. Alcuni termini usati sono trademarks registrati.
In caso di dubbi o incertezze consultate la documentazione ufficiale di Oracle o contattate il Customer Support di Oracle.