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 *
from
TESTOBJECT where rownum < 10
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.04 0 3 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 2 0.00 0.00 0 5 0 9
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 4 0.00 0.04 0 8 0 9
Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 60
Rows Row Source Operation
------- ---------------------------------------------------
9 COUNT STOPKEY (cr=5 pr=0 pw=0 time=63 us)
9 TABLE ACCESS FULL TESTOBJECT (cr=5 pr=0 pw=0 time=52 us)
********************************************************************************
写到这儿就完了,不知道应该怎么样结尾了.到这儿吧,就到这儿.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/226801/viewspace-912/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/226801/viewspace-912/