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

在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: itl:%d

option:%d xid: cmtscn: curscn:

1

2

HealingCorruptDLCITLobjd:%dobjn:%dtsn:%drdba:itl:%d

option:%dxid:cmtscn:curscn:

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

7e3135216a66fbaf59942b55eb3acd8e.png

对于没有补丁的平台,建议通过设置隐含参数_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)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值