如何从trace文件中查找引起问题的sql
2008-09-28 12:57:04 来源:WEB开发网1 VARCHAR2 or NVARCHAR2
2 NUMBER
8 LONG
11 ROWID
12 DATE
23 RAW
24 LONG RAW
96 CHAR
112 CLOB or NCLOB
113 BLOB
114 BFILE
b.) mxl 指最大长度,即变量占用的最大字节数,dty=2 and mxl=22 表示NUMBER(22)列
c.) scl 指位数 (对NUMBER列而言)
d.) pre 指小数点位数(对NUMBER列而言)
e.) value 指绑定变量的值
将游标dump中的绑定变量的值和sql语句中绑定变量的值直接对应:
:b1 ~ bind 0
:b2 ~ bind 1
:b3 ~ bind 2
以此类推………
绑定变量可以称为:1, :2,等,或者:a1, :a2等。最关键的是,在sql语句中的排列顺序和变量的dump部分的排列要完全一致。
现在你应该能找到绑定变量(包括长度,数值长度,精度)以及对应的值。
例子:
下面我们举例说明在trace文件中如何提取sql语句。
特别注意:
如果使用字面值替代绑定变量,会导致优化器选择不同的查询路径,从而使得问题可能不会再现。
Example 1:
******************** Cursor Dump ************************
Current cursor: 2, pgadep: 1
Cursor Dump:
----------------------------------------
我们查找cursor 2:
----------------------------------------
Cursor 2 (20139ad0): CURFETCH curiob: 2013bca4
curflg: 7 curpar: 20139ab0
curusr: 0 curses 587a250c
cursor name: select text from view$ where rowid=:1
child pin: 50a5b650, child lock: 50a5a628,
parent lock: 50a5a844
xscflg: 20141466, parent handle: 4f348490, xscfl2: 400
nxt: 2.0x0000006c nxt: 1.0x000001d8
Cursor
frame allocation dump:
frm: -------- Comment -------- Size Seg Off
bhp size: 52/560
bind 0: dty=11 mxl=16(16) mal=00
scl=00 pre=00 oacflg=18 oacfl2=1 size=16
offset=0
bfp=2013e9f4 bln=16 avl=16 flg=05
value=0000138C.0046.0004
当前SQL 语句:
select text from view$ where rowid=:1
绑定变量转换成:
:1 ~ bind 0 - ROWID (dty=11), value = 0000138C.0046.0004
因此我们得到下面的原始sql语句:
select text from view$ where rowid=0000138C.0046.0004
更多精彩
赞助商链接