【翻译自mos文章】OGG add Supplemental Logging 时失败,报错为 块损坏(Block Corruption)

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有无坏块。
  

你可能感兴趣的:(block,goldengate,corruption,ORA-01578,ora-1578)