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