Utiliser la gv$session de dire si une requête est suspendu
J'ai une requête en cours d'exécution dans Oracle, qui peut ou peut ne pas être bloqué. Il est en cours depuis ~10 heures maintenant, mais en fonction de la quantité de données que je suis de chargement qui peuvent ne pas être déraisonnable.
J'ai été à la recherche à la session dans le gv$session et je me demandais si il existe un moyen de traduire cette information pour voir si il y a en fait toute activité en cours, ou si la requête est bloqué en attente d'un verrou ou autrement accroché.
J'ai déjà lu la documentation de ce point de vue ici. Je suis surtout à la recherche pour obtenir des conseils de quelqu'un dont avaient de l'expérience de débogage de ces types de problèmes dans Oracle.
Merci!
- Est-il une entrée dans
v$session_longops
que vous pouvez vérifier pour voir si elle est en progression? Sinon, suivez ce lien pour des manières de voir si votre session est bloqué: orafaq.com/node/854 - Merci, je peux combiner cela avec la gv$sqlarea pour voir quelles sont les déclarations holding moi!
Vous devez vous connecter pour publier un commentaire.
Dans
gv$session
, leevent
colonne indique ce que vous attendez de votre session est en cours d'attente. Si votre session est en attente sur une sorte de verrou détenu par une autre session, leevent
vous dira que (par exemple, il sera "enq: TX - ligne de verrouillage" si vous êtes en file d'attente en attente pour verrouiller une ligne tenue par une autre session) etblocking_instance
etblocking_session
sera remplie avec l'instance et l'ID de session du titulaire de la serrure. Vous pouvez aussi regarderseconds_in_wait
(siwait_time=0
) pour déterminer combien de secondes la session a passé dans l'attente de l'événement. Cela devrait au moins vous dire si votre session est actuellement "coincés" mais elle n'est pas de vous dire si votre requête est jamais vraiment fini-- s'il y a un mauvais plan, c'est tout à fait possible que vous avez des "bons" attendre les événements comme les attend pour les I/O disque, qui indiquent que la session est en train de faire quelque chose, mais que la requête n'est jamais vraiment fini.Basé sur des recherches plus poussées et Ollie commentaire, je suis venu avec ces requêtes aider à déboguer le problème:
Que ce sera Utile pour vérier la Session en cours d'Exécution