select
to_char(begintime,'DD-MON-YY HH24:MI:SS') begintime,
to_char(endtime,'DD-MON-YY HH24:MI:SS') endtime,
inst,
snapid,
round((utdiff/(utdiff+itdiff+stdiff+iowtdiff+ntdiff))*100) utpct,
round((ntdiff/(utdiff+itdiff+stdiff+iowtdiff+ntdiff))*100) ntpct,
round((stdiff/(utdiff+itdiff+stdiff+iowtdiff+ntdiff))*100) stpct,
round((iowtdiff/(utdiff+itdiff+stdiff+iowtdiff+ntdiff))*100) iowtpct,
(100-
(
round((utdiff/(utdiff+itdiff+stdiff+iowtdiff+ntdiff))*100)+
round((ntdiff/(utdiff+itdiff+stdiff+iowtdiff+ntdiff))*100)+
round((stdiff/(utdiff+itdiff+stdiff+iowtdiff+ntdiff))*100)+
round((iowtdiff/(utdiff+itdiff+stdiff+iowtdiff+ntdiff))*100)
)) itpct
from
(
select begintime,endtime,(extract(Minute from endtime-begintime)*60+extract(Second from endtime-begintime)) secs,
snapid,inst,
ut-(nvl(lag(ut) over (partition by inst order by inst,snapid),0)) utdiff,
bt-(nvl(lag(bt) over (partition by inst order by inst,snapid),0)) btdiff,
it-(nvl(lag(it) over (partition by inst order by inst,snapid),0)) itdiff,
st-(nvl(lag(st) over (partition by inst order by inst,snapid),0)) stdiff,
iowt-(nvl(lag(iowt) over (partition by inst order by inst,snapid),0)) iowtdiff,
nt-(nvl(lag(nt) over (partition by inst order by inst,snapid),0)) ntdiff,
vin-(nvl(lag(vin) over (partition by inst order by inst,snapid),0)) vindiff,
vout-(nvl(lag(vout) over (partition by inst order by inst,snapid),0)) voutdiff
from
(
select sn.begin_interval_time begintime,
sn.end_interval_time EndTime,oss.snap_id SnapId,oss.instance_number Inst,
sum(decode(oss.stat_name,'USER_TIME',value,0)) ut,
sum(decode(oss.stat_name,'BUSY_TIME',value,0)) bt,
sum(decode(oss.stat_name,'IDLE_TIME',value,0)) it,
sum(decode(oss.stat_name,'SYS_TIME',value,0)) st,
sum(decode(oss.stat_name,'IOWAIT_TIME',value,0)) iowt,
sum(decode(oss.stat_name,'NICE_TIME',value,0)) nt,
sum(decode(oss.stat_name,'VM_IN_BYTES',value,0)) vin,
sum(decode(oss.stat_name,'VM_OUT_BYTES',value,0)) vout
from dba_hist_osstat oss,dba_hist_snapshot sn
where oss.dbid=&dbid
and oss.dbid = sn.dbid
and oss.instance_number = sn.instance_number
and oss.snap_id = sn.snap_id
and oss.snap_id between &bsnap - 1 and &esnap
and oss.stat_name in (
'USER_TIME',
'BUSY_TIME',
'IDLE_TIME',
'SYS_TIME',
'IOWAIT_TIME',
'NICE_TIME',
'VM_IN_BYTES',
'VM_OUT_BYTES'
)
group by sn.begin_interval_time,sn.end_interval_time,oss.snap_id,oss.instance_number
order by oss.instance_number,oss.snap_id
)
)
where snapid between &bsnap and &esnap
order by inst,snapid
/
BEGINTIME ENDTIME in SNAPID UTPCT NTPCT STPCT IOWTPCT ITPCT
-------------------- -------------------- --- ---------- ------ ------ ------ ------- ------
16-NOV-11 21:00:12 16-NOV-11 21:20:16 1 5209 1.00 .00 .00 .00 99.00
16-NOV-11 21:20:16 16-NOV-11 21:40:12 1 5210 4.00 .00 1.00 .00 95.00
16-NOV-11 21:40:12 16-NOV-11 22:00:03 1 5211 31.00 .00 2.00 .00 67.00
16-NOV-11 22:00:03 16-NOV-11 22:20:05 1 5212 58.00 .00 2.00 .00 40.00 |