zoukankan      html  css  js  c++  java
  • ORA00600:[32695], [hash aggregation can't be done] 解决方法

     

    一.问题描述

    数据库报错,看了一下alertlog,主要重复如下内容:

    Wed Jul 25 17:47:18 2012

    Errors in file /oracle/admin/etldb/udump/etldb_ora_15674.trc:

    ORA-07445: exception encountered: core dump [kghssgdmp()+273] [SIGFPE] [Integerdivide by zero] [0x40000000094555E1] [] []

    ORA-07445: exception encountered: core dump[kghssgdmp()+273] [SIGFPE] [Integer divide by zero] [0x40000000094555E1] [] []

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

    --数据库版本:

    SQL> select * from v$version;

    BANNER

    ----------------------------------------------------------------

    Oracle Database 10g Enterprise EditionRelease 10.2.0.4.0 - 64bi

    PL/SQL Release 10.2.0.4.0 - Production

    CORE   10.2.0.4.0      Production

    TNS for HPUX: Version 10.2.0.4.0 -Production

    NLSRTL Version 10.2.0.4.0 - Production

    --查看/oracle/admin/etldb/udump/etldb_ora_15674.trc文件:

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

    Current SQL statement for this session:

             INSERT /*+ APPEND */ INTO DMID.TMP_MD_PAR_CON_4_M7 NOLOGGING

                     (

                      )

             SELECT  

             FROM DMID.TMP_MD_PAR_CON_4_M8 T2

             GROUP BY T2.DEAL_DATE,T2.BILLCYCL_ID                                

                      ,T2.SCATT_ACCT                                  

                      ,T2.CONTRACT_NO                                

                     

    ----- PL/SQL Call Stack -----

     object      line  object

     handle    number  name

    c0000003ce3b5618      1062 procedure DMID.P_MD_PAR_CON_4_M

    c000000322524998         1 anonymous block

    ….

    二.说明:

    MOS 文档:

    ORA-600 [32695] [hash aggregation can't bedone] [ID 729447.1]

     

    2.1 Applies to:

    Oracle Server -Enterprise Edition - Version: 10.2.0.1 to 11.1.0.6 - Release: 10.2 to 11.1 Informationin this document applies to any platform.
    ***Checked for relevance on 17-Nov-2011***

    2.2 Symptoms

    When running astatement that involves a GROUP BY operation, the following error is raised:

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

     If we look in the trace file, underCall Stack Trace section, we see the functions:

    ... qeshPartitionBuildHD qeshGBYOpenScan2qeshGBYOpenScan qerghFetch qervwFetch ...

    and the query plan for the SQL statementshows a HASH GROUP BY, eg. :

    ------------------------------------------
    | Id |Operation                        |
    ------------------------------------------
    | 0 |INSERTSTATEMENT                  |
    | 1 | PXCOORDINATOR                    |
    | 2 | PXSEND QC(RANDOM)               |
    | 3 |HASH GROUPBY                     |
    ...

    A second case where this would occur couldbe with a failing query that has no GROUP BY, but has a Select Distinct. ThePlan table indicates a HASH UNIQUE instead of HASH GROUP BY. 

    2.3 Cause

    This is likely to be a case of unpublishedbug 6471770 - see eg. note:6471770.8- fixed in 10.2.0.5, 11.1.0.7, and 11.2
    ----导致ORA-600[32685] 可能是bug6471770,其在10.2.0.511.1.0.7 11.2 中已经修复。


    A similar problem is reported in:
    bug:5893340 ORA-600 [32695], [HASH AGGREGATION CAN'T BE DONE]
    - fixed in 10.2.0.4, 11.1.0.6

    --导致ORA-600[32685]也可能是bug:5893340,其在10.2.0.411.1.0.6中已经修复。

    2.4 Solution

    Solutions are as follows:

    在不升级DB的情况下,可以使用如下方法来解决:

    1) Disable HASH GROUP BY operations bysetting the parameter _gby_hash_aggregation_enabled to FALSE, ie.:

    SQL> alter session set"_gby_hash_aggregation_enabled" = false;

     or

    SQL> alter systemset "_gby_hash_aggregation_enabled" = falsescope=spfile; 

    A hard parse tothe statement needs to be performed, preferably to flush the Shared Pool aftersetting this workaround and then re-run the statement.

    --要使修改生效,需要执行一次硬解析,所以可以选择flush share pool,然后执行SQL

    "_gby_hash_aggregation_enabled" Oracle的隐含参数,我们可以使用all_parameters 视图来查询。

    SQL> select name,value fromall_parameters where name like '_gby_hash_aggregation_%';

    NAME                                VALUE

    --------------------------------------------------

    _gby_hash_aggregation_enabled       TRUE

    Oracleall_parameters 视图

    http://blog.csdn.net/tianlesoftware/article/details/6641281

    2) Disable HASH GROUP BY operations byusing the hint NO_USE_HASH_AGGREGATION:

    --使用hint 禁用Hashgroup by 操作:

    SQL> select /*+ NO_USE_HASH_AGGREGATION*/ ...

    Oracle Hint

    http://blog.csdn.net/tianlesoftware/article/details/5833020

    常见OracleHINT的用法

    http://blog.csdn.net/tianlesoftware/article/details/4969702

    3) Apply patch:6471770 if available forthe relevant platform/version

    --应用Patch

     

     

    For Windows, the patch is included in:
    10.2.0.3 patch 23 and later - see note:342443.1
    10.2.0.4 patch 5 and later - see note:342443.1

    Please note that the patch is crucial toresolve the Second Case of the Symptoms section above, the workarounds will notresolve the issue.

    If the error still reproduces followingthese steps, contact the Oracle Support. 

    -------------------------------------------------------------------------------------------------------

    版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!

    Skype:            tianlesoftware

    QQ:                 tianlesoftware@gmail.com

    Email:             tianlesoftware@gmail.com

    Blog:   http://www.tianlesoftware.com

    Weibo:            http://weibo.com/tianlesoftware

    Twitter: http://twitter.com/tianlesoftware

    Facebook: http://www.facebook.com/tianlesoftware

    Linkedin: http://cn.linkedin.com/in/tianlesoftware

    -------加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请----

    DBA1 群:62697716(满);   DBA2 群:62697977(满)  DBA3 群:62697850(满)  

    DBA 超级群:63306533(满);  DBA4 群:83829929   DBA5群: 142216823

    DBA6 群:158654907    DBA7 群:172855474   DBA总群:104207940

  • 相关阅读:
    批量导入
    循环语句
    判断循环常见
    常见C运算符
    oc将字符串中单词按照出现次数(次数都不一样)降序排序,排序之后单词只出现一次,源字符串中单词用下划线连接,生成字符串也用下滑线连接
    把字符串中的字母大小写反转OC
    查找子串出现次数OC
    现有一个数组NSMutableArray, 数组有若干个NSString的元素,进行选择法排序
    终端的一些命令
    编程语言名字来历
  • 原文地址:https://www.cnblogs.com/tianlesoftware/p/3609210.html
Copyright © 2011-2022 走看看