Da Oracle prøver og registrerer alle aktive session kører på databasen, en simpel forespørgsel gør det muligt at finde historien om SQL-sætninger inden for en given tidsramme. Betydning
Oracle automatisk prøver hver session kører på databasen hvert sekund , og optegnelser SQL historikinformation i v $ active_session_history data ordbog udsigt. v $ active_session_history er en cirkulær buffer , så når det bliver fuld, Oracle automatisk arkiver oplysningerne fra v $ active_session_history til dba_hist_active_sess_history data ordbog visning, før overskrivning data i v $ active_session_history udsigt.
Function < br >
ved at forespørge disse to visninger , historie af SQL-sætninger udføres i løbet af en given tidsvindue på databasen kan opnås. For eksempel udlæser følgende forespørgsel på listen over de første 4.000 tegn i SQL-sætninger udføres fra 09:00 til 09:05 på 30 september 2010 : Hej
select a.sql_id , dbms_lob.substr (f. sql_text , 4000,1 ) fra dba_hist_active_sess_history a, dba_hist_sqltext B
hvor sample_time mellem to_date ( '20100930 : 09:00 ',' ååååmmdd : hh24 : km )
og to_date ( '20100930 : 09:01 ',' ååååmmdd : hh24 : km ) og b.sql_id = a.sql_id
union all
select 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 ',' ååååmmdd : hh24 : km ) og
to_date ( ' 20100930:09:01 ',' ååååmmdd : hh24 : km ) og b.sql_id = a.sql_id
Overvejelser
Desuden opsummerer Oracle time udførelse statistikker over SQL-sætninger i sin Automatic Workload Repository . Du kunne finde ud af de mest ressourcekrævende udførte SQL-sætninger i et givet vindue af tid ved at forespørge dba_hist_sqlstat data ordbog se sammen med dba_hist_snapshot data ordbog view.
Effects
for eksempel giver følgende forespørgsel på listen over udførte SQL-sætninger fra 09:00 til 10:00 sammen med deres CPU-tid , forløbet tid, io_wait tid og antallet af diskreads . Resultatet af denne forespørgsel er ordnet efter CPU-tid .
Vælge fra dba_hist_sqlstat a, dba_hist_sqltext b hvor a.sql_id = b.sql_id og snap_id = ( select distinct snap_id fra dba_hist_snapshot hvor to_char ( begin_interval_time ' ååååmmdd : hh24 : km ' ) = '20100930 : 09:00 ', og to_char ( end_interval_time ' ååååmmdd : hh24 : km ' ) = '20100930 : 10:00 ' ) ordre ved cpu_time
/