Oracle SQL History

Forfatter: Roger Morrison
Opprettelsesdato: 5 September 2021
Oppdater Dato: 1 Juli 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

Innhold

Fordi Oracle samler prøver og skriver alle aktive økter i databasen, lar en enkel spørring deg hente SQL-setningshistorikken for en gitt tidsperiode.


Oracle skriver historisk SQL-informasjon til v $ active_session_history (bærbar PC med databaseopptak på 15,4-tommers bredskjermbilde av .shock fra Fotolia.com)

betydning

Oracle samler automatisk inn prøver av alle økter som kjører i databasen hvert sekund, og lagrer informasjon fra SQL-historikken i datalogbokvisningen v $ active_session_history. Dette er en sirkulær buffer, så når den blir full, lagrer Oracle sin informasjon automatisk i data-ordboken dba_hist_active_sess_history data før du skriver den over.

funksjon

Du kan få en historie med SQL-setninger utført over en tidsperiode i databasen ved å spørre disse to visningene. For eksempel returnerer følgende spørring listen over de første 4000 tegnene i SQL-setningene utført mellom 9:00 og 9:05 den 30. september 2010:


velg a.sql_id, dbms_lob.substr (b.sql_text, 4000,1) fra dba_hist_active_sess_history a, dba_hist_sqltext b

hvor sample_time mellom to_date ('20100930: 09: 00', 'yyyymmdd: hh24: mi')

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

forening alle

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

hvor sample_time mellom to_date ('20100930: 09: 00', 'yyyymmdd: hh24: mi') og

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

betraktninger

I tillegg genererer Oracle timers eksekveringsstatistikk for SQL-setninger i sitt automatiske arbeidsbelastningsregister. Du kan se hvilke SQL-setninger som krever flere ressurser på et gitt tidspunkt ved å spørre dba_hist_sqlstat og dba_hist_snapshot dataloggens visninger.

effekter

For eksempel returnerer følgende spørring en liste over SQL-setninger utført mellom 9:00 og 10:00, i tillegg til CPU-tid, forløpt tid, io_wait-tid og antall disktilganger. Utgangen er bestilt av CPU-tid.


velg a.sql_id, dbms_lob.substr (b.sql_text, 1000,1), cpu_time_delta, elapsed_time_delta, iowait_delta, disk_reads_delta fra dba_hist_sqlstat a, dba_hist_sqltext b hvor a.sql_id = b.sql_id og snap_id = (velg distink snap_id fra dba_hist_snapshot hvor to_Char (start_interval_time, 'yyyymmdd: hh24: mi') = '20100930: 09: 00' og to_char (end_interval_time, 'yyyymmdd: hh24: mi') = '20100930: 10: 00' rekkefølge av cpu_time

/