select p.status
, s.id
, s.parent_id
, lpad (' ', depth - 1) || s.operation || ' ' || s.options operation
, s.object_name
, p.starts
, p.output_rows
, (select r.buffer_gets
from v$sql_monitor r
where r.key = p.key) buffer_gets
, s.cost
, s.time
, s.cardinality
, s.bytes
, s.search_columns
, s.access_predicates
, s.filter_predicates
, s.projection
, s.cpu_cost
, s.io_cost
from v$sql_plan_statistics_all s
left outer join
v$sql_plan_monitor p
on (s.sql_id = p.sql_id and s.id = p.plan_line_id)
where s.sql_id = '&&1'
order by s.id;
Noch nicht besonders elegant (meine unglückliche Liebe zu skalaren Subqueries schlägt sich einmal mehr nieder), aber - so hoffe ich zumindest - erst mal verwendbar.
Nachtrag 05.08.2011: hier noch ein Link auf die Lizenzierungsinformationen: Voraussetzung für das SQL Monitoring ist das Tuning Pack. Außerdem noch der Hinweis, dass man statt des SQL-Zugriffs auf die angegebenen v$sql_plan%-Views auch die vorformatierte Variante des dbms_sqltune-Packages (report_sql_monitor) verwenden kann - wie in meinem aktuellen Script zum Thema.
Keine Kommentare:
Kommentar veröffentlichen