Me gusta obtener las últimas declaraciones ejecutadas dentro de mi base de datos, junto con indicadores de rendimiento.
Como tal, me gusta saber qué declaraciones SQL fueron más intensivas en CPU / DISCO.
oracle
monitoring
Sebastian Roth
fuente
fuente
Respuestas:
Aquí está el SQL para hacer el trabajo. Abierto para juicio.
Paso 1: Determine las ID de instalación y las ID de usuario.
Paso 2:
Es posible que se devuelvan varios ID e ID de instancia. Por lo tanto, depende de la elección de los usuarios sobre cómo usar estos datos en una interfaz web, etc.
fuente
in
... AND (s.inst_id, s.sid) in ( (:id1, :sid1), (:id2, :sid2), ... )
La consola de Oracles Enterprise Monitor muestra una gran cantidad de información sobre qué consultas SQL toman la CPU máxima, los cuellos de botella, la actividad principal en la base de datos, el bloqueo de SQL y otros.
Para un enfoque histórico, puede usar los informes AWR de Oracle para identificar áreas que le conciernen.
fuente
También puede usar
V$SQL
, hay varias columnas interesantes,RUNTIME_MEM, EXECUTIONS, DISK_READS, SORTS, ELAPSED_TIME, SQL_FULLTEXT
etc.Esto le daría las 10 declaraciones principales por lectura de disco (nota: esto es acumulativo para todas las ejecuciones):
Si la declaración aún se encuentra en
V$SQL_PLAN
usted, puede obtener un plan de explicación real para la consulta:También me gusta usar
V$SQL_PLAN
ya que contiene buena información. Si tustatistics_level=ALL
puedes usarV$SQL_PLAN_STATISTICS
.fuente
Para SQL reciente:
Para la historia:
fuente