Wednesday, October 26, 2011

Diagnosing ORA-00600 and ORA-07445 errors

When I'm unlucky enough to find an ORA-600/ORA-7445 error in one database I'm tasked to manage, I like a lot using Google to find practical, real solutions to this kind of problems, and almost all the time I got a plain explanation of the problem and a precise solution or document to look for the solution. The problem is, if you have to justify your solution you cannot simply say "This is the way because I say so", or "I think the guy of that forum is correct because I feel so".

Therefore, if you need an official document (Oracle) to back your diagnostic or you enjoy a lot using heavy Flash pages then you could try to find information about these errors in Metalink. But first, you will have to gather information about the error in the alert log file and trace files generated:

$ more alert_mydb.log
...skipping...
Wed Oct 13 11:56:33 2008
Errors in file /oracle/admin/mydb/udump/mydb_ora_11180.trc:
ORA-00600: internal error code, arguments: [736], [7], [0], [128], [128], [], [], []
Wed Oct 13 11:56:35 2008
Errors in file /oracle/admin/mydb/udump/mydb_ora_11180.trc:
ORA-07445: exception encountered: core dump [kxsbndinf()+604] [SIGSEGV] [unknown code] [0x100010001] [] []
ORA-00600: internal error code, arguments: [736], [7], [0], [128], [128], [], [], []
Wed Oct 13 11:56:36 2008
Errors in file /oracle/admin/mydb/udump/mydb_ora_11180.trc:
ORA-07445: exception encountered: core dump [kxsbndinf()+604] [SIGSEGV] [unknown code] [0x100010001] [] []
ORA-07445: exception encountered: core dump [kxsbndinf()+604] [SIGSEGV] [unknown code] [0x100010001] [] []
ORA-00600: internal error code, arguments: [736], [7], [0], [128], [128], [], [], []

$ more /oracle/admin/mydb/udump/mydb_ora_11180.trc
/oracle/admin/mydb/udump/mydb_ora_11180.trc
Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production
With the Partitioning option
JServer Release 9.2.0.5.0 - Production
ORACLE_HOME = /oracle/product/9.2
System name: HP-UX
Node name: myserver
Release: B.11.11
Version: U
Machine: 9000/800
Instance name: mydb
Redo thread mounted by this instance: 1
Oracle process number: 28
Unix process pid: 11180, image: oracle@myserver (TNS V1-V3)

*** SESSION ID:(31.12323) 2008-10-13 11:56:33.939
*** 2008-10-13 11:56:33.939
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [736], [7], [0], [128], [128], [], [], []
Current SQL statement for this session:
INSERT INTO MYTABLE (FIELD1, FIELD2, FIELD3) VALUES (SYSDATE, :B1, :B2)
----- PL/SQL Call Stack -----
object line object
handle number name
c0000000aecb8208 14 function MYUSER.MYFUNCTION1
c0000000ae910e40 58 function MYUSER.MYFUNCTION2
c0000000ae91a908 1 anonymous block
----- Call Stack Trace -----
calling call entry argument values in hex
location type point (? means dubious value)
-------------------- -------- -------------------- ----------------------------
ksedmp()+184 ? ksedst() 4000000002D91857 ?
000000004 ?
C0000000ADD000E8 ?
000000000 ?
ksfdmp()+32 ? ksedmp() C0000000B162AD60 ?
800003FA00054A68 ?
000000007 ?
C0000000B1628A40 ?
kgeriv()+152 ? ksfdmp() 000000007 ?
C0000000B1628A40 ?
40000000011979C3 ?
800000010000B980 ?
kgeasi()+172 ? kgeriv() 800000010000B980 ?
800000010000B8A8 ?
800000010000B3D8 ?
80000001000DA060 ?
kxsrbb()+1972 ? kgeasi() C0000000B162AD60 ?
800003FFC0001D20 ?
000115464 ? 000000030 ?
kxsxsi()+668 ? kxsrbb() 800000000000000 ?
4000000000844158 ?
000008108 ?
40000000004E55F0 ?
opitca()+5140 ? kxsxsi() 800000000000000 ?
80000001000DB8B0 ?
800003FFC00010C8 ?
C0000000B162A99C ?
kkslod()+2932 ? opitca() 80000001000C10B0 ?
800003F980068828 ?
C0000000AC3B3D50 ?
000000000 ?
kglobld()+1516 ? kkslod() 80000001000D90B8 ?
400000000071C2A0 ?
DD40F440010385D0 ?
000000000 ?
kglobpn()+1156 ? kglobld() 00000009C ? 000000000 ?
800003FFBFFFD4C0 ?

If you haven't done so, read the Master Note for Diagnosing ORA-600 Metalink document to understand the basics of diagnosing errors, and if you read carefully you will notice a nice tool called ORA-600/ORA-7445 Error Look-up; it would be better to use the Flash version of this document in order to have full features available.

With this tool you will have two options to look for errors, the first one I recommend to try is Look-up By Error or Error Code's First Argument. In this box you have to select the error code (ORA-600/ORA-7445), enter the error code arguments in order (like [736], [7], [0], [128]), and select your database version if apply. The more arguments you input the more precise diagnostic you might get, but if you get nothing then try to enter less arguments.

If you are not sure about this result, try the Search by Stack Trace option. There you have to enter the stack trace below the dashed line; again, the more stack trace you input the more precise diagnostic you might get, but if you get nothing then try to enter less stack trace.

That's it! This way you can search for information about Oracle bugs in Metalink less painfully; hope you don't have to use this tool too often.

No comments:

Post a Comment