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

昨天没有看什么具体的知识点

而是去试验了一下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 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;

但目前无法试验正确与否

看来试验只能先暂时到此……

回头告诉朋友一声,让他按照我这个步骤走走

看能不能在他的两台同系统下,完成恢复吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值