SUMSEN

Oracle&Sql爱好者,用友NC管理员

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 

RMAN> backup current controlfile;

 

 

我是想在rman下备份controlfile,然后rman下restore,可是事实证明不行

 

 

 

 

1 我在RMAN中用 backup current controlfile format 'c:ctl.bak' 备份了控制文件,

  说明:format可将控制文件备份到指定位置,否则OMF到“E:\app\xs\flash_recovery_area\jsce\BACKUPSET\2013_01_27”
2 关闭库,然后把所有控制文件都删了,
3 Startup nomout库,
4 在RMAN中用 restore controlfile from 'c:ctl.bak' 恢复了空制文件,

然后就有问题了,

SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
 

RMAN> alter database open  RESETLOGS;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: alter db 命令 (在 01/27/2013 20:03:40 上) 失败
ORA-01152: 文件 1 没有从过旧的备份中还原
ORA-01110: 数据文件 1: 'E:\APP\XS\ORADATA\JSCE\SYSTEM01.DBF'

解决:

数据文件头部start scn比控制文件记录的数据库文件头部SCN要新,那么就要使用日志(包括归档日志+联机重做日志)前推控制文件的记录的数据库头部SCN与数据文件start scn一致,就能保证打开数据库。
因为是使用备份的控制文件恢复数据库,那么就必须alter database open resetlogs打开数据库


恢复如下步骤:
         a.restore controlfile from '/u01/app/oradata/ctl.ctl' from '/bak/xxxx.bak';
              b.alter database mount;
              c.recover database using backup controlfile until cancel;
                注意:这一步,因为备份的控制文件没有记录联机重做日志文件的scn,这里需要手动输入redo文件来取消恢复.

             这个时候就不是rman恢复了,只要在sql下,recover database using backup controfile until cancel,然后应用你的那些归档日志就可以了。
很简单。
              d .alter database open resetlogs;

SYS@jsce>recover database using backup controlfile until cancel;
ORA-00279: 更改 3328772 (在 01/27/2013 18:35:35 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:\APP\XS\FLASHBACK_RECOVERY_AREAARC0000000021_0804733320.0001
ORA-00280: 更改 3328772 (用于线程 1) 在序列 #21 中


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
E:\app\xs\oradata\jsce\REDO01.LOG
已应用的日志。
完成介质恢复。
SYS@jsce>alter database open resetlogs;

数据库已更改。

posted on 2013-01-27 21:48  sumsen  阅读(5129)  评论(0编辑  收藏  举报