ORA00600 [kcbz_check_objd_typ_3]错误一例

5月26日凌晨某客户实例警告日志中出现”ORA-00600: internal error code, arguments: [kcbz_check_objd_typ_3], [0], [0], [1], [], [], [], []“,经过分析发现与之前CR实例发生的600错误情况症状相同。 从跟踪文件m1_m0001_4209.trc中可以看到当时的执行的SQL语句,如附件。 PL/SQL的调用堆栈为: ----- PL/SQL Call Stack ----- object      line  object handle    number  name 3f3e89300        10  package body SYS.PRVT_HDM 3f5e9d3d8        16  SYS.WRI$_ADV_HDM_T 3f3f90898      1535  package body SYS.PRVT_ADVISOR 3f3f90898      1618  package body SYS.PRVT_ADVISOR 3f3e89300       106  package body SYS.PRVT_HDM 3eb69a3f8         1  anonymous block 函数调用堆栈为: kgerinv kgeasnmierr kcbassertbd3 kcbz_check_objd_typ kcbzib kcbgtcr ktrget kdsgrp kdsfbr qertbFetchByRowid rwsfcd……. 以上信息与metalink Bug 4430244 中的描述完全一致,原因为Segment advisor的代码错误的将已被drop的对象数据块加载到缓存区中,导致后续的操作出现错误。 通过之前的调查已明确当前系统中已应用过Bug 4430244的补丁,认为可能是ORACLE没有解决但存在的未知BUG,或者是以前 提供的4430244补丁存在缺陷,原因如下: 1. 已确定目前所应用的小补丁没有冲突,即各小补丁所实现的功 能不受影响; 2. 当前数据库系统已经使用了与本次错误信息完全符合的bug 4430244的小补丁; 3. 当相关的小补丁都应用之后,在metalink上仍有客户提交完全相同的错误(详见bug 7032704和bug 6818725)。 4. 本次错误相关的数据块与以前(2008年7月)出现的不一致,因此不是物理存储上的损坏。 5. 本次错误与Bug 6388743 “ORA-00600 [KCBZ_CHECK_OBJD_TYP_3],[0],[0],[1],[],[],[],[] OCCURRED”中的描述完全一致,ORACLE猜测是但没有确定是BUG 4430244, 只是建议使用4430244的小补丁或10.2.0.4的补丁包, 最后此bug以客户应用10.2.0.4补丁包而被视 为结束。真实原因不明。 Metalink在之前该实例出现错误的SR提出以下解决方法: 1. 在RAC的所有实例中冲 刷buffer_cache 使用命令刷数据缓存区后,会使缓存区的数据块都标记为free,即以前缓存的数据都被移出内存。影响主要是在一段时间内使物理读增加,因 此建议在业务空闲时段操作,避免在刷缓存的同时有高负载应用在申请缓存空间。该方法可临时防止相关错误抛出。 2. 停用Segment advisor job 该job相关功能是进行 对象段(如表,索引等)的存储空间状态收集,识别 是否适合根据其可用空间大小进行收缩,并提供建议,例如是否存在较大的浪费空间,表的高水位线是否太高,是否需要进行表的回缩等。如 不需要或不关心对象段的存储空间状态,可不做相关操作。该方法可以长远解决问题的发生。 3. 升级数据库版本至10.2.0.4 author: maclean permanent link:http://www.youyus.com/2010/05/31/ora-00600-kcbz_check_objd_typ_3%E9%94%99%E8%AF%AF%E4%B8%80%E4%BE%8B/ date:2010-05-31 All rights reserved.
原文地址:https://www.cnblogs.com/macleanoracle/p/2967416.html