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

 更新时间:2014年08月15日 09:16:22   投稿:hebedich  
最近在做一个项目,使用的是Oracle数据库,近两天不知道怎么回事,告警日志里总是显示这个错误(ORA-00600:internalerrorcode,arguments:[kcblasm_1],[103],[],[],[],[],[],[])度娘了一下,终于找到解决方式,分享给大家

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

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

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

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

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

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

相关文章

  • 安装oracle11g INS-30131执行安装程序验证所需的初始设置失败的解决方法

    安装oracle11g INS-30131执行安装程序验证所需的初始设置失败的解决方法

    这篇文章主要为大家详细介绍了安装oracle11g INS-30131执行安装程序验证所需的初始设置失败的解决方法,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • Oracle 的入门心得 强烈推荐

    Oracle 的入门心得 强烈推荐

    oracle的体系太庞大了,对于初学者来说,难免会有些无从下手的感觉,什么都想学,结果什么都学不好,所以把学习经验共享一下,希望让刚刚入门的人对oracle有一个总体的认识,少走一些弯路。
    2009-05-05
  • Linux 7下脚本安装配置oracle 11g r2教程

    Linux 7下脚本安装配置oracle 11g r2教程

    这篇文章主要为大家详细介绍了Linux 7下脚本安装配置oracle 11g r2教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Oracle查询今天、昨天、本周、上周、本月、上月数据方式

    Oracle查询今天、昨天、本周、上周、本月、上月数据方式

    这篇文章主要介绍了Oracle查询今天、昨天、本周、上周、本月、上月数据方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • C#连接ORACLE出现乱码问题的解决方法

    C#连接ORACLE出现乱码问题的解决方法

    最近接触c#的一个项目,连接SqlServer数据库倒也是很好用,但是遇到oracle数据库就出现乱码了,于是搜索好多资料,具体解决方法如下
    2021-10-10
  • oracle表空间的创建及dmp 文件的导入(推荐)

    oracle表空间的创建及dmp 文件的导入(推荐)

    这篇文章主要介绍了oracle表空间的创建及dmp 文件的导入,需非常不错,具有参考借鉴价值,要的朋友可以参考下
    2017-08-08
  • oracle中文乱码的解决方法

    oracle中文乱码的解决方法

    这篇文章主要介绍了oracle中文乱码的解决方法,服务器系统是linux,支持中文显示,数据库字符集是zhs16gbk,往数据库里建表,插入中文数据,sqlplus 连接到数据库,中文显示乱码,需要的朋友可以参考下
    2014-03-03
  • oracle索引的测试实例代码

    oracle索引的测试实例代码

    这篇文章主要给大家介绍了关于oracle索引测试的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • ORACLE中常用的几种正则表达式小结

    ORACLE中常用的几种正则表达式小结

    相信大家对正则表达式都不陌生,从linux下的命令到Java等编程语言,正则表达式无处不在,下面这篇文章主要给大家介绍了关于ORACLE中常用的几种正则表达式的相关资料,需要的朋友可以参考下
    2022-09-09
  • Oracle 查询存储过程做横向报表的方法

    Oracle 查询存储过程做横向报表的方法

    Oracle 查询存储过程做横向报表的方法,需要的朋友可以参考一下
    2013-03-03

最新评论