Oracle 用trace来跟踪session
1.在数据库安装的电脑上,使用SQL plus 用 SYSDBA 身份连接到数据库.
2.找到要进行跟踪的会话.
select sid,serial#,username from v$session ; |
3.启用相关会话的SQL trace .
exec dbms_system.set_sql_trace_in_session(7,284,true) |
4.从指定SESSION 运行一些程序过程
5.停止会话跟踪.
exec dbms_system.set_sql_trace_in_session(7,284,false) |
6.使用tkprof 程序对跟踪到的文件进行格式化.
tkprof aaa.trc aaa.txt |
7.查看aaa.txt就可以了.
----如果是跟踪本SESSION,可以用:
dbms_session.set_sql_trace(true); dbms_session.set_sql_trace(false); |
Unix下查oracle最近执行的sql语句
$cd $ORACLE_HOME/admin/udump $ls -alt | more $tkprof filename out_filename explain=apps/apps sys=no |
8.知道了怎么去跟踪一个会话,现在我们就可以根据tkprof生的的txt文件进行会话分析,
如图:我们在trace出来的txt文件中发现elapsed为327.44 ,即5分多钟,比较后发现可以是该地方出现问题
select /*+ all_rows */ count(1) from "INST"."OFFER_MEMBER" where "OFFER_ROLE_ID" = :1 call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 1 0.00 0.00 0 0 0 0 Execute 1 0.00 0.00 0 0 0 0 Fetch 1 38.67 327.44 1381706 1597572 1 1 ------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 3 38.67 327.44 1381706 1597572 1 1
|
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/645199/viewspace-680380/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/645199/viewspace-680380/