ORA-07445: exception encountered: (一)

lovehewenyu發表於2013-10-11

ORA-07445: exception encountered: core dump [kghalp()+58] [SIGSEGV] [Address not mapped to object] [0x000000068] [] []

 

 

DUMP 檔案

*** SERVICE NAME:(orcl) 2012-07-12 14:18:55.016

*** SESSION ID:(258.58198) 2012-07-12 14:18:55.016

Exception signal: 11 (SIGSEGV), code: 1 (Address not mapped to object), addr: 0x68, PC: [0x3c175e2, kghalp()+58]

*** 2012-07-12 14:18:55.030

ksedmp: internal or fatal error

ORA-07445: exception encountered: core dump [kghalp()+58] [SIGSEGV] [Address not mapped to object] [0x000000068] [] []

Current SQL statement for this session:

INSERT INTO MAILSENDER.GARBAGEDISTRIBUTING SELECT :B6 ,DOMAIN,MAX(CASE WHEN FLODER='ad' THEN COUNTNUM ELSE 0 END ) AS AD, MAX(CASE W

HEN FLODER='Garbage' THEN COUNTNUM ELSE 0 END) AS GARBAGE,:B3 ,:B5 ,:B4 FROM ( SELECT DOMAIN, FLODER, COUNT(MESSAGEINFOID) AS COUNTN

UM FROM( SELECT MBL.DOMAIN,T.MESSAGEINFOID,CASE WHEN REGEXP_SUBSTR(T.FLODER,'(Junk)|(QQ?歡璁㈤槄)|(鍨冨漊閭?歡)|(璁㈤槄閭?歡)') IS NOT NULL

 THEN 'Garbage' WHEN REGEXP_SUBSTR(T.FLODER,'(騫垮憡閭?歡)') IS NOT NULL THEN 'ad' ELSE '' END AS FLODER FROM MESSAGEINFO T,MAILBOXLIST

 MBL,TABLE(SPLITSTR(:B1 ,',')) TBEMAIL WHERE MBL.MAILBOXID=T.MAILBOXID AND TBEMAIL.COLUMN_VALUE=MBL.EMAIL AND T.ADDDATE BETWEEN :B3

AND :B2 AND (SELECT COUNT(*) FROM MESSAGEINFO M WHERE T.MAILID=M.MAILID AND T.MESSAGEINFOID

ER ) GROUP BY DOMAIN

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

  object      line  object

  handle    number  name

0x25b104658        23  package body MONITOR.PACKAGE_GARBAGEDISTRIBUTING

0x238b77b30         1  anonymous block

----- Call Stack Trace -----

calling              call     entry                argument values in hex     

location             type     point                (? means dubious value)    

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

Cannot find symbol

Cannot find symbol

Cannot find symbol

ksedst()+31          call     ksedst1()            000000001 ? 000000001 ?

                                                   000000000 ? 000000000 ?

                                                   000000000 ? 000000001 ?

ksedmp()+610         call     ksedst()             000000001 ? 000000001 ?

                                                   000000000 ? 000000000 ?

                                                   000000000 ? 000000001 ?

ssexhd()+630         call     ksedmp()             000000003 ? 000000001 ?

                                                   000000000 ? 000000000 ?

                                                   000000000 ? 000000001 ?

__restore_rt()+0     call     ssexhd()             00000000B ? 2B6124A48D70 ?

                                                   2B6124A48C40 ? 000000000 ?

                                                   000000000 ? 000000001 ?

              call     __restore_rt()       00000000B ? 2B6124A48D70 ?

                                                   2B6124A48C40 ? 000000000 ?

                                                   000000000 ? 000000001 ?

 

我們的ORA-07445,根據DUMP檔案分析,多半是因為亂碼問題照成的,然後修改了伺服器的字符集。(即新增export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)。然後跟進我們這個包MONITOR.PACKAGE_GARBAGEDISTRIBUTING 。一切OK 了。

 

總結:亂碼問題也可以導致ora-07445問題。遇到問題沉著冷靜,細心才可以把問題解決好。

 

 

附表:

以下為網上收集的ORA-07445問題

select owner,object_name,object_type,debuginfo 
rom all_probe_objects 
where object_name='TRI_XXX' and object_type like 'TRIGGER';

OWNER        OBJECT_NAME    OBJECT_TYPE     D
------------ -------------- ---------------     -
COPERATOR    TRI_XXX        TRIGGER              T


1 rows selected.

   天哪,真是DEBUG狀態!
    一個因為在DEBUG狀態,且是基於DELETETRIGGER觸發了這個ORACLEBUG
    ......
    
現在要麼改這個TRIGGER的狀態,要麼打補丁(9.2.0.6)。第一種選擇是明智而快捷且安裝的。重新編譯,檢查不是DEBUG狀態。應用啟動,正常執行

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26442936/viewspace-774140/,如需轉載,請註明出處,否則將追究法律責任。

相關文章