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
/