Oracle DBで最初にすべきことの1つはDBIDを書き留めておくことです。そのため、制御ファイルを紛失した場合は、RMANで設定する必要があります。そうすると、そこから復元できます。自動バックアップ。 (ドキュメントが言ったように)
RMAN> SET DBID 320066378;
RMAN> RUN {
SET CONTROLFILE AUTOBACKUP FORMAT
FOR DEVICE TYPE DISK TO 'autobackup_format';
RESTORE CONTROLFILE FROM AUTOBACKUP;
}
しかし、それから数週間前、職場の別のサーバーで緊急のDB復元を行わなければならないときに、DBIDをまったく使用しなかったことに気付きました。さらに、DBIDを使用したことがないことに気付きました。
私たちのすべてのバックアップは、CONTROLFILE AUTOBACKUP ON
、およびそれらの「フラッシュ/高速リカバリ領域」は使用しません。制御ファイルを復元するときは、RESTORE CONTROLFILE FROM '/file/name';
、任意のDBIDを設定するホイットアウト。
データファイルを追加し、制御ファイルを物理的に移動し、テーブルをトランケートして行を挿入し、それをコミットし、シャットダウンを中止し、最後の自動バックアップから制御ファイルを復元し、dbを回復して開きます。
[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
これが正しい場合、どのような場合にDBIDが必要ですか?
よろしく
グローバルRMANカタログとTSMやNetBackupなどのバックアップソフトウェアを使用する場合。次に、DBID
は一意のデータベース識別子です。これは、特にクロスサイト(DR)リストアに必要です。
各データベースが独自のディスクバックアップディレクトリを使用する場合、DBIDの重要性はそれほど見えません。
PS:REPORT SCHEMA
rmanコマンドの出力を保持することも便利です。これにより、復元後のデータファイルの予想サイズがわかります。そして、その場所。これは、クローン作成時にデータベース用のストレージを準備するのに役立ちます。
このシナリオでは、制御ファイルのバックアップがある限り、dbidを設定する必要はありません。これは、制御ファイルのバックアップも失うと変化します。緊急事態ではそれらは金の価値があるので、あなたがそれらを持っていることを確認してください。カタログデータベースを用意しても、生活は楽にはなりません。