doku Geschrieben 24. August 2009 Geschrieben 24. August 2009 (bearbeitet) 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 24. August 2009 von doku Zitieren
dbwizard Geschrieben 24. August 2009 Geschrieben 24. August 2009 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 Zitieren
doku Geschrieben 24. August 2009 Autor Geschrieben 24. August 2009 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 Zitieren
Amstelchen Geschrieben 24. August 2009 Geschrieben 24. August 2009 ich kann mir darauf noch immer keinen reim machen. ist das gar eine theoretische aufgabe ohne konkretes DBMS? s'Amstel Zitieren
doku Geschrieben 24. August 2009 Autor Geschrieben 24. August 2009 Ja, ist ein theoretische Aufgabe. Ein konkretes DBMS gibt es nicht. Das ich das von unten nach oben Abarbeiten muss, ist mir klar. Nur ich weiß nicht, wie ich Undo und Redo interpretieren soll. Zitieren
dr.dimitri Geschrieben 24. August 2009 Geschrieben 24. August 2009 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 Zitieren
delen Geschrieben 25. August 2009 Geschrieben 25. August 2009 ... 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 Zitieren
doku Geschrieben 25. August 2009 Autor Geschrieben 25. August 2009 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? Zitieren
Empfohlene Beiträge
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.