Cronologia SQL Oracle

Autore: Roger Morrison
Data Della Creazione: 27 Settembre 2021
Data Di Aggiornamento: 1 Novembre 2024
Anonim
Cronología base de datos
Video: Cronología base de datos

Contenuto

Poiché Oracle raccoglie campioni e scrive tutte le sessioni attive nel database, una semplice query consente di recuperare la cronologia delle istruzioni SQL per un determinato periodo di tempo.


Oracle scrive informazioni SQL storiche su v $ active_session_history (portatile con record di database su immagine wide screen da 15,4 "di .shock da Fotolia.com)

importanza

Oracle raccoglie automaticamente campioni di tutte le sessioni eseguite nel database ogni secondo e salva le informazioni dalla cronologia SQL nella vista del dizionario dati v $ active_session_history. Questo è un buffer circolare, quindi quando si riempie, Oracle memorizza automaticamente le sue informazioni nella vista del dizionario dati dba_hist_active_sess_history prima di sovrascriverlo.

funzione

È possibile ottenere una cronologia delle istruzioni SQL eseguite in un periodo di tempo nel database interrogando queste due viste. Ad esempio, la seguente query restituisce l'elenco dei primi 4000 caratteri di istruzioni SQL eseguite tra le 9:00 e le 9:05 del 30 settembre 2010:


selezionare a.sql_id, dbms_lob.substr (b.sql_text, 4000,1) da dba_hist_active_sess_history a, dba_hist_sqltext b

dove sample_time tra to_date ('20100930: 09: 00', 'yyyymmdd: hh24: mi')

e to_date ('20100930: 09: 01', 'aaaammgg: hh24: mi') e b.sql_id = a.sql_id

unione tutti

selezionare a.sql_id, dbms_lob.substr (b.sql_text, 4000,1) da v $ active_session_history a, v $ sqlarea b

dove sample_time tra to_date ('20100930: 09: 00', 'yyyymmdd: hh24: mi') e

to_date ('20100930: 09: 01', 'aaaammgg: hh24: mi') e b.sql_id = a.sql_id

considerazioni

Inoltre, Oracle genera statistiche di esecuzione oraria per istruzioni SQL nel suo repository di carico di lavoro automatico. È possibile vedere quali istruzioni SQL richiedono più risorse in un dato momento interrogando le viste del dizionario dati dba_hist_sqlstat e dba_hist_snapshot.

effetti

Ad esempio, la seguente query restituisce un elenco di istruzioni SQL eseguite tra le 9:00 e le 10:00, oltre al tempo di CPU, al tempo trascorso, all'ora di io_wait e al numero di accessi al disco. L'output è ordinato in base al tempo della CPU.


selezionare a.sql_id, dbms_lob.substr (b.sql_text, 1000,1), cpu_time_delta, elapsed_time_delta, iowait_delta, disk_reads_delta da dba_hist_sqlstat a, dba_hist_sqltext b dove a.sql_id = b.sql_id e snap_id = (selezionare snap_id distinto da dba_hist_snapshot dove to_Char (begin_interval_time,'yyyymmdd: hh24: mi ') =' 20100930: 09: 00 'e to_char (end_interval_time,' yyyymmdd: hh24: mi ') =' 20100930: 10: 00 'ordina per cpu_time

/