Data Recovery Advisor

C’est une fonctionnalité qui est apparue en 11g
Data Recovery Advisor permet de diagnostiquer rapidement les problèmes de la base comme les corruptions de données et les pertes de fichiers et surtout de vous donner les commandes pour corriger les problèmes
En fait lorsqu’une erreur est rencontrée au niveau des données, Data Recovery Advisor va collecter automatiquement des informations concernant le problème et les stocker en dehors de la base dans le reférentiel ADR (Automatic Diagnostic Repository)  )
Ces problèmes peuvent être plus ou moins grave (  Low , High ou Critical )
Une fois ces problèmes détectés et stockés on pourra :

  • les visualiser par l’interface graphique ou avec des commandes RMAN.
  • Afficher les commandes qui vont permettre de résoudre les problèmes ( sans les résoudre )
  • Exécuter les commandes qui vont résoudre les problèmes

Data Recovery Advisor : Commandes  RMAN
RMAN > LIST FAILURE :   Permet d’afficher les problèmes répertoriés  , listés par ordre d’importance
RMAN > ADVISE FAILURE :  Donne des conseils de résolution ( sans résoudre le problème )
Ce sont des fichiers stockés sur le disque , on peut les éditer et éventuellement les customiser.
RMAN > REPAIR FAILURE : Permet de résoudre le problème en lançant le fichier généré par la commande précédente.
PS : La commande REPAIR FAILURE est utilisée après une commande ADVISE FAILURE au sein d’une même session RMAN 
On a aussi une commande CHANGE FAILURE qui permet de modifier la priorité des défaillances ou de fermer une ou plusieurs défaillances.
Data Recovery Advisor : Interface graphique
La fonction de conseil Data Recovery Advisor est aussi disponible à partir d’Enterprise Manager
interfaces Database  >  Related Links : Advisor Central > onglet Advisors : Data Recovery Advisor
–> image_dra.doc
On peut voir le nombre et le type d’erreurs
Failures detected : ici  0 erreurs de type Critical , 1 erreur de type High , 0 erreur de type Low
C’estl’ équivalent de la commande RMAN : LIST FAILURE
En cliquant sur le bouton « Advise and Recover »  , On peut récupérer des conseils de résolution ( ADVISE FAILURE ) et réparer le problème ( REPAIR FAILURE ) avec l’interface graphique.
Quelques vues de Recovery Advisor :

V$IR_FAILURE : Affiche les défaillance ( équivalent de la commande LIST FAILURE )
V$IR_REPAIR : Affiche les réparations conseillées ( équivalent de la commande ADVISE FAILURE )
Mais le plus simple est de voir cela avec un exemple :
1 – Connexion a la base et recherche de problèmes

RMAN> connect target /
 Recovery Manager: Release 11.1.0.7.0 - Production on Thu May 19 13:45:17 2010
 Copyright (c) 1982, 2007, Oracle. All rights reserved.
RMAN> list failure;
No failures found that match specification

–> Pas de problèmes trouvés pour l’instant
2 – Suppréssion d’un fichier de la base
Arrêt de la base et suppression du fichier OS database suivant  “D:ORACLEAPPORADATACHERAJA_INDX01.DBF”.
3 – Démarrage de la base :

SQL> startup
 ORACLE instance started.
Total System Global Area 535662592 bytes
 Fixed Size 1348508 bytes
 Variable Size 226495588 bytes
 Database Buffers 301989888 bytes
 Redo Buffers 5828608 bytes
 Database mounted.
 ORA-01157: cannot identify/lock data file 7 - see DBWR trace file
 ORA-01110: data file 7: 'D:ORACLEAPPORADATACHERAJA_INDX01.DBF'
SQL> alter database datafile 7 offline;
Database altered.
SQL> alter database open;
Database altered.
SQL> select * from v$recover_file;
FILE# ERROR TIME
 ---------- ----------------------------------- ---------
 7 FILE NOT FOUND
SQL> select file#,status from v$datafile;
FILE# STATUS
 ---------- -------
 1 SYSTEM
 2 ONLINE
 3 ONLINE
 4 ONLINE
 5 ONLINE
 6 ONLINE
 7 RECOVER
 8 ONLINE
 9 ONLINE
9 rows selected.

On voit que la base n’a pas pu démarrer car il manque un fichier.
C’est le fichier numéro 7 , on le met offline et on peut ouvrir la base
Mais on va  devoir restaurer le fichier numéro 7
4 – Exécution de la commande RMAN – LIST FAILURE pour visualiser les erreurs :

RMAN> connect target /
Recovery Manager: Release 11.1.0.7.0 - Production on Thu May 19 13:45:17 2010
 Copyright (c) 1982, 2007, Oracle. All rights reserved.
 Connected to target database: CHE (DBID=3460503574)
RMAN> list failure;
List of Database Failures
 =========================
Failure ID Priority Status Time Detected Summary
 ---------- -------- --------- ------------- -------
 322 HIGH OPEN 19-MAY-10 one or more non-system datafiles are corrupt

–> On voit que l’on a une erreur de type HIGH
5 – Exécution de la commande RMAN – ADVISE FAILURE pour générer les scrpits pour resoudre les erreurs :

RMAN> advise failure;
List of Database Failures
 =========================
Failure ID Priority Status Time Detected Summary
 ---------- -------- --------- ------------- -------
 322 HIGH OPEN 19-MAY-10 One or more non-system datafiles are corrupt analyzing automatic repair options;
 this may take some time
 using channel ORA_DISK_1 analyzing automatic repair options complete Mandatory Manual Actions
 ========================
 no manual actions available
Optional Manual Actions
 =======================
 1. If a standby database is available, then consider a Data Guard switchover or failover
Automated Repair Options
 ========================
 Option Repair Description
 ------ ------------------
 1 Restore and recover datafile 7
 Strategy: The repair includes complete media recovery with no data loss
 Repair script: d:oracleappdiagrdbmschechehmreco_948713839.hm

–> On peut voir que le script de reparation est sous d:oracleappdiagrdbmschechehm
On peut éditer et modifier la solution a exécuter éventuellement.
6 – Exécution de la commande RMAN – REPAIR FAILURE pour corriger  les erreurs :

RMAN> repair failure;
Strategy: The repair includes complete media recovery with no data loss
 Repair script: d:oracleappdiagrdbmschechehmreco_948713839.hm contents of repair script:
 # restore and recover datafile
 sql 'alter database datafile 7 offline';
 restore datafile 7;
 recover datafile 7;
 sql 'alter database datafile 7 online';
Do you really want to execute the above repair (enter YES or NO)? yes
 executing repair script
sql statement: alter database datafile 7 offline
Starting restore at 19-MAY-10
 using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile backup set restore
 channel ORA_DISK_1: specifying datafile(s) to restore from backup set
 channel ORA_DISK_1: restoring datafile 00007 to D:ORACLEAPPORADATACHERAJA_INDX01.DBF
 channel ORA_DISK_1: reading from backup piece D:ORACLEAPPFLASH_RECOVERY_AREACHEBACKUPSET
 2010_05_18O1_MF_NNNDF_TAG20100518T103629_5Z482Q6K_.BKP
 channel ORA_DISK_1: piece handle=D:ORACLEAPPFLASH_RECOVERY_AREACHEBACKUPSET2010_05_18
 O1_MF_NNNDF_TAG20100518T103629_5Z482Q6K_.BKP tag=TAG20100518T103629
 channel ORA_DISK_1: restored backup piece 1
 channel ORA_DISK_1: restore complete, elapsed time: 00:00:07
 Finished restore at 19-MAY-10
Starting recover at 19-MAY-10
 using channel ORA_DISK_1
starting media recovery
archived log for thread 1 with sequence 18 is already on disk as file D:ORACLE
 APPFLASH_RECOVERY_AREACHEARCHIVELOG2010_05_18O1_MF_1_18_5Z4867P5_.ARC
 archived log for thread 1 with sequence 19 is already on disk as file D:ORACLE
 APPFLASH_RECOVERY_AREACHEARCHIVELOG2010_05_18O1_MF_1_19_5Z486CGC_.ARC
 archived log for thread 1 with sequence 20 is already on disk as file D:ORACLE
 APPFLASH_RECOVERY_AREACHEARCHIVELOG2010_05_18O1_MF_1_20_5Z49DVKR_.ARC
 archived log for thread 1 with sequence 21 is already on disk as file D:ORACLE
 APPFLASH_RECOVERY_AREACHEARCHIVELOG2010_05_18O1_MF_1_21_5Z49SJJ9_.ARC
 archived log for thread 1 with sequence 22 is already on disk as file D:ORACLE
 APPFLASH_RECOVERY_AREACHEARCHIVELOG2010_05_18O1_MF_1_22_5Z4BRQQN_.ARC
 archived log for thread 1 with sequence 23 is already on disk as file D:ORACLE
 APPFLASH_RECOVERY_AREACHEARCHIVELOG2010_05_18O1_MF_1_23_5Z4BRRW0_.ARC
 archived log for thread 1 with sequence 24 is already on disk as file D:ORACLE
 APPFLASH_RECOVERY_AREACHEARCHIVELOG2010_05_19O1_MF_1_24_5Z6RQ7YR_.ARC
 archived log for thread 1 with sequence 25 is already on disk as file D:ORACLE
 APPFLASH_RECOVERY_AREACHEARCHIVELOG2010_05_19O1_MF_1_25_5Z6SJZDP_.ARC
 archived log for thread 1 with sequence 26 is already on disk as file D:ORACLE
 APPFLASH_RECOVERY_AREACHEARCHIVELOG2010_05_19O1_MF_1_26_5Z724OK2_.ARC
 archived log for thread 1 with sequence 27 is already on disk as file D:ORACLE
 APPFLASH_RECOVERY_AREACHEARCHIVELOG2010_05_19O1_MF_1_27_5Z75LR6T_.ARC
 archived log file name=D:ORACLEAPPFLASH_RECOVERY_AREACHEARCHIVELOG2010_05_
 18O1_MF_1_18_5Z4867P5_.ARC thread=1 sequence=18
 archived log file name=D:ORACLEAPPFLASH_RECOVERY_AREACHEARCHIVELOG2010_05_
 18O1_MF_1_19_5Z486CGC_.ARC thread=1 sequence=19
 archived log file name=D:ORACLEAPPFLASH_RECOVERY_AREACHEARCHIVELOG2010_05_
 18O1_MF_1_20_5Z49DVKR_.ARC thread=1 sequence=20
 archived log file name=D:ORACLEAPPFLASH_RECOVERY_AREACHEARCHIVELOG2010_05_
 18O1_MF_1_21_5Z49SJJ9_.ARC thread=1 sequence=21
 archived log file name=D:ORACLEAPPFLASH_RECOVERY_AREACHEARCHIVELOG2010_05_
 18O1_MF_1_22_5Z4BRQQN_.ARC thread=1 sequence=22
 archived log file name=D:ORACLEAPPFLASH_RECOVERY_AREACHEARCHIVELOG2010_05_
 18O1_MF_1_23_5Z4BRRW0_.ARC thread=1 sequence=23
 archived log file name=D:ORACLEAPPFLASH_RECOVERY_AREACHEARCHIVELOG2010_05_
 19O1_MF_1_24_5Z6RQ7YR_.ARC thread=1 sequence=24
 archived log file name=D:ORACLEAPPFLASH_RECOVERY_AREACHEARCHIVELOG2010_05_
 19O1_MF_1_25_5Z6SJZDP_.ARC thread=1 sequence=25
 media recovery complete, elapsed time: 00:00:04
 Finished recover at 19-MAY-10
sql statement: alter database datafile 7 online
 repair failure complete

Le script de réparation a lancé la commande suivante :

sql 'alter database datafile 7 offline';
restore datafile 7;
recover datafile 7;
sql 'alter database datafile 7 online';

SQL> select file#,status from v$datafile;
FILE# STATUS
———- ——-
1 SYSTEM
2 ONLINE
3 ONLINE
4 ONLINE
5 ONLINE
6 ONLINE
7 ONLINE
8 ONLINE
9 ONLINE
9 rows selected.
La base est reparée
Interet  de cet outil  :
C’est un outil pro-actif qui permet de detecter les erreurs eventuelles et de fournir le script de réparation
Pour les DBA debutants : Un script RMAN de réparation est fournit