`

解决ORA-00600: internal error code, arguments: [kcblasm_1], [103](原创)

 
阅读更多

前阵子生产库上发生了一次ora-00600错误,这里简要记录分析下,如有错误,希望大家给以建议。

报错信息

ORA-00600: internal error code, arguments: [kcblasm_1], [103], [], [], [], [], [], []

查看告警日志有如下信息

Mon Aug 29 16:46:08 GMT+08:00 2011Errors in file /oracle10g/app/oracle/admin/zgscdb/bdump/
zgscdb2_j003_14024898.trc:
ORA-00600: internal error code, arguments: [kcblasm_1], [103], [], [], [], [], [], []

Mon Aug 29 16:47:16 GMT+08:00 2011Trace dumping is performing id=[cdmp_20110829164716]
Mon Aug 29 17:07:31 GMT+08:00 2011Thread 2 advanced to log sequence 4710 (LGWR switch)
  Current log# 16 seq# 4710 mem# 0: /dev/rlv_zs_redo2_8_1
  Current log# 16 seq# 4710 mem# 1: /dev/rlv_zs_redo2_8_2

查看 zgscdb2_j003_14024898.trc

When executing a statement using a SELECT getting:
ORA-00600: internal error code, arguments: [kcblasm_1], [103], [], [], [], [], [], []

The execution plan from the ORA-600 trace file is showing hash join is used.

Call Stack is including:

kcblasm1 kcblasm kxhfFndFreeSlot kxhfNewBuffer qerhjGetNewBuffer ksxb1bqb kxhrPack


INSERT INTO BB_KJ_B00 WITH KJ_JZRQ_TEMP AS (SELECT MIN(QC) QC,TO_DATE(:B2 , 'YYYY-MM-DD') QM, :B1 JG FROM KJ_JZRQ WHERE KJND = (SELE
CT KJND FROM KJ_JZRQ WHERE TO_DATE(:B2 , 'YYYY-MM-DD') BETWEEN QC AND QM) ) SELECT :B1 SJ_SWJG_DM,ZSXM_DM DM,SUM(SE) SE,SUM(ZYSE) ZY
SE,SUM(SSSE) SSSE,SUM(DSSE) DSSE,SUM(XQSE) XQSE,SUM(XZSE) XZSE,TO_DATE(:B2 , 'YYYY-MM-DD') BBQ,'SQL2' BZ FROM ( SELECT A.ZSXM_DM, SE
, A.ZYSE, A.SSSE, A.DSSE, A.XQSE, A.XZSE, RKRQ, D.SJ_SWJG_DM FROM V_KJ_SB_ZSXX_TIPS A, KJ_JZRQ_TEMP B, DM_ZSXM C, KJ_ZW_HSDW D WHERE
 A.SKSS_SWJG_DM = D.SS_SWJG_DM AND A.ZSXM_DM = C.ZSXM_DM AND D.SJ_SWJG_DM = B.JG AND RKRQ >= B.QC AND RKRQ < B.QM + 1 AND JKPZZL_DM
IN (SELECT PZZL_DM FROM DM_PZZL WHERE JKS_XYBZ = 'Y' OR WSZ_XYBZ = 'Y') UNION ALL SELECT A.ZSXM_DM, -SE, -A.ZYSE, -A.SSSE, -A.DSSE,
-A.XQSE, -A.XZSE, THRQ, D.SJ_SWJG_DM FROM V_KJ_SB_TTXX_TIPS A, KJ_JZRQ_TEMP B, DM_ZSXM C, KJ_ZW_HSDW D, DM_YSFPBL L WHERE A.SKSS_SWJ
G_DM = D.SS_SWJG_DM AND D.SJ_SWJG_DM = B.JG AND A.YSFPBL_DM = L.YSFPBL_DM AND A.ZSXM_DM = C.ZSXM_DM AND THRQ >= B.QC AND THRQ < B.QM
 + 1 ) GROUP BY ZSXM_DM

如上极其BT的insert select造成了这个错误,数据库版本是10.2.0.5

在10.2.0.5版本中,所有平台环境下补丁程序P7612454,该补丁是解决hash
join时候,Direct IO最大限制4096,我们从执行计划中可以看出,hash join的build
table表的cardinality非常大,这个是造成该问题的罪魁祸首。解决方案如下:
1、11.2版本解决了上述问题
2、升级补丁P7612454,该补丁替换lib中的kcbl.o文件
3、如果执行计划中是hash join造成的,在会话层中设置"_hash_join_enable"
=false,如果执行计划是hash group by 造成的,设置"_gby_hash_aggregation_
enable"=false,在
相应的SQL前加execute immediate 'alter session set "_hash_join_enabled" = false'亦可;

4、修改SQL语句,尽量减少build table的cardinality的值,可以避免该问题的生成

METALINK上的相应资料

Applies to:
Oracle Server - Enterprise Edition - Version: 10.2.0.5.0 and later   [Release: 10.2 and later ]
Information in this document applies to any platform.


Symptoms
When executing a statement using a SELECT getting:
ORA-00600: internal error code, arguments: [kcblasm_1], [103], [], [], [], [], [], []
The execution plan from the ORA-600 trace file is showing hash join is used.
Call Stack is including:
kcblasm1 kcblasm kxhfFndFreeSlot kxhfNewBuffer qerhjGetNewBuffer ksxb1bqb kxhrPack
Cause
The issue was investigated in:
Bug 9800302 - 10.2.0.5 GETTING ORA-00600 [KCBLASM_1]
closed as duplicate of:Bug 7612454 - Abstract: DSS:PERF REGRESSIONS IN SERIAL DIRECT READS fixed in 11.2.
As per development team the number of slots available for direct I/Os (limited to 4096) forced the hash-join algorithm to operate on fewer number of slots and resulted in more spills to disk. This caused:
    direct path IO to perform worse in 10.2.0.5 than earlier releases with more "direct path read" operations or
    ORA-600 [kcblasm_1] errors.

Solution
1. Upgrade the database to 11.2.
OR
2. Apply &incFamilyProds=false&flag=search))" target=_blank>Patch 7612454 available on MOS. If a patch is not currently available on top of your database version and/or platform please raise a Service Request to request for it.
Please be sure that your database version qualifies for getting a new patch as per Note 209768.1 and Note 742060.1.
OR
3. Use the workaround of setting:
"_hash_join_enabled"= false


References
BUG:9781592 - ORA-600 [KCBLASM_1] [103] DURING HASH JOIN QUERY USE ON DATABASE IN DWH
BUG:9800302 - 10.2.0.5 GETTING ORA-00600 [KCBLASM_1]
BUG:9804132 - INSERT FAILS WITH ORA-600 [KCBLASM_1], [103]
NOTE:209768.1 - Database, FMW, EM Grid Control, and OCS Software Error Correction Support Policy
NOTE:742060.1 - Release Schedule of Current Database Releases
NOTE:7612454.8 - Bug 7612454 - More "direct path read" operations / OERI:kcblasm_1


参考至:http://blog.sina.com.cn/s/blog_70b55b1a0100t3l3.html

           http://blog.chinaunix.net/space.php?uid=20656672&do=blog&id=1744626

           http://www.eygle.com/archives/2010/11/ora-600_kcblasm_1.html

           http://space.itpub.net/16572356/viewspace-687014

           http://space.itpub.net/354732/viewspace-697070

本文原创,转载请注明出处、作者

如有错误,欢迎指正

邮箱:czmcj@163.com

0
0
分享到:
评论

相关推荐

    ORA-00600: internal error code, arguments [4194]错误

    NULL 博文链接:https://gembler.iteye.com/blog/346242

    p8922013_10204_Linux-x86-64.zipORA-00600: INTERNAL ERROR CODE, ARGUMENTS: [17059

    描述中提到的 "ORA-00600: INTERNAL ERROR CODE, ARGUMENTS: [17059], [0X93953434]" 是一个Oracle数据库内部错误代码,表示遇到了无法处理的系统级异常。ORA-00600错误通常涉及到数据库的内部一致性问题,这可能是...

    oracle报错(ORA-00600)问题处理

    Oracle数据库报错ORA-00600是一个内部错误,通常表示系统遇到了未预见的问题或已知的软件缺陷。这个错误通常与Oracle的内核代码有关,而不是用户的SQL操作。在描述中,我们看到错误与“kcblasm_1”和参数103相关联,...

    ORA-07445 [opiaba()+639] ORA-00600 17147 补丁包

    ORA-07445: exception encountered: core dump [opiaba()+639] [SIGSEGV] [ADDR:0x0] [PC:0x184CD17] ...ORA-00600: internal error code, arguments: [17147], [0x0641B8FE0], [], [], [], [], [], [], [], [], [], []

    断电与ORA-600问题集

    ORA-00600: internal error code, arguments: [4000], [6], [], [], [], [], [], [] ``` 2. **分析TRC文件:** 根据告警日志中的提示,进一步分析TRC文件,查找相关的块信息。例如: ``` Block header dump: 0x...

    监控Oracle数据库的常用shell脚本

    ORA-00600: internal error code, arguments: [kcrrrfswda.1], [], [], [], [], [] ORA-00600: internal error code, arguments: [1881], [25860496], [25857716], [] 五、crontab基本知识 crontab是一个 Unix ...

    一次简单的Oracle恢复Case实战记录

    在数据库打开后,新的错误开始出现,比如"ORA-00600: internal error code, arguments: [17147]",这表明还有其他数据块或系统组件可能已损坏。Oracle的600错误通常需要深入的诊断和分析,可能需要使用RMAN(恢复...

    ORACLE常见错误代码的分析与解决三

     ——————————————————————————– p align=”JUSTIFY”&gt;ORA-00600:internal error code,arguments:[num],[?],[?],[?],[?] 产生原因:这种错误通常为ORACLE的内部错误,只对OSS和ORACLE...

    ORACLE LINUX 11G RAC 单实例DATAGUARD.docx

    在重启源库的其中一个节点(11grac2)时,可能遇到错误"ORA-00600: internal error code, arguments: [spstp: ORACLE_HOME uid does"。这通常表示遇到内部错误,可能需要检查Oracle_HOME的设置或数据库服务的启动...

    ORACLE常见错误代码的分析与解决(三)

    **ORA-00600: internal error code, arguments: [num],[?],[?],[?],[?]** 这是一个非常通用的内部错误代码,表示Oracle数据库遇到了预期之外的低级别问题。这个错误通常是由于系统内部错误、硬件故障、数据损坏或是...

    Oracle创建新undo表空间最佳实践(包含段检查)

    当数据库崩溃并在alert.log中出现错误"ORA-00600: internal error code, arguments: [4194]"时,这通常意味着在Undo块中的最大Undo记录号与Redo块中的Undo记录号之间存在不一致。Oracle在向Undo块添加新记录之前会...

Global site tag (gtag.js) - Google Analytics