學習動态性能表
第五篇--V$SESSION
在本視圖中,每一個連接配接到資料庫執行個體中的session都擁有一條記錄。包括使用者session及背景程序如DBWR,LGWR,arcchiver等等。
V$SESSION中的常用列
V$SESSION是基礎資訊視圖,用于找尋使用者SID或SADDR。不過,它也有一些列會動态的變化,可用于檢查使用者。如例:
SQL_HASH_VALUE,SQL_ADDRESS:這兩列用于鑒别預設被session執行的SQL語句。如果為null或0,那就說明這個session沒有執行任何SQL語句。PREV_HASH_VALUE和PREV_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 SID:SESSION辨別,常用于連接配接其它列
l SERIAL#:如果某個SID又被其它的session使用的話則此數值自增加(當一個 SESSION結束,另一個SESSION開始并使用了同一個SID)。
l AUDSID:審查session ID唯一性,确認它通常也用于當尋找并行查詢模式
l USERNAME:目前session在oracle中的使用者名。
Client資訊
資料庫session被一個運作在資料庫伺服器上或從中間伺服器甚至桌面通過SQL*Net連接配接到資料庫的用戶端程序啟動,下列各列提供這個用戶端的資訊
l OSUSER:用戶端作業系統使用者名
l MACHINE:用戶端執行的機器
l TERMINAL:用戶端運作的終端
l PROCESS:用戶端程序的ID
l PROGRAM:用戶端執行的用戶端程式
要顯示使用者所連接配接PC的 TERMINAL、OSUSER,需在該PC的ORACLE.INI或Windows中設定關鍵字TERMINAL,USERNAME。
Application資訊
調用DBMS_APPLICATION_INFO包以設定一些資訊區分使用者。這将顯示下列各列。
l CLIENT_INFO:DBMS_APPLICATION_INFO中設定
l ACTION:DBMS_APPLICATION_INFO中設定
l MODULE:DBMS_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語句。假設sessionID為100
select b.sql_text
from v$session a,v$sqlarea b
where a.sql_hash_value=b.hash_valueand a.sid=100
尋找被指定session執行的SQL語句是一個公共需求,如果session是瓶頸的主要原因,那根據其目前在執行的語句可以檢視session在做些什麼。