Zum Inhalt springen

Transaktionlog Undo Redo


doku

Empfohlene Beiträge

Hallo,

ich sitze gerade vor eine Aufgabe und komme mit dem Feldern Undo und Redo nicht zurecht.

Kann mir einer erklären wie diese beiden Felder miteinander zusammen hängen, und wann ich welches benutzen muss.

Z.B

LSN | TA | PageID | Undo | Redo | PrevLSN

1 | T1 | BOT | | | 0

2 | T1 | P2 | A | B | 1

3 | T1 | P3 | C | D | 2

4

5

6 | T1 | commit | | | 3

Inhalt des pers. Speicher zum Zeipunkt des Systemfehlers:

PageID | Inhalt

P1 | F

P2 | A

P3 | D

P4 | G

Bearbeitet von doku
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

ich sitze gerade vor eine Aufgabe und komme mit dem Feldern Undo und Redo nicht zurecht.

Kann mir einer erklären wie diese beiden Felder miteinander zusammen hängen, und wann ich welches benutzen muss.

Z.B

LSN | TA | PageID | Undo | Redo | PrevLSN

1 | T1 | BOT | | | 0

2 | T1 | P2 | A | B | 1

3 | T1 | P3 | C | D | 2

4

5

6 | T1 | commit | | | 3

Inhalt des pers. Speicher zum Zeipunkt des Systemfehlers:

PageID | Inhalt

P1 | F

P2 | A

P3 | D

P4 | G

Hallo,

ich habe keine Ahnung, von was du sprichst ? Ist das ein Datenbankproblem ? Welches ? Welche Datenbank ?....Und bitte versuche doch, die Formatierungsfunktionen des Forums zu verwenden..

Gruss

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gegeben ein Transaktionlog, der nach einen Systemfehler aufgetreten ist, der mittels Write-Ahead-Log-Prinzip geschrieben wurde.

Zudem der Inhalt der Seiten, wie sie auf dem pers. Speicher zum Zeitpunkt des Systemfehlers gepeichert waren.

Aufgabe:

Mithilfe des Transaktionlog einen konsitenten Datenbestand herstellen.

Hoffe das hilft mehr. Ist wie oben erwähnt ein Auszug aus eine Arbeit.

Hier die beiden Tabellen mal als Image.

Tabellen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Naja die Begriffe UNDO und REDO deuten ja schon auf ein ganz bestimmtes Datenbanksystem hin...

Eigentlich ist das gar nicht so schwer wenn man weiß was UNDO und REDO sind.

UNDO: Hier werden Bevore Images abgelegt, um Lesekonsistenz und Wiederherstellbarkeit der Daten bei einem Rollback zu gewährleisten. Sprich wenn Du einen Update auf eine Zeile machst, dann kommt der ursprüngliche Wert ins UNDO, es wird vermerkt wo im UBDO er steht und der neue Wert überschreibt den alten in der eigentlichen Spalte

.

Im REDO werden alle Änderungen die an Daten vollzogen werden protokolliert. Dabei gibt es in der Datenbank Mechanismen, die sicherstellen, dass das auch wirklich funktioniert. Die genaue Funktionsweise des REDO Log würde hier den Rahmen sprengen. Wichtig ist aber noch, dass Änderungen die Du per Update durchführst nicht auch sofort auf die Platte geschrieben werden. Auch nach einem Commit ist es durchaus üblich, dass die eigentlichen Daten noch nicht auf die Platte geschrieben wurden. Umgekehrt übrigends genaus so. Es ist durchaus normal, dass uncomittete Daten bereits auf der Platte landen. Nur im REDO steht wirklich was Sache ist.

Jetzt zum eigentlichen Problem:

LSN | TA | PageID | Undo | Redo | PrevLSN

1   | T1 | BOT    |      |      | 0

2   | T1 | P2     | A    | B    | 1

3   | T1 | P3     | C    | D    | 2

4

5

6   | T1 | commit |      |      | 3

Die Spalten LSN und TA ignorieren wir einfach keine Ahnung was das bedeutet aber ich geh mal davon aus, dass das bestimmt auch in deinen Unterlagen steht...

Schauen wir also auf REDO und UNDO. Im UNDO steht was vorher in der Spalte stand, im REDO steht was per UPDATE hineingeschrieben wurde. Nachdem auch ein Commit im log steht wurde die Transaktion erfolgreich beendet. Die Datenbank würde also lediglich dafür sorgen, dass die Änderungen die im REDO stehen auch wie im normalen Ablauf persistiert werden. P2 würde nach dem Recovery von A nach B geändert werden und P3 bliebe unverändert, da hier die Änderung bereits vor dem Absturz persitiert wurde.

Wenn man es genau nimmt, fährt Oracle - ich meine das unbekannte Datenbanksystem - die komplette Transaktion seit dem letzten Checkpoint noch einmal durch (auch Änderungen im UNDO werden übrigends über das REDO abgesichert) und macht anschließend, wie in diesem Fall einen COMMIT oder falls die Transaktion unvollständig war, einen ROLLBACK. Aber ich denke mal, dass übersteigt die Fragestellung.

Dim

Link zu diesem Kommentar
Auf anderen Seiten teilen

...

Die Spalten LSN und TA ignorieren wir einfach keine Ahnung was das bedeutet aber ich geh mal davon aus, dass das bestimmt auch in deinen Unterlagen steht...

Dim

Aus dem Gedächtnis schätze ich:

LSN: Log Sequence number, TA: Transaktion in der die Änderungen stattfinden.

der vollständigkeit halber..

grüße

delen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Vielen Herzlichen Dank für die sehr ausführliche Erklärung.

Ein Frage hätte ich aber noch.

Was passiert mit den offen Transaktionen LSN 4/5 und 8/9?

Werden diese ignoriert, sprich der ursprüngliche Wert bleibt bestehen oder die Änderung wird hineingeschrieben?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...