gdufo

           

          學習動態性能表 第五篇--V$SESSION 2007.5.29

           

           在本視圖中,每一個連接到數據庫實例中的session都擁有一條記錄。包括用戶session及后臺進程如DBWRLGWRarcchiver等等。

           

          V$SESSION中的常用列

           

          V$SESSION是基礎信息視圖,用于找尋用戶SIDSADDR。不過,它也有一些列會動態的變化,可用于檢查用戶。如例:

          SQL_HASH_VALUESQL_ADDRESS:這兩列用于鑒別默認被session執行的SQL語句。如果為null0,那就說明這個session沒有執行任何SQL語句。PREV_HASH_VALUEPREV_ADDRESS兩列用來鑒別被session執行的上一條語句。

           

          注意:當使用SQL*Plus進行選擇時,確認你重定義的列寬不小于11以便看到完整的數值。

           

          STATUS:這列用來判斷session狀態是:

          l         Achtive:正執行SQL語句(waiting for/using a resource)

          l         Inactive:等待操作(即等待需要執行的SQL語句)

          l         Killed:被標注為刪除

           

          下列各列提供session的信息,可被用于當一個或多個combination未知時找到session

           

          Session信息

          l         SIDSESSION標識,常用于連接其它列

          l         SERIAL#:如果某個SID又被其它的session使用的話則此數值自增加(當一個        SESSION結束,另一個SESSION開始并使用了同一個SID)

          l         AUDSID:審查session ID唯一性,確認它通常也用于當尋找并行查詢模式

          l         USERNAME:當前sessionoracle中的用戶名。

           

          Client信息

          數據庫session被一個運行在數據庫服務器上或從中間服務器甚至桌面通過SQL*Net連接到數據庫的客戶端進程啟動,下列各列提供這個客戶端的信息

          l         OSUSER:客戶端操作系統用戶名

          l         MACHINE:客戶端執行的機器

          l         TERMINAL:客戶端運行的終端

          l         PROCESS:客戶端進程的ID

          l         PROGRAM:客戶端執行的客戶端程序

          要顯示用戶所連接PC TERMINALOSUSER,需在該PCORACLE.INIWindows中設置關鍵字TERMINALUSERNAME

           

          Application信息

          調用DBMS_APPLICATION_INFO包以設置一些信息區分用戶。這將顯示下列各列。

          l         CLIENT_INFODBMS_APPLICATION_INFO中設置

          l         ACTIONDBMS_APPLICATION_INFO中設置

          l         MODULEDBMS_APPLICATION_INFO中設置

          下列V$SESSION列同樣可能會被用到:

          l         ROW_WAIT_OBJ#

          l         ROW_WAIT_FILE#

          l         ROW_WAIT_BLOCK#

          l         ROW_WAIT_ROW#

           

          V$SESSION中的連接列

           

          Column                                                            View                                               Joined Column(s)

          SID             V$SESSION_WAIT,,V$SESSTAT,,V$LOCK,V$SESSION_EVENT,V$OPEN_CURSOR                 SID

          (SQL_HASH_VALUE, SQL_ADDRESS)                  V$SQLTEXT, V$SQLAREA, V$SQL    (HASH_VALUE, ADDRESS)

          (PREV_HASH_VALUE, PREV_SQL_ADDRESS)     V$SQLTEXT, V$SQLAREA, V$SQL    (HASH_VALUE, ADDRESS)

          TADDR                                                             V$TRANSACTION                                    ADDR

          PADDR                                                              V$PROCESS                                             ADDR

           

           

          示例:

          1.查找你的session信息

          SELECT SID, OSUSER, USERNAME, MACHINE, PROCESS

            FROM V$SESSION WHERE audsid = userenv('SESSIONID');

           

          2.machine已知的情況下查找session

          SELECT SID, OSUSER, USERNAME, MACHINE, TERMINAL

            FROM V$SESSION

           WHERE terminal = 'pts/tl' AND machine = 'rgmdbs1';

           

          3.查找當前被某個指定session正在運行的sql語句。假設sessionID100

          select b.sql_text

            from v$session a,v$sqlarea b

            where a.sql_hash_value=b.hash_value and a.sid=100

          尋找被指定session執行的SQL語句是一個公共需求,如果session是瓶頸的主要原因,那根據其當前在執行的語句可以查看session在做些什么。

           

          posted on 2009-11-17 11:53 gdufo 閱讀(156) 評論(0)  編輯  收藏 所屬分類: Database (oracle, sqlser,MYSQL)

          導航

          統計

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          Hibernate

          友情鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 长沙市| 长宁区| 松阳县| 遂川县| 洛宁县| 清丰县| 舞阳县| 襄垣县| 营山县| 东山县| 吉首市| 石门县| 黄平县| 银川市| 井陉县| 巩留县| 北川| 望江县| 友谊县| 翼城县| 彩票| 锦屏县| 华池县| 筠连县| 安阳市| 伊金霍洛旗| 天长市| 文水县| 五华县| 锡林浩特市| 米脂县| 宜城市| 乌苏市| 惠州市| 鄯善县| 富顺县| 池州市| 保山市| 高碑店市| 万盛区| 铜梁县|