Commit und Rollback

zuckerbrini

Mitglied
Guten Morgen!

Das Commit die Änderungen durchführt und Rollback nicht versteht ich. Also was mir die beiden Befehle bringen ist mir klar.
Nun würde ich aber gerne wissen wie genau das funktioniert, also das interne nicht sichtbar sozusagen. Hab auch schon ein bisschen gegoogelt bin aber gescheiert, weil ich nicht wusste welche Begriffe ich eingeben soll.

Alle Änderungen sind nur ja nur für meine aktuelle Sitzung sichtbar. Andere Sitzungen sehen je nachdem den vorherigen Bestand oder dürfen aufgrund von Sperren gar nicht auf die Daten zugreifen. Wenn ich nun ein Commit mache werden die Änderungen sichtbar, bei einem Rollback nicht.
Soweit klar. Aber wo werden die Änderungen die ich in meiner aktuellen Sitzung sehe gespeichert. Läuft das alles rein über den Arbeitsspeicher? Oder wie genau funktioniert das?
Kann mir das irgendjemand erklären?
 
Hab Orcale9 Datenbank.

Aber eigentlich möchte ich das ja allgemein wissen. Gibt es keine zumindest halbwegs allgemeine Antwort?
Im Prinzip möchte ich ja nur wissen was genau im Hintergrund bei einem Rollback alles passiert. Also vom ersten eingegeben update-Befehl bis hin zum endgültigen Rollback. Was findet da intern statt?
 
Hab Orcale9 Datenbank.

Aber eigentlich möchte ich das ja allgemein wissen. Gibt es keine zumindest halbwegs allgemeine Antwort?

- Nein,eigentlich nicht, abgesehen davon, dass ein COMMIT eine Transaktion bestätigt und ein Rollback ...nun, eben zurücksetzt. Mit welchen Mechanismen dies passiert (Auf jeden fall nicht "nur" Arbeitsspeicher), ist vonjeweilgen DBMS abhängig.


Im Prinzip möchte ich ja nur wissen was genau im Hintergrund bei einem Rollback alles passiert. Also vom ersten eingegeben update-Befehl bis hin zum endgültigen Rollback. Was findet da intern statt?[/

Bei Oracle ist es so, dass bei einem COMMIT eine SCN generiert wird (System Change Number). Anschliessen wird der LGWR (LogWriter) alle Redo Log Einträge auf Disk schreiben (Jedenfalls diejenigen, welche noch im Buffer sind). Damit ist der COMMIT eigentlich abgeschlossen, übrige bleibt noch das freigeben von Locks, welche deine Session hält.

Beim Rollback werden die Daten aus dem Rollback (undo) Segment zurückgelesen und der Urspungszustand wiederhergestellt.

Im Detail wirst du dich aber mit der Oracle-Doku befassen müssen, die obige Erklärung ist schon "eher" simpel und auch unvollständig....



Gruss
 
Zurück