Recovery. Prof. Dr. T. Kudraß 1

Ähnliche Dokumente
Speicherhierarchie. Für die Dauer eines Zugriffs wird die Seite im Puffer fixiert (pin) Werden Daten geändert, so wird die Seite als dirty markiert

Recovery. Fehlerarten: Transaktionsfehler

Verteiltes Sperren Verteilte Recovery

Fehlerbehandlung und Recovery

Fehlerbehandlung (Recov

Fehlerklassifikation 1. Lokaler Fehler in einer noch nicht festgeschriebenen. Wirkung muss zurückgesetzt werden R1-Recovery

9.3 Fehlerbehandlung

Fehlerbehandlung (Recovery)

Fehlerbehandlung (Recovery)

8. Wiederherstellung und Datensicherheit

13. Fehlerbehandlung/2. Architektur von Datenbanksystemen I

Wiederherstellung (Recovery)

Datenbanksysteme Technische Grundlagen Transaktions-Konzept, Mehrbenutzer-Synchronisation, Fehlerbehandlung

Aufgabe der Recovery-Komponente des Datenbanksystems ist es, nach einem Fehler den jüngsten konsistenten Datenbankzustand wiederherzustellen.

Recovery- und Buffermanager

9. Transaktionsverwaltung 9.3. Fehlerbehandlung Seite 1

Logging und Recovery 0. Einführung - Fehlermodell - Recovery-Arten

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15.

C. Mohan Recovery und Transaktionen

9. Wiederherstellung und Datensicherung

Wiederanlauf (Recovery)

Fehlerbehandlung. Transaktionsverwaltung. Kapitel 7 T 2 T 3. T n T 1. Transaktions-Manager. Scheduler. Daten-Manager

Kapitel 3: Logging & Recovery

Übungen zu Datenbanksysteme

Datenbanksysteme II SS Übungsblatt 9: Wiederholung

3.6 Transaktionsverwaltung

Übungen zur Vorlesung. Datenbanken I

Datenbank-Administration im WS 2012/13 - Einführung in Projekt 3 - Prof. Dr. Klaus Küspert Dipl.-Math. Katharina Büchse Dipl.-Inf.

Aufgabe der Recovery-Komponente des Datenbanksystems ist es, nach einem Fehler den jüngsten konsistenten Datenbankzustand wiederherzustellen.

Vorlesungsinhalt. Recovery. G. Specht: Datenbanksysteme Kapitel XI. Vorlesung Datenbanksysteme Univ.-Prof. Dr.

Transaktionsverwaltung und Recovery

Daten- und Transaktionskontrolle mit SQL DCL, TCL

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15.

Transaktionen Recovery Isolationslevel. Datenbanksysteme. Transaktionen. Burkhardt Renz. Fachbereich MNI Technische Hochschule Mittelhessen

Datenbanken Konsistenz und Mehrnutzerbetrieb III

Atomare Commit-Protokolle. Grundlagen von Datenbanken - SS Prof. Dr. Stefan Böttcher Atomare Commit-Protokolle Folie 1

Datenbanken: Backup und Recovery

View. Arbeiten mit den Sichten:

Software-Engineering und Datenbanken

Inhaltsverzeichnis. Inhaltsverzeichnis

Moritz Kaufmann. Technische Universität München

Die Sicht eines Sysadmins auf DB systeme

Kapitel 2 Transaktionsverwaltung

8. Logging und Recovery 1

RECOVERY. "Concurrency Control and Recovery in Database Systems" Bernstein, Hadzilacos, Goodman. Addison-Wesley. Kapitel 1, 6

Transaktionsverwaltung

1 Transaktionen in SQL. 2 Was ist eine Transaktion. 3 Eigenschaften einer Transaktion. PostgreSQL

1. Einführung Transaktionsverwaltung

Datenintegrität und Transaktionskonzept

5. Transaktionsverarbeitung

Transaktionsverwaltung

Datenbanken: Architektur & Komponenten 3-Ebenen-Architektur

Transaktionskonzept Eine Transaktion ist eine Folge von Operationen mit folgenden ACID Eigenschaften: Atomicity: Es werden alle Operationen oder gar k

Teil I Einführung & Grundlagen. 1.1 Was ist eine Transaktion?

In diesem Abschnitt wollen wir uns mit der Architektur von Datenbank Managements Systemen beschäftigen.

ORACLE PROZESSARCHITEKTUR J O N N Y R I L L I C H

TAV Übung 3. Übung 3: Verteilte Datenhaltung

RECOVERY. "Concurrency Control and Recovery in Database Systems" Bernstein, Hadzilacos, Goodman. Addison-Wesley. Kapitel 1, 6.

Mehrwegbäume Motivation

BS-Unterstützung für NVRAM

7.2 Journaling-File-Systems (4)

Tag 4 Inhaltsverzeichnis

Synchronisation in Datenbanksystemen in a nutshell

Datenbanksystem. System Global Area. Hintergrundprozesse. Dr. Frank Haney 1

Beispielszenarien. 12. Transaktionen. ACID-Eigenschaften. Transaktion

Datenbankadministration

Vorlesung mit Übung Datenbanksysteme 2

6.3 Verteilte Transaktionen

In diesem Abschnitt stehen Transaktionen im Mittelpunkt. Hierbei geht es darum, wie bei Mehrbenutzerbetrieb die Integrität von Datenbanken

9 Transaktionskonzept

Alle Metadaten werden in Dateien gehalten

10. Übungsblatt. Für die Übung am Donnerstag, 15. Januar 2009, von 15:30 bis 17:00 Uhr in 13/222.

5. Crash- und Medien-Recovery

Datenbanksysteme II Recovery Felix Naumann

Probeklausur Grundlagen der Datenbanksysteme II

KAPITEL 6 TRANSAKTIONSVERWALTUNG UND RECOVERY

Aufbau einer Oracle Datenbank Tablespace, Arten von Dateien

8. Transaktionsverarbeitung. Architektur von Datenbanksystemen I

11. Backup & Recovery. Datenbankadministration

OPERATIONEN AUF EINER DATENBANK

Bedeutung der Metadateien. Alle Metadaten werden in Dateien gehalten. NTFS ist ein Journal-File-System

3. Speicher- und Seitenzuordnung

Aufbau Datenbanksysteme

Abschluss Einblick und Ausblick

IT-Kompaktkurs. Datenbanken Skript zur Folge 4. Prof. Dr. Manfred Gruber Fachhochschule München

Kapitel 15. Transaktionen, Fehlerbehandlung, Multi-User. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken

5. Crash- und Medien-Recovery

Beispiel: Bankensoftware. 6 Transaktionen. 6.1 Grundlagen Einführung und Begriffe. Transaktionen. Beispiel (Fortsetzung 1): Verzahnte Ausführung

Kapitel 3 Synchronisation

Transaktionen und Synchronisation konkurrierender Zugriffe

8. Datenkontrolle. Klassifikation von Integritätsbedingungen Integritätsbedingungen in SQL Integritätsregeln / Trigger

1 Referentielle Aktionen

Datenbanken und SQL. Kapitel 8. Concurreny und Recovery. Edwin Schicker: Datenbanken und SQL

P.A. Bernstein, V. Hadzilacos, N. Goodman

fbi h_da Datenbanken Kapitel 7: Transaktionsmanagement Schestag Datenbanken (Cnam) Kapitel 7-1

Kommunikation und Datenhaltung

Literatur und Quellen. Datenbanken. Inhalt. Inhalt. Transaktionen. Nikolaus Augsten. Wintersemester 2013/14

Anforderungen an die Transaktionsverwaltung gleichzeitig (nebenläug) ablaufende Transaktionen Synchronisation Datenbanken gegen Soft- und Hardwarefehl

Transkript:

Recovery Prof. Dr. T. Kudraß 1

Transaktionsfehler Fehlerarten: Transaktionsfehler Freiwilliger Transaktionsfehler durch eine ROLLBACK-Anweisung Unzulässige Dateneingabe Nicht erfolgreiche DB-Operation Fehler im Transaktionsprogramm Division durch Null Adressierungsfehler Systemseitiger Abbruch einer Transaktion Verletzung von Integritätsbedingungen Verletzung von Zugriffsbeschränkungen Systemseitiger Abbruch einer oder mehrerer Transaktionen Auflösung von Deadlocks (Select a Victim) Behandlung von Systemüberlast (z.b. Sperr- oder Speicherengpässe) Prof. Dr. T. Kudraß 2

Systemfehler (Crash) Fehlerarten (Forts.) Weiterer Betrieb des DBS nicht mehr möglich Fehler der Hardware (z.b. Rechnerausfall) Fehler der Software (z.b. Datenbank- oder Betriebssystem) Umgebungsfehler (z.b. Stromausfall) Verlust bzw. Verfälschung von Hauptspeicherinhalten Datenbank auf Externspeicher unzerstört Geräte- bzw. Externspeicherfehler Ausfall von Magnetplatten (Head Crash) Rekonstruktion der durch den Ausfall verlorengegangenen Änderungen mittels Archivkopien Katastrophen-Recovery Zerstörung eines ganzen Rechenzentrums (Verarbeitungsrechner und Externspeicher) aufgrund von Naturkatastrophen oder Anschlägen Verhinderung eines Datenverlustes über verteilten Systemansatz Prof. Dr. T. Kudraß 3

ACID-Prinzip Rückschau - Transaktionseigenschaften Atomicity: Alle Aktionen einer Transaktion sind erfolgreich oder gar keine (Atomarität) Consistency: Eine Transaktion garantiert den Übergang von einem konsistenten DB-Zustand zu einem anderen konsistenten DB-Zustand (Konsistenz) Isolation: Die Ausführung einer Transaktion ist isoliert von der Ausführung parallel ablaufender anderer Transaktionen Durability: Wenn eine Transaktion Commit macht, ist ihre Wirkung persistent (Dauerhaftigkeit) Recovery-Manager garantiert Atomarität und Dauerhaftigkeit Ist abhängig von anderen Komponenten des DBMS: Einbringstrategie, Sperrverfahren, Pufferverwaltung Prof. Dr. T. Kudraß 4

Motivation Atomarität Transaktionen können zurückgesetzt werden (Rollback) Dauerhaftigkeit Was geschieht beim Absturz des DBMS (betrifft auch Puffer)? Synchronisation der Transaktionen vorausgesetzt Gewünschtes Verhalten nach einem Restart des Systems: T1, T2 & T3 müssen dauerhaft sein T4 & T5 sollten zurückgesetzt werden (keine sichtbaren Effekte hinterlassen) T1 T2 T3 T4 T5 Beispiel-Szenario crash! Prof. Dr. T. Kudraß 5

Indirekte Einbringstrategien Einbringstrategien Ausschreiben geänderter DB-Seiten in separate Blöcke, so daß ursprüngliche Blöcke ungeändert bleiben Ausschreiben einer Seite bringt diese noch nicht in die materialisierte Datenbank (erfordert separates Einbringen) Führen von Seitentabellen, die Abbildung von Speicherseiten auf Plattenblöcke auf der Platte darstellen Umschalten zwischen zwei Seitentabellen ermöglicht atomare Änderungen in der DB (Schattenspeicher-Konzept) Bei Systemausfall konsistenter DB-Zustand verfügbar Durch indirekte Seitenzuordnung Zerstörung der Clustereigenschaften Direkte Einbringstrategien (Update-in-Place) Seite wird immer auf den gleichen Block zurückgeschrieben (somit direktes Überschreiben oder Löschen auf Platte) Weitere Betrachtungen basieren auf Update-in-Place Strategie Prof. Dr. T. Kudraß 6

Pufferverwaltung Ausschreiben schmutziger Änderungen? No Steal: Seiten mit schmutzigen Änderungen dürfen nicht aus dem Puffer ersetzt ( gestohlen ) werden. Somit ist garantiert, daß die materialisierte Datenbank nach einem Crash keine Änderungen von nicht erfolgreich beendeten Transaktionen enthält. Keine Undo- Recovery notwendig. Blockiert für lange Änderungstransaktionen den Puffer (i.allg. mehr schmutzige Seiten als Puffergröße) Steal: Erlaubt die Ersetzung schmutziger Seiten. Demnach ist nach einem Systemfehler eine Undo-Recovery erforderlich, um die Änderungen nicht erfolgreicher Transaktionen zurückzusetzen. Änderungen einer Transaktion bis zum Commit ausschreiben? Force: Alle geänderten Seiten werden spätestens bis zum Transaktionsende (vor dem Commit) in die permanente DB geschrieben. Damit entfällt die Notwendigkeit einer Redo-Recovery nach einem Crash. No Force: Verzichtet auf das Hinauszwingen der Änderungen, stattdessen können die Seiten nach Ende der ändernden TA geschrieben werden. Erfordert Redo-Recovery nach einem Crash für die erfolgreichen Transaktionen. Prof. Dr. T. Kudraß 7

Pufferverwaltung Warum nicht jedes Write auf die Platte schreiben (Force)? Schlechte Antwortzeit Garantiert aber Persistenz Ersetzung von Seiten von nichtbeendeten Transaktionen (Steal)? Wenn nicht, schlechter Durchsatz Wenn doch, wie kann Atomariät garantiert werden? Günstigste Strategie: No Force / Steal Force No Force No Steal Trivial Steal Gewünscht Steal: Beim Zurückschreiben einer Seite P muß der alte Wert der Seite zu diesem Zeitpunkt vermerkt werden, um UNDO möglich zu machen (Atomarität) No Force: Schreibe so wenig wie möglich (an einem sicheren Ort) Informationen über die modifizierten Seiten, zum Commit- Zeitpunkt einer Transaktion, um REDO möglich zu machen Prof. Dr. T. Kudraß 8

Idee: Logging Aufzeichnen der REDO and UNDO Information für jedes Update in einem Log Sequentielles Schreiben auf das Log (auf einer separaten Platte) Minimale Information (Differenz) ins Log schreiben, so daß mehrere Updates auf eine einzige Seite im Log passen Unterscheide physisches vs. logisches Protokollieren Physisch: Speicherung der Log-Infos auf Ebene der physischen Objekte(z.B. Seiten) Zustands-Logging: Zustände der Objekte vor und nach der Änderung (alter Zustand: Before-Image, neuer Zustand: After- Image) Übergangs-Logging: Speicherung der Zustandsdifferenz Logisch: Speicherung der Änderungsoperationen mit ihren Parametern (z.b. INSERT mit Attributwerten) Garantiert minimalen Log-Umfang Prof. Dr. T. Kudraß 9

Write-Ahead Logging (WAL) Write-Ahead Logging Protokoll: Write-Ahead-Log-Prinzip: Vor dem Schreiben einer schmutzigen Änderung in die materialisierte Datenbank muß die zugehörige Undo-Information (z.b. Before-Image) in die Log-Datei geschrieben werden (Logging vor Schreiben in die Datenbank). Nur für Steal relevant. Commit-Regel: Vor dem Commit einer Transaktion sind für ihre Änderungen ausreichende Redo-Informationen (z.b. After-Images) zu sichern #1 garantiert Atomarität #2 garantiert Dauerhaftigkeit Beschreibung des Logging- und Recovery-Verfahrens am Beispiel des ARIES-Algorithmus (Vorbild für Recovery- Algorithmen in vielen DBMS) Prof. Dr. T. Kudraß 10

WAL & Log DB RAM LSNs pagelsns flushedlsn Log: Eine geordnete Liste von REDO/UNDO Aktionen Log-Record enthält: <transid, pageid, offset, length, old data, new data> und zusätzliche Kontrollinformationen (siehe später) Jeder Log-Record hat eine eindeutige Log Sequence Number (LSN) LSNs immer aufsteigend Jede Datenseite enthält eine pagelsn Die LSN des jüngsten Log-Record für ein Update auf dieser Seite System kontrolliert die flushedlsn Größte LSN, die aus dem RAM geflusht wurde WAL: Vor dem Schreiben einer Seite pagelsn flushedlsn pagelsn Log-Records flushed to disk Log Tail in RAM Prof. Dr. T. Kudraß 11

Log-Sätze Ein Log-Satz wird für jede der folgenden Aktionen geschrieben: Update Nach Modifikation einer Seite wird pagelsn auf LSN des Update- Log-Record gesetzt Commit Bei Entscheidung für Commit wird ein Commit-Record mit der Transaktions-ID geschrieben und auf Platte gezwungen (dann erst wirklich Commit der Transaktion OK) Abort Wird bei Abort einer Transaktion geschrieben, Undo wird angestoßen End (bedeutet hier: Beendigung von Commit oder Abort) Nach Beendigung zusätzlicher Aktionen bei Commit oder Abort Compensation Log Records (CLRs) Beim Zurücksetzen einer Transaktion (UNDO) müssen Aktionen rückgängig gemacht werden; geschieht durch das Schreiben eines CLR Prof. Dr. T. Kudraß 12

Aufbau eines Log-Satzes prevlsn Vorherige LSN (LSNs sind verkettet) transid ID des Transaktion, die den Log-Satz erzeugt hat type Typ des Log-Satzes: Update, Commit, Abort, End, CLR Für Update-Log-Records: pageid ID der modifizierten Seite length Länge offset Position before-image Alter Wert vor Änderung after-image Neuer Wert nach Änderung Prof. Dr. T. Kudraß 13

Andere Datenstrukturen beim Recovery Transaktions-Tabelle Ein Eintrag pro aktive Transaktion Enthält transid (Transaktions-ID), Status (running/commited/aborted) und lastlsn (letzte vergebene LSN) Dirty Page-Tabelle Ein Eintrag pro schmutzige Seite im Puffer Enthält reclsn - die LSN des Log-Satzes, durch den erstmals die Seite schmutzig gemacht wurde Prof. Dr. T. Kudraß 14

pageid reclsn P500 05 P600 10 P505 20 Beispiel DIRTY PAGE TABLE LSN prevlsn transid type pageid length offse t beforeimage afterimage 05 -- T1000 update P500 3 21 ABC DEF 10 -- T2000 update P600 3 41 HIJ KLM 15 10 T2000 Update P500 3 20 GDE QRS 20 05 T1000 update P505 3 21 TUV WXY transid lastlsn T1000 20 T2000 15 TRANSACTION TABLE LOG Prof. Dr. T. Kudraß 15

Normale Ausführung einer Transaktion Folge von Read- und Write-Aktionen, abgeschlossen durch Commit oder Abort Annahme: Write ist eine atomare Operation auf der Platte Zusätzliche Dinge wären notwendig bei der Behandlung nichtatomarer Writes Striktes 2PL-Protokoll STEAL/NO-FORCE Pufferverwaltung mit Write-Ahead Logging Prof. Dr. T. Kudraß 16

Sicherungspunkte (Checkpoints) Sind Maßnahmen zur Begrenzung des Redo-Aufwandes nach Systemfehlern Redo-Recovery erforderlich für alle erfolgreich geänderten Seiten, die nur im DB-Puffer im Hauptspeicher - aber nicht in der materialisierten DB vorlagen Probleme bei Hot-Spot-Seiten (hohe Zugriffsrate), die nicht aus dem Puffer verdrängt werden und viele Änderungen aufweisen Hoher Redo-Aufwand Hoher Platzbedarf für den Log Direkte vs. Indirekte Checkpoints Direkt: Ausschreiben aller geänderten Seiten in die mat. DB Indirekt (Fuzzy Checkpoint): Protokollierung gewisser Statusinformationen im Log Durchführung direkter Checkpoints sehr teuer (Abwägen zwischen Häufigkeit der Checkpoints und notwendigem Aufwand bei Redo-Recovery) Prof. Dr. T. Kudraß 17

begin_checkpoint Record: Sicherungspunkte in ARIES Zeigt den Beginn des Checkpoint an end_checkpoint Record: Enthält aktuelle Transaktions-Tabelle und Dirty Page-Tabelle. Dies ist somit ein `Fuzzy Checkpoint : Andere Transaktionen laufen weiter; somit stimmen diese Tabellen nur genau zu Zeitpunkt von begin_checkpoint Kein Versuch, schmutzige Seiten auf Platte zu zwingen Effektivität des Checkpoint begrenzt durch die älteste Änderung auf einer schmutzigen Seite (bestimmt durch reclsn) Abhilfe: Periodisches Ausschreiben schmutziger Seiten auf Platte (Flushing), löst auch das Problem der Hot Spots Speichere LSN des Checkpoint-Records an einem sicheren Ort (Master-Record) Prof. Dr. T. Kudraß 18

Big Picture: Was ist wo? LOG Log-Records prevlsn transid type pageid length offset before-image after-image DB Datenseiten jede mit einer pagelsn Master-Record RAM Trans.-Tabelle lastlsn status Dirty Page-Tabelle reclsn flushedlsn Prof. Dr. T. Kudraß 19

Abort einer Transaktion Zunächst betrachten wir den expliziten Abbruch einer Transaktion nach Transaktionsfehler (Abort) Kein Systemfehler! Zurückspielen des Log in umgekehrter Richtung, Änderungen ungeschehen machen (UNDO) Lese lastlsn der Transaktion aus der Transaktionstabelle Zurückverfolgen der Kette der Log-Records über den prevlsn- Zeiger Vor dem Start des UNDO: schreibe einen Abort-Log-Record Wichtig für Crash-Recovery während der UNDO-Phase (siehe später) Prof. Dr. T. Kudraß 20

Abort (Forts.) Zur Ausführung von UNDO muß eine Sperre auf den Daten vorhanden sein Kein Problem! Vor der Wiederherstellung des alten Wertes der Seite, schreibe einen CLR: Logging wird auch während UNDO fortgesetzt! CLR hat ein Extra-Feld: undonextlsn Zeigt auf die nächste LSN zum undo (entspricht prevlsn des Satzes, der gerade rückgängig gemacht wird) CLRs werden niemals rückgängig gemacht (höchstens REDO - garantiert Atomarität) Bei Ende von UNDO, schreibe einen End Log-Record Prof. Dr. T. Kudraß 21

Schreibe Commit-Satz ins Log Commit einer Transaktion Alle Log-Sätze bis zur lastlsn der Transaktion werden auf Platte ausgeschrieben (flush) Garantiert die Einhaltung der Bedingung: flushedlsn lastlsn. Log Flush = sequentielles synchrones Schreiben des Log-Puffers auf Platte Viele Log-Sätze pro Log-Seite Ende der Commit() Prozedur (z.b. Freigabe der Sperren) Schreibe End-Satz ins Log Prof. Dr. T. Kudraß 22

Crash-Recovery: Big Picture Ältester Log- Record einer TA, die beim Crash noch aktiv Kleinste reclsn in Dirty Page- Tabelle nach Analyse Letzter Checkpoint Starte beim Checkpoint (ermitteln über Master-Record). Drei Phasen. Bestimmen der Gewinner- und Verlierer- Transaktionen seit dem Checkpoint (Welche Commit? Welche Abort?) (Analyse). REDO aller Aktionen (Wiederholung der Geschichte) UNDO Effekte aller gescheiterten Transaktionen CRASH A R U Prof. Dr. T. Kudraß 23

3 Aufgaben: Recovery: Analyse-Phase Bestimme den Punkt im Log, an dem die REDO-Phase beginnen muß Bestimme die Menge der Seiten im Puffer, die zum Crash-Zeitpunkt schmutzig waren Identifiziere die Transaktionen, die zum Crash-Zeitpunkt aktiv waren und rückgängig gemacht werden müssen (UNDO) Rekonstruiere Zustand zum Checkpoint-Zeitpunkt über end_checkpoint Satz Lese sequentiell vorwärts vom Checkpoint. End Record: Entferne Transaktion aus Transaktionstabelle Andere Records: Füge Transaktion zur Transaktionstabelle hinzu, setze lastlsn=lsn, ändere Transaktionsstatus (Commit oder Undo) Update-Record: Wenn P nicht in Dirty-Page-Tabelle vorhanden: Füge P zur Dirty Page-Tabelle hinzu, setze ihren reclsn=lsn. Prof. Dr. T. Kudraß 24

Recovery: REDO-Phase Wir wiederholen den Ablauf, um den Zustand zum Zeitpunkt des Crash zu rekonstruieren: Wiederholung aller Updates (auch der abgebrochenen Transaktionen!), Wiederholung der Compensation Log Records CLRs. Vorwärtslesen vom Log-Record, dessen LSN gleich der kleinsten reclsn in Dirty Page-Tabelle. Für jede LSN eines CLR oder Update-Log-Record, mache ein REDO der Aktion sofern nicht gilt: Betroffene Seite ist nicht in Dirty Page-Tabelle, oder Betroffene Seite ist in Dirty Page-Tabelle, aber hat reclsn > LSN, oder pagelsn (in DB) LSN. REDO einer Aktion: Wiederholte Ausführung der geloggten Aktion Setze pagelsn auf LSN. Kein zusätzliches Logging! Prof. Dr. T. Kudraß 25

Recovery: UNDO-Phase Zurücksetzen der Verlierer-Transaktionen in umgekehrter Reihenfolge ToUndo={ l l lastlsn einer Verlierer-Transaktion } aus der Tabelle der aktiven Transaktionen Repeat: Wähle größte LSN aus ToUndo. Wenn diese LSN ein CLR ist und undonextlsn==null Schreibe einen End-Record für diese Transaktion Wenn diese LSN eine CLR ist, und undonextlsn!= NULL Füge undonextlsn zu ToUndo hinzu Ansonsten ist diese LSN ein Update. Rückgängigmachen des Update, schreibe einen CLR, füge prevlsn zu ToUndo hinzu Until ToUndo is empty. Prof. Dr. T. Kudraß 26

Beispiel Recovery LSN LOG RAM 00 05 begin_checkpoint end_checkpoint Xact Table lastlsn status Dirty Page Table reclsn flushedlsn 10 20 30 40 45 update: T1 writes P5 update T2 writes P3 T1 abort CLR: Undo T1 LSN 10 T1 End prevlsns ToUndo 50 60 update: T3 writes P1 update: T2 writes P5 CRASH, RESTART Prof. Dr. T. Kudraß 27

Beispiel Recovery (Forts.) Phase 1: Analyse Bestimmung der schmutzigen Seiten: P1 (mit reclsn = 50) P3 (mit reclsn = 20) P5 (mit reclsn = 10) Bestimmung der zum Crash-Zeitpunkt aktiven Transaktionen T2 (mit lastlsn = 60) T3 (mit lastlsn = 50) T1 bereits beendet (End-Logsatz 45) Phase 2: Redo Wiederholung aller Aktionen ab Log-Record 10 (= min. reclsn in Dirty- Page-Tabelle) Phase 3: Undo ToUndo = {60, 50} für T2 und T3 (jeweils größte LSN pro Transaktion) Beginne mit LSN = 60: Undo Log-Record 60; Schreibe CLR 70 undonextlsn = 20 (nächste Aktion für T2) Weiter mit LSN = 50: Undo Log-Record 50; Schreibe CLR 80 undonextlsn = NULL (T3 komplett zurückgesetzt) -> Schreibe End-Record für T3 mit LSN 85 usw... Prof. Dr. T. Kudraß 28

Beispiel Recovery (Forts.) RAM Xact Table lastlsn status Dirty Page Table reclsn flushedlsn ToUndo LSN 00,05 10 20 30 40,45 50 60 70 80,85 90 LOG begin_checkpoint, end_checkpoint update: T1 writes P5 update T2 writes P3 T1 abort CLR: Undo T1 LSN 10, T1 End update: T3 writes P1 update: T2 writes P5 CRASH, RESTART CLR: Undo T2 LSN 60 CLR: Undo T3 LSN 50, T3 end CRASH, RESTART CLR: Undo T2 LSN 20, T2 end undonextlsn Prof. Dr. T. Kudraß 29

Zusammenfassung Logging / Recovery Recovery Manager garantiert Atomarität und Dauerhaftigkeit Write-Ahead-Logging (WAL), um STEAL/NO-FORCE Policy zu erlauben ohne Verzicht auf Korrektheit LSNs identifizieren Log-Sätze; sind rückwärtsverkettet pro Transaktione pagelsn erlaubt Vergleich von Datenseite und Log-Sätzen Checkpointing: Verfahren, um die Größe des Log zu begrenzen (verkürzt Recovery) Recovery arbeitet in 3 Phasen: Analysis: Vorwärts vom Checkpoint. Redo: Vorwärts von kleinster reclsn (ältester Log-Eintrag, der eine schmutzige Seite betrifft) Undo: Rückwärts vom Ende bis zur ersten LSN der ältesten Transaktion, die zum Crash-Zeitpunkt aktiv war Undo heißt: Schreibe Compensation Log Record (CLR) Redo wiederholt Geschichte : Vereinfachte Logik Prof. Dr. T. Kudraß 30