Freitag, August 19, 2011

LWGR und Commit

Jonathan Lewis beschreibt in seinem Blog ein recht seltsames (und potentiell gefährliches) Verhalten des Oracle Servers: wenn eine Transaktion ein Commit durchführt und die Information im Log Buffer landet, dann wird sie für andere Sessions sichtbar - auch dann, wenn der LWGR nicht mehr dazu in der Lage ist, die Commit-Informationen in die Redo Log Dateien zu schreiben. Nach einem Neustart wird diese Transaktion aber nicht als commited betrachtet, da eben die persistierten Log-Informationen fehlen.

Dieses Verhalten widerspricht allem, was ich bisher zum Thema gelesen hatte, denn ich ging davon aus, dass die Festschreibung in den redo Logs zum erfolgreichen Commit gehört. Da der Herr Lewis den Sachverhalt aber in mehreren Releases ab 8.1 reproduzieren konnte, ist das offenbar schon seit langer Zeit so gewesen.

Nachtrag 26.08.2011: zu Jonathan Lewis' Artikel gibt's inzwischen 69 Kommentare und ein umfangreiches Update und Tony Hasler, der das Problem als erster beschrieben hatte, hat noch zwei Artikel zur Frage beigesteuert, was dieses Verhalten für Oracles Verhältnis zu ACID bedeutet.

Keine Kommentare:

Kommentar veröffentlichen