IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    关于物理Dataguard切换导致索引坏块的问题

    小荷发表于 2017-01-10 06:49:41
    love 0

    在11.2.0.2之后,有一个非常重要的dataguard的patch。在使用物理dataguard环境(包括ADG),进行switchover之后,存在导致index block上的invalid SCNs的坏块问题。

    国内已经好几个行业的大客户,都遇到了这个问题。

    在index block中的失效的ITL commit SCN,会违反scn依赖性检查,从而可能抛出如下报错:

    ORA-1555
    ORA-600 [2663]
    ORA-600 [kdsgrp1]
    ORA-600 [ktbdchk1: bad dscn]

    注:此bug只是影响index block,不影响data block,所以不会造成数据丢失。可以通过重建索引修复。

    但是如果你的索引很大,那么修复可能需要一段时间。

    解决方法也历经多个补丁,一开始是Patch 8895202,后来是Patch 13513004,现在是Patch 22241601。

    打了Patch 22241601这个补丁之后,不再需要手工设置_ktb_debug_flags=8,因为打完补丁自动设置了_ktb_debug_flags=8。在index block cleanout的时候,oracle会自动修复index block上的invalid SCNs的问题。同时,你可以在alertlog中看到相关修复的提示:

    Healing Corrupt DLC ITL objd:%d objn:%d tsn:%d rdba:<rdba> itl:%d
     option:%d xid:<xid> cmtscn:<scn> curscn:<scn>

    如果你目前的PSU只是打到11.2.0.4.8之后,11.2.0.4.161018之后,那么目前这个补丁只有linux X86和linux X86-64版本;如果你已经打PSU到11.2.0.4.161018了,那么目前基本全平台都有这个补丁。

    对于没有补丁的平台,建议通过设置隐含参数_ktb_debug_flags=8来解决。

    参考:
    ALERT Bug 22241601 ORA-600 [kdsgrp1] / ORA-1555 / ORA-600 [ktbdchk1: bad dscn] / ORA-600 [2663] due to Invalid Commit SCN in INDEX (Doc ID 1608167.1)



沪ICP备19023445号-2号
友情链接