[zt] crosscheck archivelog all

tolywang發表於2010-09-28


用RMAN的備份中(Veritas等備份軟體由於歸檔日誌的異常導致歸檔日誌備份失敗)是經常碰到的,解決方法也是非常解單,就是執行2條RMAN的命令:

1. 進入rman  
2. connect target   /
3. crosscheck archivelog all;
4. delete expired archivelog all;

===========================

這2條命令做什麼事情,原理是什麼。下面說明一下:
在controlfile中記錄著每一個archivelog的相關資訊,當我們在OS下把這些物理檔案
delete掉或異常變動後,在controlfile中仍然記錄著這些archivelog的資訊,當我們
手工清除archive目錄下的檔案後,這些記錄並沒有被我們從controlfile中清除掉,也
就是oracle並不知道這些檔案已經不存在了!   這時候我們要做手工的清除。

crosscheck archivelog all;的作用就是檢查控制檔案和實際物理檔案的差別, 如果一些已經刪除或丟失,那麼設定它們為expired 。 
delete expired archivelog all;就是同步控制檔案的資訊和實際物理檔案的資訊。

 

RMAN> crosscheck archivelog all; // validate all archvelogs in your disk. If some are missing, it will treat it as expired.
RMAN> delete expired archivelog all; // it ill delete expired archivelog and updates your controlfile.

 

crosscheck backupset
crosscheck backupset 是檢查備份集和實際的檔案
1     備份集有兩種狀態A(Available,RMAN認為該項存在於備份介質上)X(Expired,備份存在於控制檔案或恢復目錄中,但是並沒有物理存在於備份介質上)


2     crosscheck 的目的是檢查RMAN 的目錄以及物理檔案,如果物理檔案不存在於介質上,將標記為Expired。如果物理檔案存在,將維持Available。如果原先標記為Expired的備份集再次存在於備份介質上(如恢復了損壞的磁碟驅動器後),crosscheck將把狀態重新從Expired標記回Available。


3     crosscheck 輸出分兩部分。第一部分列出確定存在於備份介質上的所有備份集片,第二部分列出不存在於備份介質上的備份集片,並將其標記為Expired。當設定備份儲存策略後,一個備份過期,crosscheck之後標記為丟棄的備份狀態依舊為availabel,要刪除丟棄備份delete obsolete 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-674979/,如需轉載,請註明出處,否則將追究法律責任。

相關文章