Bei uns ist gerade eine Frage zu Transaktionen aufgekommen, folgendes Szenario:
Eine Session schriebt per INSERT einen neuen Eintrag in eine Tabelle und schliesst die Transaktion mittels commit ab. Unmittelbar nach dem Commit - bestenfalls einige ms später - führt eine andere Session ein normales SELECT aus. Sporadisch kommt es vor, dass dem SELECT die zuvor committeten Transaktionen entgehen, d.h. sie (noch) nicht sieht.
Nun kommt die Frage nach der Bedeutung von Commit auf. Aus der Oracle Dokumentation geht hervor, dass nach einem erfolgreichen Commit die Daten festgeschrieben sind.
Weiterhin ist definiert, dass konkurriende Sessions stets einen konstistenten Stand der Datenbank sehen, also entweder den vor oder den nach der Transaktion.
Gibt es irgendwelche Dokumente oder Standards die eine Aussage darüber treffen, wann Änderungen für andere Sessions sichtbar werden? Garantiert der Commit also, dass ab sofort alle anderen Session meine Änderungen sehen? Oder muss ich davon ausgehen, dass meine Änderungen trotz commit erst zeitlich verzögert für andere Sessions sichtbar werden?
Mir geht es dabei um die grundsätzliche Frage, muss ich Vorkehrungen für diesen Fall treffen oder kann ich mich auf die Datenbank verlassen.
Gruß Markus