Kandungan
Kerana Oracle mengumpul sampel dan menulis semua sesi aktif ke pangkalan data, permintaan mudah membolehkan anda mengambil sejarah penyataan SQL untuk tempoh waktu tertentu.
Oracle menulis maklumat SQL sejarah kepada v $ active_session_history (komputer riba dengan rekod pangkalan data pada 15.4 "imej skrin lebar oleh .shock dari Fotolia.com)
Kepentingan
Oracle secara automatik mengumpul sampel semua sesi yang dijalankan dalam pangkalan data setiap saat dan menyimpan maklumat dari sejarah SQL dalam pandangan kamus data v $ active_session_history. Ini adalah penimbal bulat, jadi apabila ia menjadi penuh, Oracle secara automatik menyimpan maklumatnya dalam pandangan dba_hist_active_sess_history kamus data sebelum menukarkannya.
Fungsi
Anda boleh mendapatkan sejarah pernyataan SQL yang dilaksanakan dalam tempoh masa dalam pangkalan data dengan menanyakan kedua-dua pandangan ini. Sebagai contoh, pertanyaan berikut mengembalikan senarai 4000 huruf pertama pernyataan SQL yang dilaksanakan antara 9:00 pagi dan 9:05 pagi pada 30 September 2010:
pilih a.sql_id, dbms_lob.substr (b.sql_text, 4000,1) dari dba_hist_active_sess_history a, dba_hist_sqltext b
di mana sample_time antara to_date ('20100930: 09: 00', 'yyyymmdd: hh24: mi')
dan to_date ('20100930: 09: 01', 'yyyymmdd: hh24: mi') dan b.sql_id = a.sql_id
kesatuan semua
pilih a.sql_id, dbms_lob.substr (b.sql_text, 4000,1) dari v $ active_session_history a, v $ sqlarea b
di mana sample_time antara to_date ('20100930: 09: 00', 'yyyymmdd: hh24: mi') dan
to_date ('20100930: 09: 01', 'yyyymmdd: hh24: mi') dan b.sql_id = a.sql_id
Pertimbangan
Selain itu, Oracle menghasilkan statistik pelaksanaan setiap jam untuk penyataan SQL dalam Repositori Beban Kerja Automatiknya. Anda dapat melihat kenyataan SQL mana yang memerlukan lebih banyak sumber pada waktu tertentu dengan menanyakan pandangan dba_hist_sqlstat dan dba_hist_snapshot kamus data.
Kesan
Sebagai contoh, pertanyaan berikut mengembalikan senarai penyataan SQL yang dilaksanakan antara jam 9 pagi dan 10 pagi, sebagai tambahan kepada masa CPU, masa berlalu, masa io_wait, dan bilangan akses cakera. Pengeluaran diperintahkan oleh masa CPU.
pilih a.sql_id, dbms_lob.substr (b.sql_text, 1000,1), cpu_time_delta, elapsed_time_delta, iowait_delta, disk_reads_delta dari dba_hist_sqlstat a, dba_hist_sqltext b where a.sql_id = b.sql_id dan snap_id = (pilih snap_id yang berbeza dari dba_hist_snapshot where to_Char (begin_interval_time, 'yyyymmdd: hh24: mi') = '20100930: 09: 00' dan to_char (end_interval_time, 'yyyymmdd: hh24: mi') = '20100930: 10: 00'
/