如何阅读Oracle Errorstack Output(三)

2014-11-24 15:01:37 · 作者: · 浏览: 2
ent SQL statement for this session:
DELETE FROM MYTAB WHERE OWNER = :B1
----- PL/SQL Call Stack -----
object line object
handle number name www.2cto.com
38d172270 8 function SYS.DELETE_FUNC
38d1518f0 1 anonymous block
----- 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 0000000000000001 0018A3F03 000000000 00601C7E0
000000000
ksdxcb()+1238 0000000000000001 0018A22D3 000000000 0FF2DCC80
0FFFFFD7F
....
当打开trace file,我通常做的是搜索第一个"Session Cursor Dump",当我搜索它的时候,我将看到如下的输出:
[html]
******************** Session Cursor Dump **********************
Current cursor: 6, pgadep: 1
Open cursors(pls, sys, hwm, max): 5(3, 1, 64, 300)
NULL 1 SYNTAX 0 PARSE 0 BOUND 4 FETCH 0 ROW 0
Cached frame pages(total, free):
4k(41, 38), 8k(1, 1), 16k(1, 1), 32k(0, 0)
pgactx: 38cc705e0 ctxcbk: 38cc701f0 ctxqbc: 0 ctxrws: 39392a188
Explain plan:
Dumping stream from 0 to 97
----------------------------------
0000: 143 136 161 146 147 3 0 0 0 137 119 1 0 16 0 0 0 3 1 2 ..........w.........
0020: 0 0 0 0 0 59 7 3 6 3 121 101 115 5 9 1 1 3 83 89 .....;....yes.....SY
0040: 83 12 8 106 108 109 224 152 228 163 113 111 3 2 3 3 2 0 0 143 S..jlm....qo........
0060: 56 164 146 147 3 0 0 0 134 116 2 38 24 133 86 229 24 144 100 133 8........t.&..V...d.
0080: 81 193 219 234 223 154 138 3 1 2 192 214 188 3 2 14 142 Q................ www.2cto.com
============
Plan Table
============
--------------------------------------+-----------------------------------+
| Id | Operation | Name | Rows | Bytes | Cost | Time |
--------------------------------------+-----------------------------------+
| 0 | DELETE STATEMENT | | | | 1366 | |
| 1 | DELETE | MYTAB | | | | |
| 2 | TABLE ACCESS FULL | MYTAB | 119K | 2023K | 1366 | 00:00:17 |
--------------------------------------+-----------------------------------+
我们可以发现Current cursor:6,这个告诉我们在此session的UGA中打开的cursor中正在执行Cursor#6.
the pgadep:1变量告诉我们PGA depth,也就是这个查询执行的递归的深度。如果pgadep是0,它意味着这个查询是一个top-level查询,正在被用户或者应用通过OCI接口在执行。pgadep为1以为这个它是一个递归的查询,通过递归程序接口(RPI)来执行,可能是数据字典查询或者仅仅是被通过PL/SQL执行的SQL。
所以,能够发现当前正在执行的当前查询的绑定变量值,我们需要做的是在trace file中朝前搜索Cursor6#,记住:这个是大小写敏感的。
[html]
Cursor#6(fffffd7ffddb1918) state=BOUND curiob=fffffd7ffdd0f380
curflg=cd fl2=0 par=0 ses=398f72fe8
sqltxt(38d15d0f8)=DELETE FROM MYTAB WHERE OWNER = :B1
hash=332a8a504bccd7f1a4a726a2879e71d9
parent=38ca516d0 maxchild=01 plk=395bf4dd8 ppn=n
cursor instantiation=fffffd7ffdd0f380 used=1266132628
child#0(38d151620) pcs=38ca512e0
clk=395b767b8 ci=38ca509c8 pn=38d179e58 ctx=38cc70