Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Verwenden Sie gv$session, um festzustellen, ob eine Abfrage hängt

In gv$session , das event Spalte sagt Ihnen, auf welches Warteereignis Ihre Sitzung gerade wartet. Wenn Ihre Sitzung auf eine Art Sperre wartet, die von einer anderen Sitzung gehalten wird, wird das event wird Ihnen dies mitteilen (z. B. "enq:TX - row lock contention", wenn Sie in die Warteschlange gestellt werden und darauf warten, eine von einer anderen Sitzung gehaltene Zeile zu sperren) und blocking_instance und blocking_session wird mit der Instanz- und Sitzungs-ID des Inhabers der Sperre gefüllt. Sie können sich auch seconds_in_wait ansehen (wenn wait_time=0 ), um zu bestimmen, wie viele Sekunden die Sitzung im aktuellen Warteereignis verbracht hat. Das sollte Ihnen zumindest sagen, ob Ihre Sitzung derzeit "festgefahren" ist, aber es sagt Ihnen nicht, ob Ihre Abfrage jemals wirklich beendet wird - wenn es einen schlechten Plan gibt, ist es durchaus möglich, dass Sie "gut" haben Wait-Ereignisse wie das Warten auf Festplatten-I/O, die anzeigen, dass die Sitzung etwas tut, aber dass die Abfrage nie wirklich beendet wird.