Se não me engano, já escrevi um atigo com esta consulta, mas vamos lá…
Select s.address, s.last_load_time, s.first_load_time,
TO_CHAR ((s.cpu_time / s.executions) / 1000, '999,999,999.9999') tempo_cpu,
TO_CHAR ((s.elapsed_time / s.executions) / 1000, '999,999,999.9999') tempo_decorrido, s.executions,
p.object_owner, p.object_name, p.cost, p.cardinality, p.bytes, p.io_cost, p.filter_predicates,
w.active_time, w.estimated_optimal_size, w.last_memory_used, w.total_executions, w.active_time
From v$sql_plan p,
v$sql s,
v$sql_workarea w
Where p.address = s.address
And p.address = w.address (+)
And p.hash_value = w.hash_value (+)
And p.id = w.operation_id (+)
And p.object_owner not like '%SYS%'
And SUBSTR (last_load_time, 1, 10) = TO_CHAR (sysdate, 'yyyy-mm-dd')
And p.filter_predicates is not null
And s.executions > 1
And (s.elapsed_time / 1000) > 1
Order by tempo_decorrido desc --(cost + cardinality) desc
Creio que isto vai te dar uma grande ajuda…