Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

5 kueri SQL teratas yang memakan waktu di Oracle

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa kotak peralatan yang sempurna untuk pengembangan PL/SQL?

  2. Menginstal Klien Instan Oracle

  3. PL/SQL Gateway di R11i

  4. Setel ulang jumlah kumulatif?

  5. Kebijakan Patch