트랜잭션 T를 수행하는 도중에 시스템이 다운되면 어떻게 복구할 것인가?
트랜잭션 T가 완료된 직후 시스템이 다운되면 주기억장치의 버퍼에는 기록되었으니 디스크에는 기록되지 않았을 수도 있음
디스크의 헤드가 고장나거나 디스크가 아예 손상나면 어떻게 할 것인가?
재해적 고장
디스크가 손상 → 백업을 통해 해결
비재해적 고장
갑작스런 시스템 다운 → 로그기반 즉시갱신 및 지연갱신, 그림자 페이징
[T-ID, start]
트랜잭션이 생성될 때 기록되는 로그 레코드
[T-ID, X, old_value, new_value]
트랜잭션이 X를 old_value에서 new_value로 수정함을 기록한 로그 레코드
[T-ID, commit]
트랜잭션을 완료하고 디스크까지 갱신을 모두 했음을 알리는 로그 레코드
[T-ID, abort]
트랜잭션이 도중 문제가 생겨 철회되었음을 알리는 로그 레코드
트랜잭션을 수행하다 다운되었을 때 DBMS 회복 모듈은....
[T-ID, start]
, [T-ID, commit]
로그 레코드가 모두 존재하는 트랜잭션은 REDO[T-ID, commit]
로그 레코드가 존재하지 않는 트랜잭션은 UNDO[checkpoint]
로그 레코드를 기록디스크 헤드나, 디스크 자체가 손상 나는 경우는 점진적인 백업
→ 지난 번 백업 이후에 갱신된 내용만 백업을 하는 과정