ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 使用RMAN异地恢复数据库

使用RMAN异地恢复数据库

原创 Linux操作系统 作者:SGPM_OUT 时间:2013-09-25 10:40:15 0 删除 编辑
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_SID=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;
数据库已更改。
SQL> select instance_name,status from v$instance;
INSTANCE_NAME    STATUS
---------------- ------------
orcl2            OPEN







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

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2013-09-25

  • 博文量
    1
  • 访问量
    8981