暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ORA-00600 [hash aggregation can't be done]

原创 章芋文 2013-04-15
647
BUG引起的ORA-00600错误
Thu Mar 28 03:46:54 2013
Errors in file /u01/admin/orcl/udump/orcl2_ora_10717.trc:
ORA-00600: internal error code, arguments: [32695], [hash aggregation can't be done], [], [], [], [], [], []
以ORA-00600 hash aggregation can't be done在MOS中查找相关信息,并确认trace中的相关信息,发现了该问题是由oracle bug(MOS ID: 729447.1),该BUG是由于SQL语句中的order by操作,优化器使用了hash group by来进行数据分组,触发了这个BUG,直接影响版本: 10.2.0.1 to 11.1.0.6。
相关trace文件如下:
*** 2013-03-28 03:46:54.461 ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [32695], [hash aggregation can't be done], [], [], [], [], [], []
Current SQL statement for this session:
SELECT H.FUND_ACCOUNT,H.BANK_NO,H.BKACCOUNT_KIND,H.MONEY_TYPE,H.BANK_ACCOUNT,H.HOLD_COMP_ID,H.SYS_TYPE,MAX(H.END_DT) FROM EDM_BASE.T02_BANKEXCHACCOUNT_CTS_HIS H GROUP BY H.FUND_ACCOUNT,H.BANK_NO,H.BKACCOUNT_KIND,H.MONEY_TYPE,H.BANK_ACCOUNT,H.HOLD_COMP_ID,H.SYS_TYPE)
Trace文件中的执行计划如下:
[img]http://www.orasql.com/bbs/download/file.php?id=60[/img]

MOS上给出的fix方案有3种,一是加隐含参数,二是SQL中加hint,最后是升级数据库,如下:
[img]http://www.orasql.com/bbs/download/file.php?id=61[/img]

就目前问题出现频率和一些综合因素考虑,建议在SQL中加/*+ NO_USE_HASH_AGGREGATION */ hint,让SQL不使用HASH GROUP BY。Hint如下:
SELECT /*+NO_USE_HASH_AGGREGATION*/ H.FUND_ACCOUNT,H.BANK_NO,H.BKACCOUNT_KIND,H.MONEY_TYPE,H.BANK_ACCOUNT,H.HOLD_COMP_ID,H.SYS_TYPE,MAX(H.END_DT) FROM EDM_BASE.T02_BANKEXCHACCOUNT_CTS_HIS H GROUP BY H.FUND_ACCOUNT,H.BANK_NO,H.BKACCOUNT_KIND,H.MONEY_TYPE,H.BANK_ACCOUNT,H.HOLD_COMP_ID,H.SYS_TYPE
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论