rman之controlfile的備份還原和“過舊的備份”報錯


 

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;

數據庫已更改。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM