Oracle内部函数调用追踪器

来源:Oracle认证    发布时间:2012-11-12    Oracle认证视频    评论

  有了这样的追踪记录,你可以尝试将他们与执行计划中节点映射:

  SQL代码

  HELLODBA.COM>select * from demo.t_test1 where owner=‘DEMO’ and object_name like ‘T_TEST%’;

  Execution Plan

  ———————————————————-

  Plan hash value: 698582444

  ——————————————————————————————-

  | Id  | Operation                   | Name        | Rows  | Bytes | Cost (%CPU)| Time     |

  ——————————————————————————————-

  |   0 | SELECT STATEMENT            |             |     5 |   495 |     4   (0)| 00:00:04 |

  |   1 |  TABLE ACCESS BY INDEX ROWID| T_TEST1     |     5 |   495 |     4   (0)| 00:00:04 | ==> _qertbFetchByRowID

  |*  2 |   INDEX RANGE SCAN          | T_TEST_IDX7 |     5 |       |     1   (0)| 00:00:02 | ==> _qerixtFetch

  例子 3:

  打印某个特定函数被调用时的线程调用堆栈。

  我们这里追踪”_kkeAdjSingTabCard”。设置追踪点:

  SQL代码

  _kkeAdjSingTabCard*-1 6

  函数名后的”*N”指定输出的调用个数,-1为无限制。

  然后获取到你需要追踪的会话的SPID:

  SQL代码

  HELLODBA.COM>select distinct spid from v$mystat m, v$session s, v$process p where s.sid=m.sid and s.paddr=p.addr;

  SPID

  ————

  11076

  从进程列表中选择ORACLE.EXE => 从线程列表中选择TID为11076的线程 => 点击”Trace”按钮

  在被追踪的会话中解释一条语句:

  SQL代码

  HELLODBA.COM>explain plan for select /*+full(t)*/ count(*) from demo.t_test2 t;

  Explained.

  我们就可以从监控窗口获取到该函数被调用时的整个调用堆栈的情况:

  SQL代码

  [2010-5-28 6:51:55.591]User call: _kkeAdjSingTabCard (TID: 11076)

  Call Stacks(-1):

  0×1460029 (ORACLE.EXE!_kkoitbp+757)

  0×144c44d (ORACLE.EXE!_kkoijbad+8869)

  0×1445d8b (ORACLE.EXE!_kkoCopyPreds+851)

  0×143ee0a (ORACLE.EXE!_kkosta+1694)

  0×1d17f6c (ORACLE.EXE!__PGOSF443__apaRequestBindCapture+156)

  0×1d18398 (ORACLE.EXE!_apagcp+388)

  0×1d1683c (ORACLE.EXE!_apafbr+464)

  0xea6682 (ORACLE.EXE!_opitcaNcp+1450)

  0×5b4eb0 (ORACLE.EXE!_kksMinimalTypeCheck+20)

  0×84d939 (ORACLE.EXE!_rpidrus+429)

  0×5b8ce8 (ORACLE.EXE!_kksSetNLSHandle+5888)

  0×87732e (ORACLE.EXE!_kxsReleaseRuntimeLock+1366)

  0×831815 (ORACLE.EXE!_kkscbt+7237)

  0×82e3cf (ORACLE.EXE!_kksParseCursor+2099)

  0×82f1b8 (ORACLE.EXE!_kksxsccompat+148)

  0×201683e (ORACLE.EXE!_opibrp+1970)

  0×13cd5ed (ORACLE.EXE!_kpodrd+237)

  0×13cba7c (ORACLE.EXE!_kpocrs+780)

  0×85174e (ORACLE.EXE!_opirip+1102)

  0×60feff90 (oracommon10.dll!_ttcpro+1276)

  0×850a69 (ORACLE.EXE!_opiodr+1017)

  0×1221350 (ORACLE.EXE!_opiino3+1092)

  0×85174e (ORACLE.EXE!_opirip+1102)

  0×420e58 (ORACLE.EXE!_opidcl+824)

  0×42164a (ORACLE.EXE!_ksdwri+50)

  0×401171 (ORACLE.EXE!_ssthrnfy+117)

  0×401061 (ORACLE.EXE!_opimai_init+97)

  0×401905 (ORACLE.EXE!_osnsoiint+713)

  0×7c80b729 (KERNEL32.dll!GetModuleFileNameA+442)

  [Args(6)]:

  0×81e58d0

  0×81e5da8

  0

  0×40a03000

  0×8559500

  0

上一页12下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答