Parce échantillons Oracle et enregistre chaque session active fonctionnant sur la base de données , une requête simple , il est possible d'obtenir l'histoire d'instructions SQL dans un laps de temps donné. Importance
Oracle échantillons automatiquement à chaque session fonctionnant sur la base de données par seconde et enregistre SQL informations de l'historique de la v $ active_session_history vue du dictionnaire de données . v $ active_session_history est une mémoire tampon circulaire , de sorte que quand il est plein, Oracle archives automatiquement le mondial de l'information à partir de v $ active_session_history aux données dba_hist_active_sess_history vue du dictionnaire , avant d'écraser les données en vue v $ active_session_history .
Fonction < br > Photos
en interrogeant ces deux points de vue , l'histoire d'instructions SQL exécutées pendant une fenêtre de temps donnée sur la base de données peuvent être obtenues . Par exemple , la requête suivante génère la liste des 4000 premiers caractères des instructions SQL exécutées 9 heures-09h05 le 30 septembre 2010:
select a.sql_id , DBMS_LOB.SUBSTR (b. sql_text , 4000,1 ) de dba_hist_active_sess_history a, b dba_hist_sqltext
où sample_time entre to_date ( '20100930 : de 09h00 ',' yyyymmdd : hh24 : mi ' )
et to_date ( '20100930 : 09:01 ',' yyyymmdd : hh24 : mi ' ) et b.sql_id = a.sql_id
union all select
a.sql_id , DBMS_LOB.SUBSTR ( b.sql_text , 4000 , 1) de v $ active_session_history un , v $ SQLAREA b
où sample_time entre to_date ( '20100930 : de 09h00 ',' yyyymmdd : hh24 : mi ' ) et
to_date (' 20100930:09:01 ',' yyyymmdd : hh24 : mi ' ) et b.sql_id = a.sql_id
Considérations
En outre, Oracle résume statistiques horaires d'exécution des instructions SQL dans son Automatic Workload Repository . Vous pouvez trouver les instructions SQL les plus gourmandes en ressources exécutées pendant une fenêtre de temps donnée en interrogeant dictionnaire de données dba_hist_sqlstat voir avec dba_hist_snapshot vue du dictionnaire de données .
Effets
par exemple , la requête suivante donne la liste des instructions SQL exécutées 9 heures-10 heures avec leur temps CPU , le temps écoulé , le temps io_wait et le nombre de diskreads . Le résultat de cette requête est triée par temps CPU.
Sélectionner à partir de dba_hist_sqlstat un , dba_hist_sqltext b où a.sql_id = b.sql_id et snap_id = ( sélectionner snap_id distincte de dba_hist_snapshot où TO_CHAR ( begin_interval_time , « yyyymmdd : hh24 : mi ') = '20100930 : de 09h00 ' et to_char ( end_interval_time , ' yyyymmdd : hh24 : mi ') = '20100930 : 10:00 ' ) order by cpu_time
/Photos