Oracle muestras de forma automática todas las sesiones que se ejecutan en la base de datos cada segundo y registros SQL información de la historia en los $ active_session_history vista del diccionario de datos v . v $ active_session_history es un buffer circular, por lo que cuando se llena, Oracle archivos de forma automática la información de v $ active_session_history a dba_hist_active_sess_history vista de diccionario de datos, antes de sobrescribir los datos en vista v $ active_session_history .
función
al consultar estos dos puntos de vista , la historia de las sentencias SQL ejecutadas durante una ventana de tiempo en la base de datos se puede obtener . Por ejemplo , la siguiente consulta genera la lista de los primeros 4000 caracteres de sentencias SQL ejecutadas 09 a.m.-9:05 am el 30 de septiembre de 2010:
seleccione a.sql_id , DBMS_LOB.SUBSTR ( n. sql_text , 4000,1 ) de dba_hist_active_sess_history a, b dba_hist_sqltext
donde sample_time entre to_date ( '20100930 : 09:00 ',' yyyymmdd : HH24 : MI ' )
y to_date ( '20100930 : 09:01 ',' yyyymmdd : HH24 : MI ' ) y b.sql_id = a.sql_id
union todo
seleccione a.sql_id , DBMS_LOB.SUBSTR ( b.sql_text , 4000 , 1 ) de v $ active_session_history a, v $ sqlarea b
donde sample_time entre to_date ( '20100930 : 09:00 ',' yyyymmdd : HH24 : MI ' ) e imágenes
to_date ( ' 20100930:09:01 ',' yyyymmdd : HH24 : MI ' ) y b.sql_id = a.sql_id
Consideraciones
Además , Oracle resume estadísticas de ejecución por hora de sentencias de SQL en su repositorio de carga de trabajo automática . Usted puede encontrar las declaraciones más intensivo de recursos SQL ejecutadas durante una ventana de tiempo mediante la consulta de ver diccionario de datos dba_hist_sqlstat junto con dba_hist_snapshot vista del diccionario de datos .
Efectos
Por ejemplo , la siguiente consulta devuelve la lista de sentencias SQL ejecutadas 09 a.m.-10 a.m. junto con su tiempo de CPU , el tiempo transcurrido, el tiempo y el número de io_wait diskreads . El resultado de esta consulta se ordenan por tiempo de CPU.
Seleccionar de dba_hist_sqlstat un dba_hist_sqltext b donde a.sql_id = b.sql_id y snap_id = ( seleccione snap_id distinto de dba_hist_snapshot donde TO_CHAR ( begin_interval_time , «AAAAMMDD : HH24 : MI ') = '20100930 : 09:00 ' y to_char ( end_interval_time , ' yyyymmdd : HH24 : MI ') = '20100930 : 10:00 ' ) ordenado por cpu_time
/foto