base took from ASH Architecture and Advanced Usage — RMOUG
select event,round (est_dbtime_ms/
CASE WHEN est_waits=0 THEN est_dbtime_ms ELSE est_waits END
,1) as est_avg_latency_ms,time#
from (
select event,round(sum(case when time_waited >0 then greatest(1,1000000/time_waited) else 0 end )) as est_waits,
sum(1000) as est_dbtime_ms ,TRUNC( SAMPLE_TIME, 'MI') - mod( EXTRACT(minute FROM SAMPLE_TIME), 1) /(24 * 60) as time#
from v$active_session_history where wait_class ='User I/O'
group by event,TRUNC( SAMPLE_TIME, 'MI') - mod( EXTRACT(minute FROM SAMPLE_TIME), 1) /(24 * 60)
) order by 3 desc;