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_PLAN | OBJECT_NAME | SIZE_MB | COST | CARDINALITY |
SELECT STATEMENT () | 1095459 | |||
TABLE ACCESS (BY INDEX ROWID) | LARGE_TABLE | 39,81 | 1095459 | 1346683 |
INDEX (RANGE SCAN) | PK_LARGE_TABLE | 155583 | 34127055 |