【翻譯自mos文章】OGG add Supplemental Logging 時失敗,報錯為 塊損壞(Block Corruption),mossupplemental
OGG add Supplemental Logging 時失敗,報錯為 塊損壞(Block Corruption)
來源於:
Add Supplemental Logging Fails Due To Block Corruption (文檔 ID 1468322.1)
適用於:
Oracle Server - Enterprise Edition - Version 10.2.0.5 to 12cBETA1 [Release 10.2 to 12.1]
Information in this document applies to any platform.
癥狀:
在GoldenGate環境中,GoldenGate是基於 supplemental logging的。
突然你發現 supplemental logging 沒有設定,然後你嘗試開啟 supplemental logging,但是失敗了,報錯如下:
SQL> alter database add supplemental log data; ERROR at line 1: ORA-01578: ORACLE data block corrupted (file # 234, block #3760863) ORA-01110: data file 1257:'+CRMDB01/oradata/prdcrmdb/loy119.dbf'
變化:
控制檔案被重建過
原因:
當你重建控制檔案時,supplemental logging 被設定為預設值,即:none
嘗試手工enable supplemental logging 時,oracle會檢查有無active transaction,
oracle 會等待這些active transaction完成,同時,oracle也會檢查涉及到的objects
如果被active transaction涉及到的objects 有壞塊(corruption),那麼add supplemental logging 會失敗。
解決方案:
無論什麼時候,當你需要重新建立控制檔案時,你需要在控制檔案建立指令碼中加入下面一行:
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
當你手工add supplemental logging,並且 active transaction涉及到的objects有壞塊時,add supplemental logging 會報錯:ora-1578
你必須首先解決掉壞塊,然後再add the supplemental logging.
注意:從該篇mos文檔中,我體會到了該mos文章的潛在作用:
1.找到了一種檢查壞塊(block corrupt)的方法,雖然該方法有點歪門邪道。
該方法的使用情境有限:
A. 用OGG(做alter database add supplemental log data時) B. 有active transaction C. active transaction中涉及到的object 有損壞。 以上ABC三點必須同時滿足,才能檢查出壞塊(corruption)
2.在客戶現場實施OGG時,有可能會遇到此種情況,那麼有些人可能說:你看看,OGG把Oracle 資料庫弄出壞塊(block corrupt)來了。
此時,可以搬出本mos文章救駕---OGG不會讓Oracle 資料庫出現壞塊,相反:OGG的 alter database add supplemental log data會檢查 active transaction 涉及到的object有無壞塊。