web-dev-qa-db-fra.com

Pourquoi est-il important d'écrire le dbid dans Oracle DB?

J'ai toujours entendu dire que l'une des premières choses que vous devriez faire dans Oracle DB est d'écrire le dbid, donc au cas où vous auriez perdu le fichier Controlfile, vous aurez besoin de la définir à Rman, puis vous pourrez restaurer de sauvegarde automatique. (Comme la documentation a déclaré)

RMAN> SET DBID 320066378;
RMAN> RUN {
    SET CONTROLFILE AUTOBACKUP FORMAT 
          FOR DEVICE TYPE DISK TO 'autobackup_format';
    RESTORE CONTROLFILE FROM AUTOBACKUP;
    }

Mais ensuite j'ai réalisé qu'il y a quelques semaines, lorsque nous devions faire une restauration de dB d'urgence dans un autre serveur au travail, je n'ai pas utilisé le dbid du tout. Encore plus, j'ai réalisé que je n'utilise jamais le dbid.

Toutes nos sauvegardes sont basées sur Controlfile, avec CONTROLFILE AUTOBACKUP ON, et nous n'utilisons pas la "zone de récupération rapide/rapide" pour eux. Quand je restaure un Controlfile, je le fais avec RESTORE CONTROLFILE FROM '/file/name';, Whitout la mise en place de tout dbid.

Voici un exemple simple où j'ajoute un datafile, déplacez des contrôles physiquement, tronquez une table et insérez une ligne, commettez-la, arrêtez-vous, restaurez le fichier Controlfile depuis le dernier bouton d'autobackup, récupérer DB et Ouvrir:

[Oracle@localhost rman]$ sqlplus '/as sysdba'

SQL*Plus: Release 11.2.0.1.0 Production on Mié Nov 27 11:39:03 2013

Copyright (c) 1982, 2009, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select file_name from dba_data_files where tablespace_name = 'TS_PRUEBA';

FILE_NAME
--------------------------------------------------------------------------------
/u01/app/Oracle/oradata/data/ts_prueba.dbf

SQL> alter tablespace ts_prueba add datafile '/u01/app/Oracle/oradata/data/ts_prueba02.dbf' size 10M;

Tablespace altered.

SQL> show parameter control_files;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      /u01/app/Oracle/oradata/system
                                                 /control01.ctl, /u01/app/oracl
                                                 e/oradata/system/control02.ctl
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[Oracle@localhost rman]$ mv /u01/app/Oracle/oradata/system/control01.ctl /u01/app/Oracle/oradata/system/control01.ctl.dead
[Oracle@localhost rman]$ mv /u01/app/Oracle/oradata/system/control02.ctl /u01/app/Oracle/oradata/system/control02.ctl.dead
[Oracle@localhost rman]$ sqlplus '/as sysdba'

SQL*Plus: Release 11.2.0.1.0 Production on Mié Nov 27 11:51:24 2013

Copyright (c) 1982, 2009, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> truncate table prueba.test;

Table truncated.

SQL>  insert into prueba.test values (1,'Helo world');

1 row created.

SQL> commit;

Commit complete.

SQL> shutdown abort;
Oracle instance shut down.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[Oracle@localhost rman]$ pwd
/mnt/rman
[Oracle@localhost rman]$ ls -lthar
total 366M
drwxr-xr-x 5 root   root     4.0K Apr 15  2013 ..
-rw-r----- 1 Oracle oinstall 9.7M Nov 27 11:27 c-1340618388-20131127-00
drwxr-xr-x 5 Oracle oinstall 4.0K Nov 27 11:31 .
-rw-r----- 1 Oracle oinstall 9.7M Nov 27 11:31 c-1340618388-20131127-01
[Oracle@localhost rman]$ rman target /

Recovery Manager: Release 11.2.0.1.0 - Production on Mié Nov 27 11:57:01 2013

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

connected to target database (not started)

RMAN> startup nomount;

Oracle instance started

Total System Global Area     418484224 bytes

Fixed Size                     1336932 bytes
Variable Size                314575260 bytes
Database Buffers              96468992 bytes
Redo Buffers                   6103040 bytes

RMAN> restore controlfile from '/mnt/rman/c-1340618388-20131127-01';

Starting restore at 27-NOV-2013 11:57:33
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=19 device type=DISK

channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/u01/app/Oracle/oradata/system/control01.ctl
output file name=/u01/app/Oracle/oradata/system/control02.ctl
Finished restore at 27-NOV-2013 11:57:35

RMAN> alter database mount;

database mounted
released channel: ORA_DISK_1

RMAN> recover database;

Starting recover at 27-NOV-2013 11:57:55
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=19 device type=DISK

starting media recovery

archived log for thread 1 with sequence 1 is already on disk as file /home/Oracle/redolog/redo01b.log
archived log file name=/home/Oracle/redolog/redo01b.log thread=1 sequence=1
creating datafile file number=6 name=/u01/app/Oracle/oradata/data/ts_prueba02.dbf
archived log file name=/home/Oracle/redolog/redo01b.log thread=1 sequence=1
media recovery complete, elapsed time: 00:00:02
Finished recover at 27-NOV-2013 11:57:58

RMAN> alter database open resetlogs;

database opened

RMAN> exit


Recovery Manager complete.
[Oracle@localhost rman]$ sqlplus '/as sysdba'

SQL*Plus: Release 11.2.0.1.0 Production on Mié Nov 27 11:58:21 2013

Copyright (c) 1982, 2009, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select file_name from dba_data_files where tablespace_name ='TS_PRUEBA';

FILE_NAME
--------------------------------------------------------------------------------
/u01/app/Oracle/oradata/data/ts_prueba.dbf
/u01/app/Oracle/oradata/data/ts_prueba02.dbf

SQL> select * from prueba.test;

    NUMERO FRASE
---------- --------------------------------------------------
         1 Helo world

Si cela a raison, dans quels cas j'ai besoin du dbid alors?

Salutations

3
vegatripy

Si vous utilisez Global RMAN Catalog et une sauvegarde SW comme TSM ou NetBackup. Alors DBID est l'identifiant de base de données unique. Ceci est nécessaire surtout sur le site internet (DR) restaure.

Si chaque base de données utilise son propre répertoire de sauvegarde de disque, l'importance de dbid n'est pas si visible.

PS: Il est également utile de garder la production de REPORT SCHEMA commandement rman. Cela vous dira des tailles attendues des datafiles après la restauration. Et aussi leurs endroits. Cela vous aidera à préparer le stockage pour la base de données lors du cloné.

2
ibre5041

Dans votre scénario, tant que vous avez vos sauvegardes de fichier de contrôle, vous n'aurez pas besoin de définir le dbid. Cela change lorsque vous perdez également les sauvegardes de fichier de contrôle. Assurez-vous que vous les avez depuis dans des situations d'urgence, ils valent la valeur de l'or. Avoir une base de données de catalogue ne rend pas la vie plus facile.

0
ik_zelf