Ermittlung des aktuellen Ausführungsplans eines Statements

Wenn ein SQL Statement plötzlich eine lange Laufzeit hat, so muss der Ausführungsplan dieses Statements geprüft werden. Dazu ist die Session-ID nötig. Ist diese ermittelt, so kann mit dem folgenden Statement der Ausführungsplan angezeigt werden:

SELECT lpad(' ', 4 * LEVEL) || simple_plan simple_plan, object_name, trunc(bytes /1024/1024,2) AS size_mb, cost, cardinality FROM (SELECT p.id, p.parent_id, p.child_number, object_name, operation || ' (' || options || ')' simple_plan, p.bytes, p.cost, p.cardinality FROM v$sql_plan p, v$session s WHERE p.address = hextoraw(s.sql_address) AND p.hash_value = s.sql_hash_value AND s.sid = 29) <-- SID anpassen !!! START WITH id = 0 CONNECT BY parent_id = PRIOR id AND child_number = PRIOR child_number ORDER BY child_number, id

Das Ergebnis sieht wie das folgende Beispiel aus:

SIMPLE_PLANOBJECT_NAMESIZE_MBCOSTCARDINALITY
SELECT STATEMENT ()
  1095459 
TABLE ACCESS (BY INDEX ROWID)
LARGE_TABLE39,8110954591346683
INDEX (RANGE SCAN)
PK_LARGE_TABLE 15558334127055