Oracle 11G 新特性 Automatic block repair

kewin發表於2012-03-27
Oracle 11G 新特性 Automatic block repair
Kevin Zou
2012-3-27
在Oracle 的世界中,corrupted block一般都是塊分裂。(不是快分裂,呵呵) 一般是塊頭和塊尾的TRAIL NUMBER不一致才導致的塊分裂,這樣的塊分裂是邏輯損壞。
在強大的11GR2 中,Oracle 可以自動去檢測CORRUPTED BLOCK而去修復。
在手工恢復的年代,如果遇到壞塊,那需要RMAN 恢復對應的ARCHIVED LOGS去恢復;或者應用flashback logs去恢復;或者如果壞塊所在的OBJECT是索引,那可以重新REBUILD ONLINE。那自動修復BLOCK是如何實現的?和常規的手工恢復是一樣的?
先看下NEW FEATURE中的描述:
Automatic block repair allows corrupt blocks on the primary database or physical standby database to be automatically repaired, as soon as they are detected, by
transferring good blocks from the other destination. In addition, RECOVER BLOCK is enhanced to restore blocks from a physical standby database. The physical standby database must be in real-time query mode. 
This feature reduces time when production data cannot be accessed, due to block corruption, by automatically repairing the corruptions as soon as they are detected in real-time using good blocks from a physical standby database. This reduces block recovery time by using up-to-date good blocks from a real-time, synchronized physical standby database as opposed to disk or tape backups or flashback logs.

主要有兩點: 
1) 這個自動修復是需要物理DG的配合才能完成的,而且要求DG建立在實時查詢模式;
2) 該特性由於直接從DG中找到對應的BLOCK來恢復,而直接跳過RESTORE 歸檔日誌或者FLASHBACK 日誌,當然更快/更強大;

對物理DG有些限制:
1) 物理DG必須執行在實時查詢模式,而該模式需要ACTIVE DATA GUARD Lience;
2) 物理DG 最好執行在實時應用模式;因為任何模式的DG保護模式都是支援自動塊修復,但是修復主庫中損壞塊的效率大大依賴DG中沒有損壞塊的版本。
    這段話說起來有點繞,還是舉個簡單的例子。

一個主庫中CORRUPT塊的SCN 為 1005,
而備庫中對應塊的SCN為1001,那ORACLE為修復該BLOCK,必須要讓備庫中的塊SCN到達1005才能REPAIR。如果備庫同步的時間越晚,那需要同步的時間就越多,修復的效率就越低。
反過來,如備庫的塊損壞,那ORACLE可以從主庫中把對應的塊拷貝過來,這需要在備庫中的引數要有效的設定:
FAL_SERVER ,主庫的NET SERICE NAME;
LOG_ARCHIVE_CONFIG

修復好後,會在庫中alert日誌寫上日誌;
這個自動修復,不會100%的成功,如果不能修復,那會報ORA-1578 的錯誤,
Error: ORA-1578  
Text: ORACLE data block corrupted (file # %s, block # %s)

那這時需要DBA的介入,或者REBUILD或者跳過壞塊匯入/匯出;

-THE END-

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

相關文章