1. 程式人生 > >oracle v$session 詳解

oracle v$session 詳解

v$session作為一個檢視,記錄每一個連線到資料庫例項中的session的資訊,包括使用者session及後臺程序如DBWR,LGWR,arcchiver等等。 登陸dba使用者授予select on sys.v_$session許可權,並在該使用者下建立對sys.v_$session的私有同義詞。 SQL> connect / as sysdba
Connected.
SQL> grant select on v_$session to hr;
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 檢視中查出連線oracle的應用程式的基本資訊。
select sid, serial#,  
username, --連線使用者名稱  
program, --應用程式名
machine, --機器名
osuser, --作業系統使用者
logon_time --登入時間
from 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$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
參考網址:http://www.cnblogs.com/future2012lg/archive/2013/07/31/3228873.html
如何檢視oracle當前連線數、會話數 檢視session: select * from v$session where username is not null select username,count(username) from v$session where username is not null group by username 當前連線數: select count(*) from v$process 檢視連線數引數的設定情況 select value from v$parameter where name = 'processes' Select count(*) from v$session where status='ACTIVE' #併發連線數 select sid,serial#,username,program,machine,status from v$session where username='SHAREDB' and program like '%JDBC Thin Client%';
alter system kill session '100,325' immediate;