Eftersom Oracle prover och registrerar varje aktiv session som körs på databasen , gör en enkel fråga det möjligt att få historien om SQL-satser inom en given tidsram . Betydelse
Oracle prover automatiskt varje session som körs på databasen varje sekund , och register SQL historikinformation i v $ active_session_history data dictionary vy . v $ active_session_history är en cirkulär buffert , så när det blir fullt , Oracle automatiskt arkiverar informationen från v $ active_session_history till dba_hist_active_sess_history data dictionary uppfattning innan överskrivning av data i v $ active_session_history vy .
Function
vid förfrågningar dessa två vyer , historia av SQL-satser exekveras under en viss tidsfönster på databasen kan erhållas . Till exempel matar följande fråga en förteckning över de första 4000 tecknen av SQL-satser körs från 09:00 till 09:05 den 30 september 2010;
välj a.sql_id , dbms_lob.substr ( f. sql_text , 4000,1 ) från dba_hist_active_sess_history a , dba_hist_sqltext b på
där sample_time mellan to_date ( '20100930 : 09:00 ' , ' ååååmmdd : HH24 : mi ' ) katalog
och to_date ( '20100930 : 09:01 ' , ' ååååmmdd : HH24 : mi ' ) och b.sql_id = a.sql_id
union all
välj a.sql_id , dbms_lob.substr ( b.sql_text , 4000 , 1 ) från v $ active_session_history a , v $ sqlarea b på
där sample_time mellan to_date ( '20100930 : 09:00 ' , ' ååååmmdd : HH24 : mi " ) och sälja
to_date ( ' 20100930:09:01 ' , ' ååååmmdd : HH24 : mi ' ) och b.sql_id = a.sql_id
Överväganden
Dessutom sammanfattar Oracle timme utförande statistik SQL-satser i sin Automatisk Arbetsbelastning Repository . Du kan ta reda på de mest resurskrävande SQL-satser exekveras under en viss tidsfönster genom att fråga dba_hist_sqlstat data dictionary visa tillsammans med dba_hist_snapshot data dictionary vy .
Effekter
till exempel , följande frågor till listan med SQL-satser körs från 09:00 till 10:00 tillsammans med deras CPU-tid , förfluten tid , io_wait tid och antal diskreads . Utgången av denna fråga är sorterade efter CPU- tid .
Väljer från dba_hist_sqlstat a , dba_hist_sqltext b där a.sql_id = b.sql_id och snap_id = ( SELECT DISTINCT snap_id från dba_hist_snapshot där to_char ( begin_interval_time , ' ååååmmdd : HH24 : mi ' ) = '20100930 : 09:00 " och to_char ( end_interval_time , ' ååååmmdd : HH24 : mi ' ) = '20100930 : 10:00 ' ) beställning av cpu_time
/