Innehåll
Eftersom Oracle samlar prover och skriver alla aktiva sessioner i databasen kan du enkelt hämta SQL-historikhistoriken under en viss tidsperiod med en enkel fråga.
Oracle skriver historisk SQL-information till v $ active_session_history (bärbar dator med databaspost på 15,4 "bredbildsskärm av .shock från Fotolia.com)
betydelse
Oracle samlar automatiskt prover av alla sessioner som körs i databasen varje sekund och sparar information från SQL-historiken i dataloggens vy v $ active_session_history. Detta är en cirkulär buffert, så när den blir full, lagrar Oracle automatiskt sin information i dba_hist_active_sess_history dataloggens vy innan den skrivs över.
funktion
Du kan få en historia av SQL-uttalanden som körts över en tidsperiod i databasen genom att fråga dessa två visningar. Till exempel returnerar följande fråga listan över de första 4000 tecknen i SQL-satser som utförs mellan 9:00 och 9:05 den 30 september 2010:
välj a.sql_id, dbms_lob.substr (b.sql_text, 4000,1) från dba_hist_active_sess_history a, dba_hist_sqltext b
var sample_time mellan to_date ('20100930: 09: 00', 'yyyymmdd: hh24: mi')
och to_date ('20100930: 09: 01', 'yyyydddd: hh24: mi') och b.sql_id = a.sql_id
union alla
välj a.sql_id, dbms_lob.substr (b.sql_text, 4000,1) från v $ active_session_history a, v $ sqlarea b
var sample_time mellan to_date ('20100930: 09: 00', 'yyyymmdd: hh24: mi') och
to_date ('20100930: 09: 01', 'yyyydddd: hh24: mi') och b.sql_id = a.sql_id
överväganden
Dessutom genererar Oracle timvis exekveringsstatistik för SQL-satser i sitt automatiska arbetsbelastningsregister. Du kan se vilka SQL-satser som kräver mer resurser vid en given tidpunkt genom att fråga efter visning av dba_hist_sqlstat och dba_hist_snapshot datalogik.
effekter
Till exempel returnerar följande fråga en lista över SQL-satser som utförs mellan 09:00 och 10:00, förutom CPU-tid, förfluten tid, io_wait-tid och antal diskåtkomst. Utgången beställs av CPU-tid.
välj a.sql_id, dbms_lob.substr (b.sql_text, 1000,1), cpu_time_delta, elapsed_time_delta, iowait_delta, disk_reads_delta från dba_hist_sqlstat a, dba_hist_sqltext b där a.sql_id = b.sql_id och snap_id = (välj distinkt snap_id från dba_hist_snapshot var to_Char (begin_interval_time, 'yyyymmdd: hh24: mi') = '20100930: 09: 00' och to_char (end_interval_time, 'yyyymmdd: hh24: mi') = '20100930: 10: 00' beställa av cpu_time
/