Saya ingin mendapatkan pernyataan yang dieksekusi terbaru dalam database saya, bersama dengan indikator kinerja.
Karena itu, saya ingin tahu, pernyataan SQL mana yang paling intensif CPU / DISK.
oracle
monitoring
Sebastian Roth
sumber
sumber
Jawaban:
Berikut adalah SQL untuk melakukan pekerjaan itu. Terbuka untuk uji coba.
Langkah 1: Tentukan ID pemasangan & ID pengguna.
Langkah 2:
Mungkin ada beberapa Id & misalnya Id dikembalikan. Jadi terserah pilihan pengguna tentang cara menggunakan data ini di antarmuka web, dll.
sumber
in
operator dengan tuple, jadi dari contoh di atas... AND (s.inst_id, s.sid) in ( (:id1, :sid1), (:id2, :sid2), ... )
Konsol Oracles Enterprise Monitor menunjukkan banyak informasi tentang query SQL mana yang mengambil CPU maks, bottlenecks, aktivitas teratas dalam database, memblokir SQLs et al.
Untuk pendekatan historis, Anda dapat menggunakan laporan AWR Oracle untuk menunjukkan titik-titik tentang Anda.
sumber
Anda juga dapat menggunakan
V$SQL
, ada beberapa kolom yang menarikRUNTIME_MEM, EXECUTIONS, DISK_READS, SORTS, ELAPSED_TIME, SQL_FULLTEXT
dll.Ini akan memberi Anda 10 pernyataan teratas dengan disk baca (catatan - ini adalah kumulatif untuk semua eksekusi):
Jika pernyataan itu masih ada di dalam,
V$SQL_PLAN
Anda bisa mendapatkan rencana penjelasan aktual untuk kueri:Saya juga suka menggunakan
V$SQL_PLAN
karena mengandung info yang bagus. Jika Anda,statistics_level=ALL
Anda dapat menggunakanV$SQL_PLAN_STATISTICS
.sumber
Untuk SQL terbaru:
Untuk sejarah:
sumber