學習動態性能表(五)-v$session |
[君三思] 2007-5-29 |
在本視圖中,每一個連接到數據庫實例中的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執行的上一條語句。
STATUS :這列用來判斷session狀態是:
下列各列提供session的信息,可被用于當一個或多個combination未知時找到session 。 Session 信息
Client 信息數據庫session被一個運行在數據庫服務器上或從 中間服務器甚至 桌面通過SQL*Net連接到數據庫的客戶端進程啟動,下列各列提供這個客戶端的信息
要顯示用戶所連接PC 的 TERMINAL 、 OSUSER ,需在該PC的ORACLE.INI或Windows中設置關鍵字TERMINAL,USERNAME。 Application 信息調用DBMS_APPLICATION_INFO包以設置一些信息區分用戶。這將顯示下列各列。
下列V$SESSION列同樣可能會被用到:
V$SESSION 中的連接列
示例: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= 1 00 尋找指定session執行的SQL語句是一個常見的需求,如果session是瓶頸的主要原因,那根據其當前在執行的語句可以查看session在做些什么。 |