天天看點

oracle幾個常用的監控視圖 ZT

v$process視圖:

v$process視圖包含目前系統oracle運作的所有程序資訊。常被用于将oracle或服務程序的作業系統程序id與資料庫session之間建立聯系。

常用列:

addr:程序對象位址

pid:oracle程序id

spid:作業系統程序id

v$process中的連接配接列

column view joined column(s)

addr v$session paddr

v$session視圖

v$session是基礎資訊視圖,用于找尋使用者sid或saddr。不過,它也有一些列會動态的變化,可用于檢查使用者。

sid:session辨別,常用于連接配接其它列

serial#:如果某個sid又被其它的session使用的話則此數值自增加(當一個session結束,另一個session開始并使用了同一個sid)。

audsid:審查session id唯一性,确認它通常也用于當尋找并行查詢模式

username:目前session在oracle中的使用者名。

status:這列用來判斷session狀态是:

    achtive:正執行sql語句(waiting for/using a resource)

    inactive:等待操作(即等待需要執行的sql語句)

    killed:被标注為删除

paddr, process addr, 通過這個字段我們可以檢視目前程序的相關資訊, 系統程序id,作業系統使用者資訊等等.

(sql_address,sql_hash_value) (prev_sql_addr,prev_hash_value) 根據這兩組字段, 我們可以查詢到目前session正在執行的sql語句的詳細

資訊.

v$sqltext視圖

v$sqltext視圖包括shared pool中sql語句的完整文本,一條sql語句可能分成多個塊被儲存于多個記錄内。

hash_value:sql語句的hash值

address:sql語句在sga中的位址

sql_text:sql文本。

piece:sql語句塊的序号

v$sqltext中的連接配接列

column     view     joined column(s)

hash_value, address  v$sql, v$session  hash_value, address

hash_value. address  v$session   sql_hash_value, sql_address

按pid檢視正在執行的程式:

select sid,program from v$session b where paddr in (select addr from v$process where spid=$pid);

按pid檢視正在執行的sql語句

select sql_text from v$sqltext where hash_value in (select sql_hash_value from v$session where  

paddr in (select addr from v"$process where spid=$pid)) order by piece;

v$session_wait視圖

這是一個尋找性能瓶頸的關鍵視圖。它提供了任何情況下session在資料庫中目前正在等待什麼(如果session目前什麼也沒在做,則顯示它最後的等待事件)。當系統存在性能問題時,本視圖可以做為一個起點指明探尋問題的方向。

v$session_wait中,每一個連接配接到執行個體的session都對應一條記錄。

sid: session辨別

event: session目前等待的事件,或者最後一次等待事件。

wait_time: session等待事件的時間(機關,百分之一秒)如果本列為0,說明session目前session還未有任何等待。

seq#: session等待事件将觸發其值自增長

p1, p2, p3: 等待事件中等待的詳細資料

p1text, p2text, p3text: 解釋說明p1,p2,p3事件

附注:

1.state字段有四種含義﹕

waiting:session正等待這個事件。

waited unknown time:由于設定了timed_statistics值為false,導緻不能得到時間資訊。表示發生了等待,但時間

很短。

wait short time:表示發生了等待,但由于時間非常短不超過一個時間機關,是以沒有記錄。

waited knnow time:如果session等待然後得到了所需資源,那麼将從waiting進入本狀态。

wait_time值也有四種含義:

值>0:最後一次等待時間(機關:10ms),目前未在等待狀态。

值=0:session正在等待目前的事件。

值=-1:最後一次等待時間小于1個統計機關,目前未在等待狀态。

值=-2:時間統計狀态未置為可用,目前未在等待狀态。

3.wait_time和second_in_wait字段值與state相關:

如果state值為waiting,那麼wait_time值無用。second_in_wait值是實際的等待時間(機關:秒)。

如果state值為wait unknow time,那麼wait_time值和second_in_wait值都無用。

如果state值為wait short time,那麼wait_time值和second_in_wait值都無用。

如果state值為waiting known time,那麼wait_time值就是實際等待時間(機關:秒),second_in_wait值無用。

v$session_wait中的連接配接列

column view joined colum

sid v$session sid

檢視session等待事件:

select sid,event from v$session_wait where event not like 'rdbms%' and event not like 'sql*net message%';

多數的session都是空閑事件如:sql*net message from client, pipe get, pmon timer等。