9.3 Fehlerbehandlung

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

Fehlerbehandlung und Recovery

Fehlerbehandlung (Recovery)

Fehlerbehandlung (Recovery)

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

9. Transaktionsverwaltung 9.3. Fehlerbehandlung Seite 1

Übungen zu Datenbanksysteme

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

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

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

Datenbanken: Backup und Recovery

Recovery- und Buffermanager

Wiederherstellung (Recovery)

8. Wiederherstellung und Datensicherheit

Mächtigkeit von 2PL. Geben Sie einen Schedule S an, der. konfliktserialisierbar, jedoch nicht bei Anwendung von 2PL entstehbar. ist.

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

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

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

Transaktionsverwaltung und Recovery

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

9. Wiederherstellung und Datensicherung

Übungen zur Vorlesung. Datenbanken I

Kapitel 3: Logging & Recovery

Wiederanlauf (Recovery)

Kapitel 2 Transaktionsverwaltung

View. Arbeiten mit den Sichten:

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

Datenintegrität und Transaktionskonzept

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

Synchronisation in Datenbanksystemen in a nutshell

Alle Metadaten werden in Dateien gehalten

Prozessarchitektur einer Oracle-Instanz

7.2 Journaling-File-Systems (4)

Datenbanken: Architektur & Komponenten 3-Ebenen-Architektur

Kapitel 12 Integrität der Datenbank

Daten- und Transaktionskontrolle mit SQL DCL, TCL

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

Koordination des Mehrbenutzerbetriebs 9. Koordination des Mehrbenutzerbetriebs

Transaktionsverwaltung

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

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

Recovery. Fehlerarten: Transaktionsfehler

Oracle Datenbank - Recovery

3 Master File Table (2)

Datenbanken Konsistenz und Mehrnutzerbetrieb III

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

Datenbanksysteme II SS Übungsblatt 9: Wiederholung

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

Datenbanken. Prof. Dr. Bernhard Schiefer.

Konfliktgraph. Satz und Definition

TAV Übung 3. Übung 3: Verteilte Datenhaltung

Transaktionsverwaltung

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

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

Alle Metadaten werden in Dateien gehalten

Vorlesung mit Übung Datenbanksysteme 2

Kapitel 3 Synchronisation

5. Transaktionsverarbeitung

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

6.2 Master-File-Table (3)

Vorlesung Datenbanksysteme Univ.-Prof. Dr. Günther Specht. Universität Innsbruck Institut für Informatik Datenbanken und Informationssysteme (DBIS)

Software-Engineering und Datenbanken

Abschluss Einblick und Ausblick

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


Kapitel 1: Einführung

Algorithmen II Vorlesung am

4 LCN VCN LCN Extents werden außerhalb der MFT gespeichert

Implementierung von Dateisystemen

Database Exchange Manager. Infinqa IT Solutions GmbH, Berlin Stralauer Allee Berlin Tel.:+49(0) Fax.:+49(0)

Kapitel 9 Paralleler Zugriff auf DB

Transaktionen und Synchronisation konkurrierender Zugriffe

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

GERICHTETER GEWICHTETER GRAPH DESIGNDOKUMENT

Transkript:

9.3 Fehlerbehandlung Schutz vor Beeinträchtigungen durch Fehler des Systems oder eines Benutzers nach Systemzusammensturz innerhalb einer TA inkonsistenter Zustand der DB physische und logische Inkonsistenz Recovery-Komponente eines DBS: dient zum Wiederherstellen eines korrekten DB-Zustandes basiert auf dem TA-Konzept des DBS Fehlerklassen: Transaktionsfehler (z. B. Deadlock, Konsistenzverletzung, Division durch 0) Rücksetzen einer oder mehrerer TAs im laufenden Betrieb Systemfehler (DBS ist funktionsunfähig, Verlust des Inhalts im Hauptspeicher) Rückgängigmachen aller laufenden TAs (Neustart des Systems) Speicherfehler (Verlust des Plattenspeichers durch head crash, selten) Rekonstruieren der Datenbank Seite 235 von 252

Lesen und Schreiben von Datensätzen AWP 1 AWP 2 A neu B Datenbank-Puffer A alt B externe Datenbank Hauptspeicher Externspeicher Datensätzen werden in sogenannten Seiten (Blöcken) gespeichert eine Seite ist die kleinste Transfereinheit zwischen Extern- und Hauptspeicher ein DBS besitzt einen Puffer, in dem Datensätze (und Datenseiten) für die AWPs bereit gestellt werden. zu jeder Seite im Puffer gibt es genau eine Seite in der externen DB Seite in der externen DB ist aber ggf. veraltet. Schreiben einer Seite in die DB zerstört den alten Zustand. Seite 236 von 252

interner Ablauf einer Lese/Schreiboperation 1. Lese die Seite vom Externspeicher in den Puffer (wenn nicht bereits vorhanden) 2. Fixiere die Seite im Puffer, d.h. die Seite bleibt fest im Hauptspeicher. 3. Setze eine Sperre auf den gewünschten Datensatz. AWP liest/schreibt den Datensatz und führt weitere Operationen aus. 4. Hebe die Sperre auf. 5. Kennzeichne, daß das AWP die Seite nicht mehr benötigt (Unfix). im Fall von Schreiboperationen: Datenbank gerät kurzzeitig in einen inkonsistenten Zustand (innerhalb einer TA) modifizierte Seiten im Puffer werden nicht sofort auf den Externspeicher übertragen externe DB ist veraltet externe DB hat nach dem Ende der TA einen inkonsistenten Zustand. Verlust des Hauptspeichers ==> inkonsistente DB Ziel: DB soll auch bei Verlust des HSP in einem konsistenten Zustand sein. Seite 237 von 252

Varianten beim Lesen/Schreiben Freigabe von Seiten Pufferverwalter kann diese Seite aus dem Puffer entfernen und (wenn die Seite geändert wurde) auf den Externspeicher schreiben Varianten steal: vor dem commit einer TA no-steal: keine Freigabe vor dem commit der TA. Schreiben der modifizierten Seiten auf den Externspeicher Varianten force: Schreiben der Seiten beim commit no-force: Schreiben der Seiten zu einem späteren Zeitpunkt in heutigen DBS: no-force und steal Seite 238 von 252

Protokollierung von Änderungsoperationen mögliche Fälle nach einem commit einer TA (im Fall von steal und no-force): externe DB ist in einem inkonsistenten Zustand Änderungen sind in der externen DB noch nicht wirksam geworden. Protokoll REDO-Information: wenn Änderungen nachvollzogen werden sollen. UNDO-Information: wenn Änderungen rückgängig gemacht werden sollen. Eintrag in der Protokolldatei (Log) besteht aus: LSN: Log Sequence Number eindeutige Kennung (monoton wachsend) TA_ID: Transaktionskennung SID: Seitennummer REDO-Information UNDO-Information P_LSN: Zeiger auf den vorherigen Log-Eintrag der Transaktion TA_ID. Seite 239 von 252

Beispiel: Transaktion T1 Transaktion T2 logische Protokolldatei physische Protokolldatei begin-ta <#1, T1, begin_ta, 0> <#1, T1, begin_ta, 0> r(a,a1 old ) a1 new = a1 old - 10 begin_ta <#2, T2, begin_ta, 0> <#2, T2, begin_ta, 0> r(c,c old ) w(a,a1 new ) <#3, T1, P A, A = A-10, A = A+10, #1> <#3, T1, P A, RID A, a1 new, a1 old, #1> r(b, b old ) b new = b old + 10 c new = c old + 20 w(c,c new ) <#4, T2, P C, C = C+20, C-20, #2> <#4, T2, P C, RID C,c new, c old, #2> w(b, b new ) <#5, T1, P B, B=B+10, B=B-10, #3> <#5, T1, P B, RID B, b new, b old, #3> commit <#6, T1, commit, #5> <#6, T1, commit, #5> r(a,a2 old ) a2 new = a2 old - 20 w(a,a2 new ) <#7, T2, P A, A = A-20, A = A+20, #4> <#7, T2, P A, RID A, a2 new, a2 old, #4> commit <#8, T2, commit, #7> <#8, T2, commit, #7> mit Hilfe der UNDO- und der REDO-Information ist es also möglich den vorherigen Zustand der Seite zu rekonstruieren. Seite 240 von 252

bei der logischen Protokollierung ist es aber noch wichtig, den Zustand der betroffenen Seite zu kennzeichnen: LSN der zuletzt auf der Seite wirksamen Schreiboperation wird in der Seite zusätzlich abgespeichert. zwei Fälle können nun unterschieden werden: LSN der Seite < LSN eines Protokolleintrags LSN der Seite >= LSN des Protokolleintrags Seite 241 von 252

Verwaltung der Protokolleinträge AWP 1 AWP n abstrakte SQL-Mashine DB- Puffer Log- Puffer Datenbank Log-Datei DB-Archiv Log-Archiv Schreiben in den Puffer Schreiben auf Log-Datei Implementierung als Ringpuffer Seite 242 von 252

Schreiben der Einträge in die Log-Datei folgende Regeln müssen beim Schreiben der Log-Einträge befolgt werden bevor dem commit einer TA müssen alle zugehörigen Protokolleinträge in die Log- Datei geschrieben werden. bevor dem Schreiben einer modifizierten Seite in die (externe) Datenbank müssen alle zugehörigen Protokolleinträge geschrieben werden. wenn ein Protokolleintrag mit LSN x in die Log-Datei geschrieben wird, so müssen vorher alle Einträge mit LSN y und y < x geschrieben worden sein. Diese Vorgehensweise nennt man auch Write Ahead Log (WAL) Seite 243 von 252

9.3.1 Wiederanlauf nach einem Systemfehler Ursache: Verlust des Hauptspeichers zwei Arten von TA Winner: für TA, die bereits mit commit beendet wurden, müssen die durchgeführten Änderungen in der DB nachvollzogen werden (Warum?) Loser: für TA, die zum Zeitpunkt es Absturzes aktiv waren, aber noch nicht mit commit beendet wurden, müssen die Änderungen rückgängig gemacht werden. Wiederanlauf geschieht in drei Phasen: Analyse: Bestimme Winner und Loser Wiederholung der Historie (REDO) Zurücksetzen der Loser (UNDO) Analyse sequentielles Durchlaufen der Log-Datei vom Anfang bis zum Ende TA mit einem Eintrag begin_ta und einem Eintrag commit sind Winner. TA mit einem Eintrag begin_ta ohne einem Eintrag commit sind Loser. Seite 244 von 252

REDO-Phase: sequentielles Durchlaufen der Einträge in der Log-Datei vom Anfang bis zum Ende Lese die zugehörige Seite vom Externspeicher Falls LSN der Seite < LSN des Eintrags, (i) führe REDO-Operation aus (ii) Übertrage die LSN des Eintrags in die Seite. UNDO-Phase: sequentielles Durchlaufen der Einträge in der Log-Datei vom Ende bis zum Anfang führe für jede Loser-TA die UNDO-Operation aus. zusätzlich: Schreiben von sogenannten Kompensationseinträgen in die Log-Datei Seite 245 von 252

Fehlerbehandlung beim Wiederanlauf Schicksale im Leben einer Datenbank Stromausfall: Verlust es Hauptspeichers Wiederanlauf des Systems erneuter Stromausfall (bevor der Wiederanlauf beendet wurde) Anforderung: Idempotenz der UNDO- und REDO-Operationen Ergebnis einer beliebig oft ausgeführten UNDO/REDO-Operation entspricht dem Ergebnis einer einmalig ausgeführten UNDO/REDO-Operation REDO-Operationen sind idempotent Idempotenz der UNDO-Operation Kompensationseinträge in der Protokolldatei sicher gestellt: für jede ausgeführte UNDO-Operation wird ein Eintrag erzeugt: besitzt keine UNDO-Information REDO-Information entspricht dabei der (ausgeführten) UNDO-Operation. zusätzlich einen Verweis auf einen Eintrag in der Log-Datei (UNDO_P_LSN) Seite 246 von 252

Beispiel: Transaktionen T 1 und T 2 Log-Datei (vor dem Wiederanlauf) #1 #2 #3 #4 #5 #6 #7 Log-Datei nach dem Wiederanlauf #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 UNDO_P_LSN NIL UNDO_P_LSN Zeiger auf die nächste auszuführende UNDO-Operation der TA. Seite 247 von 252

9.3.2 Rücksetzen einer TA System muß eine oder mehrere TAs zurücksetzen (Deadlock) Benutzer bricht seine TA ab Anforderung: alle DB-Änderungen der TA müssen zurückgenommen werden lokal für eine TA möglich, wenn noch keine Sperren freigegeben wurden sequentielles Durchlaufen der Protokolldatei vom Ende bis zum ersten Eintrag der TA, die zurückgesetzt werden soll: Ausführen der UNDO-Operation Eintrag eines Kompensationseintrags Aufsuchen des nächsten Eintrags (mit P_LSN) Sperren der TA müssen zusätzlich beim Rücksetzen freigegeben werden. Seite 248 von 252

9.3.3 Sicherungspunkte Nachteil: Protokolldateien können sehr groß werden Einführung von Sicherungspunkte, so daß idealerweise (!) Wiederanlauf startet am letzten Sicherungspunkt ältere Protokolleinträge können gelöscht werden Arten von Sicherungspunkten (savepoints, checkpoints) Transaktionskonsistente Sicherungspunkte System wird in einen Ruhezustand überführt (d.h. keine TA ist mehr aktiv) Schreiben aller modifizierten Seiten Neuinitialisierung der Protokolldatei wartende TA können gestartet werden Nachteil: Verzögerung der TA großer Aufwand beim Schreiben des Pufferinhalts Seite 249 von 252

Aktionsbasierte Sicherungspunkte keine Beruhigung des Systems erforderlich, stattdessen müssen nur die elementaren Änderungsoperationen abgeschlossen werden. T5 T4 T3 T2 T1 Sicherungspunkt Abbruch Zeit MIN_LSN folgende Aktionen werden ausgeführt Schreiben des Log-Puffers und des DB-Puffers (WAL-Prinzip!) Berechne die Liste S TA aller zum Zeitpunkt des Sicherungpunktes aktiven TAs Berechne MIN_LSN = min {LSN LSN gehört zu einer TA aus S TA } Analys- und REDO-Phase setzt beim Sicherungspunkt auf. UNDO-Phase muß aber bis MIN_LSN gehen Seite 250 von 252

Unscharfe Sicherungspunke reduziert die Systembelastung durch schrittweises Weitersetzen von Sicherungspunkten folgende Datenstrukturen werden nun benötigt schmutzige Pufferseiten sind miteinander verkettet bzgl. der LSN der in der Seite zuletzt ablaufenden Änderung. Seite am Kopf der Liste besitzt die kleinste LSN (MIN_LSN_DIRTY). MIN_LSN_DIRTY ist quasi die LSN des Sicherungspunkts Liste S TA enhält alle zum Zeitpunkt MIN_LSN_Dirty aktiven TAs MIN_LSN ist die kleinste LSN die in TAs aus S TA vorkommt. Seite 251 von 252

9.3.4 Rekonstruktion Rekonstruktion eines korrekten DB-Zustand (mit möglichst wenig Verlust) Vorgehensweise: DB-Kopie, ein sogenannter Dump, wird benötigt zu einem zurückliegenden Zeitpunkt (sehr teuer, deshalb selten) verwende Dump und wiederhole alle seitdem beendete TAs hierzu werden benötigt: after images veränderter Objekte (benötigt bis zum letzten Dump) entsprechende Protokolldatei wird von vorne nach hinten gelesen Dump Abbruch T5 T4 T3 T2 T1 Zeit Seite 252 von 252