select case wait_rank when 1 then inst_id end "Inst Num",
case wait_rank when 1 then snap_id end "Snap Id",
case wait_rank when 1 then begin_snap end "Begin Snap",
case wait_rank when 1 then end_snap end "End Snap",
event_name "Event",
total_waits "Waits",
time_waited "Time(s)",
round((time_waited/total_waits)*1000) "Avg wait(ms)",
round((time_waited/db_time)*100, 2) "% DB time",
substr(wait_class, 1, 15) "Wait Class"
from (
select
inst_id,
snap_id, to_char(begin_snap, 'DD-MM-YY hh24:mi:ss') begin_snap,
to_char(end_snap, 'hh24:mi:ss') end_snap,
event_name,
wait_class,
total_waits,
time_waited,
dense_rank() over (partition by inst_id, snap_id order by time_waited desc)-1 wait_rank,
max(time_waited) over (partition by inst_id, snap_id) db_time
from (
select
s.instance_number inst_id,
s.snap_id,
s.begin_interval_time begin_snap,
s.end_interval_time end_snap,
event_name,
wait_class,
total_waits-lag(total_waits, 1, total_waits) over
(partition by s.startup_time, s.instance_number, stats.event_name order by s.snap_id) total_waits,
time_waited-lag(time_waited, 1, time_waited) over
(partition by s.startup_time, s.instance_number, stats.event_name order by s.snap_id) time_waited,
min(s.snap_id) over (partition by s.startup_time, s.instance_number, stats.event_name) min_snap_id
from (
select dbid, instance_number, snap_id, event_name, wait_class, total_waits_fg total_waits, round(time_waited_micro_fg/1000000, 2) time_waited
from dba_hist_system_event
where wait_class not in ('Idle', 'System I/O')
union all
select dbid, instance_number, snap_id, stat_name event_name, null wait_class, null total_waits, round(value/1000000, 2) time_waited
from dba_hist_sys_time_model
where stat_name in ('DB CPU', 'DB time')
) stats, dba_hist_snapshot s
where stats.instance_number=s.instance_number
and stats.snap_id=s.snap_id
and stats.dbid=s.dbid
and s.dbid=3870213301
and s.instance_number=1
and stats.snap_id between 190 and 195
) where snap_id > min_snap_id and nvl(total_waits,1) > 0
) where event_name!='DB time' and wait_rank <= 5
order by inst_id, snap_id;
Inst Snap Begin Snap End Snap Event Waits Time(s) Avg wait(ms) % DB time Wait Class
---- ----- ----------------- -------- --------------------------- ---------- ---------- ------------ ---------- ---------------
1 191 20-02-14 14:10:10 14:20:10 cell smart table scan 631829 9569.43 15 79.03 User I/O
DB CPU 1202.09 9.93
direct path read temp 66074 1006.82 15 8.32 User I/O
PX Deq: Slave Session Stats 11730 429.91 37 3.55 Other
latch: shared pool 28134 162.47 6 1.34 Concurrency
1 192 20-02-14 14:20:10 14:30:11 cell smart table scan 1391832 4620.11 3 67.39 User I/O
DB CPU 1017.78 14.85
direct path read temp 76329 977.95 13 14.26 User I/O
PX Deq: Slave Session Stats 25043 401.53 16 5.86 Other
latch free 38836 214.1 6 3.12 Other
1 193 20-02-14 14:30:11 14:40:14 cell smart table scan 2448539 11075.29 5 79.3 User I/O
DB CPU 1529.93 10.95
PX Deq: Slave Session Stats 44242 1520.01 34 10.88 Other
direct path read temp 77583 985.65 13 7.06 User I/O
latch free 67518 376.52 6 2.7 Other
1 194 20-02-14 14:40:14 14:50:15 direct path read temp 99224 857.3 9 71.63 User I/O
DB CPU 328.78 27.47
name-service call wait 91 5.4 59 0.45 Other
PX Deq: Slave Session Stats 83 0.17 2 0.01 Other
direct path write 194 0.12 1 0.01 User I/O
1 195 20-02-14 14:50:15 15:00:18 DB CPU 1188.84 98.15
log switch/archive 1 10.01 10010 0.83 Other
direct path read temp 775 3.96 5 0.33 User I/O
cell smart table scan 1393 1.1 1 0.09 User I/O
cell single block physical 148 0.9 6 0.07 User I/O
read
25 rows selected
Thursday, February 20, 2014
AWR Top 5 Timed Foreground Events
I've noticed that people post how to get AWR Top 5 Timed Foreground Events other a range of snapshots using a SQL query from time to time. Since this is something I've done for years here is the version of the SQL I use in case somebody finds it useful:
Subscribe to:
Post Comments (Atom)
It works! Thank you :)
ReplyDeleteAwesome, thanks a lot
ReplyDeleteNice query. Why are you excluding the 'System I/O' wait class and not just the 'Idle' one ?
ReplyDeleteThe System I/O, with rare exceptions, is done by the background processes. Since the query displays foreground events (the same way AWR does) it excludes it.
Delete