Oracle SQL-geschiedenis

Schrijver: Roger Morrison
Datum Van Creatie: 2 September 2021
Updatedatum: 7 November 2024
Anonim
JOINS in Oracle | Oracle SQL Tutorial Videos | Mr.Vijay Kumar
Video: JOINS in Oracle | Oracle SQL Tutorial Videos | Mr.Vijay Kumar

Inhoud

Omdat Oracle monsters verzamelt en alle actieve sessies naar de database schrijft, kunt u met een eenvoudige query de geschiedenis van de SQL-instructie ophalen voor een bepaalde periode.


Oracle schrijft historische SQL-informatie naar v $ active_session_history (laptop met databaserecord op 15,4 "breedbeeld door .shock van Fotolia.com)

belang

Oracle verzamelt automatisch monsters van alle sessies die elke seconde in de database worden uitgevoerd en slaat informatie op uit de SQL-geschiedenis in de data dictionary-weergave v $ active_session_history. Dit is een circulaire buffer, dus wanneer deze vol raakt, slaat Oracle automatisch zijn informatie op in de data-view dba_hist_active_sess_history voordat deze wordt overschreven.

functie

U kunt een geschiedenis van SQL-instructies krijgen die gedurende een bepaalde periode in de database zijn uitgevoerd door deze twee weergaven te raadplegen. De volgende query retourneert bijvoorbeeld de lijst met de eerste 4000 tekens van SQL-instructies die zijn uitgevoerd tussen 9.00 uur en 9.05 uur op 30 september 2010:


selecteer a.sql_id, dbms_lob.substr (b.sql_text, 4000,1) uit dba_hist_active_sess_history a, dba_hist_sqltext b

waarbij sample_time between to_date ('20100930: 09: 00', 'yyyymmdd: hh24: mi')

en to_date ('20100930: 09: 01', 'yyyymmdd: hh24: mi') en b.sql_id = a.sql_id

unie allemaal

selecteer a.sql_id, dbms_lob.substr (b.sql_text, 4000,1) uit v $ active_session_history a, v $ sqlarea b

waarbij sample_time tussen to_date ('20100930: 09: 00', 'yyyymmdd: hh24: mi') en

to_date ('20100930: 09: 01', 'yyyymmdd: hh24: mi') en b.sql_id = a.sql_id

overwegingen

Bovendien genereert Oracle uuruitvoeringsstatistieken voor SQL-instructies in de Automatic Workload Repository. U kunt zien welke SQL-instructies op een bepaald moment meer bronnen vereisen door de weergaven van de gegevensbibliotheken dba_hist_sqlstat en dba_hist_snapshot te doorzoeken.

effecten

De volgende query retourneert bijvoorbeeld een lijst met SQL-instructies die zijn uitgevoerd tussen 9.00 en 10.00 uur, naast de CPU-tijd, de verstreken tijd, de io_wait-tijd en het aantal schijftoegangen. De uitvoer wordt gesorteerd op CPU-tijd.


selecteer a.sql_id, dbms_lob.substr (b.sql_text, 1000,1), cpu_time_delta, elapsed_time_delta, iowait_delta, disk_reads_delta van dba_hist_sqlstat a, dba_hist_sqltext b waarbij a.sql_id = b.sql_id en snap_id = (selecteer distinct snap_id van dba_hist_snapshot waar to_Char (begin_interval_time, 'yyyymmdd: hh24: mi') = '20100930: 09: 00' en to_char (end_interval_time, 'yyyymmdd: hh24: mi') = '20100930: 10: 00' order by cpu_time

/