当未使用catalog方式进行rman备份时,将备份集转移到其他主机时,除非目录结构相同,否则控制文件将无法识别路径不同的备份集,针对这类问题,可以使用dbms_backup_restore包进行文件回复;但是从Oracle 10g开始,Oracle终于简化了这类问题的处理,现在通过rman可以很容易地处理不同主机的rman备份集恢复。
一、获得源数据库的参数文件,修改后传送至目标数据库,修改后的参数文件可以用于数据库启动,主要修改的参数应该包括:*_dmpb_dest、control_files、db_recovery_file_dest、db_create_file_dest等。
二、建立相应的文件夹
如:admin下建立acf及里面对应的文件夹(adump,bdump,cdump,dpdump,pfile,udump),oradata下建立acf,flash_recovery_area下建立acf
三、在window平台下,可以通过oradim创建一个服务启动oracle环境
C:\>oradim -new -sid acf
实例已创建。
注意:记得启动服务。
四、通过rman来启动数据库到nomount状态
C:\>set oracle_sid=acf
C:\>rman target /
RMAN> startup nomount pfile ='E:\oracle\product\10.2.0\admin\acf\pfile\init.ora'
五、通过备份的控制文件恢复出控制文件
RMAN> restore controlfile to 'E:\oracle\product\10.2.0\oradata\acf\control01.ctl' from 'E:
\OracleBacup\ACFCTL_ACF_20080904_222.CTL';
然后根据参数文件的control_files设置,复制相应的副本。
注意:前面恢复出来的控制文件位置及名称取决于你在参数文件中的设置
六、装载数据库
RMAN> alter database mount;
七、将备份集拷贝到相应目录,向控制文件中加载备份集
RMAN> catalog start with 'E:\OracleBacup';
八、作交叉检查,然后删除无效backup。
RMAN> crosscheck backup;
RMAN> delete expired backup;
九、通过控制文件获得表空间及数据文件列表
RMAN> report schema;
十、通过编写恢复脚本,然后执行恢复
run
{
set newname for datafile 1 to 'E:\oracle\product\10.2.0\oradata\acf\SYSTEM01.DBF';
set newname for datafile 2 to 'E:\oracle\product\10.2.0\oradata\acf\UNDOTBS01.DBF';
set newname for datafile 3 to 'E:\oracle\product\10.2.0\oradata\acf\SYSAUX01.DBF';
set newname for datafile 4 to 'E:\oracle\product\10.2.0\oradata\acf\USERS01.DBF';
set newname for datafile 5 to 'E:\oracle\product\10.2.0\oradata\acf\ORACLETEST01.DBF';
set newname for datafile 6 to 'E:\oracle\product\10.2.0\oradata\acf\SQLTEST01.DBF';
set newname for datafile 7 to 'E:\oracle\product\10.2.0\oradata\acf\SDE.DBF';
set newname for datafile 8 to 'E:\oracle\product\10.2.0\oradata\acf\RASTER_DATA_01.DBF';
set newname for datafile 9 to 'E:\oracle\product\10.2.0\oradata\acf\TEST01.DBF';
set newname for datafile 10 to 'E:\oracle\product\10.2.0\oradata\acf\GIS_DATA_01.DBF';
set newname for datafile 11 to 'E:\oracle\product\10.2.0\oradata\acf\VERSIONED_DATA_01.DBF';
restore database;
switch datafile all;
}
注意:如果数据文件路径和原来的相同则直接
run
{
restore database;
}
十一、数据文件恢复出来以后,可以对数据库应用归档日志进行恢复
RMAN> recover database;
也可以在sqlplus中手动恢复
SQL>recover database using backup controlfile until cancel;
十二、最后以resetlogs方式打开数据库
RMAN> alter database open resetlogs;
注意:如果需要的话可能会修改控制文件中redo文件的位置(原来的路径与现在路径不相同的时候),然后重建。