我申请这个blog是为了督促自己,把自己平时的一些想法和思考结果保留下来。 本博客所有内容均为原创,如有转载请注明作者和出处

ORA-7445(qkabxo)错误

上一篇 / 下一篇  2008-04-09 23:53:29 / 个人分类:Bug

10203 for Linux X86-64上又碰到一个ORA-7445错误。

 

 

错误日志中的信息为:

Errors in file /data/oracle/admin/shandong/udump/shandong_ora_3202.trc:
-~/G.}[jYU0ORA-07445: exception encountered: core dump [qkabxo()+15] [SIGSEGV] [Address not mapped to object] [0x000000000] [] []

由于错误SQL比较复杂,将问题SQL尽量的简化,得到最终错误SQL如下:

SQL> EXPLAIN PLAN FOR
2I&w~#L1d*YY@0  2  SELECT /*+ FIRST_ROWS */ *
6s(U2K `y}K0  3  FROM
S dq+n*fU9n/}0  4  (ITPUB个人空间)R@op u0Q;XI
  5     SELECT ROWNUM ROW_NUM, A.*
x'~L5h |v0j"VN%U0  6     FROM
"lVp.cp0  7     (
EA D/KV%Z*~ mS0  8             SELECT
(W8V'x ^\0  9                     SALER.ORG_NAME SALER_NAME
n H"tdz(@6O-cLe0 10             FROM INF_SALER SALER ,ITPUB个人空间Sr#n"B2k4hL@
 11                     INF_ENTER_COMM_TEMP C,
RF*ErpK+^p-P0 12                     INF_PRODUCT P,
?#bb WH b5a;d Gp0 13                     INF_SALER FACTORY ,ITPUB个人空间'D0Qq6J$qCZ
 14                     INF_ENTER_COMM_PROPERTY COMMP  
^mn.Z-\7W/Q0 15             WHERE P.PRODUCT_ID=C.PRODUCT_ID
3Bo`Z!mO H*R:_IF0 16             AND P.FACTORY_ID=FACTORY.ORG_IDITPUB个人空间c gvKD'w
 17             AND C.SALER_ORGID=SALER.ORG_ID
3A~6w0Z B \,\+K K0 18             AND C.COMM_TEMP_ID=COMMP.COMM_ID ITPUB个人空间 NTV6q;P
 19             AND BID_SUBMIT='1'  
-F n1]4`F+_Fv*Z,[0 20             AND C.PLAT_ID=15 
l3k-GE5wF)}j0 21             AND C.ENABLE_FLAG = '1' 
'fiyd0|`0 22             AND C.ZB_TYPE='Y'ITPUB个人空间bz8H|kd;v
 23             AND SALER_ORGID='110090'   
fR)B e S%G*\0 24             ORDER BY CHECK_STATE_BIDITPUB个人空间E m \ iFn4JDH4@Di(G7?
 25     ) A 
VcVJ(m6|B0 26     WHERE ROWNUM <= 10
8[BXq8Y5a(Ia0 27  )
%AOu ?.sJGmu0 28  WHERE ROW_NUM >= 1
!`N;LNb)HkM'[0 29  ;
@Zx^ u)VM,E0ERROR:ITPUB个人空间\od:[*gN
ORA-03114: not connected to ORACLE

ITPUB个人空间)G*N%o ~*F.U7t~3e
EXPLAIN PLAN FORITPUB个人空间\0B:rhlVc
*
7`{'{1GX)I0ERROR at line 1:
{/^&xyL`"h3z{0ORA-03113: end-of-file on communication channel

随便对这个SQL进行任意的简化,都无法重现问题。不要说从SQL中去掉一张表,就是去掉排序语句,或者去掉任意一个条件限制语句都无法重现问题。

根据metalink文档的描述,这个问题应该是FIRST_ROWS优化模式下,执行计划中产生了BITMAP INDEX访问路径造成的。

首先这是一个分页SQL,包含了FIRST_ROWS提示,而且上面SQL语句中一个表包含多个限制条件,正好为产生BITMAP索引的执行计划构造了条件。因此从这一点上将还是和BUG中描述十分解决的,唯一需要补充的是这个问题和ORDER BY还有一定的关系,而且问题发生在分析阶段,而不是执行阶段。

关于这个bug的详细描述,可以参考Doc ID: Note:4917682.8

本测试发生在10203,似乎11g以前版本都可能发生这个问题。Oracle11.1.0.6中解决了这个bug

而最简单的临时解决问题的方法就是将FIRST_ROWS提示改为ALL_ROWS

SQL> EXPLAIN PLAN FOR
:c.tWf \#J8P5o0  2  SELECT /*+ ALL_ROWS */ *
xmio)GJ9]8n1yX0  3  FROM
X{&cri|9~ tV0  4  (ITPUB个人空间8|Y$l#n@J yv
  5     SELECT ROWNUM ROW_NUM, A.*ITPUB个人空间3rg5yA^w? G3v
  6     FROM
M/b,HEq0  7     (ITPUB个人空间DQ8s[B8Az
  8             SELECTITPUB个人空间6a F eDKX;O
  9                     SALER.ORG_NAME SALER_NAME
] `s-Oy0 10             FROM INF_SALER SALER ,
8elI^5G.`7v F%e.F0 11                     INF_ENTER_COMM_TEMP C,
UxTbY0 12                     INF_PRODUCT P,ITPUB个人空间3C g7Jh-F(I:Y} qX
 13                     INF_SALER FACTORY ,
]oU6pf+rp$R0 14                     INF_ENTER_COMM_PROPERTY COMMP  ITPUB个人空间'EE'y(FN'VsC9V UQ
 15             WHERE P.PRODUCT_ID=C.PRODUCT_ID
|9Vpbw*Z7P2I0 16             AND P.FACTORY_ID=FACTORY.ORG_IDITPUB个人空间Z`:j0oGo+q0|3{
 17             AND C.SALER_ORGID=SALER.ORG_IDITPUB个人空间0\U;_4Av4F"o
 18             AND C.COMM_TEMP_ID=COMMP.COMM_ID ITPUB个人空间$c8WeZ|+QK
 19             AND BID_SUBMIT='1'  
E3j+tRx\U/X0 20             AND C.PLAT_ID=15 ITPUB个人空间6Q'{ Hc6W
 21             AND C.ENABLE_FLAG = '1' ITPUB个人空间*Rv l6[ ^p0Mx
 22             AND C.ZB_TYPE='Y'
X?0pT.u:_0 23             AND SALER_ORGID='110090'   ITPUB个人空间-g6e3VUi7eg
 24             ORDER BY CHECK_STATE_BID
%r,RE G*Y0 25     ) A ITPUB个人空间?Hu!T@ ~hu
 26     WHERE ROWNUM <= 10
f PjZ2x~D0 27  )
A+{%{X4z5@l$i!F0 28  WHERE ROW_NUM >= 1
+iZ}3}V)U8\O FZ0 29  ;

Explained.

不过这样会带来一定的性能开销,毕竟ALL_ROWS不适合分页查询。

当然,这里也可以创建一个SALER_ORGIDPLAT_ID的组合索引,来避免执行计划中出现BITMAP索引访问路径:

SQL> CREATE INDEX IND_COMM_TEMP_SALER_PLAT ON INF_ENTER_COMM_TEMP (SALER_ORGID, PLAT_ID);

Index created.

SQL> EXPLAIN PLAN FORITPUB个人空间c@0QH2e,Vp^5ih'qR
  2  SELECT /*+ FIRST_ROWS */ *ITPUB个人空间9w Q3?*AF1X
  3  FROMITPUB个人空间:y?1PC3C._[ hY
  4  (
+sT#_^,l W0  5     SELECT ROWNUM ROW_NUM, A.*ITPUB个人空间|,T.X7Z SC{`-K.h
  6     FROMITPUB个人空间c5FFP$?a!Ovqtq
  7     (
'Mkx"x2r?m!X a0  8             SELECT
Z'kh/mCCY0  9                     SALER.ORG_NAME SALER_NAME
c jVl EK0 10             FROM INF_SALER SALER ,ITPUB个人空间 {g]7MN
 11                     INF_ENTER_COMM_TEMP C,
U^f] fsl:S\\%q0 12                     INF_PRODUCT P,
;{D7G)V6g0 13                     INF_SALER FACTORY ,ITPUB个人空间Pg2| P/N*Tr w'H
 14                     INF_ENTER_COMM_PROPERTY COMMP  ITPUB个人空间RI,d0i`2QIrr
 15             WHERE P.PRODUCT_ID=C.PRODUCT_ID
v/~KZ[0 16             AND P.FACTORY_ID=FACTORY.ORG_IDITPUB个人空间n?){&AV~y8V
 17             AND C.SALER_ORGID=SALER.ORG_ID
5l Gx!^!_R3Bic2o$t0 18             AND C.COMM_TEMP_ID=COMMP.COMM_ID 
U j1_ A;Zp0 19             AND BID_SUBMIT='1'  ITPUB个人空间-H#S:WIP'I A5o Q;FOg
 20             AND C.PLAT_ID=15 
6Cjq^8z{0 21             AND C.ENABLE_FLAG = '1' 
]\hH"m~ R0 22             AND C.ZB_TYPE='Y'ITPUB个人空间^De"p fV{
 23             AND SALER_ORGID='110090'   
9E7icg.AH0 24             ORDER BY CHECK_STATE_BID
B%Leb4y F y&[U0 25     ) A 
#^;Ir8o$p.f%_ aG0 26     WHERE ROWNUM <= 10ITPUB个人空间5]+jhgV2tB-N
 27  )
%M4tK3[1LN L _)y^0 28  WHERE ROW_NUM >= 1
s8E |P SBb0 29  ;

Explained.

这种方法的好处是不需要修改SQL,还能提供这个SQL的性能,缺点是可能会对数据库中运行的其他SQL造成影响,需要在测试环境中详细测试后,才能进行添加。

 


TAG:

yangtingkun的个人空间 引用 删除 yangtingkun   /   2008-04-24 10:57:28
7445错误的每个参数都有不同的含义,而楼上碰到的问题显然和我这里贴出的不是相同的问题。

简单查询了一下metalink,由于没有全部的信息,所以也不好确定是什么问题,你可以去metalink上查询ORA-7445,然后以错误参数KKOGBRO作为关键字
幸福MeMory 引用 删除 ginni_hua   /   2008-04-22 13:51:05
我們碰到以下:
ORA-07445: exception encountered: core dump [kkogbro()+512] [SIGSEGV] [Address not mapped to object] [0x0] [] []
SQL很簡單:
select stock001  ,stock002 ,stockname002,stockname007,stockname008 ,stock003 , stock007,partnum002,partnum003  from smss
tock a,smsstockname b,SMSPartNum c   where  a.stock002=b.Stockname001 and a.stock001=c.partnum001  and stock001 like '04
A0700XNC%'
並不是LIKE所有料號出現ERROR,個別的料號才會有這樣的錯誤
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar