oracle

Oracle Session wartet auf Freigabe eines Locks

26 Apr 2019

Oracle Session wartet – das ist ein bekanntes Problem in Datenbanken mit besonders stark konkurrierenden Updates auf dieselben Datensätze. Wenn eine Datenbank-Session einen Datensatz für längere Zeit blockiert hält, kann das sehr unangenehme Folgen haben – im schlimmsten Fall sogar Auswirkungen auf ein produktives System. Es ist daher sehr wichtig, den Verursacher solcher Blocks schnell zu identifizieren.

Mit Hora, dem wichtigsten Oracle Tool von KeepTool, konnte man auch schon in älteren Versionen über den Session-Monitor Informationen abfragen wie z.B.

Im Fall von blockierenden Locks, gibt die Seite „Lock Wait Graph“ Aufschluss über die Abhängigkeit von blockierenden und wartenden Sessions. Die Baumansicht zeigt im Wurzeleintrag zunächst die blockierende Session mit folgende Eigenschaften an:

Darunter sehen Sie alle Sessions, die auf die obere warten, mit folgenden Informationen:

Unterhalb dieser Ebene können ggf. weitere Sessions stehen, falls die wartende Session ebenfalls ein Blocker ist, auf den andere Sessions warten.

Neu in Version 14.0.6 ist das folgende Feature: Wenn eine Session ein Lock hält, kann man sich sogar den Datensatz anzeigen lassen, der gesperrt ist. Auf diese Weise lassen sich Block-Situationen noch schneller analysieren und auflösen.

Im Notfall können Sie als  Benutzer mit DBA-Rechten über eine Schaltfläche oder das Kontextmenü der rechten Maustaste und „Kill Session“ die blockierende Session beenden. Dadurch wird der blockierende Lock freigegeben, und die wartenden Sessions können weiter arbeiten.

Oracle Session wartet – dieses Problem ist Dank KeepTool und dem Session Monitor sehr schnell zu analysieren und zu beheben.