日期:2014-05-16  浏览次数:20455 次

RMAN备份异机恢复并创建新DBID

测试平台信息:

Oracle:10gR2

操作系统:Redhat 4.5

Target DB:ORCL


几点说明:

(1)RMAN 异机恢复的时候,db_name必须相同。 如果说要想改成其他的实例名,可以在恢复成功后,用nid命令修改。 实例名的信息会记录到控制文件里,所以如果在恢复的时候,如果实例名不一致,恢复的时候会报错。

(2)如果恢复的路径和源库不一致,就需要在restore时用set 命令指定新位置。 并且使用switch datafile all将信息更新的到控制文件。

       在做duplicate的时候,RMAN 会自动根据pfile中的log_file_name_convert和db_file_name_convert来进行set 的转换。 手工restore时,只能只只能使用set 命令。

(3)异机恢复对相同目录和不同目录都做了说明。

(4)最后测试了NID 修改DBID 和DBNAME.

 

. Target 库准备工作:

1. 查询DBID


SQL> select name,dbid from v$database;

NAME            DBID
--------- ----------
ORCL      1230508166

2. 备份DB

RMAN 的shell 备份脚本:


CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u03/RMAN/auto_c_%F';
CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO COMPRESSED BACKUPSET;
run {
 crosscheck archivelog all;
 delete expired archivelog all;
 crosscheck backup;
 delete expired backup;
 allocate channel c1 type disk;
 backup incremental level 0 database format '/u03/RMAN/db0%u_%s_%p.bak' include current controlfile;
 sql 'alter system archive log current';
 backup filesperset 1 format '/u03/RMAN/arch%u_%s_%p.bak'
 backup spfile tag='spfile' format='/u03/RMAN/ORCL_spfile_%U_%T';
 archivelog all delete input;
 release channel c1;
}
exit;
~


备份出来的文件如下:

[oracle@rhel133 RMAN]$ ls -lth
total 5.8G
-rw-r-----  1 oracle oinstall 6.9M Apr  9 14:30 auto_c_c-1230508166-20130409-04
-rw-r-----  1 oracle oinstall  96K Apr  9 14:30 ORCL_spfile_0so6lccp_1_1_20130409
-rw-r-----  1 oracle oinstall 6.9M Apr  9 14:27 auto_c_c-1230508166-20130409-03
-rw-r-----  1 oracle oinstall 6.8M Apr  9 12:20 auto_c_c-1230508166-20130409-02
-rw-r-----  1 oracle oinstall 6.8M Apr  9 11:32 auto_c_c-1230508166-20130409-00
-rw-r-----  1 oracle oinstall 6.8M Apr  9 09:37 auto_c_c-1230508166-20130409-01
-rw-r-----  1 oracle oinstall 2.5K Apr  9 09:37 arch0io6kr7a_18_1.bak
-rw-r-----  1 oracle oinstall 2.5K Apr  9 09:37 arch0ho6kr78_17_1.bak
-rw-r-----  1 oracle oinstall 4.4M Apr  9 09:37 arch0go6kr75_16_1.bak
-rw-r-----  1 oracle oinstall  22M Apr  9 09:37 arch0fo6kr6t_15_1.bak
-rw-r-----  1 oracle oinstall 135M Apr  9 09:37 arch0eo6kr63_14_1.bak
-rw-r-----  1 oracle oinstall 161M Apr  9 09:37 arch0do6kr59_13_1.bak
-rw-r-----  1 oracle oinstall 1.1M Apr  9 09:36 db00bo6kr52_11_1.bak
-rw-r-----  1 oracle oinstall 5.4G Apr  9 09:36 db00ao6kq0u_10_1.bak


检查数据文件所在位置,在Auxiliary库需将所有的数据文件从/u02改变到/u01下:


SQL> select file_id,file_name from dba_data_files order by file_id;

   FILE_ID FILE_NAME
---------- --------------------------------------------------
         1 /u02/oradata/orcl/system01.dbf
         2 /u02/oradata/orcl/undotbs01.dbf
       &nb