Astuce : retrouver un DBID perdu

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.Wink

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 rencontreWink