使用SQL_TRACE检查少数应用功能涉及的SQL执行计划

使用AWR/statspack是查找全局性能问题的方式,如果已明确是少数的应用功能或模块才有性能问题,则可以在应用端仅重放这部分模块,再使用SQL_TRACE跟踪数据库会话。

查找会话信息(SID和serial#)

点击(此处)折叠或打开

  1. SQL> select sid,serial#,username from v$session where username is not null;

         SID     SERIAL#  USERNAME 
---------- ---------- ------------------------------ 
           7           284   IFLOW 
          11           214   IFLOW 
          12           164   SYS 
          16          1042   IFLOW 

开启SQL_TRACE


点击(此处)折叠或打开

  1. SQL> exec dbms_system.set_sql_trace_in_session(7,284,true);
  2. SQL> exec dbms_system.set_sql_trace_in_session(11,214,true);
  3. SQL> exec dbms_system.set_sql_trace_in_session(16,1042,true);
应用运行一段时间后,关闭SQL_TRACE

点击(此处)折叠或打开

  1. SQL> exec dbms_system.set_sql_trace_in_session(7,284,false);
  2. SQL> exec dbms_system.set_sql_trace_in_session(11,214,false);
  3. SQL> exec dbms_system.set_sql_trace_in_session(16,1042,false);
查找trace文件,分析执行计划(trace文件的确定见:http://blog.itpub.net/22621861/viewspace-1279733/)


点击(此处)折叠或打开

  1. ********************************************************************************
  2. select auditstatus,categoryid,auditlevel from
  3.  categoryarticleassign a,category b where b.id=a.categoryid and articleId=
  4.   20030700400141 and auditstatus>0
  5.  
  6. call count cpu elapsed disk query current rows
  7. ------- ------ -------- ---------- ---------- ---------- ---------- ----------
  8. Parse 1 0.00 0.00 0 0 0 0
  9. Execute 1 0.00 0.00 0 0 0 0
  10. Fetch 1 0.81 0.81 0 3892 0 1
  11. ------- ------ -------- ---------- ---------- ---------- ---------- ----------
  12. total 3 0.81 0.81 0 3892 0 1
  13. ********************************************************************************




请使用浏览器的分享功能分享到微信等