Una forma posible podría ser aumentar el INIT.ORA
parámetro para distributed_lock_timeout
a un valor mayor. Esto le daría más tiempo para observar el v$lock
mesa ya que las cerraduras durarían más.
Para lograr la automatización de esto, puede
-
Ejecute un trabajo SQL cada 5-10 segundos que registre los valores de
v$lock
o la consulta que sandos ha dado anteriormente en una tabla y luego analícela para ver qué sesión estaba causando el bloqueo. -
Ejecute un
STATSPACK
o unAWR
Reporte. Las sesiones que se bloquearon deberían aparecer con mucho tiempo transcurrido y, por lo tanto, se pueden identificar.
v$session
tiene 3 columnas más blocking_instance, blocking_session, blocking_session_status
que se puede agregar a la consulta anterior para dar una idea de lo que se bloquea.