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

2017-01-12 10:06:46来源:作者:OracleBlog人点击

第七城市

在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中看到相关修复的提示:

HealingCorruptDLCITLobjd:%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)

======== END ========

如果觉得文章好,欢迎打赏:

第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台