Fordi Oracle prøver og registrerer hver aktive økten kjører på databasen, gjør en enkel spørring det mulig å få historien til SQL-setninger innenfor en gitt tidsramme. Betydning
Oracle automatisk prøver hver økt kjører på databasen hvert sekund , og poster SQL historie informasjon i v $ active_session_history data ordbok visning . v $ active_session_history er en sirkulær buffer , så når det blir fullt, Oracle automatisk arkiver informasjonen fra v $ active_session_history til dba_hist_active_sess_history data ordbok utsikt , før overskriving data i v $ active_session_history visning.
Funksjon
ved å spørre disse to visninger , historie av SQL-setninger henrettet i løpet av et gitt tidsvindu på databasen kan skaffes. For eksempel sender følgende spørring listen over de første 4000 tegn av SQL-setninger utført mellom 9 am og 09:05 på den 30 september 2010 : en
velg a.sql_id , dbms_lob.substr (f. sql_text , 4000,1 ) fra dba_hist_active_sess_history a, dba_hist_sqltext b
der sample_time mellom TO_DATE ( '20100930 : 09:00 ',' yyyymmdd : hh24 : mi ' )
og TO_DATE ( '20100930 : 09:01 ',' yyyymmdd : hh24 : km ' ) og b.sql_id = a.sql_id
union alle
velger a.sql_id , dbms_lob.substr ( b.sql_text , 4000 , 1 ) fra v $ active_session_history a, v $ sqlarea b
der sample_time mellom TO_DATE ( '20100930 : 09:00 ',' yyyymmdd : hh24 : km ' ) og selg
TO_DATE (' 20100930:09:01 ',' yyyymmdd : hh24 : km ' ) og b.sql_id = a.sql_id
Hensyn
I tillegg oppsummerer Oracle timebaserte gjennomføring statistikk over SQL-setninger i sin Automatic arbeidsbelastning Repository . Du kan finne ut de mest ressurskrevende SQL-setninger kjøres under et gitt tidsvindu ved å spørre dba_hist_sqlstat data ordbok se sammen med dba_hist_snapshot data ordbok visning.
Effects
for eksempel gir følgende spørring listen over SQL-setninger kjøres mellom 9 am og 10 am sammen med sin CPU tid , medgått tid , io_wait tid og antall diskreads . Utgangen av denne spørringen er sortert etter CPU tid .
Velge fra dba_hist_sqlstat a, dba_hist_sqltext b hvor a.sql_id = b.sql_id og snap_id = (velg distinkt snap_id fra dba_hist_snapshot der TO_CHAR ( begin_interval_time , ' yyyymmdd : hh24 : mi ' ) = '20100930 : 09:00 ' og to_char ( end_interval_time , ' yyyymmdd : hh24 : mi ') = '20100930 : 10:00 ' ) rekkefølge etter cpu_time
/