Verwenden, gv$session, zu sagen, wenn eine Abfrage hängen
Ich habe eine Abfrage ausführen, die in Oracle -, die kann oder kann nicht aufgehängt werden. Es läuft jetzt seit ~10 Stunden jetzt, aber bezogen auf die Menge der Daten, die ich bin laden, die dürfen nicht unangemessen sein.
Schaute ich mir die session im gv$session und Frage mich, ob es einen Weg gibt, zu übersetzen, dass die Informationen, um zu sehen, ob es tatsächlich irgendwelche Aktivitäten geht, oder wenn die Abfrage stecken, warten auf eine Sperre oder sonst hing.
Ich habe bereits Lesen Sie die Dokumentation für diese Ansicht hier. Meistens bin ich auf der Suche, für Tipps von jemand, dessen Erfahrung gehabt, die das Debuggen dieser Art von Problemen in Oracle.
Dank!
v$session_longops
dass Sie überprüfen könnten, um zu sehen, ob es voran? Alternativ überprüfen Sie diesen link für Möglichkeiten, um zu sehen, wenn Sie Ihre Sitzung ist gesperrt: orafaq.com/node/854Danke, ich kann dies in Kombination mit gv$sqlarea, um zu sehen, welche Aussagen halten Sie mich up!
InformationsquelleAutor Paul | 2012-04-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
In
gv$session
, dieevent
Spalte sagt Ihnen, was wait event Ihrer Sitzung wartet derzeit auf. Wenn Sie Ihre session wartet auf irgendeine Art von Sperre durch einen anderen Sitzung, dieevent
wird Ihnen sagen, dass (zum Beispiel, es wird "enq: TX - row lock contention", wenn Sie in Warteschlangen warten, um ein sperren der Zeile gehalten wird von einer anderen Sitzung) undblocking_instance
undblocking_session
aufgefüllt wird, mit der Instanz und session-ID des Inhabers der Sperre. Sie können auch einen Blick aufseconds_in_wait
(wennwait_time=0
), um zu bestimmen, wie viele Sekunden der session damit verbracht hat, in der aktuellen warte-Ereignis. Das sollte zumindest dir sagen, ob deine session ist derzeit "stecken", aber es sagt Ihnen nichts, wenn Ihre Abfrage ist jemals wirklich fertig-- wenn es ein schlechter plan, es ist durchaus möglich, dass du hast "gute" warten Veranstaltungen wie wartet auf die disk-I/O, die angeben, dass die Sitzung etwas tun, aber die Abfrage wird nie wirklich fertig zu stellen.wählen Sie " ALTER SYSTEM KILL SESSION "'||, sid||','||"SERIAL#"||"';', Veranstaltung von gv$session, wo die Maschine = 'Ihre Maschine' ist praktisch, um die Befehle generiert werden, um Sie zu töten off. Einfach kopieren-einfügen-Spalte 1
InformationsquelleAutor Justin Cave
Basierend auf einige weitere Forschung und Ollie ' s Kommentar kam ich auf diese Abfragen, die helfen die debug-Ausgabe:
Das funktioniert auch. Ich aktualisierte die Antwort.
InformationsquelleAutor Paul
Dies wird Hilfreich sein, Überprüfen Sie die aktuell Laufende Sitzung
InformationsquelleAutor Shyam D