ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 初试Oracle的RMAN异地异系统恢复…………失败…………

初试Oracle的RMAN异地异系统恢复…………失败…………

原创 Linux操作系统 作者:louloueva 时间:2009-01-05 11:40:02 0 删除 编辑

昨天没有看什么具体的知识点
而是去试验了一下RMAN的恢复

从朋友那边得到了一份测试数据库的完全备份集(其实还不够完全)
想在自己这边试验看看能不能恢复回去
先从朋友那边拿到三个控制文件(其实这个时候应该意识到问题的……)
再让他通过spfile创建pfile
至此,一切准备工作就绪(我以为的就绪……)

先在Linux下export ORACLE_SID=数据库SID
然后手动建立相应数据库目录(bdump、pfile等)
设置相应的Tnsname和listener,可以利用netmgr设置
或拷贝现有项,加以简单修改(也就是改改SID什么的)
通过SqlPlus连接新建的ORACLE_SID(这时候是可以连接的)
因为自己已经将control文件拷贝到相应目录
所以启动数据库到mount状态,startup mount
(其实……这里可能不是正确的)
在mount状态下,开始利用备份文件恢复数据文件到新的位置
在SqlPlus下执行下面的PL/SQL块
DECLARE
devtype varchar2(256);
done boolean;
BEGIN
devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'T1');
sys.dbms_backup_restore.restoreSetDatafile;
sys.dbms_backup_restore.restorecontrolfileto

(cfname=>'/home/oracle/oracle/oradata/dagl/control01.ctl');
sys.dbms_backup_restore.restorecontrolfileto

(cfname=>'/home/oracle/oracle/oradata/dagl/control02.ctl');
sys.dbms_backup_restore.restorecontrolfileto

(cfname=>'/home/oracle/oracle/oradata/dagl/control03.ctl');
sys.dbms_backup_restore.restoredatafileto

(dfnumber=>01,toname=>'/home/oracle/oracle/oradata/dagl/system01.dbf');
sys.dbms_backup_restore.restoredatafileto

(dfnumber=>02,toname=>'/home/oracle/oracle/oradata/dagl/undotbs01.dbf');
sys.dbms_backup_restore.restoredatafileto

(dfnumber=>03,toname=>'/home/oracle/oracle/oradata/dagl/sysaux01.dbf');
sys.dbms_backup_restore.restoredatafileto

(dfnumber=>04,toname=>'/home/oracle/oracle/oradata/dagl/user01.dbf');
sys.dbms_backup_restore.restoredatafileto

(dfnumber=>05,toname=>'/home/oracle/oracle/oradata/dagl/example01.dbf');
sys.dbms_backup_restore.restoredatafileto

(dfnumber=>06,toname=>'/home/oracle/oracle/oradata/dagl/dagl');
sys.dbms_backup_restore.restoredatafileto

(dfnumber=>07,toname=>'/home/oracle/oracle/oradata/dagl/rman01.dbf');
sys.dbms_backup_restore.restoreBackupPiece

(done=>done,handle=>'/home/oracle/oracle/oradata/dagl/B7K3BN2E_1_1',

params=>null);
sys.dbms_backup_restore.deviceDeallocate;
END;
/

上面的路径和文件名根据不同数据库,作相应修改
经过这些步骤,就能看到,数据文件已经恢复到相应目录了
我在这个时候,准备open数据库
alter database open;
错误就在这里出现了………………
提示system表空间需要restore ◎◎
去RMAN下,rman target sys/sys@dagl as sysdba
执行,restore database;
执行过程中,发现还在寻找windows路径下的备份文件……
而找了半天资料,也没找到怎么去改这个信息……
后来发现,control文件中可能会包含备份文件信息
(因为朋友的RMAN没有catalog,所以RMAN会自动用control文件替代catalog)
另外,出现system需要restore提示,可能是control文件中的SCN和数据文件不一致
所以,就猜想,这三个控制文件,可能不是生成备份文件时候的
而且RMAN备份的时候,可以选择包含控制文件
另外,在恢复了数据文件后,可能还需要到RMAN下set newname
set newname for datafile 1 to '/home/oracle/oracle/oradata/dagl/system01.dbf';
之后,switch datafile 1;
但目前无法试验正确与否

看来试验只能先暂时到此……
回头告诉朋友一声,让他按照我这个步骤走走
看能不能在他的两台同系统下,完成恢复吧

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/556359/viewspace-526727/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-01-02

  • 博文量
    134
  • 访问量
    118556