Historie Oracle SQL

Autor: Roger Morrison
Datum Vytvoření: 17 Září 2021
Datum Aktualizace: 17 Listopad 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

Obsah

Protože Oracle shromažďuje vzorky a zapisuje do databáze všechny aktivní relace, jednoduchý dotaz vám umožní načíst historii příkazů SQL za dané časové období.


Oracle píše historické informace SQL do v $ active_session_history (notebook s databázovým záznamem na 15,4 "širokoúhlém obrazu .shock z Fotolia.com)

Význam

Oracle automaticky sbírá vzorky všech relací, které běží v databázi každou sekundu, a ukládá informace z historie SQL do zobrazení datového slovníku v $ active_session_history. Jedná se o kruhovou vyrovnávací paměť, takže když se naplní, Oracle automaticky uloží své informace do zobrazení datového slovníku dba_hist_active_sess_history před přepsáním.

Funkce

Můžete získat historii příkazů SQL provedených v určitém časovém období v databázi dotazováním těchto dvou pohledů. Následující dotaz například vrátí seznam prvních 4000 znaků příkazů SQL provedených mezi 9:00 a 9:05: 30. září 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 mezi to_date ('20100930: 09: 00', 'yyyymmdd: hh24: mi')

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

unie

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

kde sample_time mezi 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

Kromě toho Oracle generuje hodinové statistiky provádění příkazů SQL v úložišti Automatic Workload Repository. Můžete zjistit, které příkazy SQL vyžadují více zdrojů v daném čase dotazem na zobrazení datového slovníku dba_hist_sqlstat a dba_hist_snapshot.

Účinky

Následující dotaz například vrátí seznam příkazů SQL provedených mezi 9:00 a 10:00, kromě času CPU, uplynulého času, času io_wait a počtu přístupů k disku. Výstup je řazen podle č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' pořadí podle cpu_time

/