Une façon possible pourrait être d'augmenter le INIT.ORA
paramètre pour distributed_lock_timeout
à une plus grande valeur. Cela vous donnerait alors plus de temps pour observer le v$lock
table car les serrures dureraient plus longtemps.
Pour réaliser l'automatisation de cela, vous pouvez soit
-
Exécutez une tâche SQL toutes les 5 à 10 secondes qui enregistre les valeurs de
v$lock
ou la requête que sandos a donnée ci-dessus dans une table, puis analysez-la pour voir quelle session a causé le blocage. -
Exécutez un
STATSPACK
ou unAWR
Signaler. Les sessions verrouillées doivent apparaître avec un temps écoulé élevé et peuvent donc être identifiées.
v$session
a 3 colonnes supplémentaires blocking_instance, blocking_session, blocking_session_status
qui peut être ajouté à la requête ci-dessus pour donner une image de ce qui est verrouillé.