Average wait time last N days for M event
SET LINESIZE 230
SET PAGESIZE 9999
SET VERIFY OFF
select
etime,
event_name,
round((time_ms_end-time_ms_beg)/nullif(count_end-count_beg,0),1) avg_ms
from (
select
s.dbid,
to_char(s.BEGIN_INTERVAL_TIME,'DD/MM/YY HH24:MI') btime,
to_char(s.END_INTERVAL_TIME,'DD/MM/YY HH24:MI') etime,
e.event_name,
total_waits count_end,
time_waited_micro/1000 time_ms_end,
Lag (e.time_waited_micro/1000)
OVER( PARTITION BY e.event_name ORDER BY s.snap_id) time_ms_beg,
Lag (e.total_waits)
OVER( PARTITION BY e.event_name ORDER BY s.snap_id) count_beg
from
DBA_HIST_SYSTEM_EVENT e,
DBA_HIST_SNAPSHOT s
where
s.snap_id=e.snap_id
and s.begin_interval_time>=trunc(sysdate) - &days_back and s.end_interval_time <= sysdate
and upper(e.event_name) like upper('%&wait_event_name%')
and s.dbid=e.dbid
)
where round((time_ms_end-time_ms_beg)/nullif(count_end-count_beg,0),1) > 10
order by btime, event_name
/
Critical wait events
SET LINESIZE 230
SET PAGESIZE 9999
SET VERIFY OFF
select
etime,
event_name,
round((time_ms_end-time_ms_beg)/nullif(count_end-count_beg,0),1) avg_ms
from (
select
s.dbid,
to_char(s.BEGIN_INTERVAL_TIME,'DD/MM/YY HH24:MI') btime,
to_char(s.END_INTERVAL_TIME,'DD/MM/YY HH24:MI') etime,
e.event_name,
total_waits count_end,
time_waited_micro/1000 time_ms_end,
Lag (e.time_waited_micro/1000)
OVER( PARTITION BY e.event_name ORDER BY s.snap_id) time_ms_beg,
Lag (e.total_waits)
OVER( PARTITION BY e.event_name ORDER BY s.snap_id) count_beg
from
DBA_HIST_SYSTEM_EVENT e,
DBA_HIST_SNAPSHOT s
where
s.snap_id=e.snap_id
and s.begin_interval_time>=trunc(sysdate) - &days_back and s.end_interval_time <= sysdate
and e.event_name in (
'log file sync',
'log file parallel write',
'buffer busy waits',
'db file sequential read',
'enq: TX - row lock contention',
'enq: SQ - contention',
'log file switch (checkpoint incomplete)',
'log file switch completion'
)
and s.dbid=e.dbid
)
where round((time_ms_end-time_ms_beg)/nullif(count_end-count_beg,0),1) > &avg_wait_ms
order by btime, event_name
/