6f429244e498457b8400e72e4af683b0 Alberto Blog: RMAN Disaster Recovery

lunedì 16 luglio 2012

RMAN Disaster Recovery


Negli ultimi giorni sono stato preso da un distaser recovery di Oracle tramite RMAN dopo un crash piuttosto brutto del server DB in ambiente vmware.
A parte l'inspiegabilità dell'accaduto visto che si trattava comunque di 2 due nodi che condividevano uno spazio disco e non solo, ho dovuto eseguire un recovery da RMAN.
Ovviamente l'importate per queste operazioni è che almeno il backup sia consistente sia dal punto di vista logico che fisico.
In questo caso sono stato particolarmente fortunato, visto che benchè si siano danneggiate gran parte delle partizioni LUN, almeno quella dove risiedeva il backup era consistente.
Se si tratta di DB di produzione, si rende obbligatorio avere una copia del backup di RMAN o salvato in un altro disco di un altro server oppure salvato su tape.
Di seguito illustro la procedura che mi ha permesso l'esecuzione di questa operazione.
Pochi mesi prima avevo effettuato un backup di disaster recovery attraverso un software di backup di tutto il server (in questo caso windows), quindi avevo effettuato un backup cold di Oracle fermando l'istanza, questo mi ha reso il tutto più facile.
Una volta eseguito il restore di tutto il sistema operativo con già l'istanza oracle creata, non mi restava altro che eseguire il restore con RMAN.
Quando si esegue questo tipo di operazione bisogna scegliere se eseguire un restore ad una data prefissata oppure un restore completo all'ultima transizione committata.
Nel mio caso ho dovuto scegliere la prima modalità, in quanto gli archive log presenti nel disco risultavano corrotti fisicamente e quindi inutilizzabili.
Avendo eseguito il restore da un disaster recovery, come prima cosa ho dovuto cancellare tutti i datafiles del DB presenti.
Ho avuto bisogno  dei control files relativi all'ultimo backup per poter eseguire il primo step  con:

startup nomount

quit

quindi procedo con
rman target /

RMAN> restore spfile from autobackup;

RMAN> quit

sqlplus / as sysdba

SQL> shutdown immediate

SQL> startup nomount;


A questo punto il DB è in nomount.
Adesso si esegue il restore dei controlfile del backup consistente per poi far partire il DB in mount.

rman target /

RMAN> restore controlfile from autobackup;

RMAN> alter database mount;

RMAN> restore database;

RMAN eseguirà il restore di tutti i datafiles del db e quando finito si riapre il db con:

RMAN> alter database open;

Conclusioni:

L'operazione di rispristino ha vari gradi di difficoltà, la complessita di tutte queste operazioni rimane comunque  l'analisi dopo il crash per verificare ed individuare cosa abbiamo a disposizione per effettuare il restore.
In questo caso non era stato adottato il multiplexing dei redolog e dei controlfile, rendendo tutta la configurazione a rischio da una corruzione dati che appunto si è verificata.

Nessun commento:

Posta un commento