根據Oracle Documentation的說明:
This
view lists session information for each current session.
--說明了Server
process建立與Oracle
Server之間的Session連線,而V$session儲存了連線時的相關資訊。
1)V$session常會用到的欄位
欄位
|
敘述
|
SID
|
標識值(SID會重複使用, 常用來連結其它V$。
|
SERIAL#
|
當SID重複時, SERIAL#會增加
|
USERNAME
|
使用哪個Oracle帳號登入
|
COMMAND
|
執行什麼類型的SQL(儲存數字, 對應AUDIT_ACTIONS才能了解)
|
PADDR
|
process address關聯到V$process的addr
|
TADDR
|
transaction address關聯到V$process的addr
|
LOCKWAIT
|
正在等待lock的訊息, 關聯到V$lock的kaddr
|
STATUS
|
session的狀態
|
SERVER
|
dedicated or shared mode
|
OSUSER
|
客戶端作業系統的用戶名稱
|
MACHINE
|
客戶端作業系統的電腦名稱
|
TERMINAL
|
客戶端的終端機名稱
|
PROGRAM
|
客戶端的應用程式
|
TYPE
|
background or user process
|
SQL_ADDRESS
|
正在執行的SQL
address 關聯到V$sql的address
|
SQL_HASH_VALUE
|
正在執行的SQL
hash value, 關聯到V$sql的hash_value
|
SQL_ID
|
正在執行的SQL
id 關聯到V$sql的id
|
SQL_CHILD_NUMBER
|
正在執行的SQL
child數量, 關聯到V$sql的child_number
|
PREV_SQL_ADDR
|
上一次執行的SQL address
|
PREV_HASH_VALUE
|
上一次執行的SQL hash value
|
PREV_SQL_ID
|
上一次執行的SQL id
|
PREV_CHILD_NUMBER
|
上一次執行的SQL child數量
|
ROW_WAIT_OBJ#
|
被lock的object_id, 關聯到dba_objects中的object_id
|
ROW_WAIT_FILE#
|
被lock的datafile_id, 關聯到v$datafile中的file#
|
ROW_WAIT_BLOCK#
|
被lock的block
|
ROW_WAIT_ROW#
|
被lock的row
|
LOGON_TIME
|
登錄時間
|
從上面可以知道,V$session是一個相當頻繁會被使用到的動態視圖,它與process, transaction, lock等皆有相關聯,也常會搭配v$sesstat,
v$session_wait因此所包含的應用也很多,以下列出該視圖的簡單應用。
2)查詢自己的Session相關訊息
select sid, osuser, username, machine, process
from v$session
where audsid = userenv('SESSIONID');
3)查詢使用者執行的Process
select a.sid, b.program, b.pga_used_mem/1024/1024
pga_used_mb
from v$session a, v$process b
where a.paddr=b.addr;
4)查詢當前被執行的SQL
select a.sid, b.sql_text
from v$session a, v$sqlarea b
where a.sql_id=b.sql_id;