用rman備份資料庫加上plus archivelog 備份歸檔日志 報這個錯誤
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-03002: failure of backup plus archivelog command at 05/05/2014 01:00:04
RMAN-06059: expected archived log not found, loss of archived log compromises recoverability
ORA-19625: error identifying file /oracle/PRD/oraarch/PRDarch1_16336_840558852.dbf
ORA-27037: unable to obtain file status
IBM AIX RISC System/6000 Error: 2: No such file or directory
Additional information: 3
1.原因 :歸檔日志會用 rm 指令定期清除
2.原理(從網上查的資料) :
2.1在controlfile中記錄着每一個archivelog的相關資訊,當我們在OS下把這些實體檔案delete掉或異常變動後,在controlfile中仍然記錄着這些archivelog的資訊,當我們手工清除archive目錄下的檔案後,這些記錄并沒有被我們從controlfile中清除掉,也就是oracle并不知道這些檔案已經不存在了!這時候我們要做手工的清除。 crosscheck archivelog all;的作用就是檢查控制檔案和實際實體檔案的差别。
delete expired archivelog all;就是同步控制檔案的資訊和實際實體檔案的資訊。 如果單獨執行crosscheck而沒有執行delete那麼備份還是失敗的,原因是那些控制檔案的資訊和實際的資訊還是不同。 crosscheck backupset crosscheck backupset 是檢查備份集和實際的檔案 1 備份集有兩種狀态A(Available,RMAN認為該項存在于備份媒體上)X(Expired,備份存在于控制檔案或恢複目錄中,但
是并沒有實體存在于備份媒體上)
2.2 crosscheck 的目的是檢查RMAN 的目錄以及實體檔案,如果實體檔案不存在于媒體上,将标記為Expired。如果實體檔案
存在,将維持Available。如果原先标記為Expired的備份集再次存在于備份媒體上(如恢複了損壞的磁盤驅動器後),
crosscheck将把狀态重新從Expired标記回Available。
3.解決方法:在腳本中加入
RMAN> crosscheck archivelog all;
RMAN> delete expired archivelog all;
參考博文:http://blog.chinaunix.net/uid-27570589-id-4237145.html
本文轉自1321385590 51CTO部落格,原文連結:http://blog.51cto.com/linux10000/1903781,如需轉載請自行聯系原作者