Oracle動態效能檢視學習之v$session

來源:互聯網
上載者:User

轉自:http://hi.baidu.com/laizurong/blog/item/87979ad97faf492b11df9baf.html

 

在本視圖中,每一個串連到資料庫執行個體中的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狀態是:
Achtive:正執行SQL語句(waiting for/using a resource)
Inactive:等待操作(即等待需要執行的SQL語句)
Killed:被標註為刪除

下列各列提供session的資訊,可被用於當一個或多個combination未知時找到session。

Session資訊
SID:SESSION標識,常用於串連其它列
SERIAL#:如果某個SID又被其它的session使用的話則此數值自增加(當一個SESSION結束,另一個SESSION開始並使用了同一個SID)。
AUDSID:審查session ID唯一性,確認它通常也用於當尋找並行查詢模式
USERNAME:當前session在oracle中的使用者名稱。

Client資訊
資料庫session被一個運行在資料庫伺服器上或從中間伺服器甚至案頭通過SQL*Net串連到資料庫的用戶端進程啟動,下列各列提供這個用戶端的資訊
OSUSER:用戶端作業系統使用者名稱
MACHINE:用戶端執行的機器
TERMINAL:用戶端啟動並執行終端
PROCESS:用戶端進程的ID
PROGRAM:用戶端執行的用戶端程式
要顯示使用者所串連PC的 TERMINAL、OSUSER,需在該PC的ORACLE.INI或Windows中設定關鍵字TERMINAL,USERNAME。

Application資訊
調用DBMS_APPLICATION_INFO包以設定一些資訊區分使用者。這將顯示下列各列。
CLIENT_INFO:DBMS_APPLICATION_INFO中設定
ACTION:DBMS_APPLICATION_INFO中設定
MODULE:DBMS_APPLICATION_INFO中設定
下列V$SESSION列同樣可能會被用到:
ROW_WAIT_OBJ#
ROW_WAIT_FILE#
ROW_WAIT_BLOCK#
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';

尋找當前被某個指定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在做些什麼。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.