gdufo

           

          學(xué)習(xí)動(dòng)態(tài)性能表 第13篇--V$OPEN_CURSOR 2007.6.8

           

          本視圖列出session打開的所有cursors,很多時(shí)候都將被用到,比如:你可以通過它查看各個(gè)session打開的cursor數(shù)。

           

            當(dāng)診斷系統(tǒng)資源占用時(shí),它常被用于聯(lián)接v$sqlareav$sql查詢出特定SQL(高邏輯或物理I/O)。然后,下一步就是找出源頭。在應(yīng)用環(huán)境,基本都是同一類用戶登陸到數(shù)據(jù)庫(V$SQLAREA中擁有相同的PARSING_USER_ID),而通過這個(gè)就可以找出它們的不同。V$SQLAREA中的統(tǒng)計(jì)項(xiàng)在語句完全執(zhí)行后被更新(并且從V$SESSION.SQL_HASH_VALUE中消失)。因此,你不能直接找到session除非語句被再次執(zhí)行。不過如果sessioncursor仍然打開著,你可以通過v$open_cursor找出執(zhí)行這個(gè)語句的session

           

          V$OPEN_CURSOR中的連接列

           

          Column                              View                                                 Joined Column(s)

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

          HASH_VALUE, ADDRESS           V$SQLAREA, V$SQL, V$SQLTEXT             HASH_VALUE, ADDRESS

          SID                                                 V$SESSION                                                      SID

           

          示例:

          1.找出執(zhí)行某語句的session

          SELECT hash_value, buffer_gets, disk_reads

          FROM V$SQLAREA

          WHERE disk_reads > 1000000

          ORDER BY buffer_gets DESC;

           

          HASH_VALUE BUFFER_GETS DISK_READS

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

          1514306888   177649108    3897402

           478652562    63168944    2532721

           360282550    14158750    2482065

           

          3 rows selected.

          SQL> SELECT sid FROM V$SESSION WHERE sql_hash_value = 1514306888 ;

          no rows selected

          --直接通過hash_value查找v$session,沒有記錄

           

          SQL> SELECT sid FROM V$OPEN_CURSOR WHERE hash_Value = 1514306888 ;

           

            SID

          -----

           1125

            233

            935

           1693

            531

           

          5 rows selected.

          --通過hash_valuev$open_cursor中查找sid(只有在sessioncursor仍然打開的情況下才有可能找到)

           

          2.列出擁有超過400個(gè)cursorsessionID

          SQL> SELECT sid, count(0) ct FROM v$open_cursor

          GROUP BY sid HAVING COUNT(0) > 400 ORDER BY ct desc;

           

          事實(shí)上,v$open_cursor是一個(gè)相當(dāng)常用的視圖,特別是web開發(fā)應(yīng)用的時(shí)候。僅通過它一個(gè)視圖你就能分析出當(dāng)前的連接情況,主要執(zhí)行語句等。

          posted on 2009-11-17 14:37 gdufo 閱讀(170) 評(píng)論(0)  編輯  收藏 所屬分類: Database (oracle, sqlser,MYSQL)

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          Hibernate

          友情鏈接

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 浦江县| 万全县| 台中市| 屯留县| 西乌珠穆沁旗| 巨鹿县| 名山县| 石台县| 洛隆县| 清河县| 井冈山市| 柳河县| 淳安县| 九寨沟县| 兰西县| 肇庆市| 扶风县| 托克托县| 阿荣旗| 禹城市| 金秀| 卓尼县| 普洱| 陕西省| 达孜县| 广州市| 望江县| 山西省| 澳门| 吴桥县| 大连市| 波密县| 黄龙县| 南昌县| 榆中县| 红桥区| 武平县| 噶尔县| 金坛市| 浦城县| 宜都市|