sql_trace是oracle随数据库提供的用户sql跟踪工具.默认是不启动的.启动的方式有两种:
1.启动当前会话的sql_trace:
alter session set sql_trace=true;
停止当前会话的sql_trace:
alter session set sql_trace=false;
2.启动对其它用户的sql_trace:
exec sys.dbms_system.set_sql_trace_in_session(147,54,true);
停止则用:
exec sys.dbms_system.set_sql_trace_in_session(147,54,false);
上面前两个参数分别是会话的sid和serial#.这两个参数可以从v$session中得到.跟踪文件的存放位置由参数user_dump_dest控制,可以用命令show parameter user_dump_dest来查看.一般情况下存放于$oracle_home\admin\orcl\udump下面.可能通过修改时间来找到最新生成的跟踪文件.
生成的跟踪文件扩展名为.trc.是二进制文件.用文本工具是看不到里面信息的.那怎么样得到里面的信息呢,这就要用到tkprof了.这也是oracle提供的一个工具,专门用来查看用户跟踪文件的内容.下面做一个例子来说明一下:
我设置了test用户的跟踪后.在test用户下执行了select * from testobject where rownum < 10.然后找到了对应的跟踪文件orcl_ora_3888.trc.把这个文件复制到C盘根目录下.在dos下执行
tkprof orcl_ora_3888.trc 3888.txt
这时候在C盘根目录下生成了3888.txt文件.用记事本打开看看吧,找到了执行上面的语句的相关跟踪内容:
********************************************************************************
select *
tHKtq7590422fromITPUB个人空间hlQ
cU6L;_R
TESTOBJECT where rownum < 10
&I_x JJ\WT7590422call count cpu elapsed disk query current rows
d"x|(Capr;S(zO7590422------- ------ -------- ---------- ---------- ---------- ---------- ----------ITPUB个人空间j&@R{0GDP4N
Parse 1 0.00 0.04 0 3 0 0ITPUB个人空间5T
vj1Wv2d4g[3V
Execute 1 0.00 0.00 0 0 0 0
%w+D4G8|#eK*C7590422Fetch 2 0.00 0.00 0 5 0 9ITPUB个人空间&kw!]{4t
------- ------ -------- ---------- ---------- ---------- ---------- ----------ITPUB个人空间 ?"a\'GOA5S5x.iS
total 4 0.00 0.04 0 8 0 9
Misses in library cache during parse: 1
"} i XS2H [4j7590422Optimizer mode: ALL_ROWS
PZMLm#a7590422Parsing user id: 60
Rows Row Source Operation
$GN3hnD:HTx9s7590422------- ---------------------------------------------------
&G8[~&}-gOJ A7590422 9 COUNT STOPKEY (cr=5 pr=0 pw=0 time=63 us)ITPUB个人空间+P)qxx;s8m h#H
f
9 TABLE ACCESS FULL TESTOBJECT (cr=5 pr=0 pw=0 time=52 us)
b&r+[5J5fi,I/f"qi U7590422********************************************************************************
写到这儿就完了,不知道应该怎么样结尾了.到这儿吧,就到这儿.