使用SQL_TRACE檢查少數應用功能涉及的SQL執行計劃

hooca發表於2015-04-07
使用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. ********************************************************************************




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22621861/viewspace-1518885/,如需轉載,請註明出處,否則將追究法律責任。

相關文章