Ik vond deze SQL-instructie een nuttige plek om te beginnen (sorry, ik kan dit niet toeschrijven aan de oorspronkelijke auteur; ik heb hem ergens op internet gevonden):
SELECT * FROM
(SELECT
sql_fulltext,
sql_id,
elapsed_time,
child_number,
disk_reads,
executions,
first_load_time,
last_load_time
FROM v$sql
ORDER BY elapsed_time DESC)
WHERE ROWNUM < 10
/
Hiermee worden de belangrijkste SQL-instructies gevonden die momenteel zijn opgeslagen in de SQL-cache, gerangschikt op verstreken tijd. Verklaringen zullen na verloop van tijd uit de cache verdwijnen, dus het kan geen zin hebben om de batchtaak van gisteravond te diagnosticeren wanneer u 's middags naar uw werk gaat.
U kunt ook proberen te bestellen op disk_reads en uitvoeringen. Executies zijn handig omdat sommige slechte toepassingen dezelfde SQL-instructie veel te vaak verzenden. Deze SQL gaat ervan uit dat u bindvariabelen correct gebruikt.
Vervolgens kunt u de sql_id
en child_number
van een verklaring en voer ze in deze baby:-
SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('&sql_id', &child));
Dit toont het daadwerkelijke plan uit de SQL-cache en de volledige tekst van de SQL.