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

所属分类: 数据库 / oracle 阅读数: 331
收藏 0 赞 0 分享

告警日志里这两天一直显示这个错误:

ORA-00600:internalerrorcode,arguments:[kcblasm_1],[103],[],[],[],[],[],[]
TueAug1209:20:17CST2014
Errorsinfile/u01/app/oracle/admin/orcl/udump/orcl_ora_29974.trc:
ORA-00600:internalerrorcode,arguments:[kcblasm_1],[103],[],[],[],[],[],[]
TueAug1209:30:17CST2014
Errorsinfile/u01/app/oracle/admin/orcl/udump/orcl_ora_30084.trc:
ORA-00600:internalerrorcode,arguments:[kcblasm_1],[103],[],[],[],[],[],[]
TueAug1209:40:17CST2014
Errorsinfile/u01/app/oracle/admin/orcl/udump/orcl_ora_29919.trc:
ORA-00600:internalerrorcode,arguments:[kcblasm_1],[103],[],[],[],[],[],[]

网上查的解决办法:

1:临时的解决方法
如果执行计划中是hashjoin造成的,在会话层中设置"_hash_join_enable"=false,如:altersessionset"_hash_join_enabled"=false亦可;

如果执行计划是hashgroupby造成的,设置"_gby_hash_aggregation_enabled"=false
2:根本的解决方法
2.1.优化sql语句,避免遇到bug;
2.2.升级
(1)将数据库升级psu到10.2.0.5.4和11.2可以修正该问题
(2)对于10.2.0.5.0到10.2.0.5.3的版本,打PATCH7612454来避免改错误(该补丁替换lib中的kcbl.o文件)。

通过临时解决办法解决问题示例:

追踪报警日志里提示的trace文件,找到导致出现此错误的sql语句

ORA-00600:internalerrorcode,arguments:[kcblasm_1],[103],[],[],[],[],[],[]
CurrentSQLstatementforthissession:

格式化后的sql语句如下:

SELECTINDENTDATE,
INDENTGROUP,
TRANSDATE,
TRANSBY,
TRANSGROUP,
FEEDBACKBY,
FEEDBACKGROUP,
FINANCEDATE,
FINANCEBY,
FINANCEGROUP,
TOTALCOST,
A.TOTALPAY,
PAY_CASH,
PAY_POINTS,
PAY_ADVANCE1,
PAY_ADVANCE2,
PAY_TYPE,
TRANS_PAY,
DISCOUNT_STAFF,
DISCOUNT_SPECIAL,
GAIN_CASH,
GAIN_POINTS,
GAIN_ADVANCE1,
GAIN_ADVANCE2,
TRANS_CUSTNAME,
TRANS_TEL,
TRANS_PROVINCE,
TRANS_CITY,
TRANS_ADDRESS,
TRANS_ZIPCODE,
TRANS_WEIGHT,
TRANS_COMMENTS,
INDENT_COMMENTS,
INDENT_ID,
A.PARTNER_GUID,
A.PROXY_GUID,
TRANS_TEL2,
CUST_MEDIA_ID,
CUST_PARTNER_GUID,
CUST_PROXY_GUID,
PARTNER_VALUE,
PROXY_VALUE,
CUST_PARTNER_VALUE,
CUST_PROXY_VALUE,
DEALBY,
A.FAILREASON,
ISFOOT,
S_REASONID,
DEALFAILREASON,
A.PRE_FUND,
MEDIA_CALLTYPE,
PRE_ADVANCE,
WEB_FLAG,
NEED_INVOICE,
INVOICE_TITLE,
TRANS_AREA,
ORDERTYPE,
PAY_POINTSPRICE,
A.MEDIA,
USERDEFINEDSTATUS,
CUSTOMERNAME,
CUSTOMERID
FROMELITE.TABCINDENTA
LEFTJOINELITE.OBJECTIVEB
ONA.RELATION_ID=B.OBJECTIVE_GUID
LEFTJOINELITE.CUSTOMERC
ONA.CUSTOMER_GUID=C.CUSTOMER_GUID
WHERE(INDENTDATEBETWEEN:1AND:2ORB.MODIFIEDDATEBETWEEN:3AND:4);

将变量:1,:2,:3,:4替换成具体的值执行:

SELECTINDENTDATE,
INDENTGROUP,
TRANSDATE,
TRANSBY,
TRANSGROUP,
FEEDBACKBY,
FEEDBACKGROUP,
FINANCEDATE,
FINANCEBY,
FINANCEGROUP,
TOTALCOST,
A.TOTALPAY,
PAY_CASH,
PAY_POINTS,
PAY_ADVANCE1,
PAY_ADVANCE2,
PAY_TYPE,
TRANS_PAY,
DISCOUNT_STAFF,
DISCOUNT_SPECIAL,
GAIN_CASH,
GAIN_POINTS,
GAIN_ADVANCE1,
GAIN_ADVANCE2,
TRANS_CUSTNAME,
TRANS_TEL,
TRANS_PROVINCE,
TRANS_CITY,
TRANS_ADDRESS,
TRANS_ZIPCODE,
TRANS_WEIGHT,
TRANS_COMMENTS,
INDENT_COMMENTS,
INDENT_ID,
A.PARTNER_GUID,
A.PROXY_GUID,
TRANS_TEL2,
CUST_MEDIA_ID,
CUST_PARTNER_GUID,
CUST_PROXY_GUID,
PARTNER_VALUE,
PROXY_VALUE,
CUST_PARTNER_VALUE,
CUST_PROXY_VALUE,
DEALBY,
A.FAILREASON,
ISFOOT,
S_REASONID,
DEALFAILREASON,
A.PRE_FUND,
MEDIA_CALLTYPE,
PRE_ADVANCE,
WEB_FLAG,
NEED_INVOICE,
INVOICE_TITLE,
TRANS_AREA,
ORDERTYPE,
PAY_POINTSPRICE,
A.MEDIA,
USERDEFINEDSTATUS,
CUSTOMERNAME,
CUSTOMERID
FROMELITE.TABCINDENTA
LEFTJOINELITE.OBJECTIVEB
ONA.RELATION_ID=B.OBJECTIVE_GUID
LEFTJOINELITE.CUSTOMERC
ONA.CUSTOMER_GUID=C.CUSTOMER_GUID
WHERE(INDENTDATEBETWEEN'2012-06-19'AND'2012-08-19'ORB.MODIFIEDDATEBETWEEN'2012-06-19'AND'2012-08-1');

执行报错:

解决办法:

altersessionset"_hash_join_enabled"=false;

altersessionset"_gby_hash_aggregation_enabled"=false

--先尝试一种,如果一种解决了,就没必要设置另外一种了。

然后再次执行上面的查询语句,不报错啦,嘎嘎

成功啦,(*^__^*)嘻嘻……

让开发人员在程序里加上这条命令即可。

更多精彩内容其他人还在看

VS2015连接Oracle数据库的详细步骤

这篇文章主要介绍了VS2015连接Oracle数据库的详细步骤,需要的朋友可以参考下
收藏 0 赞 0 分享

常用的Oracle doc命令(收藏)

这篇文章主要介绍了常用的Oracle doc命令(收藏)的相关资料,非常不错,具有参考借鉴价值,需要的朋友参考下吧
收藏 0 赞 0 分享

ORACLE SQL语句优化技术要点解析

这篇文章主要介绍了ORACLE SQL语句优化技术的相关内容,小编觉得挺不错的,在这里分享给大家,需要的朋友可以参考下。
收藏 0 赞 0 分享

ORACLE多条件统计查询的简单方法

这篇文章主要介绍了ORACLE多条件统计查询的简单方法,具有一定参考价值。这里给大家分享下,希望对大家有所帮助。
收藏 0 赞 0 分享

ORACLE批量导入图片到BLOB字段代码示例

这篇文章主要介绍了ORACLE批量导入图片到BLOB字段代码示例,此代码示例是文章作者的项目源码,具有一定参考价值,需要的朋友可以了解下。
收藏 0 赞 0 分享

PLSQL Developer登录的默认密码介绍

这篇文章主要介绍了PLSQL Developer登录的默认密码介绍,具有一定参考价值,需要的朋友可以了解下。
收藏 0 赞 0 分享

Oracle数据行拆分多行方法示例

oracle数据库使用过程中,怎样将一行或者多行数据分割成需要的多行数据,本文我们就来看看具体方法,需要的朋友可以参考。
收藏 0 赞 0 分享

Oracle表空间不足的两种解决办法

这篇文章主要介绍了Oracle表空间不足的两种解决办法,需要的朋友可以参考下
收藏 0 赞 0 分享

巧妙解决Oracle NClob读写问题(经验分享)

下面小编就为大家带来一篇巧妙解决Oracle NClob读写问题(经验分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

oracle执行update语句时卡住问题分析及解决办法

这篇文章主要介绍了oracle执行update语句时卡住问题分析及解决办法,涉及记录锁等相关知识,具有一定参考价值,需要的朋友可以了解。
收藏 0 赞 0 分享
查看更多