基於等待事件的效能診斷(轉)
等待事件(wait event)是oracle核心程式碼的一個命名部分,有兩種型別的等待事件:空閒事件(idle event)與非空閒事件(non-idle event),空閒事件指oracle正在等待某種工作,常見的空閒等待事件:client message、null event、pipe get、pmon/smon timer、rdbms rpc message及sql*net等;非空閒等待事件:buffer busy waits、db file scattered read、db file sequential read、enqueue、free buffer waits、latch free、log file sync、log file paralle write等。
什麼是瓶頸?一旦熟悉了系統的等待事件,就能夠把握問題的關鍵,並能夠用相應的方法去處理阻塞系統的瓶頸,一定不要隨意的進行優化,否則一波不息一波又起,可以通過v$system_event獲取系統總的等待情況,然後通過v$session_event檢視系統中session的等待情況,最後通過v$session_wait定位瓶頸物件。v$session_wait是會話級的,它包含session的實時資訊,最重要的是:它顯示了等待事件與相應資源的更深入資訊,可確定出產生瓶頸的型別及其物件。
v$session_wait的p1、p2、p3告訴我們等待事件的具體含義,如果wait event是db file scattered read,p1=file_id/p2=block_id/p3=blocks,然後通過dba_extents即可確定出熱點物件;如果是latch free的話,p2為閂鎖號,它指向v$latch。
--求等待事件及其對應的latch
col event format a32
col name format a32
select sid,event,p1 as file_id, p2 as "block_id/latch", p3 as blocks,l.name
from v$session_wait sw,v$latch l
where event not like '%SQL%' and event not like '%rdbms%'
and event not like '%mon%' and sw.p2 = l.latch#(+);
--求等待事件及其熱點物件
col owner format a18
col segment_name format a32
col segment_type format a32
select owner,segment_name,segment_type
from dba_extents
where file_id = &file_id and &block_id between block_id
and block_id + &blocks - 1;
--綜合以上兩條sql,同時顯示latch及熱點物件(速度較慢)
select sw.sid,event,l.name,de.segment_name
from v$session_wait sw,v$latch l,dba_extents de
where event not like '%SQL%' and event not like '%rdbms%'
and event not like '%mon%' and sw.p2 = l.latch#(+) and sw.p1 = de.file_id(+) and p2 between de.block_id and de.block_id + de.blocks - 1;
--如果是非空閒等待事件,通過等待會話的sid可以求出該會話在執行的sql
select sql_text
from v$sqltext_with_newlines st,v$session se
where st.address=se.sql_address and st.hash_value=se.sql_hash_value
and se.sid =&wait_sid order by piece;
通過等待事件找出系統中消耗資源較嚴重的sql,是dba進行系統診斷的手段之一。只是過程稍嫌煩瑣,由於session是動態的、瞬息萬變、不可捕獲,當你想捕獲時,該session可能已經釋放,但這種捕獲很有針對性;也可以通過對v$sql或v$sqlarea進行過濾,找出存在效能問題的sql,長時間地對v$sql進行監控,並對捕獲的sql進行優化處理,可以在很大程度上解決系統的效能問題。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/756652/viewspace-242264/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基於等待事件的效能診斷事件
- 等待事件效能診斷方法事件
- 深入淺出等待事件和效能診斷01事件
- 深入淺出等待事件和效能診斷02事件
- 深入淺出等待事件和效能診斷04事件
- 深入淺出等待事件和效能診斷05事件
- 轉_診斷latch:shared pool等待事件事件
- 等待事件快速定位診斷事件
- 深入淺出等待事件和效能診斷記載03事件
- latch free 等待事件的診斷語句事件
- MySQL使用event等待事件進行資料庫效能診斷MySql事件資料庫
- 如何診斷等待事件 enq: HW - contention事件ENQ
- 索引分裂造成的index contention等待事件的診斷索引Index事件
- Oracle診斷事件列表(轉)Oracle事件
- db file async I/O submit等待事件的故障診斷MIT事件
- ORACLE 10G 等待介面診斷(轉)Oracle 10g
- ORACLE診斷事件Oracle事件
- 診斷事件(1)事件
- latch 相關效能問題診斷: latch: row cache objects等待事件導致CPU負載高Object事件負載
- 遭遇cursor:pin x等待事件定位阻塞會話診斷過程事件會話
- Oracle診斷事件列表Oracle事件
- ORACLE診斷事件(zt)Oracle事件
- ORACLE診斷事件的總結Oracle事件
- 基於 PTS 壓測輕鬆玩轉問題診斷
- oracle 效能診斷工具Oracle
- oracle 事件診斷詳細Oracle事件
- 【效能調整】等待事件(三) 常見等待事件(一)事件
- 【效能調整】等待事件(四) 常見等待事件(二)事件
- 案例 - EBS SQL效能診斷SQL
- Oracle效能診斷藝術Oracle
- Oracle所有診斷事件列表eventsOracle事件
- Oracle診斷事件例項(一)Oracle事件
- oracle 10053診斷事件Oracle事件
- 【效能調整】等待事件(一)事件
- 【效能調整】等待事件(二)事件
- 【效能調整】等待事件(五)log相關等待事件
- Oracle效能最佳化之診斷latch競爭(轉)Oracle
- mysql資料庫效能診斷MySql資料庫