轉:正確使用rman crosscheck

lenx2000發表於2010-01-04

crosscheck archivelog all

用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;的作用就是檢查控制檔案和實際物理檔案的差別。
delete expired archivelog all;就是同步控制檔案的資訊和實際物理檔案的資訊。
如果單獨執行crosscheck而沒有執行delete那麼備份還是失敗的,原因是那些控制檔案的資訊和實際的資訊還是不同。
 

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一例項
我的一個Unix下 oracle資料庫在遷移當中一個歸檔檔案丟失了,rman備份歸檔日誌時提示 某個歸檔日誌找不到,
請問如何在不停止oracle資料庫情況下 截斷歸檔日誌,重新開始新的歸檔!

crosscheck archivelog all
delete archivelog all;

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

相關文章