Mi aplicación, que usa una base de datos Oracle, va lenta o parece haberse detenido por completo.
¿Cómo puedo saber qué consultas son más caras para poder investigar más?
Este muestra SQL que actualmente está "ACTIVO": -
select S.USERNAME, s.sid, s.osuser, t.sql_id, sql_text
from v$sqltext_with_newlines t,V$SESSION s
where t.address =s.sql_address
and t.hash_value = s.sql_hash_value
and s.status = 'ACTIVE'
and s.username <> 'SYSTEM'
order by s.sid,t.piece
/
Esto muestra bloqueos. A veces las cosas van lentas, pero es porque está bloqueado esperando un bloqueo:
select
object_name,
object_type,
session_id,
type, -- Type or system/user lock
lmode, -- lock mode in which session holds lock
request,
block,
ctime -- Time since current mode was granted
from
v$locked_object, all_objects, v$lock
where
v$locked_object.object_id = all_objects.object_id AND
v$lock.id1 = all_objects.object_id AND
v$lock.sid = v$locked_object.session_id
order by
session_id, ctime desc, object_name
/
Esta es una buena opción para encontrar operaciones largas (por ejemplo, escaneos de tablas completas). Si es debido a muchas operaciones cortas, no aparecerá nada.
COLUMN percent FORMAT 999.99
SELECT sid, to_char(start_time,'hh24:mi:ss') stime,
message,( sofar/totalwork)* 100 percent
FROM v$session_longops
WHERE sofar/totalwork < 1
/
alter system kill session
como se describe aquí: docs.oracle.com/cd/B28359_01/server.111/b28310/…Pruebe esto, le dará las consultas que se están ejecutando actualmente durante más de 60 segundos. Tenga en cuenta que imprime varias líneas por consulta en ejecución si el SQL tiene varias líneas. Mire el sid, número de serie para ver qué es lo que corresponde.
fuente
v $ session_longops
Si busca sofar! = Totalwork, verá las que no se han completado, pero las entradas no se eliminan cuando se completa la operación, por lo que también puede ver mucho historial allí.
fuente
fuente
Puede generar un informe AWR (repositorio automático de carga de trabajo) a partir de la base de datos.
Ejecutar desde la línea de comandos de SQL * Plus:
Lea el documento relacionado con cómo generar y comprender un informe de AWR. Le dará una visión completa del rendimiento de la base de datos y los problemas de recursos. Una vez que estemos familiarizados con el informe AWR, será útil encontrar Top SQL que consume recursos.
Además, en la interfaz de usuario de 12C EM Express podemos generar un AWR.
fuente
Puede verificar los detalles de las consultas de larga duración, como el% completado y el tiempo restante, utilizando la siguiente consulta:
Para obtener la lista completa de pasos para la solución de problemas, puede consultar aquí: Solución de problemas de sesiones de larga duración
fuente
fuente