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 閱讀(155) 評論(0)  編輯  收藏 所屬分類: Database (oracle, sqlser,MYSQL)

          導航

          統計

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          Hibernate

          友情鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 宜章县| 台北县| 霍州市| 河池市| 上杭县| 鱼台县| 观塘区| 台中县| 织金县| 花莲市| 凌海市| 日喀则市| 察隅县| 长乐市| 营口市| 宾阳县| 罗源县| 临高县| 武强县| 长沙市| 峨山| 永定县| 资兴市| 彰化市| 唐山市| 禹城市| 甘泉县| 海宁市| 广西| 定兴县| 许昌县| 芜湖市| 四子王旗| 南汇区| 诸暨市| 大丰市| 长治县| 石景山区| 崇信县| 湟中县| 商水县|