Oracle SQL History

Författare: Roger Morrison
Skapelsedatum: 22 September 2021
Uppdatera Datum: 1 December 2024
Anonim
SQL History tips and tricks in Oracle SQL Developer? || Oracle SQL Developer Tutorial
Video: SQL History tips and tricks in Oracle SQL Developer? || Oracle SQL Developer Tutorial

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

/