學習動態性能表(5)--v$session

學習動態性能表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狀態是:操作系統

  • Achtive:正執行SQL語句(waiting for/using a resource)
  • Inactive:等待操做(即等待須要執行的SQL語句)
  • Killed:被標註爲刪除

 

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

 

Session信息terminal

  • 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$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在作些什麼。

相關文章
相關標籤/搜索