在進行rman備份的時候報ORA-19625 ORA-27037 這個錯誤,原因就是在os上直接刪除了歸檔日誌,而控制文件中還是有這些歸檔的信息
此時需要同步二者的狀態
crosscheck archivelog all
1. 進入rman
2. connect target /
3. crosscheck archivelog all;
4. delete expired archivelog all;
===========================
這2條命令做什麼事情,原理是什麼。下面說明一下:
在controlfile中記錄着每一個archivelog的相關信息,當我們在OS下把這些物理文件delete掉或異常變動後,在controlfile中仍然記錄着這些archivelog的信息,當我們手工清除archive目錄下的文件後,這些記錄並沒有被我們從controlfile中清除掉,也就是oracle並不知道這些文件已經不存在了!這時候我們要做手工的清除。
delete expired archivelog all;就是同步控制文件的信息和實際物理文件的信息。
crosscheck backupset
是並沒有物理存在於備份介質上)
2 crosscheck 的目的是檢查RMAN 的目錄以及物理文件,如果物理文件不存在於介質上,將標記爲Expired。如果物理文件
存在,將維持Available。如果原先標記爲Expired的備份集再次存在於備份介質上(如恢復了損壞的磁盤驅動器後),
crosscheck將把狀態重新從Expired標記回Available。
3 crosscheck 輸出分兩部分。第一部分列出確定存在於備份介質上的所有備份集片,第二部分列出不存在於備份介質上的
備份集片,並將其標記爲Expired。當設置備份保存策略後,一個備份過期,crosscheck之後標記爲丟棄的備份狀態依舊爲
availabel,要刪除丟棄備份delete obsolete