Oracle SQL History

Forfatter: Roger Morrison
Oprettelsesdato: 3 September 2021
Opdateringsdato: 18 November 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

Indhold

Fordi Oracle samler prøver og skriver alle aktive sessioner i databasen, giver en simpel forespørgsel dig mulighed for at hente SQL-udsagnshistorikken i en given tidsperiode.


Oracle skriver historiske SQL-oplysninger til v $ active_session_history (laptop med databasepost på 15,4 "bredskærmbillede af .shock fra Fotolia.com)

betydning

Oracle indsamler automatisk prøver af alle sessioner, der kører i databasen hvert sekund og gemmer information fra SQL-historien i datalogiskvisningen v $ active_session_history. Dette er en cirkulær buffer, så når den bliver fuld, gemmer Oracle automatisk sine oplysninger i data-ordbogen dba_hist_active_sess_history dataoversigt før overskrivningen af ​​den.

funktion

Du kan få en historie med SQL-sætninger udført over en periode i databasen ved at spørge disse to visninger. For eksempel returnerer følgende forespørgsel listen over de første 4000 tegn i SQL-sætninger udført mellem 9:00 og 9:05 den 30. september 2010:


vælg 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 mellem to_date ('20100930: 09: 00', 'yyyymmdd: hh24: mi')

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

union alle

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

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

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

overvejelser

Derudover genererer Oracle timers eksekveringsstatistik for SQL-sætninger i sit automatiske arbejdsbyrde. Du kan se, hvilke SQL-sætninger der kræves flere ressourcer på et givet tidspunkt, ved at spørge dba_hist_sqlstat og dba_hist_snapshot dataordlistevisninger.

effekter

For eksempel returnerer følgende forespørgsel en liste over SQL-sætninger udført mellem 9:00 og 10:00, ud over CPU-tid, forløbet tid, io_wait-tid og antal diskadgang. Outputen er bestilt af CPU-tid.


vælg 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 = (vælg særskilt 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' bestil af cpu_time

/