You are on page 1of 36

제 16 장

데이타베이스 회복 기법

Fundamentals of Database Systems


R. A. Elmasri and S. B. Navathe

© 2005 황규영 홍의경 음두헌 박영철 김진호 조완섭



목차차

16.1 회복 개념
16.2 지연갱신을 기반으로 한 회복 기법
16.3 즉시갱신을 기반으로 한 회복 기법
16.4 그림자 페이지 기법
16.5 ARIES 회복 알고리즘
16.6 다중 데이타베이스에서의 회복
16.7 데이타베이스 백업과 재해적 실패로부터의 회복

5판Ch16 Fundamentals of Database Systems 2


16.1 회복
16.1 회복 개념
개념

16.1.1 회복 개요 및 회복 알고리즘의 분류

16.1.2 디스크 블록의 캐슁

16.1.3 로그 우선 출력 , Steal/No-Steal, Force/No-Force

16.1.4 시스템 로그에서 검사점과 퍼지 검사점 기록

16.1.5 트랜잭션 복귀

5판Ch16 Fundamentals of Database Systems 3


16.1.1 회복
16.1.1 회복 개요
개요 및
및 회복
회복 알고리즘의
알고리즘의 분류
분류
 회복이란 ?
– 데이타베이스를 최근의 ( 가장 가까운 과거의 ) 일관된 상태로 복원하는 것
– 이렇게 하기 위해서 시스템은 트랜잭션이 실행되는 동안 데이타 항목의 변경
에 대한 정보를 계속 유지하고 있어야 함
 회복을 위한 전형적인 전략
– 재해적 실패에 대한 회복
• 데이타베이스 백업 ( 제 16.7 절 참조 )
– 비재해적 실패에 대한 회복
• 지연갱신 기법 ( 제 16.2 절 참조 )
– 지연갱신 : 트랜잭션이 성공적으로 완료 시점에 이를 때까지 데이타베이스의
실제 갱신 연산을 연기한다 .
• 즉시갱신 기법 ( 제 16.3 절 참조 )
– 즉시갱신 : 트랜잭션이 갱신 명령을 내리는 순간 데이타베이스를 갱신한다 .

5판Ch16 Fundamentals of Database Systems 4


16.1.2 디스크
16.1.2 디스크 블록의
블록의 캐슁
캐슁
 디스크 페이지 ( 블록 ) 캐슁
– 회복 처리는 주기억장치에 디스크 페이지들을 버퍼링하고 캐슁하는 것과 밀
접한 관련이 있음
■ DBMS 캐쉬와 캐쉬 디렉토리
– DBMS 캐쉬
• 데이타베이스 항목들을 주기억장치에 유지시키기 한 주기억장치 버퍼들의 집합
• 이 캐쉬는 운영체제가 아니라 DBMS 가 관리함
– 캐쉬 디렉토리
• 데이타베이스 항목들이 버퍼 안에 있는지를 관리하기 위해 사용하는 < 항목 이
름 , dirty-bit, 버퍼 위치 > 엔트리들로 구성된 표
– DBMS 가 데이타베이스 항목에 대한 동작을 요청하면
• 이미 캐쉬 안에 그 항목이 있는지 확인하기 위하여 캐쉬 디렉토리를 검사함
• 만약 그 항목이 캐쉬 안에 있으면 디스크 페이지를 가져올 필요가 없으며 , 없으면
해당 디스크 페이지를 캐쉬 안으로 복사함

5판Ch16 Fundamentals of Database Systems 5


16.1.2 디스크
16.1.2 디스크 블록의
블록의 캐슁
캐슁
– 버퍼 플러쉬
• 새로운 항목의 수용을 위한 공간을 마련하기 위하여 캐쉬 버퍼 중 일부를 플러쉬할 필
요가 있음
• 버퍼를 플러쉬할 때 오손 비트가 세트된 버퍼만 디스크에 기록함
• 플러쉬 할 버퍼의 선택 : 페이지 교체 전략 ( 예 : LRU, FIFO) 을 사용함

 수정된 데이타 항목의 플러쉬 전략


– 즉시갱신 (in-place update)
• 갱신 이후값 (after image) 을 갱신 이전값 (before image) 이 위치한 곳에 덮어쓴다 .
• 회복을 위하여 반드시 로그가 필요하다 .
• 로그 우선 출력 기법 (Write Ahead Logging: WAL) 을 사용한다 .

– 그림자 갱신 (shadowing)
• 갱신 후의 값을 디스크의 다른 위치에 기록한다 .
• 디스크에 어떤 데이타 항목에 대한 여러개의 사본이 존재할 수 있다 .

5판Ch16 Fundamentals of Database Systems 6


16.1.3 로그
16.1.3 로그 우선
우선 출력
출력,,Steal/No-Steal,
Steal/No-Steal,Force/No-Force
Force/No-Force
 로그 우선 출력 기법
– 디스크 상의 항목의 이전값을 이후값으로 덮어쓰기 전에 데이타 항목의 이전 값을 포
함하는 로그 엔트리가 디스크로 강제 출력되는 것을 보장하는 방식
– 트랜잭션을 위한 모든 REDO 유형과 UNDO 유형 로그 기록들이 디스크로 강제 출
력된 후에야 트랜잭션이 완료될 수 있음
 캐쉬에 있는 database 의 페이지가 언제 디스크에 기록될 것인가 ?
– Steal/No-Steal 방식
• Steal 방식 : 트랜잭션이 완료하기 전에 그 트랜잭션에 갱신된 캐쉬 페이지를
디스크에 기록할 수 있다 .
• No-Steal 방식 : 트랜잭션이 완료될 때까지 그 트랜잭션에 의해 갱신된 캐쉬 페
이지를 디스크에 기록할 수 없다 .
– Force/No-Force 방식
• Force 방식 : 트랜잭션이 완료할 때에 그 트랜잭션에 의해 갱신된 캐쉬 페이지
를 즉시 디스크에 기록하는 방식을 Force 방식 , 그렇지 않은 방식을 No-
Force 방식이라고 함
– 전형적인 데이타베이스 시스템들은 steal/no-force 방식을 사용함

5판Ch16 Fundamentals of Database Systems 7


16.1.4 시스템
16.1.4 시스템 로그에서
로그에서 검사점과
검사점과 퍼지
퍼지 검사점
검사점 기록
기록
 검사점
– 주기적으로 모든 DBMS 버퍼에 있는 갱신된 데이타를 디스크에 기록하는 작업
– 검사점을 기록하기 전에 완료된 모든 트랜잭션의 갱신은 검사점 시점에서 모두 디
스크에 반영되므로 그 이후 시스템 붕괴가 발생하더라도 REDO 될 필요가 없음
– 따라서 검사점은 REDO 해야 할 트랜잭션의 수를 줄여줌
 검사점 기록 작업
1. 트랜잭션의 수행을 일시 정지 시킨다 .
2. 갱신된 모든 버퍼를 강제로 디스크에 기록한다 .
3. [ 검사점 ] 레코드를 로그에 기록하고 , 그 로그를 강제로 디스크에 기록한다 .
4. 트랜잭션의 수행을 계속시킨다 .
 퍼지 검사점
– 트랜잭션의 지연수행을 해결하기 위하여 모든 버퍼가 디스크에 기록되기를 기다
리지 않고 [ 검사점 ] 레코드를 로그에 기록한 후 트랜잭션의 수행을 재개하는 방

5판Ch16 Fundamentals of Database Systems 8


16.1.5 트랜잭션 복귀

 트랜잭션이 어떤 이유로 복귀되면 그 트랜잭션에 의해 변경된 모든


데이타 항목 값은 그 이전 값으로 되돌려져야 함
 연쇄 복귀 (Cascading rollback)
– 어떤 트랜잭션이 복귀됨에 따라 그 트랜잭션이 변경한 데이타 항목 값
을 읽은 다른 트랜잭션들을 연쇄적으로 복귀해야 하는 현상
• 연쇄 복귀는 회복 프로토콜이 회복가능 스케줄을 보장하지만 엄격한 스케
줄 , 즉 비연쇄 스케줄을 보장하지 않을 때 발생할 수 있음
– 연쇄 복귀는 시간이 많이 걸리므로 대부분의 회복 메카니즘은 연쇄 복
귀가 필요치 않도록 설계함
– 연쇄 복귀를 허용하는 회복 기법의 경우 트랜잭션의 연쇄 복귀를 결정
하기 위해 read_item 연산들이 시스템 로그에 기록되어야 함

5판Ch16 Fundamentals of Database Systems 9


(a)

초기값 : A = 30, B = 15, C = 40, D = 20

T1 T2 T3

read_item(A) read_item(B) read_item(C)


read_item(D) write_item(B) write_item(B)
write_item(D) read_item(D) read_item(A)
write_item(D) write_item(A)

[ 그림 16.1] 연쇄 복귀
(a) 세 트랜잭션들의 읽기 / 쓰기 연산

5판Ch16 Fundamentals of Database Systems 10


(b) A B C D
[start-transaction, T3] 30 15 40 20
[read_item, T3, C]
* [write_item, T3, B, 15, 12] 12
[start-transaction, T2]
[read_item, T2, B]
** [write_item, T2, B, 12, 18] 18
[start-transaction, T1]
[read_item, T1, A]
[read_item, T1, D]
[write_item, T1, D, 20, 25] 25
[read_item, T2, D]
** [write_item, T2, D, 25,26] 26
[read_item, T3, A]
시스템 붕괴 (system crash)

* T3 는 완료점에 이르지 못했기 때문에 복귀된다 .


** T2 는 T3 에 의해 변경된 값 B 를 읽었기 때문에 복귀된다 .

[ 그림 16.1] 연쇄 복귀 (cont.)
(b) 붕괴시의 시스템 로그

5판Ch16 Fundamentals of Database Systems 11


(c)

READ(C) WRITE(B) READ(A)


T3

BEGIN

READ(B) WRITE(B) READ(D) WRITE(D)


T2

BEGIN
READ(A)READ(D)WRITE(D)

T1
BEGIN

시간

시스템 붕괴

[ 그림 16.1] 연쇄 복귀 (cont.)

(c) 붕괴 전의 연산들

5판Ch16 Fundamentals of Database Systems 12


16.2 지연갱신을
16.2 지연갱신을 기반으로
기반으로 한
한 회복
회복 기법
기법
 지연갱신 기법
– 트랜잭션이 성공적으로 완료 시점에 이를 때까지 데이타베이스에 대
한 실제 갱신 연산을 연기하는 방식
– 트랜잭션이 실행되는 동안 , 갱신되는 내용은 단지 로그와 캐쉬 버퍼
에만 기록됨
– 각 트랜잭션이 짧고 적은 수의 항목을 갱신하는 경우에만 사용 가능함
– No-Steal 방식
– NO-UNDO/REDO 알고리즘
 지연갱신 프로토콜
1. 트랜잭션은 완료점에 이르기 전까지는 데이타베이스를 변경
시킬 수 없다 .
2. 트랜잭션은 트랜잭션의 모든 갱신 연산들이 로그에 기록되고 로그에
서 디스크로 강제 출력되기 전까지는 완료점에 이를 수 없다 .

5판Ch16 Fundamentals of Database Systems 13


16.2.1 단일
16.2.1 단일 사용자
사용자 환경에서
환경에서 지연
지연 갱신을
갱신을 사용한
사용한 회복
회복
 RDU_S(Recovery using Deferred Update in a Single-user
environment)
– 두개의 트랜잭션 리스트를 사용한다 .
• 검사점 이후에 완료된 트랜잭션 리스트 T
• 진행 중인 트랜잭션 리스트 : 단일 사용자 환경이므로 최대 1 개
– T 의 모든 write_item 연산들에 대하여 로그에 기록된 순서대로 REDO 한
후 진행 중인 트랜잭션을 다시 시작한다 .
 REDO(WRITE_OP)
– WRITE_OP 에 대응되는 로그 엔트리 [write_item, T, X, new_value] 를 검
사하고 , 데이타베이스의 X 값을 new_value 로 설정한다 .
 REDO 연산의 멱득성 (idempotence)
– REDO 연산을 반복 수행해도 단 한번 수행하는 것과 동일하다는 성질
 회복 처리 전체의 멱득성
– 회복 도중에 붕괴되어 회복한 결과는 회복 도중에 붕괴된 적이 없는 회복의
결과와 같아야 한다

5판Ch16 Fundamentals of Database Systems 14


(a) T1 T2
read_item(A) read_item(B)
read_item(D) write_item(B)
read_item(D) read_item(D)
write_item(D)
(b)

[start-transaction, T1]
[write_item,T1,D,20]
[commit,T1]
[start-transaction,T2]
[write_item,T2,B,10]
[write_item,T2,D,25] 시스템 붕괴
T1 의 [write-item, ...] 연산들은 REDO 된다 .
T2 의 로그 엔트리들은 회복처리가 무시한다 .

[ 그림 16.2] 단일 사용자 환경에서 지연갱신을 사용한 복귀


(a) 두 트랜잭션들의 읽기와 쓰기 연산들
(b) 붕괴 시의 시스템 로그

5판Ch16 Fundamentals of Database Systems 15


16.2.2 다수
16.2.2 다수 사용자
사용자 시스템에서
시스템에서 동시에
동시에 수행되는
수행되는
환경에서의
환경에서의 지연갱신
지연갱신
 동시성 제어 방법에 대한 가정
– 2 단계 로킹을 사용하여 동시성을 제어한다 .
– 트랜잭션 수행이 시작되기 전에 트랜잭션에서 필요한 모든 항목들에 대한 로크를
미리 획득하여 교착 상태를 방지한다 .
 RDU_M(Recovery using Deferred Update in a Multiuser environment)
– 두개의 트랜잭션 리스트 사용한다 .
• 검사점 이후에 완료된 트랜잭션 리스트 T
• 진행 중인 트랜잭션 리스트 T’

– T 의 모든 write_item 연산들에 대하여 로그에 기록된 순서대로 REDO 한 후


T’ 은 처음부터 다시 실행되어야 한다 .

5판Ch16 Fundamentals of Database Systems 16


16.2.2 다수
16.2.2 다수 사용자
사용자 시스템에서
시스템에서 동시에
동시에 수행되는수행되는
환경에서의
환경에서의 지연갱신
지연갱신(cont.)
(cont.)

 RDU_M 알고리즘의 개선

– 로그의 끝 ( 시스템이 붕괴된 시점 ) 에서부터 시작하여 어떤 항목이


REDO 될 때마다 그 항목을 REDO 된 항목들의 리스트에 추가한다 .

– REDO 된 항목들의 리스트에 있는 항목은 최근 값이 이미 회복되었으


므로 REDO 를 적용하지 않는다 .

5판Ch16 Fundamentals of Database Systems 17


T1

T2

T3

T4

T5

t1 t2 시간
검사점 시스템 붕괴
(checkpoint) (system crash)

[ 그림 16.3] 동시에 실행되는 트랜잭션들의 한 스케쥴

5판Ch16 Fundamentals of Database Systems 18


T1 T2 T3 T4
read_item(A) read_item(B) read_item(A) read_item(B)
(a) read_item(D) write_item(B) write_item(A) write_item(B)
write_item(D) read_item(D) read_item(C) read_item(A)
write_item(D) write_item(C) write_item(A)

(b) [start_transaction, T1]


[write_item, T1, D, 20]
[commit, T1]
[checkpoint]
[start_transaction, T4] T2 와 T3 은 완료점에 이르지 못했기 때문
[write_item, T4, B, 15] 에 무시한다 .
[write_item, T4, A, 20]
[commit, T4] T4 는 마지막 검사점 이후에 완료되었기 때
[start_transaction, T2] 문에 REDO 한다 .
[write_item, T2, B, 12]
[start_transaction, T3]
[write_item, T3, A, 30] 시스템 붕괴
[write_item, T2, D, 25]
[ 그림 16.4] 동시에 수행되는 트랜잭션들에 지연갱신을 사용한 회복
(a) 네 트랜잭션의 읽기와 쓰기 연산들
(b) 붕괴 시의 시스템 로그

5판Ch16 Fundamentals of Database Systems 19


16.2.3 데이타베이스에
16.2.3 데이타베이스에 영향을
영향을 끼치지
끼치지 않는
않는
트랜잭션
트랜잭션 연산
연산

• 데이타베이스에 영향을 끼치지 않는 연산들의 처리


예 ) 데이타베이스에서 검색한 정보로부터 메시지나 보고서를 만들

인쇄하는 작업
– 트랜잭션이 완료 시점에 이른 후에 일괄작업으로 수행한다 .
– 트랜잭션이 실패하면 이 일괄작업은 취소된다 .

5판Ch16 Fundamentals of Database Systems 20


16.3 즉시갱신을
16.3 즉시갱신을 기반으로
기반으로 한
한 회복
회복 기법
기법
• 즉시갱신 기법
– 트랜잭션이 갱신 명령을 내리는 순간 데이타베이스 갱신함
– 실패하는 시점에서 실행 중이던 트랜잭션에 대하여 UNDO 연산이 필요

– WAL 방식을 이용함
– 종류
• UNDO/NO-REDO : 트랜잭션이 완료되기 전에 그 트랜잭션의 모든 갱신이 디
스크에 반영되는 경우
• UNDO/REDO : 모든 갱신이 디스크에 반영되기 전에 트랜잭션이 완료할 수
있는 경우

• 이 절의 내용
16.3.1 단일 사용자 환경에서 즉시갱신에 기반을 둔 UNDO/REDO
회복 기법

16.3.2 동시에 수행되는


5판Ch16
환경에서 즉시갱신의 UNDO/REDO
Fundamentals of Database Systems 21
16.3.1 단일
16.3.1 단일 사용자
사용자 환경에서
환경에서 즉시갱신에
즉시갱신에
기반을
기반을 둔 UNDO/REDO 회복
둔 UNDO/REDO 회복 기법
기법

• RIU_S(Recovery using Immediate Update in a Single-user


environment)
– 두개의 트랜잭션 리스트 사용한다 .
• 검사점 이후에 완료된 트랜잭션 리스트 T
• 진행 중인 트랜잭션 리스트 : 단일 사용자 환경이므로 최대 1 개
– 진행 중인 트랜잭션의 모든 write_item 연산들을 UNDO 한다 .
– T 의 모든 write_item 연산들에 대하여 로그 기록 순서대로 REDO 한
다.

• UNDO(WRITE_OP)
– WRITE_OP 에 대응되는 로그 엔트리 [write_item, T, X, new_value]
를 검사하고 , 데이타베이스의 X 값을 old_value 로 설정한다 .
– 다수의 write_item 연산을 UNDO 할 때에는 로그에 기록된 순서의 역
순으로 UNDO 한다 .
5판Ch16 Fundamentals of Database Systems 22
16.3.2 동시에
16.3.2 동시에 수행되는
수행되는 환경에서
환경에서
즉시갱신의
즉시갱신의 UNDO/REDO
UNDO/REDO
• 동시성 제어 방법에 대한 가정
– 동시성 제어 프로토콜이 엄격한 2 단계 로킹 프로토콜처럼 엄격한 스
케줄을 만들고 교착 상태가 발생할 수 있는 시스템을 가정한다 .

• RIU_M(Recovery using Immediate Update in a Multiuser


environment)
– 두개의 트랜잭션 리스트 사용한다 .
• 검사점 이후에 완료된 트랜잭션 리스트 T
• 진행 중인 트랜잭션 리스트 : T’

– T’ 의 모든 write_item 연산들을 로그에 기록된 연순으로 UNDO 한


다.
– T 의 모든 write_item 연산들에 대하여 로그에 기록된 순서대로
REDO 한다 .
5판Ch16 Fundamentals of Database Systems 23
16.4 그림자
16.4 그림자 페이지
페이지 기법
기법
• 가정
– 데이타베이스 : 여러개 (N) 의 고정된 크기의 디스크 페이지들로 구성된다 .
– 디렉토리 : i (1 < i < N) 번째 엔트리는 i 번째 데이타베이스 페이지를 가리킨다
.
– 데이타베이스에 대한 모든 읽기 , 쓰기 연산은 디렉토리를 통하여 이루어진다 .

• 트랜잭션 수행 방법
1. 트랜잭션이 시작할 때 : 현재 디렉토리를 그림자 디렉토리로 복사한다 .
2. write_item 연산을 수행할 때 : 수정된 데이타베이스 페이지의 새 사본을 생성
하고 , 현재 디렉토리 엔트리가 새 사본을 가리키도록 수정한다 .
3. 트랜잭션을 완료할 때 : 그림자 디렉토리를 폐기하고 그 그림자 디렉토리가 참
조하는 이전 페이지들을 반환한다 .

• 트랜잭션 복귀 방법
1. 수정된 데이타베이스 페이지를 반환하고 , 현재의 디렉토리를 폐기한다 .
2. 그림자 디렉토리를 현재 디렉토리로 설정한다 .
5판Ch16 Fundamentals of Database Systems 24
16.4 그림자
16.4 그림자 페이지
페이지 기법
기법
• 특징
– 단일 사용자 환경에서 로그가 불필요하다 .
– 다사용자 환경에서는 동시성 제어 기법에 로그가 필요한 경우 회복 기법
에서도 로그가 필요할 수 있다 .
• 예 : System R 은 검사점 , 로깅과 함께 그림자 페이징을 이용

– NO-UNDO/NO-REDO 기법
– 장점
• 트랜잭션 실행 결과의 UNDO 가 간단하다 .

– 단점
• 갱신된 데이타베이스 페이지들의 디스크 상의 위치가 변하기 때문에 클러스
터링이 어렵다 .
• 디렉토리가 큰 경우 오버헤드가 심각하다 .
• 트랜잭션 완료시 쓰레기를 수거해야 하는 문제가 있다 .

5판Ch16 Fundamentals of Database Systems 25


데이타베이스 디스크 블록 ( 페이지 ) 들

페이지 5
( 이전 페이지
현재 디렉토리 그림자 디렉토리
페이지 1
( 갱신한 후 ) ( 갱신되지 않음 )
1 페이지 4 1
2 페이지 2
2
3 ( 이전 페이지 ) 3
4 4
페이지 3
5 5
6 페이지 6 6

페이지 2
( 새 페이지 )

페이지 5
( 새 페이지 )

[ 그림 16.5] 그림자 페이지 기법

5판Ch16 Fundamentals of Database Systems 26


16.5 ARIES 회복
16.5 ARIES 회복 알고리즘
알고리즘
• 기본 개념
– WAL 사용
– REDO 중 역사 반복 (repeating history): 붕괴가 발생했을 때의 데이
타베이스 상태를 복구하기 위하여 붕괴 발생 이전에 수행했던 모든 연산
을 다시 한번 수행한다 . 붕괴가 발생했을 때 완료되지 않은 상태였던
트랜잭션 ( 진행 트랜잭션 ) 은 UNDO 된다 .
– UNDO 중 로깅 : UNDO 를 할 때에도 로깅을 함으로써 회복을 수행하
는 도중에 실패하여 회복을 다시 시작할 때에 이미 완료된 UNDO 연산
은 반복하지 않는다 .
• 주요 3 단계
– 분석 단계
– REDO 단계
– UNDO 단계

5판Ch16 Fundamentals of Database Systems 27


16.5 ARIES 회복
16.5 ARIES 회복 알고리즘
알고리즘(cont.)
(cont.)
• 분석 단계
– 붕괴가 발생한 시점에 버퍼에 있는 수정된 페이지와 진행 트랜잭션을 파
악한다 .
– REDO 가 시작되어야 하는 로그의 위치를 결정한다 .

• REDO 단계
– 분석 단계에서 결정한 REDO 시작 위치의 로그로부터 로그가 끝날 때
까지 REDO 를 수행한다 .
– REDO 된 로그 레코드의 리스트를 관리하여 불 필요한 REDO 연산이
수행되지 않도록 한다 .

• UNDO 단계
– 로그를 역순으로 읽으면서 진행 트랜잭션의 연산을 역순으로 UNDO 한
다.

5판Ch16 Fundamentals of Database Systems 28


16.5 ARIES 회복
16.5 ARIES 회복 알고리즘
알고리즘(cont.)
(cont.)
• 회복을 위해 필요한 정보
– 로그
• 페이지에 대한 갱신 (write), 트랜잭션 완료 (commit), 트랜잭션 철회
(abort), 갱신에 대한 UNDO, 트랜잭션 종료 (end) 시 기록된다 .
• 각 로그레코드마다 로그 순차번호 (LSN) 가 할당된다 .
• LSN(Log Sequence Number): 디스크에 저장된 로그 레코드의 주소로서
단조 증가한다 .
– 트랜잭션 테이블
• 진행 트랜잭션에 대한 정보 ( 트랜잭션 식별자 , 트랜잭션 상태 , 해당 트랜
잭션의 가장 최근 로그레코드의 LSN) 가 관리된다 .
– 오손 페이지 테이블
• 버퍼에 있는 오손 페이지에 대한 정보 ( 페이지 식별자 , 해당 페이지에 대한
가장 최근 로그 레코드의 LSN) 가 관리된다 .

5판Ch16 Fundamentals of Database Systems 29


16.5 ARIES 회복
16.5 ARIES 회복 알고리즘
알고리즘(cont.)
(cont.)

• ARIES 에서의 검사점 기록


1. 로그에 begin_checkpoint 레코드를 기록하기
2. 로그에 end_checkpoint 레코드를 기록하기
트랜잭션 테이블과 오손 페이지 테이블의 내용도 함께 저장한다 .

1. 특수 화일에 begin_checkpoint 레코드의 LSN 을 기록하기

5판Ch16 Fundamentals of Database Systems 30


(a)
LSN LAST_LSN TRAN_ID TYPE PAGE_ID OTHER INFORMATION

1 0 T1 update C ......
2 0 T2 update B ......
3 1 T1 commit ......
4 begin checkpoint
5 end checkpoint
6 0 T3 update A ......
7 2 T2 update C ......
8 7 T2 commit ......

[ 그림 16.6] ARIES 에서 회복의 예


(a) 붕괴시의 로그

5판Ch16 Fundamentals of Database Systems 31


(b)
TRANSACTION TABLE DIRTY PAGE TABLE
TRAN_ID LAST LSN STATUS PAGE_ID LSN

T1 3 commit C 1
T2 2 in progress B 2

(c)TRANSACTION TABLE DIRTY PAGE TABLE


TRAN_ID LAST LSN STATUS PAGE_ID LSN

T1 3 commit C 1
T2 8 commit B 2
T3 6 in progress A 6

[ 그림 16.6] ARIES 에서 회복의 예


(b) 검사점을 기록할 때의 트랜잭션 테이블과 오손 페이지 테이블
(c) 분석단계가 끝난 후의 트랜잭션 테이블과 오손 페이지 테이블

5판Ch16 Fundamentals of Database Systems 32


16.6 다중
16.6 다중 데이타베이스에서의
데이타베이스에서의 회복
회복

• 다중 데이타베이스 트랜잭션
– 여러개의 데이타베이스를 액세스하는 트랜잭션으로 이 때 각각의
DBMS 들은 서로 다른 회복 기법과 트랜잭션 관리자를 사용할 수 있다
.
– 원자성을 유지하기 위하여 2 단계 완료 프로토콜을 사용한다 .
• 모든 참여 데이타베이스가 트랜잭션을 완료하도록 하거나 또는 어느 하나
도 완료하지 않도록 한다 .
• 어떤 참여 데이타베이스에 고장이 발생하더라도 트랜잭션이 완료된 상태
또는 철회된 상태로의 회복은 항상 가능하다 .

5판Ch16 Fundamentals of Database Systems 33


16.6 다중
16.6 다중 데이타베이스에서의
데이타베이스에서의 회복
회복

• 2 단계 완료 프로토콜 (two-phase commit protocol)


– 1 단계
 완료 예 참여 데이타베이스
조정자 정
 완료 준비 또는 완료 불 참여 데이타베이스

참여 데이타베이스

– 2 단계 : 모든 참여 데이타베이스가 “완료 준비”되었으면 조정자는 “완료


” 신호를 보낸다 . 하나 이상의 참여 데이타베이스가 “완료 불가” 신호를
보내면 조정자는 “철회” 신호를 보낸다 .

참여 데이타베이스

조정자 참여 데이타베이스

참여 데이타베이스

5 판Ch5 5 Fundamentals of Database Systems 34


16.7 데이타베이스
16.7 데이타베이스 백업과
백업과 재해로부터의
재해로부터의 회복
회복

• 백업
– 전체 데이타베이스와 로그를 정기적으로 값싼 기억장치에 복사한다 .
• 시스템 로그는 자주 백업한다 .
– 데이타베이스보다 크기가 작으므로 자주 백업하는 것이 가능하다 .
– 마지막 데이타베이스 백업 이후에 완료된 트랜잭션의 결과를 회복할
때 시스템 로그가 사용된다 .
• 데이타베이스 백업 후에는 시스템 로그를 새로 시작한다 .

– 디스크 실패로부터의 회복 방법
1. 최근 데이타베이스 백업 사본으로 데이타베이스를 디스크에 재구성 한다
.
2. 시스템 로그의 백업 사본에 기록된 완료된 모든 트랜잭션의 연산들의 효
과를 재구성된 데이타베이스에 반영한다 .

5판Ch16 Fundamentals of Database Systems 35



요 약

 회복의 개념 소개
– 로그우선 출력과 검사점
 회복 기법들
– 지연갱신을 기반으로 한 회복 기법
– 즉시갱신을 기반으로 한 회복 기법
– 그림자 페이지 기법
 상용 기법
– ARIES 회복 알고리즘
 다중 데이타베이스에서의 회복
 재해로부터의 회복
– 데이타베이스 백업을 기반으로 함

5판Ch16 Fundamentals of Database Systems 36

You might also like