Istoric SQL Oracle

Autor: Roger Morrison
Data Creației: 27 Septembrie 2021
Data Actualizării: 8 Mai 2024
Anonim
BT24 - Istoric card
Video: BT24 - Istoric card

Conţinut

Deoarece Oracle colectează mostre și scrie toate sesiunile active în baza de date, o interogare simplă vă permite să preluați istoricul instrucțiunilor SQL pentru o anumită perioadă de timp.


Oracle scrie informații istorice SQL la v $ active_session_history (laptop cu înregistrări baze de date pe ecran de 15,4 "pe ecran lat de .shock de la Fotolia.com)

importanță

Oracle colectează automat eșantioane din toate sesiunile care se execută în bază de date în fiecare secundă și salvează informații din istoricul SQL în afișarea dicționarului de date v $ active_session_history. Acesta este un tampon circular, astfel că, atunci când devine plin, Oracle își stochează automat informațiile din vizualizarea dicționarului de date dba_hist_active_sess_history înainte de al suprascrie.

funcție

Puteți obține o istorie a instrucțiunilor SQL executate într-o perioadă de timp în baza de date prin interogarea acestor două vizualizări. De exemplu, următoarea interogare returnează lista primelor 4000 de caractere ale instrucțiunilor SQL executate între 9:00 AM și 9:05 AM pe 30 septembrie 2010:


selectați a.sql_id, dbms_lob.substr (b.sql_text, 4000,1) din dba_hist_active_sess_history a, dba_hist_sqltext b

unde sample_time între to_date ('20100930: 09: 00', 'yyyymmdd: hh24: mi')

și to_date ('20100930: 09: 01', 'yyyymmdd: hh24: mi') și b.sql_id = a.sql_id

uniune tot

selectați a.sql_id, dbms_lob.substr (b.sql_text, 4000,1) din v $ active_session_history a, v $ sqlarea b

unde sample_time între to_date ('20100930: 09: 00', 'yyyymmdd: hh24: mi') și

to_date ('20100930: 09: 01', 'yyyymmdd: hh24: mi') și b.sql_id = a.sql_id

consideraţii

În plus, Oracle generează statistici orare de execuție pentru instrucțiunile SQL în Repositorul său de încărcare automată. Puteți vedea care instrucțiuni SQL necesită mai multe resurse la o anumită oră dată prin interogarea vizualizărilor dicționarului de date dba_hist_sqlstat și dba_hist_snapshot.


efecte

De exemplu, următoarea interogare returnează o listă de instrucțiuni SQL executate între 9am și 10am, în plus față de timpul CPU, timpul scurs, timpul io_wait și numărul de accesări pe disc. Ieșirea este ordonată după ora procesorului.

selectați a.sql_id, dbms_lob.substr (b.sql_text, 1000,1), cpu_time_delta, elapsed_time_delta, iowait_delta, disc_reads_delta din dba_hist_sqlstat a, dba_hist_sqltext b unde a.sql_id = b.sql_id și snap_id = (selectați snap_id distinct din dba_hist_snapshot unde to_Char (start_interval_time, 'yyyymmdd: hh24: mi') = '20100930: 09: 00' și to_char (end_interval_time, 'yyyymmdd: hh24: mi') = '20100930: 10:

/