ORA-00600: 内部错误代码, 参数: [32695], [hash aggregation can't be done]

<p>今天查看周报过程时 发现了它:</p>
<p>ORA-00600: 内部错误代码, 参数: [32695], [hash aggregation can't be done], [], [], [], [], [], []</p>
<p>其过程</p>
<p>P_PROD_WEEK_I_NEWANDLOST_USER 新增用户和流失分析。</p>
<p>以前它用很大的TEMP,32G才满足它的需求。 </p>
<p>ORACLE 版本: 10.2.03</p>

<p>Google:</p>
<p>http://space6212.itpub.net/post/12157/399059</p>

<p>It say:</p>
<p> <span style="font-size: x-small;">oracle的优化器使用了hash group by来进行数据分组。<br>

hash group by是10gR2新引入的一个优化方式,它使group by时使用hash的方式进行分组,避免了排序操作。<br>

在执行这个sql前我考虑到用大量用到temp表空间,而TEMP_CITI表非常大,因此我分配了足够大的临时表空间(至少是2倍TEMP_CITI表的大小),本以为不会出错,结果还是出错了。<br>

上metalink查看一下,发现这是一个bug:<br>

Applies to:<br>

Oracle Server - Enterprise Edition - Version: 10.2.0.1 to 10.2.0.2<br>

This problem can occur on any platform.<br>

Symptoms<br>

1). The following errors are encountered:<br><br>

ORA-00600: internal error code, arguments: [32695], [hash aggregation can't be done]<br>

ORA-1652 on TEMP tablespace<br><br>

2). The error is occurring on a SELECT statement with a GROUP BY clause.<br>

3). The call stack may resemble:<br><br>

ksfdmp kgeriv kgesiv ksesic1 qeshPartitionBuildHD qeshGBYOpenScan2
qeshGBYOpenScan qerghFetch qertqoFetch qerpxSlaveFetch qerpxFetch
insdlexe insExecStmtExecIniEngine insexe<br><br>

Cause<br>

The problem
here is not the hash join, but the group by hash. Hash aggregation is
new to 10.2. The GROUP BY hash clause can cause the statement to
consume temporary tablespace resources and eventually fail with the
error ORA-00600: internal error code, arguments: [32695], [hash
aggregation can't be done].<br><br>

安全吻合metalink的描述。metalink上也给出了两种解决方法:<br><br>

1). set _gby_hash_aggregation_enabled = false e.g.:<br><br>

alter system set "_gby_hash_aggregation_enabled"=false;<br>

alter session set "_gby_hash_aggregation_enabled"=false;<br><br>

2). Disable the use of hash group by changing the parameter "optimizer_features_enable":<br><br>

set optimizer_features_enable to "10.1.0"</span>

</p>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值