Frage

Ich habe einen Traceback von einem Computer, auf dem die folgende Abfrage tagelang hängen geblieben zu sein schien:

SELECT table_name FROM user_tables

Was könnte möglicherweise eine solche Sperre erzeugen?Benutzer können diese Tabelle niemals ändern.und es gab zahlreiche nachfolgende Instanzen dieser Abfrage, die erfolgreich ausgeführt wurden.

War es hilfreich?

Lösung

Da die Erkrankung nicht mehr besteht, lässt sich nicht sagen, was passiert ist.

Sollte dies oder etwas Ähnliches jedoch in Zukunft erneut passieren, sollten Sie die Warteschnittstelle von Oracle verwenden.Das heißt, schauen Sie sich an V$SESSION.

Zunächst möchten Sie feststellen, ob sich der Prozess dreht (d. h. auf der CPU) oder blockiert (d. h. auf ein Warteereignis wartet).Der Weg, dies festzustellen, besteht darin, sich das anzusehen STATE Spalte:

  • Wenn STATE ist 'WAITING', dann wird die Sitzung blockiert.Wenn dies der Fall ist, sollte die Spalte EVENT beschreiben, auf welches Ereignis die Sitzung wartet.
  • Wenn der STATE etwas anderes als „WAITING“ ist, dann befindet sich die Sitzung auf der CPU und die Spalte EVENT ist das Letzte, worauf sie gewartet hat.
    • Wenn STATE ist 'WAITED KNOWN TIME', dann ist WAIT_TIME die gewartete Zeit in Centisekunden.
    • Wenn STATE ist 'WAITED SHORT TIME', dann wartete die Sitzung weniger als eine Hundertsekunde.
    • Wenn STATE ist 'WAITED UNKNOWN TIME', dann ist die Wartezeit nicht bekannt, da timed_statistics für die Sitzung auf FALSE gesetzt wurde.

Hoffentlich hilft das.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top