Oracle内部函数调用追踪器
文章作者 100test 发表时间 2011:03:17 19:33:59
来源 100Test.Com百考试题网
基于以前开发的一个用于监控线程的CPU使用状况的小工具,TopShow,我开发了一个用于追踪Oracle内部函数调用的追踪器——OraTracer. 你可以用该工具追踪监控Oracle多个内部函数的调用情况,还可以尝试探测函数的输入参数的值,也可以打印追踪点被触发时的调用堆栈。追踪可以设置在整个Oracle进程的级别,也可以设置在某个线程以追踪特定的会话。
例子 1:
捕获oracle整个实例中被执行的SQL语句。
首先,在与可执行文件相同的目录下设置追踪点文件”TracePoints.txt”,内容如下:
_opiprs 6*1
_rpisplu 6*2
_kprbprs 6
与函数名用空格相隔的数值为探测的参数数量,如果再加上”*N”,则表示尝试将双字节数字作为指针对待,递归获取其执行的值,后面的数字为递归深度。例如,对于第一个追踪点,函数名为”_opiprs”,探测6个参数,递归探测指针数据的深度为1。
注意:”#”为注释符。
然后从进程列表中选择”ORACLE.EXE”,不要选择任何线程:
最后,点击”Trace”按钮。一旦有语句被上述函数调用,你就可以从监控窗口看到这些语句:
SQL代码
…
[2010-5-28 3:53:23.426]User call: _rpisplu (TID: 5276)
[Args(6)]:
6
0
0
“0select privilege#,level from sysauth$ connect by grantee#=prior privilege# and privilege#