Oracle SQL History

Pengarang: Roger Morrison
Tarikh Penciptaan: 4 September 2021
Tarikh Kemas Kini: 1 Julai 2024
Anonim
SQL History tips and tricks in Oracle SQL Developer? || Oracle SQL Developer Tutorial
Video.: SQL History tips and tricks in Oracle SQL Developer? || Oracle SQL Developer Tutorial

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'

/