Recovery en cas de perte du spfile. On le récupère à partir de l’autobackup, vers un autre fichier, qu’on peut copier à sa place initiale.
Un exemple sur une base de demo créée ici.
Je supprime spfile et init.ora
+ rm /app/oracle/product/12c/dbs/*DEMO100.ora
Je vérifie les paramètres sous sqlplus:
SQL> show parameter db_unique_name NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_unique_name string DEMO100 SQL> show parameter db_recovery_file_dest NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string /u/DEMO/FRA SQL> show spparameter db_recovery_file_dest db_recovery_file_dest_size big integer 4800M SQL> ORA-01565: error in identifying file '/app/oracle/product/12c/dbs/spfileDEMO100.ora' ORA-27037: unable to obtain file status Linux-x86_64 Error: 2: No such file or directory Additional information: 3
On a une erreur lorsqu’il s’agit de lire le spfile.
Recovery Manager: Release 12.1.0.1.0 - Production on Sun Nov 17 22:06:58 2013 Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved. connected to target database: DEMO100 (DBID=2395255289)
RMAN> list failure;
RMAN> list failure; using target database control file instead of recovery catalog Database Role: PRIMARY no failures found that match specification
Recovery Advisor ne propose rien
RMAN> restore spfile from autobackup;
RMAN> restore spfile from autobackup; Starting restore at 17-NOV-13 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=243 device type=DISK RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of restore command at 11/17/2013 22:07:05 RMAN-06564: must use the TO clause when the instance is started with SPFILE
On ne peut pas le restaurer à sa place lorsque l’instance est démarrée.
On va le restaurer vers une destination temporaire.
RMAN> restore spfile to ‘/tmp/spfileDEMO100.ora’ from autobackup ;
RMAN> restore spfile to '/tmp/spfileDEMO100.ora' from autobackup ; Starting restore at 17-NOV-13 using channel ORA_DISK_1 recovery area destination: /u/DEMO/FRA database name (or database unique name) used for search: DEMO100 channel ORA_DISK_1: AUTOBACKUP /u/DEMO/FRA/DEMO100/autobackup/2013_11_17/o1_mf_s_831765902_98lcw1g4_.bkp found in the recovery area channel ORA_DISK_1: looking for AUTOBACKUP on day: 20131117 channel ORA_DISK_1: restoring spfile from AUTOBACKUP /u/DEMO/FRA/DEMO100/autobackup/2013_11_17/o1_mf_s_831765902_98lcw1g4_.bkp channel ORA_DISK_1: SPFILE restore from AUTOBACKUP complete Finished restore at 17-NOV-13
Il n’y a plus qu’à le mettre à sa place:
+ cp /tmp/spfileDEMO100.ora /app/oracle/product/12c/dbs
aucun arrêt n’a été nécessaire
Si on n’avait pas pu restaurer le spfile, il est toujours possible de retrouver les paramètres:
– dans l’alert.log: ils sont écrits à chaque démarrage
– avec un ‘create pfile … from memory’ pour récupérer tous les paramètres courants (>= 11g)
– à partir d’un backup, tant qu’on sait où est le backup (le controlfile et/ou le repository rman le savent)