posts - 310, comments - 6939, trackbacks - 0, articles - 3
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          轉載:學習Oracle動態性能表-(11)-V$SESSION_LONGOPS

          Posted on 2008-06-15 10:36 詩特林 閱讀(1801) 評論(0)  編輯  收藏 所屬分類: Oracle
           

          V$SESSION_LONGOPS 

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

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

          l         設置TIMED_STATISTICSSQL_TRACE參數值為true

          l         通過ANALYZEDBMS_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列說明

           

          l         SIDSession標識

          l         SERIAL#Session串號

          l         OPNAME:操作簡要說明

          l         TARGET:操作運行所在的對象

          l         TARGET_DESC:目標對象說明

          l         SOFAR:至今為止完成的工作量

          l         TOTALWORK:總工作量

          l         UNITS:工作量單位

          l         START_TIME:操作開始時間

          l         LAST_UPDATE_TIME:統計項最后更新時間

          l         TIME_REMAINING:預計完成操作的剩余時間()

          l         ELAPSED_SECONDS:從操作開始總花費時間()

          l         CONTEXT:前后關系

          l         MESSAGE:統計項的完整描述

          l         USERNAME:執行操作的用戶ID

          l         SQL_ADDRESS:用于連接查詢的列

          l         SQL_HASH_VALUE:用于連接查詢的列

          l         QCSID

          示例:

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

          SQL> set timing on

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

          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

          Ps:itpub論壇的fenng版版數年前有篇文章描述了v$sessin_longops的來源,有興趣的朋友可以研究研究:

          http://www.dbanotes.net/database/vsession_longops.html

          主站蜘蛛池模板: 扎赉特旗| 宽甸| 江永县| 廊坊市| 镇平县| 宁陵县| 航空| 阳曲县| 大埔区| 阳信县| 柯坪县| 滁州市| 平远县| 沈阳市| 资源县| 蓝田县| 连南| 镇江市| 霍山县| 吉首市| 绿春县| 蓝田县| 普宁市| 成武县| 五大连池市| 定边县| 台前县| 蒙阴县| 临海市| 嘉定区| 阿图什市| 禄丰县| 西华县| 库伦旗| 临洮县| 白山市| 都江堰市| 星子县| 苗栗县| 莱州市| 华阴市|