ITPub博客

首页 > 数据库 > Oracle > ORA-07445: exception encountered: core dump [qkaqkn()+5390] [SIGSEGV]

ORA-07445: exception encountered: core dump [qkaqkn()+5390] [SIGSEGV]

原创 Oracle 作者:parknkjun 时间:2014-10-29 22:10:22 0 删除 编辑
昨天给某客户做巡检,检查alert警告日志文件发现ORA-07445: exception encountered: core dump [qkaqkn()+5390] [SIGSEGV] [Address not mapped to object]错误,客户环境是两节点RAC,数据库版本是10.2.0.5.0,两节点的alert警告日志文件中都报这个错误,打开对应的trace文件,错误如下:
ksedmp: internal or fatal error
ORA-07445: exception encountered: core dump [qkaqkn()+5390] [SIGSEGV] [Address not mapped to object] [0x000000020] [] []
Current SQL statement for this session:
SELECT LL.WORK_DATE,
       LL.WORK_SHIFT,
       LL.PDLINE_NAME,
       LL.TARGET,
       LL.FAIL,
       LL.RATE,
       LL.DARATE,
       NVL(GZL.RUN_TIME,0) RUN_TIME,
       NVL(GZL.DOWN_TIME,0) DOWN_TIME,
       NVL(GZL.DOWN_RATE,0) DOWN_RATE,
       /*PLL.PICKUP_QTY,
       PLL.MISS_QTY,
       PLL.M_RATE,*/
       NVL(HX.HX_TIME,0) HX_TIME,
       NVL(HX.HX_COUNT,0) HX_COUNT,
       NVL(HX.HX_AVG_TIME,0) HX_AVG_TIME,
       NVL(PVT.PVT_TIME,0) PVT_TIME,
       NVL(PVT.PVT_COUNT,0) PVT_COUNT,
       NVL(PVT.PVT_AVG_TIME,0) PVT_AVG_TIME,
       NVL(DVT.DVT_TIME,0) DVT_TIME,
       NVL(DVT.DVT_COUNT,0) DVT_COUNT,
       NVL(DVT.DVT_AVG_TIME,0) DVT_AVG_TIME/*,
       RE.RE*/
  FROM (
           SELECT WORK_DATE,
                SHIFT WORK_SHIFT,
                LINE PDLINE_NAME,
                SUM(RLH.TARGET_QTY) AS TARGET,
                SUM(RLH.FAIL_QTY) AS FAIL,
                (CASE SUM(RLH.ACTUAL_QTY + RLH.FAIL_QTY)
                  WHEN (0) THEN
                   0
                  ELSE
                   ROUND(100 * SUM(RLH.ACTUAL_QTY) /
                         SUM(RLH.ACTUAL_QTY + RLH.FAIL_QTY),
                         2)
                END) AS RATE,
                SUM(RLH.ACTUAL_QTY + RLH.FAIL_QTY) AS OUTPUT_QTY,
                (CASE SUM(RLH.TARGET_QTY)
                  WHEN (0) THEN
                   0
                  ELSE
                   ROUND(100 * SUM(RLH.ACTUAL_QTY) / SUM(RLH.TARGET_QTY), 1)
                END) AS DARATE
          FROM jzhtable@jzhdb RLH

正是上面的语句引起的错误,查看mos发现了一篇文章:
Query Via DBLINK Fails With Ora-07445: Exception Encountered: Core Dump [Qkaqkn()+4744] [Sigsegv] (文档 ID 1130973.1)
APPLIES TO:
Oracle Database - Enterprise Edition - Version 11.2.0.1.0 and later
Information in this document applies to any platform.
CAUSE:
The problem seems to be related to unpublished Bug 9061785 where there is a crash in qka for a query block containing either union all or outer joined views, and some references to remote tables.
The bug incorrectly pushes join predicates into a view resulting in ORA-7445.
SOLUTION
Either:
Apply 11.2.0.2 or above where the problem is fixed
or:
Check Patch 9061785 for the availability of one-off fixes on your version and platform
or:
Workaround the problem by disabling Join Predicate Push Down (JPPD) by setting "_push_join_predicate" = false and/or "_push_join_union_view" = false.
This will stop the optimizer from attempting to push join predicates into a view.
REFERENCES
BUG:9597175 - ORA-7445 [QKAQKN] ON QUERY OVER DBLINK TO 10.2.0.4
根据mos文章描述此错误是由于远程通过dblink对表查询导致,见标红字体,这是一个未公开的bug,在10.2.0.4时就已经出现了,直到11.2.0.2才被修复。
解决方法是
1.将数据库版本升至11.2.0.2
2.打相关补丁
3.将_push_join_predicate和_push_join_union_view两个隐含参数,但是很可能改变sql的执行计划
这两个隐含参数翻译大概意思是推进谓词和视图连接,下面来看看这两个隐含参数的定义:
SQL> select ksppdesc from x$ksppi where ksppinm='_push_join_predicate';
KSPPDESC
--------------------------------------------------------------------------------
enable pushing join predicate inside a view

SQL> select ksppdesc from x$ksppi where ksppinm='_push_join_union_view';
KSPPDESC
--------------------------------------------------------------------------------
enable pushing join predicate inside a union all view
根据定义描述为启用推进谓词至view 连接或者union all view连接,如果将这两个隐含参数设置为false,很可能改变sql的执行计划,因此,还是应该找时间将相关补本打上来解决这个问题。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10271187/viewspace-1313894/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
DBA攻城狮

注册时间:2008-02-11

  • 博文量
    115
  • 访问量
    518958