Weil Oracle Proben und Aufzeichnungen jeder aktiven Sitzung , die auf der Datenbank, eine einfache Abfrage es möglich, die Geschichte von SQL-Anweisungen innerhalb eines bestimmten Zeitrahmens zu erhalten macht . Bedeutung
Oracle automatisch Proben jede Sitzung , die auf der Datenbank jede Sekunde , und Aufzeichnungen SQL History-Informationen in der v $ active_session_history Data Dictionary-View . v $ active_session_history ist ein kreisförmiger Puffer , so dass, wenn es voll ist , Oracle automatisch archiviert die Informationen aus v $ active_session_history zu dba_hist_active_sess_history Data Dictionary-View , vor dem Überschreiben von Daten in v $ active_session_history Aussicht.
Funktion
Durch die Abfrage diese zwei Ansichten , die Geschichte von SQL-Anweisungen in einem bestimmten Zeitfenster auf der Datenbank ausgeführt werden , erhalten werden. Beispielsweise gibt die folgende Abfrage der Liste der ersten 4.000 Zeichen von SQL-Anweisungen von 9.00 bis 09.05 Uhr am 30. September 2010 ausgeführt :
select a.sql_id , dbms_lob.substr (geb. sql_text , 4000,1 ) aus dba_hist_active_sess_history a, b dba_hist_sqltext
wo zwischen to_date sample_time ( '20100930 : 09:00 ',' yyyymmdd : hh24 : mi ')
und to_date ( '20100930 : 09.01 Uhr ',' yyyymmdd : hh24 : mi ') und b.sql_id = a.sql_id
union select alle länder
a.sql_id , dbms_lob.substr ( b.sql_text , 4000 , 1 ) aus v $ active_session_history a, v $ SQLAREA b
wo zwischen to_date sample_time ( '20100930 : 09:00 ',' yyyymmdd : hh24 : mi ') und Bilder
to_date ( ' 20100930:09:01 ',' yyyymmdd : hh24 : mi ') und b.sql_id = a.sql_id
Überlegungen
Darüber hinaus fasst Oracle stündliche Statistik Ausführung von SQL-Anweisungen in seiner Automatic Workload Repository . Sie könnten herausfinden, die meisten ressourcenintensive SQL-Anweisungen in einem bestimmten Zeitfenster, durch Abfragen dba_hist_sqlstat Data Dictionary-View zusammen mit dba_hist_snapshot Data Dictionary-View ausgeführt.
Effects
Zum Beispiel gibt die folgende Abfrage der Liste der SQL-Anweisungen zwischen 9 Uhr und 10 Uhr ausgeführt zusammen mit ihren CPU-Zeit , die verstrichene Zeit , io_wait Zeit und Anzahl der diskreads . Die Ausgabe dieser Abfrage wird von CPU-Zeit sortiert.
Wählen von dba_hist_sqlstat a, b dba_hist_sqltext wo a.sql_id = b.sql_id und snap_id = ( select distinct snap_id von dba_hist_snapshot wo TO_CHAR ( begin_interval_time , ' yyyymmdd : hh24 : mi ') = '20100930 : 09:00 ' und to_char ( end_interval_time " yyyymmdd : hh24 : mi ') = '20100930 : 10:00 ' ) order by cpu_time
/Tablet