Saya menemukan pernyataan SQL ini sebagai tempat yang berguna untuk memulai (maaf saya tidak dapat menghubungkan ini dengan penulis aslinya; saya menemukannya di suatu tempat di internet):
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
/
Ini menemukan pernyataan SQL teratas yang saat ini disimpan dalam cache SQL yang diurutkan berdasarkan waktu yang telah berlalu. Pernyataan akan hilang dari cache seiring waktu, jadi mungkin tidak ada gunanya mencoba mendiagnosis pekerjaan batch tadi malam saat Anda mulai bekerja di tengah hari.
Anda juga dapat mencoba memesan dengan disk_reads dan eksekusi. Eksekusi berguna karena beberapa aplikasi buruk mengirim pernyataan SQL yang sama terlalu sering. SQL ini mengasumsikan Anda menggunakan variabel bind dengan benar.
Kemudian, Anda dapat mengambil sql_id
dan child_number
pernyataan dan berikan mereka ke bayi ini:-
SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('&sql_id', &child));
Ini menunjukkan rencana sebenarnya dari cache SQL dan teks lengkap SQL.