Astuce : retrouver un DBID perdu
- Détails
- Catégorie : Backup/Restore
- Publié le vendredi 22 février 2013 20:18
- Écrit par Administrator
- Affichages : 6687
Quand on restaure avec RMAN, il peut arriver que l’on ait besoin du DBID de la base de données à restaurer, en particulier quand on n’utilise pas la FRA ou bien une base catalogue RMAN.
RMAN> connect target /
RMAN> startup nomount;
RMAN> restore controlfile from autobackup;
RMAN-06495: must explicitly specify DBID with SET DBID command
On peut trouver le DBID de la base à restaurer dans les logs (output) des commandes RMAN à condition qu’ils soient toujours présent sur le serveur …ou bien dans un fichier de backup où volontairement on backup cet identifiant…ou alors, dans une documentation, parce que nous vivons dans un monde parfait et le DBA a consciencieusement noté le DBID à la création de la base et la mis dans la procédure de restauration.
Sinon, si les backups sont sur disque, nous pouvons toujours par déduction, ou par essai itératif trouver le bon backup du controfile, en revanche si nous utilisons des backups sur librairie (Netbackup, TSM…)… prévoir de la patience et du stress.
Heureusement, si sur le serveur il reste au moins un fichier datafile, ou bien un redolog/archivelog c’est gagné, le DBID est récupérable.
Pour cela il suffit de démarrer en nomount n’importe quelle base de données, même une qui n’existe pas, un init.ora quelconque suffit
# vi initBIDON.ora
# export ORACLE_SID=BIDON
# sqlplus / as sysdba
SQL> startup nomount
Pour récupérer le DBID à partir d’un datafile par exemple le datafile /oradata/TESTORA/system01.dbf, exécutez :
SQL> alter system dump datafile '/oradata/TESTORA/system01.dbf' block min 1 block max 10;
Un fichier dump est alors écrit dans le background_dump_dest (show parameter background_dump_dest), éditez le fichier et vous trouverez votre DBID :
Start dump data block from file /oradata/TESTORA/system01.dbf minblk 1 maxblk 10
V10 STYLE FILE HEADER:
Compatibility Vsn = 186646528=0xb200000
Db ID=630020041=0x258d57c9, Db Name='TESTORA'
Activation ID=0=0x0
Control Seq=401=0x191, File size=89600=0x15e00
File Number=1, Blksiz=8192, File Type=3 DATA
Si vous n’avez pas de datafile, mais un redo ou même un archivelog la syntaxe est alors:
SQL> alter system dump logfile '/oradata/TESTORA/redo01.log';
Voilà c'est tout, c’était juste une petite astuce, qui peut rendre bien service quand l'occasion se rencontre