學習動態性能表(10)--v$session_longops

學習動態性能表sql

第十篇--V$SESSION_LONGOPS  2007.6.7session

 

本視圖顯示運行超過6秒的操做的狀態。包括備份,恢復,統計信息收集,查詢等等。app

 

要監控查詢執行進展情況,你必須使用cost-based優化方式,而且:性能

  • 設置TIMED_STATISTICS或SQL_TRACE參數值爲true。
  • 經過ANALYZE或DBMS_STATS數據包收集對象統計信息。

 

你能夠經過DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS過程添加application-specific長運行操做信息到本視圖。關於DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS的更多信息能夠瀏覽:Oracle Supplied PL/SQL Packages and Types Reference。學習

 

V$SESSION_LONGOPS列說明優化

 

  • SID:Session標識
  • SERIAL#:Session串號
  • OPNAME:操做簡要說明
  • TARGET:操做運行所在的對象
  • TARGET_DESC:目標對象說明
  • SOFAR:至今爲止完成的工做量
  • TOTALWORK:總工做量
  • UNITS:工做量單位
  • START_TIME:操做開始時間
  • LAST_UPDATE_TIME:統計項最後更新時間
  • TIME_REMAINING:預計完成操做的剩餘時間(秒)
  • ELAPSED_SECONDS:從操做開始總花費時間(秒)
  • CONTEXT:先後關係
  • MESSAGE:統計項的完整描述
  • USERNAME:執行操做的用戶ID
  • SQL_ADDRESS:用於鏈接查詢的列
  • SQL_HASH_VALUE:用於鏈接查詢的列
  • QCSID:

 

示例:對象

找一較大表,確認該表查詢將超過6秒,哎呀讓它快咱沒把握,讓它慢這但是個人強項啊~~ci

SQL> set timing onhash

SQL> create table ttt as select level lv,rownum rn from dual connect by level<10000000;   --建立一個臨時表it

Table created

Executed in 19.5 seconds

SQL> commit;

Commit complete

Executed in 0 seconds

SQL> select * from (select * from ttt order by lv desc) where rownum<2;    --執行一個費時的查詢

 

        LV         RN

---------- ----------

   9999999    9999999

Executed in 9.766 seconds   --哈哈,成功超過6秒

SQL> select sid,opname,sofar,totalwork,units,sql_hash_value from v$session_longops;      ----看看v$session_longops中是否是已經有記錄了

 

       SID OPNAME                                                                SOFAR  TOTALWORK UNITS                            SQL_HASH_VALUE

---------- ---------------------------------------------------------------- ---------- ---------- -------------------------------- --------------

        10 Table Scan                                                            47276      47276 Blocks                               2583310173

Executed in 0.047 seconds

 

SQL> select a.sql_text from v$sqlarea a,v$session_longops b where a.HASH_VALUE=b.SQL_HASH_VALUE;   --經過hash_value聯繫查詢出剛執行的查詢語句。

 

SQL_TEXT

--------------------------------------------------------------------------------

 select * from (select * from ttt order by lv desc) where rownum<2

Executed in 0.063 seconds

相關文章
相關標籤/搜索