學習動態性能表sql
第五篇--V$SESSION 2007.5.29數據庫
在本視圖中,每個鏈接到數據庫實例中的session都擁有一條記錄。包括用戶session及後臺進程如DBWR,LGWR,arcchiver等等。服務器
V$SESSION中的經常使用列session
V$SESSION是基礎信息視圖,用於找尋用戶SID或SADDR。不過,它也有一些列會動態的變化,可用於檢查用戶。如例:oracle
SQL_HASH_VALUE,SQL_ADDRESS:這兩列用於鑑別默認被session執行的SQL語句。若是爲null或0,那就說明這個session沒有執行任何SQL語句。PREV_HASH_VALUE和PREV_ADDRESS兩列用來鑑別被session執行的上一條語句。性能
注意:當使用SQL*Plus進行選擇時,確認你重定義的列寬不小於11以便看到完整的數值。學習
STATUS:這列用來判斷session狀態是:操作系統
下列各列提供session的信息,可被用於當一個或多個combination未知時找到session。進程
Session信息terminal
Client信息
數據庫session被一個運行在數據庫服務器上或從中間服務器甚至桌面經過SQL*Net鏈接到數據庫的客戶端進程啓動,下列各列提供這個客戶端的信息
要顯示用戶所鏈接PC的 TERMINAL、OSUSER,需在該PC的ORACLE.INI或Windows中設置關鍵字TERMINAL,USERNAME。
Application信息
調用DBMS_APPLICATION_INFO包以設置一些信息區分用戶。這將顯示下列各列。
下列V$SESSION列一樣可能會被用到:
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$SQ (HASH_VALUE, ADDRESS)
(PREV_HASH_VALUE, PREV_SQL_ADDRESS) V$SQLTEXT, V$SQLAREA, V$SQ (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_value and a.sid=100
尋找被指定session執行的SQL語句是一個公共需求,若是session是瓶頸的主要緣由,那根據其當前在執行的語句能夠查看session在作些什麼。