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
本文详细介绍了如何在Oracle数据库中使用SQLTrace跟踪session,包括设置跟踪、运行程序、停止追踪,并通过tkprof分析性能瓶颈。重点讲解了如何定位和改善特定查询的执行效率。
655

被折叠的 条评论
为什么被折叠?



