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 *
3}:xs(h#d:y0from
}y8R%[B0I/F0 TESTOBJECT where rownum < 10
0t `rL9c0call count cpu elapsed disk query current rows
v0z*E? f-EZ!k
f0------- ------ -------- ---------- ---------- ---------- ---------- ----------ITPUB个人空间J#U6I_v$Yo
Parse 1 0.00 0.04 0 3 0 0ITPUB个人空间 oZhx&U"~Jp"t0[%O:C8p
Execute 1 0.00 0.00 0 0 0 0
(] KD#?-~p C
q0Fetch 2 0.00 0.00 0 5 0 9
_/l#P k4s'i(X0------- ------ -------- ---------- ---------- ---------- ---------- ----------
,J{ h0x/m
m(S
f0total 4 0.00 0.04 0 8 0 9
Misses in library cache during parse: 1ITPUB个人空间(S]1?]F,m.eD
Optimizer mode: ALL_ROWS
R$z1_Wsn)UA1|0Parsing user id: 60
Rows Row Source Operation
)~L&ZT)g1W0x"}"H0------- ---------------------------------------------------
6zu'iEd7kl*r:b0 9 COUNT STOPKEY (cr=5 pr=0 pw=0 time=63 us)
4WC%QjPEU0 9 TABLE ACCESS FULL TESTOBJECT (cr=5 pr=0 pw=0 time=52 us)
ITPUB个人空间8L}`sdm
********************************************************************************
写到这儿就完了,不知道应该怎么样结尾了.到这儿吧,就到这儿.