【指令碼】快速排除空閒等待事件得到敏感的非空閒等待事件
想必大家都知道Oracle的等待時間分為兩種,一種我們稱之為“空閒等待事件”,另外一種稱之為“非空閒等待事件”。
“空閒等待事件”——作為DBA可以不用過分的關注這類等待事件。
“非空閒等待事件”——當DBA發現這一類的等待事件的時候,就要提高警惕了,因為這一類的等待事件出現後,往往說明應用程式出現了不應該有的等待問題,需要逐一的排查。
得到等待事件的動態效能檢視是v$session_wait,不過要快速的排除“空閒等待事件”得到我們關心的等待事件該如何做呢?
這裡給出我想到的三種方法。
這裡演示的資料庫版本是Oracle 10.2.0.3
sys@ora10g> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE 10.2.0.3.0 Production
TNS for Linux: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production
1.第一種方法
如果資料庫中我們部署過statspack,那我們會得到一個比較有趣的檢視perfstat.stats$idle_event,這個檢視彙總了所有的空閒等待事件,我們排除這個檢視中的內容後就可以得到我們關心的內容了。
指令碼如下:
select sid,p1,p1raw,p2,p2raw,p3,p3raw,wait_time,seconds_in_wait,state,event
from v$session_wait
where event not in (select event from perfstat.stats$idle_event)
2.第二種方法
如果沒有部署statspack,可以透過系統的另外一個檢視得到近似的空閒等待事件的列表,這個檢視就是v$event_name,當wait_class欄位為“Idle”時,就可以得到空閒等待事件。
指令碼如下:
select sid,p1,p1raw,p2,p2raw,p3,p3raw,wait_time,seconds_in_wait,state,event
from v$session_wait
where event not in (select name from v$event_name where wait_class='Idle')
;
3.第三種方法
這種方法是比較“笨”的方法,不過也非常的有效,就是將我們知道的空閒等待事件統統的列到指令碼里。
指令碼如下:
select sid,p1,p1raw,p2,p2raw,p3,p3raw,wait_time,seconds_in_wait,state,event
from v$session_wait
where event not in (
'AQ Proxy Cleanup Wait',
'ASM background timer',
'DIAG idle wait',
'EMON idle wait',
'KSV master wait',
'LNS ASYNC archive log',
'LNS ASYNC dest activation',
'LNS ASYNC end of log',
'LogMiner: client waiting for transaction',
'LogMiner: slave waiting for activate message',
'LogMiner: wakeup event for builder',
'LogMiner: wakeup event for preparer',
'LogMiner: wakeup event for reader',
'Null event',
'PX Deq Credit: need buffer',
'PX Deq Credit: send blkd',
'PX Deq: Execute Reply',
'PX Deq: Execution Msg',
'PX Deq: Par Recov Execute',
'PX Deq: Signal ACK',
'PX Deq: Table Q Normal',
'PX Deq: Table Q Sample',
'PX Deque wait',
'PX Idle Wait',
'Queue Monitor Shutdown Wait',
'Queue Monitor Slave Wait',
'Queue Monitor Wait',
'SQL*Net message from client',
'SQL*Net message to client',
'SQL*Net more data from client',
'STREAMS apply coord waiting for slave message',
'STREAMS apply slave idle wait',
'STREAMS apply slave waiting for coord message',
'STREAMS capture process filter callback wait for ruleset',
'STREAMS fetch slave waiting for txns',
'STREAMS waiting for subscribers to catch up',
'Streams AQ: RAC qmn coordinator idle wait',
'Streams AQ: deallocate messages from Streams Pool',
'Streams AQ: delete acknowledged messages',
'Streams AQ: qmn coordinator idle wait',
'Streams AQ: qmn slave idle wait',
'Streams AQ: waiting for messages in the queue',
'Streams AQ: waiting for time management or cleanup tasks',
'Streams fetch slave: waiting for txns',
'class slave wait',
'client message',
'dispatcher timer',
'gcs for action',
'gcs remote message',
'ges remote message',
'i/o slave wait',
'jobq slave wait',
'knlqdeq',
'lock manager wait for remote message',
'master wait',
'null event',
'parallel query dequeue',
'pipe get',
'pmon timer',
'queue messages',
'rdbms ipc message',
'slave wait',
'smon timer',
'virtual circuit status',
'wait for activate message',
'wait for unread message on broadcast channel',
'wakeup event for builder',
'wakeup event for preparer',
'wakeup event for reader',
'wakeup time manager')
/
-- The End --
“空閒等待事件”——作為DBA可以不用過分的關注這類等待事件。
“非空閒等待事件”——當DBA發現這一類的等待事件的時候,就要提高警惕了,因為這一類的等待事件出現後,往往說明應用程式出現了不應該有的等待問題,需要逐一的排查。
得到等待事件的動態效能檢視是v$session_wait,不過要快速的排除“空閒等待事件”得到我們關心的等待事件該如何做呢?
這裡給出我想到的三種方法。
這裡演示的資料庫版本是Oracle 10.2.0.3
sys@ora10g> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE 10.2.0.3.0 Production
TNS for Linux: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production
1.第一種方法
如果資料庫中我們部署過statspack,那我們會得到一個比較有趣的檢視perfstat.stats$idle_event,這個檢視彙總了所有的空閒等待事件,我們排除這個檢視中的內容後就可以得到我們關心的內容了。
指令碼如下:
select sid,p1,p1raw,p2,p2raw,p3,p3raw,wait_time,seconds_in_wait,state,event
from v$session_wait
where event not in (select event from perfstat.stats$idle_event)
2.第二種方法
如果沒有部署statspack,可以透過系統的另外一個檢視得到近似的空閒等待事件的列表,這個檢視就是v$event_name,當wait_class欄位為“Idle”時,就可以得到空閒等待事件。
指令碼如下:
select sid,p1,p1raw,p2,p2raw,p3,p3raw,wait_time,seconds_in_wait,state,event
from v$session_wait
where event not in (select name from v$event_name where wait_class='Idle')
;
3.第三種方法
這種方法是比較“笨”的方法,不過也非常的有效,就是將我們知道的空閒等待事件統統的列到指令碼里。
指令碼如下:
select sid,p1,p1raw,p2,p2raw,p3,p3raw,wait_time,seconds_in_wait,state,event
from v$session_wait
where event not in (
'AQ Proxy Cleanup Wait',
'ASM background timer',
'DIAG idle wait',
'EMON idle wait',
'KSV master wait',
'LNS ASYNC archive log',
'LNS ASYNC dest activation',
'LNS ASYNC end of log',
'LogMiner: client waiting for transaction',
'LogMiner: slave waiting for activate message',
'LogMiner: wakeup event for builder',
'LogMiner: wakeup event for preparer',
'LogMiner: wakeup event for reader',
'Null event',
'PX Deq Credit: need buffer',
'PX Deq Credit: send blkd',
'PX Deq: Execute Reply',
'PX Deq: Execution Msg',
'PX Deq: Par Recov Execute',
'PX Deq: Signal ACK',
'PX Deq: Table Q Normal',
'PX Deq: Table Q Sample',
'PX Deque wait',
'PX Idle Wait',
'Queue Monitor Shutdown Wait',
'Queue Monitor Slave Wait',
'Queue Monitor Wait',
'SQL*Net message from client',
'SQL*Net message to client',
'SQL*Net more data from client',
'STREAMS apply coord waiting for slave message',
'STREAMS apply slave idle wait',
'STREAMS apply slave waiting for coord message',
'STREAMS capture process filter callback wait for ruleset',
'STREAMS fetch slave waiting for txns',
'STREAMS waiting for subscribers to catch up',
'Streams AQ: RAC qmn coordinator idle wait',
'Streams AQ: deallocate messages from Streams Pool',
'Streams AQ: delete acknowledged messages',
'Streams AQ: qmn coordinator idle wait',
'Streams AQ: qmn slave idle wait',
'Streams AQ: waiting for messages in the queue',
'Streams AQ: waiting for time management or cleanup tasks',
'Streams fetch slave: waiting for txns',
'class slave wait',
'client message',
'dispatcher timer',
'gcs for action',
'gcs remote message',
'ges remote message',
'i/o slave wait',
'jobq slave wait',
'knlqdeq',
'lock manager wait for remote message',
'master wait',
'null event',
'parallel query dequeue',
'pipe get',
'pmon timer',
'queue messages',
'rdbms ipc message',
'slave wait',
'smon timer',
'virtual circuit status',
'wait for activate message',
'wait for unread message on broadcast channel',
'wakeup event for builder',
'wakeup event for preparer',
'wakeup event for reader',
'wakeup time manager')
/
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-614361/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 故障排除 | enq:TX - index contention等待事件ENQIndex事件
- windows計劃任務的“等待空閒時間”已棄用Windows
- Solidity事件,等待事件Solid事件
- 【TUNE_ORACLE】等待事件之等待事件類別Oracle事件
- Selenium等待事件Waits事件AI
- latch等待事件彙總事件
- Latch free等待事件(轉)事件
- gc cr request等待事件GC事件
- 【等待事件】library cache pin事件
- 【等待事件】log file sync事件
- read by other session等待事件Session事件
- log file sync等待事件事件
- ORACLE 常見等待事件Oracle事件
- [20191125]探究等待事件的本源.txt事件
- 【TUNE_ORACLE】等待事件之IO等待“direct path write”Oracle事件
- 【TUNE_ORACLE】等待事件之IO等待“read by other session”Oracle事件Session
- 【TUNE_ORACLE】等待事件之日誌等待“log file sync”Oracle事件
- 【TUNE_ORACLE】等待事件之IO等待“direct path read”Oracle事件
- Oracle常見UNDO等待事件Oracle事件
- LightDB/PostgreSQL等待事件 Lock transactionidSQL事件
- Cell smart table scan等待事件事件
- openGauss/MOGDB與PG等待事件事件
- Latch free等待事件二(轉)事件
- read by other session 等待事件分析Session事件
- 【等待事件】virtual circuit next request事件UI
- 【等待事件】standby query scn advance事件
- 【等待事件】db file sequential read事件
- 【等待事件】db file scattered read事件
- Latch free等待事件四(轉)事件
- Latch free等待事件三(轉)事件
- db file scattered read等待事件事件
- db file sequential read等待事件事件
- latch:library cache lock等待事件事件
- 【TUNE_ORACLE】等待事件之日誌等待“log file parallel write”Oracle事件Parallel
- 【TUNE_ORACLE】等待事件之IO等待“direct path write temp”Oracle事件
- 【TUNE_ORACLE】等待事件之IO等待“db file sequential read”Oracle事件
- 【TUNE_ORACLE】等待事件之IO等待“db file parallel write”Oracle事件Parallel
- 【TUNE_ORACLE】等待事件之IO等待“db file scattered read”Oracle事件
- 白糖 近期等待空單機會