História Oracle SQL

Autor: Roger Morrison
Dátum Stvorenia: 18 September 2021
Dátum Aktualizácie: 1 V Júli 2024
Anonim
História Oracle SQL - Články
História Oracle SQL - Články

Obsah

Pretože Oracle zhromažďuje vzorky a zapisuje všetky aktívne relácie do databázy, jednoduchý dotaz vám umožňuje načítať históriu príkazov SQL za dané časové obdobie.


Oracle píše historické informácie SQL do v $ active_session_history (laptop s databázovým záznamom na 15,4 "širokouhlom obraze .shock z Fotolia.com)

dôležitosť

Oracle automaticky zhromažďuje vzorky všetkých relácií, ktoré bežia v databáze každú sekundu a ukladá informácie z histórie SQL v zobrazení dátového slovníka v $ active_session_history. Toto je kruhová vyrovnávacia pamäť, takže keď sa naplní, Oracle automaticky uloží svoje informácie do zobrazenia dátového slovníka dba_hist_active_sess_history pred jeho prepísaním.

funkcie

Môžete získať históriu príkazov SQL vykonaných v určitom časovom období v databáze dotazovaním týchto dvoch zobrazení. Napríklad nasledujúci dotaz vráti zoznam prvých 4000 znakov príkazov SQL vykonaných medzi 9.00 a 9.00 hod. 30. septembra 2010:


vyberte a.sql_id, dbms_lob.substr (b.sql_text, 4000,1) z dba_hist_active_sess_history a, dba_hist_sqltext b

kde sample_time medzi to_date ('20100930: 09: 00', 'yyyymmdd: hh24: mi')

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

únie

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

kde sample_time medzi to_date ('20100930: 09: 00', 'yyyymmdd: hh24: mi') a

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

úvahy

Okrem toho Oracle generuje hodinovú štatistiku vykonávania príkazov SQL vo svojom úložisku Automatic Workload Repository. Môžete zistiť, ktoré príkazy SQL vyžadujú v určitom čase viac prostriedkov, a to tak, že zadáte dotaz dba_hist_sqlstat a dba_hist_snapshot.

účinky

Napríklad nasledujúci dotaz vráti zoznam príkazov SQL vykonaných medzi 9:00 a 10:00, okrem času CPU, uplynutého času, času io_wait a počtu prístupov na disk. Výstup je usporiadaný podľa času CPU.


vyberte a.sql_id, dbms_lob.substr (b.sql_text, 1000,1), cpu_time_delta, elapsed_time_delta, iowait_delta, disk_reads_delta z dba_hist_sqlstat a, dba_hist_sqltext b kde a.sql_id = b.sql_id a snap_id = (vyberte odlišný snap_id z dba_hist_snapshot, kde to_Char (begin_interval_time, 'yyyymmdd: hh24: mi') = '20100930: 09: 00' a to_char (end_interval_time, 'yyyymmdd: hh24: mi') = '20100930: 10: 00' poradie podľa cpu_time

/