|
可以查看这个过程编译后的"汇编码":
1. 先执行一下:
SQL>primey0(1000);
PL/SQL 过程已成功完成
已用时间: 13.483(毫秒). 执行号:9.
2. 查缓存计划号:
SQL>select cache_item, sqlstr from v$cachepln where sqlstr like '%FLAG%';
行号 CACHE_ITEM
---------- --------------------
SQLSTR
------------------------------------------------------------------
1 250168440
DECLARE
V_FLAG BOOLEAN;
BEGIN
FOR I IN 2 .. U LOOP
V_FLAG = TRUE;
FOR J IN 2 .. TRUNC(POWER(I, 0.5)) LOOP
IF MOD(I, J) = 0 THEN V_FLAG = FALSE;
EXIT ;
END IF ;
END LOOP ;
IF V_FLAG = TRUE THEN NULL;
END IF ;
END LOOP ;
END;
已用时间: 1.991(毫秒). 执行号:10.
3. 找到缓存号, cache_item 为 250168440, 然后做个plndump:
SQL>alter session set events 'immediate trace name plndump level 250168440, dump_file ''c:\temp\pln.trc''';
操作已执行
已用时间: 6.062(毫秒). 执行号:11.
4. 察看pln.trc
*** 2013-09-13 08:49:33.673000*** start dump the infos of pln[250168440].
npln cache infos:
scp cache
type: 0
over flow: 0
disable: 0
fixed number: 3
ts value: 949
type: 1
hash val: 83887103
schid: 150994945
user id: 50331649
obj id: 83887103
--rs cache
rs can cache: 0
rs cache size: 0
talbes' size: 0
SQL_STR:
DECLARE
V_FLAG BOOLEAN;
BEGIN
FOR I IN 2 .. U LOOP
V_FLAG = TRUE;
FOR J IN 2 .. TRUNC(POWER(I, 0.5)) LOOP
IF MOD(I, J) = 0 THEN V_FLAG = FALSE;
EXIT ;
END IF ;
END LOOP ;
IF V_FLAG = TRUE THEN NULL;
END IF ;
END LOOP ;
END;
PLN_CMD:
0 push 1
6 load 2
12 sloc 2
16 push 2
22 larg 1 9
28 cast 7 from 9
34 sloc 2
38 nop
40 lloc 1 2
46 lloc 2 2
52 jmpg 334
60 push 0
66 load true
72 sloc 1
76 push 3
82 load 2
88 sloc 2
92 push 4
98 load 5.0E-1
130 cast 11 from 9
136 lloc 1 2
142 cast 11 from 7
148 invi 133
152 invi 148
156 cast 7 from 11
162 sloc 2
166 nop
168 lloc 3 2
174 lloc 4 2
180 jmpg 284
188 lloc 3 2
194 cast 8 from 7
200 lloc 1 2
206 cast 8 from 7
212 invi 129
216 load 0
222 cast 8 from 7
228 jmpne 258
236 push 0
242 load false
248 sloc 1
252 jmp 284
258 nop
260 push 3
266 load 1
272 += 0 7
278 jmp 166
284 nop
286 lloc 0 1
292 load true
298 jmpne 308
306 nop
308 nop
310 push 1
316 load 1
322 += 0 7
328 jmp 38
334 nop
336 mret 0
end dump the infos of pln[250168440].
|
|