在oracle备份数据库,Oracle在A机器上备份了数据库,到B机器上恢复时,怎么进行下去?...

最近几天自己写了个关于RMAN异机恢复的笔记希望对你有帮助

不对的地方还望指正

1,在源数据库做一次全备(包含控制文件,归档日志文件)

rman>run {

>allocate channel d1 type disk;

>allocate channel d2 type disk;

>backup full database format 'f:\orcl2data.bak'

>tag='full' include current controlfile;

>sql 'alter system archive log current';

>backup archivelog all format 'f:\orcl2log.bak' delete all input;

>release channel d2;

>release channel d1;

}

2, 在源数据库上创建pfile文件,并拷贝至目标机器上任何位置

sql>create pfile=f:\orcl2pfile.ora from spfile;

3,windowx在CMD窗口输入(linux可取消此步骤)

oradim -new -sid reportvi

set ORACLE_SIDD=reportvi

sqlplus / as sysdba

--使用保存的pfile文件启动到numount状态

sql>startup nomount pfile='xxxx'

sql>EXIT

--将刚才备份的f:\orcl2data.bak、f:\orcl2log.bak拷贝至目标机器上XXXXX路径

rman target/

--恢复控制文件

rman>restore controlfile from 'YYYY';

--恢复控制文件之后就可以加载恢复目录了

rman>catalog start with 'XXXXXX'

rman>list bakcup

--删除状态为expired 防止恢复数据文件的时候找到多个无效的备份

rman>delete expired backup

--再重新加载恢复目录

rman>catalog start with 'XXXXXX'

RMAN> run{

>allocate channel d1 type disk;

>set newname for datafile 1 to 'F:\report_data\reportvi\SYSTEM01.DBF';

>set newname for datafile 2 to 'f:\report_date\reportvi\UNDOTBS01.DBF';

>set newname for datafile 3 to 'f:\report_date\reportvi\SYSAUX01.DBF';

>set newname for datafile 4 to 'f:\report_date\reportvi\USERS01.DBF';

>restore database;

>switch datafile all;

>recover database;

>release channel d1;

}

这里的datafile 1,2,3,4对应的数据文件名称一定要和源库上的对应

比如datafile 1对应的system01 恢复的时候绝对不能恢复成sysaux01

run{

allocate channel d1 type disk;

set newname for datafile 1 to 'F:\report_data\reportvi\SYSTEM01.DBF';

set newname for datafile 2 to 'f:\report_date\reportvi\UNDOTBS01.DBF';

set newname for datafile 3 to 'f:\report_date\reportvi\SYSAUX01.DBF';

set newname for datafile 4 to 'f:\report_date\reportvi\USERS01.DBF';

restore database;

switch datafile all;

recover database;

release channel d1;

}

--在执行recover database的时候会报如下错误 是因为没有源数据库的redo文件导致

启动 recover 于 22-3月 -13

使用通道 ORA_DISK_1

正在开始介质的恢复

无法找到存档日志

存档日志线程 =1 序列=144

MAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: recover 命令 (在 03/22/2013 14:14:54 上) 失败

RMAN-06054: 介质恢复正请求未知的日志: 线程 1 seq 144 lowscn 3022894

如果要做到与源库的数据一致,就把源库关闭拷贝3个redo文件到目标数据库目录下

sql>alter databse open;

ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项

--刚刚做过恢复必须使用resetlogs 选项打开数据库

sql>alter database open resetlog;

alter database open resetlogs

*

第 1 行出现错误:

ORA-00344: 无法重新创建联机日志

'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDO01.LOG'

ORA-27040: 文件创建错误, 无法创建文件

OSD-04002: 无法打开文件

O/S-Error: (OS 3) 系统找不到指定的路径。

SQL> alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDO01.LOG' to 'F:\oracle\product\10.2.0\oradata\orcl2\redo01.log';

数据库已更改。

SQL> alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDO02.LOG' to 'F:\oracle\product\10.2.0\oradata\orcl2\redo02.log';

数据库已更改。

SQL> alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDO03.LOG' to 'F:\oracle\product\10.2.0\oradata\orcl2\redo03.log';

数据库已更改。

SQL> alter database open resetlogs;

数据库已更改。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值