Restore e Recover - RMAN

Restore è il comando che sposta i datafiles dal backup alla posizione originale che avevano prima della cancellazione.
Recovery invece è il processo di applicazione di tutte le transazioni effettuate sui dati presenti nel datafiles (scritte nei redolog e archivelog) in modo da riportare i datafiles allo stato che avevano prima del "media failure".


Restore e Recover di un tabelspace.

run {
sql 'alter tablespace users offline immediate';
restore tablespace users;
recover tablespace users;
sql 'alter tablespace users online';
}




E s e m p i o #1

Recuperare un datafile cancellato e aprire il database in 3 step.

Supponiamo di avere il database "spento" e di cancellare un suo datafile PROVA03.DBF del tablespace EXAMPLE.
Cd $ORACLE_BASE/oradata/orcl
rm PROVA03.DBF
A questo punto riapriamo il database.
SQL>startup nomout;
SQL>alter database mount;
SQL>alter database open;
ERRORE alla riga 1:
ORA-01157: impossibile identificare/bloccare il file 6, vedere file
DBWR
ORA-01110: file di dati 6: '..........PROVA03.DBF'

Collegarsi ad RMAN.
RMAN> RESTORE DATAFILE 6;                                               
Avvio di restore in 04-GIU-14
canale allocato: ORA_DISK_1
canale ORA_DISK_1: SID=170 tipo di dispositivo=DISK
creazione del file di dati numero=6 nome=.................\PROVA03.DBF
ripristino non effettuato; tutti i file sono di sola lettura, non in linea o già ripristinati
restore terminato in 04-GIU-14

Se vado sotto $ORACLE_BASE/oradata/orcl ritrovo il file PROVA03.DBF.
Se riapriamo il database compare il messaggio di errore seguente:
SQL> conn /as sysdba
Connesso.
SQL> alter database open;
ERRORE alla riga 1:
ORA-01113: necessario recupero di dischi per il file '6'
ORA-01110: file di dati 6: '......................\PROVA03.DBF'

Vediamo che i datafiles non hanno gli stessi livelli di SNC.
SQL> select FILE# , CHECKPOINT_CHANGE# from V$DATAFILE_HEADER;

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1            5107621
         2            5107621
         3            5107621
         4            5107621
         5            5107621
         6            5062017
         7            5107621
         8            5107621
         9            5107621

Essendo i datafile disallineati occorre leggere i redolog recuperabili dagli Archive log sotto il path  $ORACLE_BASE/flash_recovery_area/<SID>/ARCHIVELOG.

RMAN> RECOVER DATAFILE 6;                                                
Se rieseguo la query di prima risulta che tutti i datafile hanno lo stesso livello di SCN.
SQL> select file# , CHECKPOINT_CHANGE# from v$datafile_header;

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1            5107621
         2            5107621
         3            5107621
         4            5107621
         5            5107621
         6            5107621
         7            5107621
         8            5107621
         9            5107621

E' passato SMON che allinea gli SCN.

SQL> ALTER DATABASE OPEN;                                              



E s e m p i o #2

Recuperare un datafile cancellato e aprire il database.

Supponiamo di cancellare il datafile PROVA04.DBF e di riaprire il database:
SQL> startup mount;
SQL> alter database open;
ERRORE alla riga 1:
ORA-01157: impossibile identificare/bloccare il file 7, vedere file di traccia
DBWR
ORA-01110: file di dati 7: '.....PROVA04.DBF'

RMAN> LIST FAILURE DETAIL;                                                     
Lista di errori del database
=========================
ID errore Priority Status    Ora rilevata Summary
--------- -------- --------- ------------ -------
82        HIGH     OPEN      04-GIU-14    Uno o pi¨ file di dati non di sistema mancanti
  Impatto: Vedere l'impatto per i singoli errori figlio
  Lista di errori figlio per ID errore padre 82
  ID errore Priority Status    Ora rilevata Summary
  --------- -------- --------- ------------ -------
  165       HIGH     OPEN      04-GIU-14    File di dati 7: '...\PROVA04.DBF' mancante
Impatto: Alcuni oggetti nella tablespace EXAMPLE potrebbero non essere disponibili

Mi dice che manca un file non di sistema e pertanto potrei aprire il file senza quel datafile mettendolo offline.
Le informazioni relative a blocchi corrotti posso essere estratti anche dalla vista seguente.

select * from V$database_block_corruption;



SQL> alter database datafile 7 OFFLINE;
Modificato database.
SQL> alter databse open;
I dati non sono coerenti, mancano le info contenute nel datafile 7.
SQL> select file# , CHECKPOINT_CHANGE# from v$datafile_header;

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1            5109064
         2            5109064
         3            5109064
         4            5109064
         5            5109064
         6            5109064
         7                  0
         8            5109064
         9            5109064

Per rimittere il datafile online.
SQL>alter database datafile 7 ONLINE;

SQL> select file# , CHECKPOINT_CHANGE# from v$datafile_header;

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1            5109064
         2            5109064
         3            5109064
         4            5109064
         5            5109064
         6            5109064
         7            5109052
         8            5109064
         9            5109064

SQL>alter system checkpoint;
SQL> select file# , CHECKPOINT_CHANGE#  from v$datafile_header;

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1            5113634
         2            5113634
         3            5113634
         4            5113634
         5            5113634
         6            5113634
         7            5113634
         8            5113634
         9            5113634

Ritorniamo al caso in cui il database non è open, con il datafile 7 cancellato.
Il comando seguente esegue in automatico il restore e il recover del datafile 7.

RMAN> ADVISE FAILURE;                                                            
....
Descrizione correzione opzione
------ ------------------
1      Ripristinare e recuperare il file di dati 7
  Strategia: La correzione comprende il recupero completo dei metadati senza perdita di dati
  Script di correzione: .......\diag\rdbms\orcl\orcl\hm\reco_1648021552.hm

Descrizione correzione opzione
------ ------------------
1      Ripristinare e recuperare il file di dati 7
  Strategia: La correzione comprende il recupero completo dei metadati senza perdita di dati
  Script di correzione: ....diag\rdbms\orcl\orcl\hm\reco_1648021552.hm
contenuto dello script di correzione:
   # restore and recover datafile
   restore datafile 7;
   recover datafile 7;
Si è certi di voler eseguire la correzione riportata sopra (immettere YES o NO)?
scrivere YES
...
.....
Si è certi di voler aprire il database (immettere YES o NO)?
Scrivere YES
database open

Post popolari in questo blog

Create e Drop Pluggable Database

ORA-12154: TNS: il listener non è attualmente a conoscenza del servizio richiesto nel descrittore di connessione