Oracle
 sql >> Base de données >  >> RDS >> Oracle

Utilisez gv$session pour savoir si une requête est suspendue

Dans gv$session , l'event La colonne vous indique quel événement d'attente votre session attend actuellement. Si votre session attend une sorte de verrou détenu par une autre session, l'event vous le dira (par exemple, ce sera "enq:TX - row lock contention" si vous êtes mis en file d'attente en attendant de verrouiller une ligne détenue par une autre session) et blocking_instance et blocking_session sera renseigné avec l'ID d'instance et de session du détenteur du verrou. Vous pouvez également regarder seconds_in_wait (si wait_time=0 ) pour déterminer combien de secondes la session a passées dans l'événement d'attente actuel. Cela devrait au moins vous dire si votre session est actuellement "bloquée", mais cela ne vous dit pas si votre requête va vraiment finir - s'il y a un mauvais plan, il est tout à fait possible que vous ayez "bon" des événements d'attente comme des attentes d'E/S disque qui indiquent que la session est en train de faire quelque chose mais que la requête ne va jamais vraiment se terminer.