Datenbanksysteme II: Implementation of Database Systems Recovery Undo / Redo



Similar documents
Failure Recovery Himanshu Gupta CSE 532-Recovery-1

Transactions and Recovery. Database Systems Lecture 15 Natasha Alechina

Recovery and the ACID properties CMPUT 391: Implementing Durability Recovery Manager Atomicity Durability

Chapter 14: Recovery System

Chapter 16: Recovery System

Review: The ACID properties

Chapter 15: Recovery System

! Volatile storage: ! Nonvolatile storage:

How To Recover From Failure In A Relational Database System

Last Class Carnegie Mellon Univ. Dept. of Computer Science /615 - DB Applications

Information Systems. Computer Science Department ETH Zurich Spring 2012

Outline. Failure Types

Transaction Management Overview

Unit 12 Database Recovery

UVA. Failure and Recovery. Failure and inconsistency. - transaction failures - system failures - media failures. Principle of recovery

Recovery: An Intro to ARIES Based on SKS 17. Instructor: Randal Burns Lecture for April 1, 2002 Computer Science Johns Hopkins University

Recovery: Write-Ahead Logging

Recovery System C H A P T E R16. Practice Exercises

Database Concurrency Control and Recovery. Simple database model

COS 318: Operating Systems

Recovery Theory. Storage Types. Failure Types. Theory of Recovery. Volatile storage main memory, which does not survive crashes.

Introduction to Database Management Systems

Recovery algorithms are techniques to ensure transaction atomicity and durability despite failures. Two main approaches in recovery process

Chapter 10. Backup and Recovery

6. Backup and Recovery 6-1. DBA Certification Course. (Summer 2008) Recovery. Log Files. Backup. Recovery

Crash Recovery. Chapter 18. Database Management Systems, 3ed, R. Ramakrishnan and J. Gehrke

Datenbanksysteme II: Implementation of Database Systems Implementing Joins

Configuring Apache Derby for Performance and Durability Olav Sandstå

Lesson 12: Recovery System DBMS Architectures

Chapter 10: Distributed DBMS Reliability

Transactions and ACID in MongoDB

Crashes and Recovery. Write-ahead logging

Course Content. Transactions and Concurrency Control. Objectives of Lecture 4 Transactions and Concurrency Control

Chapter 6 The database Language SQL as a tutorial

Configuring Apache Derby for Performance and Durability Olav Sandstå

Week 1 Part 1: An Introduction to Database Systems. Databases and DBMSs. Why Use a DBMS? Why Study Databases??

Introduction to Database Systems. Module 1, Lecture 1. Instructor: Raghu Ramakrishnan UW-Madison

1.264 Lecture 15. SQL transactions, security, indexes

DBMS Questions. 3.) For which two constraints are indexes created when the constraint is added?

The first time through running an Ad Hoc query or Stored Procedure, SQL Server will go through each of the following steps.

Introduction to Database Systems CS4320. Instructor: Christoph Koch CS

Connectivity. Alliance Access 7.0. Database Recovery. Information Paper

Redundancy Options. Presented By: Chris Williams

DATABASDESIGN FÖR INGENJÖRER - 1DL124

Oracle Architecture. Overview

Recovery Principles in MySQL Cluster 5.1

Restore and Recovery Tasks. Copyright 2009, Oracle. All rights reserved.

Agenda. Transaction Manager Concepts ACID. DO-UNDO-REDO Protocol DB101

Backup and Restore Strategies for SQL Server Database. Nexio Motion. 10-February Revsion: DRAFT

Lecture 18: Reliable Storage

Ingres Backup and Recovery. Bruno Bompar Senior Manager Customer Support

ORACLE INSTANCE ARCHITECTURE

Nexio Motion 4 Database Backup and Restore

Connectivity. Alliance Access 7.0. Database Recovery. Information Paper

SQL Server Transaction Log from A to Z

Chapter 13 File and Database Systems

Chapter 13 File and Database Systems

(Pessimistic) Timestamp Ordering. Rules for read and write Operations. Pessimistic Timestamp Ordering. Write Operations and Timestamps

Derby: Replication and Availability

How To Write A Transaction System

Oracle Redo Log Performance Issues and Solutions

Topics. Introduction to Database Management System. What Is a DBMS? DBMS Types

Be Very Afraid. Christophe Pettus PostgreSQL Experts Logical Decoding & Backup Conference Europe 2014

Concepts of Database Management Seventh Edition. Chapter 7 DBMS Functions

MySQL Enterprise Backup

In-memory databases and innovations in Business Intelligence

11. Configuring the Database Archiving Mode.

1. INTRODUCTION TO RDBMS

Boost SQL Server Performance Buffer Pool Extensions & Delayed Durability

PostgreSQL Backup Strategies

Database Tuning and Physical Design: Execution of Transactions

Database Management. Chapter Objectives

Transaction Processing Monitors

Goals. Managing Multi-User Databases. Database Administration. DBA Tasks. (Kroenke, Chapter 9) Database Administration. Concurrency Control

Transactions and the Internet

Tushar Joshi Turtle Networks Ltd

Data Management in the Cloud

Oracle 12c Recovering a lost /corrupted table from RMAN Backup after user error or application issue

- An Oracle9i RAC Solution

Guideline for stresstest Page 1 of 6. Stress test

TRANSACÇÕES. PARTE I (Extraído de SQL Server Books Online )

INTRODUCTION TO DATABASE SYSTEMS

High Availability Solutions for the MariaDB and MySQL Database

Practical Cassandra. Vitalii

PostgreSQL Concurrency Issues

A SURVEY OF POPULAR CLUSTERING TECHNOLOGIES

Database System Architecture & System Catalog Instructor: Mourad Benchikh Text Books: Elmasri & Navathe Chap. 17 Silberschatz & Korth Chap.

Textbook and References

DBMaster. Backup Restore User's Guide P-E5002-Backup/Restore user s Guide Version: 02.00

InterBase SMP: Safeguarding Your Data from Disaster

Physical DB design and tuning: outline

Java DB Performance. Olav Sandstå Sun Microsystems, Trondheim, Norway Submission ID: 860

SAP Note FAQ: SAP HANA Database Backup & Recovery

How To Backup A Database In Navision

DBTech EXT Backup and Recovery Labs (RCLabs)

Database 2 Lecture I. Alessandro Artale

Transcription:

Datenbanksysteme II: Implementation of Database Systems Recovery Undo / Redo Material von Prof. Johann Christoph Freytag Prof. Kai-Uwe Sattler Prof. Alfons Kemper, Dr. Eickler Prof. Hector Garcia-Molina

Content of this Lecture Transactions Failures and Recovery Undo Logging Redo Logging Undo/Redo Logging Checkpointing Ulf Leser: Datenbanksysteme II, Sommersemester 2005 2

Transactions Transactions are the building blocks of operations on data Motivation: Consistency Data in a database always must be consistent Actually, it is consistent only most of the time Informally: Given a consistent database and a transaction that runs in isolation, then the transaction will perform changes such that the database after executing the transaction again is consistent Short: Consistent DB + TX + Synchronization = Consistent DB What is a consistent state? An image of the real world in the database If there are no purple cats, the attribute color of a relation cats must never be purple If money doesn t multiply by itself, then moving money from one account to another must not change the total amount of money over all accounts If the 29.2.2005 does not exist, no date field must ever take this value If individuals are different, then two tuples representing two different individuals must be (somehow) different Ulf Leser: Datenbanksysteme II, Sommersemester 2005 3

Consistency How do we ensure consistency? Constraints: Primary key, unique, foreign key Check constraints, trigger Data types (real, varchar, date, ) But many real-life constraints are not that simple E.g. moving money from one account to another must not change the total amount of money over all accounts We do not want to check this constraint after every manipulation of the database for two reasons Much too costly Two atomic operations (SQL) cannot happen at the same time To move X Euro from A to B, we must first subtract X from the balance of account A, then add X to the balance of account B (or vice-versa) In between, the database is necessarily inconsistent, i.e., no image of the real world Ulf Leser: Datenbanksysteme II, Sommersemester 2005 4

Transactions Again Consistent DB + TX + Synchronization = Consistent DB Definition: A transaction T is a sequence of operations that, when executed in isolation, moves a database from one consistent state into another consistent state All operations on a database must be part of a transaction You might not notice, e.g., autocommit transactions Also applies to seemingly atomic operations Give raise: UPDATE salaries SET salaray=salary*1.1 The set of all single row updates form a transaction Ulf Leser: Datenbanksysteme II, Sommersemester 2005 5

ACID Properties To achieve this goal (consistent consistent), we can require Atomicity: All operations of a TX happen or none; all-or-nothing Partially executed TX would leave DB in an inconsistent state Consistency: A transaction, applied to a consistent DB, will end in a consistent DB That s our definition Isolation: Intermediate states within transactions do not interfere with each other If they would do, a TX cannot read the state of the database any more and may therefore act under wrong premises Durability: A database is stateful Once a consistent state is achieved (TX.commit), this state is preserved against failure This is duty of the recovery manager Ulf Leser: Datenbanksysteme II, Sommersemester 2005 6

Transactional Operations Start T Usually implicitly performed Every command after an abort or a commit starts a new transaction Commit T Ends a transaction; a consistent state is reached All changes must be safely stored for ever Abort T Ends a transaction without a consistent state being reached All changes (if there were any) must be taken back Safepoint T (sugar for the developer) Sets a mark in the middle of a transaction No consistent state has been reached Allows a transaction to be rollbacked to this mark Previous changes are preserved (for this transaction) Ulf Leser: Datenbanksysteme II, Sommersemester 2005 7

Recovery As transactions are sequences of operations, they take time to execute In between, the database is potentially inconsistent If we stop all running transaction (power switch), which state has been reached? Recovery: Actions that allow a database to implement transactional behavior despite failures By taking proper actions before the failure happens Does only work for some types of failures Note: We ignore synchronization problems TX manager must help here Ulf Leser: Datenbanksysteme II, Sommersemester 2005 8

Hardware Model CPU M D Memory is volatile not durable Disk is durable Types of events Desired events read manual Undesired but expected Undesired and unexpected Ulf Leser: Datenbanksysteme II, Sommersemester 2005 9

Types of Failures Undesired but expected Expected and compensated by recovery manager CPU stops Memory is corrupted and CPU stops (CRC check, etc.) RDBMS or OS crashes due to program bug Hopefully not a bug in the recovery manager! Undesired and unexpected Not expected by the recovery manager Wrong transaction code Memory is corrupted and CPU does not stop Disc is corrupted (media failure) Use different measures to counteract RAID, mirroring, backup, Machine plus all discs burns down, explodes, gets infected by malicious and clever virus, Ulf Leser: Datenbanksysteme II, Sommersemester 2005 10

Recovery Expected failure: Data in memory is lost, but data on disk is not When database starts up again, the recovery manager must Recognize that there was an error Restore a consistent state of the database where All previously committed changes are present (durability) All previously uncommitted changes are undone (atomicity) Hence: Must know about commits! Be prepared for next crash during ongoing recovery Move to normal operations afterwards Should do this as fast as possible Still, errors do happen Still, recovery does take time Still, media failure do occur To ensure 24x7x52 operations, use other methods Cluster with failover, hot-stand-by machine, Ulf Leser: Datenbanksysteme II, Sommersemester 2005 11

First Approach First try Do not allow parallel transactions Get rid of synchronization problems Killer for OLTP application Phase 1: All changes within a transaction are only applied in main memory Never write anything to disk before COMMIT Phase 2: Upon COMMIT, write all changed blocks to disk Crash during phase 1 Everything is fine, atomicity and durability is preserved Crash during phase 2 Some blocks/changes have been written, some not We do not know which, cannot rollback atomicity and durability is hurt Also: Imagine you are the recovery manager at start-up time Have there been active transactions? Is the DB consistent or not? Ulf Leser: Datenbanksysteme II, Sommersemester 2005 12

Architecture Transactions Concurrency Control Manager Main Memory (MM). Secondary Storage Recovery-Mgr. MM-Log Log S-Log Buffer-Mgr. MM-DB S-DB DB In the following, we talk of objects Object usually means tuple Could also be block or attribute value (more later) Ulf Leser: Datenbanksysteme II, Sommersemester 2005 13

Communication Transaction does Read(X): Read object from block X (values do not matter) Write(X): Write object into block X Commit Abort Recovery manager does Intercept all TX commands and do something secretly Buffer manager does Upon receiving read(x) If X not in memory, load(x); give access to block to TX Upon receiving write(x) Usually nothing When blocks should be loaded but no space available Choose some blocks X 1, X n ; output(x 1, X n ) Time between change in block and writing of changed block is unpredictable for transactions and recovery manager In particular, a commit does not write anything to disk per-se Aim: Maximize performance, minimize random IO Ulf Leser: Datenbanksysteme II, Sommersemester 2005 14

Failures Assume constraint A=B and transaction T T performs A := A*2; B := B*2; commit; Sequence of operations (ordered in time) read (A); A := A*x write (A); read (B); B := B*2 write (B); output (A); output (B); failure! A: 8 B: 8 16 16 A: 8 B: 8 16 memory disk Ulf Leser: Datenbanksysteme II, Sommersemester 2005 15

Content of this Lecture Transactions Failures and Recovery Undo Logging Redo Logging Undo/Redo Logging Checkpointing Ulf Leser: Datenbanksysteme II, Sommersemester 2005 16

Undo Logging - Idea During transaction processing Buffer manager may write uncommitted changes to disk Always, the old value (before change) must be in a log before block is written Commits are also written to log Together: New values are written too early, but old value is preserved in case of problems On recovery Identify all uncommitted transactions Find logs (=old values) of these transactions Undo changes of uncommitted transactions: Replay logs in reverse order, thus writing back old values Ulf Leser: Datenbanksysteme II, Sommersemester 2005 17

Structure of Log Example sequence Write T1 (Y); W T2 (X); W T3 (Z); abort T1 ; W T2 (Y); commit T2 ; W T3 (Y) Transaction Object Old value T1 Y Y1 Y0 T2 X X1 X0 T3 Z Z1 Z0 T1 Abort T2 Y Y2 Y0 T2 Commit T3 Y Y3 Y2 Records contain transaction ID, object, and old value Commits and aborts are logged Ulf Leser: Datenbanksysteme II, Sommersemester 2005 18

Undo Logging Rules Undo logging is based on three rules 1. For every write generate undo log record containing old value 2. Before a changed object X is written to disk, a log record with old value of X must be on disk 3. Before a commit in the log is flushed to disk, all changes of this transaction must have been written to disk What does flushed mean? Log records (as data blocks) are preferably written in batches Hence, there is a short period between a log operation and the point in time where this record appears on disk Flushing the log = writing all not-yet-written log records to disc Reason for the third rule All committed transactions are ignored during recovery Hence, if failure between log( commit ) and writing of last Ulf Leser: changed Datenbanksysteme block, database II, Sommersemester is inconsistent 2005 and this is not noticed 19

Example Sequence of operations read (A); A := A*x write (A); read (B); B := B*2 write (B); output (A); output (B); commit; failure! <T, start> <T, A, 8> <T, B, 8> EOF A: 8 B: 8 16 16 A: 8 B: 8 16 Ulf Leser: Datenbanksysteme II, Sommersemester 2005 20

Aborts A transaction can (deliberately or not) abort Abort is treated as commit Before an abort is flushed to disk, all changes of the transaction must have been undone on disk TX manager can use log data to undo changes Ulf Leser: Datenbanksysteme II, Sommersemester 2005 21

Recovery using Undo Logging When recovery manager is evoked during start-up Read log from back to front (latest first) When record <T,commit> or <T,abort> is encountered, mark this transaction and ignore all further records of T If record <T, X, Y> is encountered without T having been marked before, set X to Y That is, undo changes in reverse order If record <T, start> is encountered without T having been marked before, flush all changes (those performed during recovery) of T to disk and write <T,abort> to log That is, mark this transaction as undone for future recoveries Ulf Leser: Datenbanksysteme II, Sommersemester 2005 22

Two More Issues We must read the entire log That may take a very long time Checkpointing later What happens if system crashes during recovery?? Ulf Leser: Datenbanksysteme II, Sommersemester 2005 23

Two More Issues What happens if system crashes during recovery? Nothing Finished recovered transactions are not recovered again (abort has been written) All others are recovered Recovery is idempotent Problem with Undo logging Buffer manager is forced to write blocks to allow for commits However, commits should be performed quickly to release locks (see synchronization) Either Batch writes are hindered bad performance Commits are delayed bad performance Ulf Leser: Datenbanksysteme II, Sommersemester 2005 24

Redo Logging We twist the idea the other way round Write new values, not old values Do not undo uncommitted transactions, but ignore them; instead, redo committed transactions (which are ignored by undo logging) Do not flush buffers before commit, but hold blocks in memory until commit is flushed The last point is Bad: long running TX consume all available memory DB might need to generate temporary areas on disk Good: with short running TX, buffer manager has high degree of freedom when to flush blocks Ulf Leser: Datenbanksysteme II, Sommersemester 2005 25

Redo Logging Rules Redo logging rules For every write generate redo log record containing new value Before any changed block is written to disk, transaction must have finished and all log records (including commit) must be flushed to disk Consequence As there is no undoing, no changes that might be reset later may be written to disk Flush log with every commit to allow buffer manager to evict blocks from memory Aborts are simple, since no changes may have been written to disk before Aborted TX may be ignored during recovery How does recovery work?? Ulf Leser: Datenbanksysteme II, Sommersemester 2005 26

Recovery with Redo Logging When recovery manager is evoked during start-up Generate list L of all committed transactions Read log from front to back (earliest first) If record <T, X, Y> is encountered with T L, set X to Y That is, redo changes Ignore all other records Problem These pertain to uncommitted transactions We always need to redo all ever committed transactions Undo logging also needs to read the entire log, but not undo transactions again and again at every crash That is very, very slow We really need checkpointing (later) Ulf Leser: Datenbanksysteme II, Sommersemester 2005 27

Wrap-Up Undo logging forces too frequent block writes Redo logging forces contention in buffer manager (and extremely slow recovery) Solution: Undo/redo logging Ulf Leser: Datenbanksysteme II, Sommersemester 2005 28

Undo/Redo Logging We combine the best of both worlds Upon change, write old and new value into log Before writing changed block, write log record to disk WAL: Write ahead logging We always have the new and the old value at hand Allows for logs written in batches Flushing blocks is independent of commit being flushed to log Neither random IO (undo) nor contention (redo) If block is on disk and commit was flushed All fine (will cause unnecessary redoing) If block is on disk and system crashes Recovery finds missing commit and undoes changes If block is not on disk and commit was flushed Recovery finds commit and redoes changes If block is not on disk and system crashes All fine (will cause unnecessary undoing) Ulf Leser: Datenbanksysteme II, Sommersemester 2005 29

Recovery with Undo/Redo Logging When recovery manager is evoked during start-up Collect list L of committed transactions and U of uncommitted transactions Backward pass read from latest to earliest Undo all changes of transactions in U Forward pass read from earliest to latest Redo all changes of transactions in L This again performs all changes of committed transactions again and again, but combined with checkpointing, it is very efficient But: Generates large log files Strategy for truncation/archiving of log files required Ulf Leser: Datenbanksysteme II, Sommersemester 2005 30

Example 1. <T1,start> 2. <T1,A,8,16> 3. <T2,start> 4. <T1,commit> 5. <T2,B,4,5> 6. <T2,A,16,2> 7. <T3,start> 8. <T3,A,2,3> 9. <T3,C,3,7> 10. <T3,commit> 11. CRASH What happens? T1 changes A and commits Change redone T2 changes B and A and does not commit Change undone T3 reads uncommitted change of T2 in A, changes, and commits Change redone What happened?? T3 acts under false premises Something is wrong Ulf Leser: Datenbanksysteme II, Sommersemester 2005 31

Example 1. <T1,start> 2. <T1,A,8,16> 3. <T2,start> 4. <T1,commit> 5. <T2,B,4,5> output(b) 6. <T2,A,16,2> 7. <T3,start> 8. <T3,C,2,3> output(a) output(c) 9. <T3,C,3,7> 10. <T3,commit> 11. CRASH On disk we have A=2, B=5, C=3 We should have A=16, B=4, C=7 What happens during recovery L = {T1, T3}, U = {T2} Backward read Find records with t U: record 6 and 5 Undo: output(a,16), output(b, 4); log(t2,abort) Forward read Find records with t L: {2, 8, 9} Redo: output(a,16), output(c, 3), output(c,7) We can save some time Collect changes of equal objects during traversals and write block only once Without checkpointing, backward read is not necessary: Start from empty DB and perform only changes of committed transactions Ulf Leser: Datenbanksysteme II, Sommersemester 2005 32

Content of this Lecture Transactions Failures and Recovery Undo Logging Redo Logging Undo/Redo Logging Checkpointing Ulf Leser: Datenbanksysteme II, Sommersemester 2005 33

Checkpointing As we have seen, recovery may take very long Undo logging: Find all uncommitted transactions and undo Redo logging: Find all committed transactions and redo That will be many Undo/redo logging: Do both But: When a transaction is committed, and all changes are written to disc, and log is flushed no need to touch this transaction any more in future recovery Checkpointing: Define points in time (and in log) such that recovery only needs to go back to last checkpoint Actually, to a defined point-in-log before the last checkpoint Notation A transaction is called active if it has not committed yet Ulf Leser: Datenbanksysteme II, Sommersemester 2005 34

Blocking (Quiescent) Checkpointing Simple way to achieve goal Recovery manager announces checkpoint and flushes start ckpt to log No new transactions are allowed System runs until all active transactions finish (with commit or abort) When all TX have finished, recovery manager flushes end ckpt to log DBMS resumes normal operations Recovery with quiescent checkpointing Undo logging:?? Ulf Leser: Datenbanksysteme II, Sommersemester 2005 35

Recovery with quiescent checkpointing Undo logging Read back and undo uncommitted transactions When a end ckpt is found, recovery is finished All prior transaction have committed or were aborted By the undo logging rules, changes must have been written to disk A start ckpt before a end ckpt is ignored Although some transactions that were active at the start ckpt time might have finished but not all of them Redo logging Scheme doesn t work as such why not?? (But non-quiescent checkpointing is better anyway) Also: Checkpointing essentially shuts-down the database Unacceptable Solution: Non-quiescent checkpointing Ulf Leser: Datenbanksysteme II, Sommersemester 2005 36

Idea: Non-Quiescent Checkpointing With each checkpoint, write list of active TXs Database generates unique transaction Ids in order of TX.start When start ckpt(17,22,23,25) is found in log All transactions with ID smaller 17 plus TX 18,19,20,21,24 had finished before Also, all existing transactions with ID higher 25 had finished before We can either ignore those Or additionally record ID of most recently started TX Four transactions were active at this point in time Ulf Leser: Datenbanksysteme II, Sommersemester 2005 37

Non-Quiescent CHKP for Undo/Redo Logging Recovery manager announces checkpoint and flushes start ckpt(l) to log L is list of currently active transactions Database operations continue, starting and finishing transactions as normal All dirty blocks are flushed to disk In particular, this flushes all dirty blocks of finished transactions Need not be performed immediately recovery manager can allow time between start and end of checkpoint Advantage: Buffer manager has more freedom when to write blocks Disadvantage: Danger of crash before end chkp makes checkpoint unusable for recovery Recovery manager flushes end ckpt to log Now, all blocks of transactions older than L are certainly on disk Database operations are (almost) not affected Ulf Leser: Datenbanksysteme II, Sommersemester 2005 38

Recovery When recovery manager is evoked during start-up Read back in log If a end ckpt is found first Locate the corresponding start ckpt(l) All transactions smaller than L had finished and changes are saved on disk Perform undo/redo only for TX in L and later Note: This still requires reading prior to start ckpt(l) for all transactions in L or later Chain log record per TX with backward pointers If a start ckpt(l) is found first Doesn t help We don t know if all blocks have been written already Read further back to next end ckpt Ulf Leser: Datenbanksysteme II, Sommersemester 2005 39

Example Start ckpt(2,3) end ckpt() T1.s T2.s T3.s T4.s T1.c T1.c Output(... T3.c Recovery Transactions older than (2,3) can be ignored (T1) Transactions 2 is undone Transaction 3 is redone Transaction 4 is redone This could be saved by some more bookkeeping With checkpoint, save number of most recently started ID All transactions smaller than this number and not in L can be ignored Ulf Leser: Datenbanksysteme II, Sommersemester 2005 40

Again: Transactions that Abort Assume Transaction T starts at time X Later, start ckpt(t, ) starts All blocks are flushed end ckpt is flushed, T is still active T aborts System crashes On recovery T was active at start of last checkpoint, so treatment necessary Some changes have been written already, some not Two options Transaction is considered as not committed All changes are undone Transaction is considered as committed So changes are redone This requires that before a log record abort is written to disk, all changes of the transaction on disk must have been undone Hence, the rollback undoing is redone during recovery Ulf Leser: Datenbanksysteme II, Sommersemester 2005 41

When Objects are Tuples Assume that objects are tuples, not blocks Hence, blocks may contain tuples changed by different transactions Undo log: Before commit, all changes must be on disk Might include uncommitted changes more undoing later Redo log: Before commit, no changes may be on disk This multiplies problems of buffer manager always waiting for some active transaction in a block But with undo/redo logging: No dependency between commit and writing of blocks Tuple-based change management is possible Ulf Leser: Datenbanksysteme II, Sommersemester 2005 42

Recovery in Oracle Uses undo/redo logging with non-quiescent checkpointing LGWR server process writes log in batches Logs are maintained in online redo log groups Each log is written in each group Protect log from media failure - spread groups over different disks Each log group consists of a list of files of fixed max size When last file is full, logging starts again with first file In archive-log mode, log files are archived before being overwritten When is it save to overwrite logs? With start ckpt(l), keep l = log# of oldest log of any t L When end ckpt is reached, all log records older than l can be dumped Ulf Leser: Datenbanksysteme II, Sommersemester 2005 43

Recall Ulf Leser: Datenbanksysteme II, Sommersemester 2005 44

Traveling in Time In archive-log mode, any point in time is reachable Note: even committed transactions can be undone Store timestamps with log Moving to point t means: Undo all changes of transactions that had not committed prior to log record directly before t Very useful for erroneous drop table statements There is no rollback for DDL Also useful for judicial reasons (proof which item was changed when) Ulf Leser: Datenbanksysteme II, Sommersemester 2005 45

Recovery in Oracle Uses undo/redo logging with non-quiescent checkpointing LGWR server process writes log in batches Logs are maintained in online redo log groups Each log is written in each group Protect log from media failure - spread groups over different disks Each log group consists of a list of files of fixed max size When last file is full, logging starts again with first file In archive-log mode, log files are archived before being overwritten When is it save to overwrite logs? With start ckpt(l), keep l = log# of oldest log of any t L When end ckpt is reached, all log records older than l can be dumped Ulf Leser: Datenbanksysteme II, Sommersemester 2005 46

Recall Ulf Leser: Datenbanksysteme II, Sommersemester 2005 47

Traveling in Time In archive-log mode, any point in time is reachable Note: even committed transactions can be undone Store timestamps with log Moving to point t means: Undo all changes of transactions that had not committed prior to log record directly before t Very useful for erroneous drop table statements There is no rollback for DDL Also useful for judicial reasons (proof which item was changed when) Ulf Leser: Datenbanksysteme II, Sommersemester 2005 48