手机
当前位置:查字典教程网 >编程开发 >Oracle教程 >oracle报错(ORA-00600)问题处理
oracle报错(ORA-00600)问题处理
摘要:告警日志里这两天一直显示这个错误:ORA-00600:internalerrorcode,arguments:[kcblasm_1],[10...

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

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');

执行报错:

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

解决办法:

altersessionset"_hash_join_enabled"=false;

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

altersessionset"_gby_hash_aggregation_enabled"=false

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

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

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

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

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

【oracle报错(ORA-00600)问题处理】相关文章:

oracle常用sql查询语句部分集合(图文)

Oracle 用户权限管理方法

oracle更新xml节点问题的一些细节

oracle安装出现乱码等相关问题

Oracle用户、权限、角色管理

Oralce数据导入出现(SYSTEM.PROC_AUDIT)问题处理方法

Oracle分页查询排序数据重复问题

oracle12c安装报错:PRVF-0002的解决方法

oracle 数据泵导入导出介绍

oracle 分页问题解决方案

精品推荐
分类导航