如何阅读Oracle Errorstack Output(一)

2014-11-24 15:01:37 · 作者: · 浏览: 0

如何 阅读Oracle Errorstack Output
Wirte By tanelpoder,translation by me.
当oracle发生关键的错误诸如:ora-600,Errorstack dump是自动被oracle dump。当你在alert.log里面看见错误,将产生trace文件,trace中以“ksedmp:internal or fatal
error"开头,诸如这样的错误(ORA-7445或者ORA-600附有一些参数)。"kesdmp"意味着Kernel Service Error Dump,所以此行下面的就是errorstack dump。
Errorstack dump也可以被手动的调用通过使用Oradebug errorstack 3(当使用Oradebug setospid设定了目标进程之后)。Oradebug Errorstack对于当一个session似乎Hang(
但是在v$session_wait里面并未出现合理的wait event)或者是比正常时消耗更多资源并且你想知道当前sql的具体变量值。
Errorstack trace文件有很多信息,对于我们troubleshooting或多或少都有用。但是大量的数据和二进制的转储可能使你摸不着头脑,这里我将给你展示可以理解的一些结构。
在这片文章里我们将探讨以下话题:
1.从errorstack trace file中发现当前正在执行SQL文本。
2.从errorstack trace file中发现当前正在执行PL/SQL package和PL/SQL source code line number。
3.从errorstack trace file中发现当前bind variable value。
4.从errorstack trace file中发现一个cursor正在使用多少private memory(UGA)。
www.2cto.com
我将在下面的阐述中粘贴一个errorstack dump的相关部分。
1.从errorstack trace file中发现当前正在执行SQL文本。
你将非常容易找到当前sql的文本信息,这个语句在tracefile的前端("Current SQL statement for this session")部分:
[ html]
*** 2010-02-14 15:30:32.830
*** SERVICE NAME:(SOL102) 2010-02-14 15:30:32.829
*** SESSION ID:(156.974) 2010-02-14 15:30:32.829
Received ORADEBUG command 'dump errorstack 3' from process Unix process pid: 8556, image:
*** 2010-02-14 15:30:32.830
ksedmp: internal or fatal error
Current SQL statement for this session:
DELETE FROM MYTAB WHERE OWNER = :B1
----- PL/SQL Call Stack -----
object line object
handle number name
38d172270 8 function SYS.DELETE_FUNC
38d1518f0 1 anonymous block
----- Call Stack Trace ----- www.2cto.com
calling call entry argument values in hex
location type point ( means dubious value)
-------------------- -------- -------------------- ----------------------------
ksedst()+23 0000000000000001 0017B342C 000000000 0FFDF2420
0FFFFFD7F
ksedmp()+636 0000000000000001 0017B1EC1 000000000 00601C7E0
000000000
ksdxfdmp()+1062 0000000000000001 0018A3F03 000000000 00601C7E0
000000000
ksdxcb()+1238 0000000000000001 0018A22D3 000000000 0FF2DCC80
....
2.从errorstack trace file中发现当前正在执行PL/SQL package和PL/SQL source code line number。
[html]
*** 2010-02-14 15:30:32.830
ksedmp: internal or fatal error
Current SQL statement for this session:
DELETE FROM MYTAB WHERE OWNER = :B1
----- PL/SQL Call Stack -----
object line object
handle number name
38d172270 8 function SYS.DELETE_FUNC
38d1518f0 1 anonymous block
www.2cto.com
----- Call Stack Trace -----
calling call entry argument values in hex
location type point ( means dubious value)
-------------------- -------- -------------------- ----------------------------
ksedst()+23 0000000000000001 0017B342C 000000000 0FFDF2420
0FFFFFD7F
ksedmp()+636 0000000000000001 0017B1EC1 000000000 00601C7E0
000000000
ksdxfdmp()+1062