
Deadlock
교착상태, 서로 다른 트랜잭션이 서로에게 Lock을 보유하고 있기 때문에 서로 트랜잭션을 진행하지 못하는 상태
: 전원, 하드웨어, 소프트웨어등의 고장
: 디스크 스토리지의 일부 또는 전체가 붕괴되는 경우
검사점(Check Point)를 log파일에 기록하고 장애 발생시에 검사시점 이전에 처리된 트랜잭션은 회복작업에서 제외하고 검사시점 이후에 처리된 내용에서만 회복작업을 수행하는 회복기법
갱신 방법 : Check Point를 log파일에 기록한다.
회복 기법 : 트랜젝션 수행 도중 실패하면 로그파일의 정보를 모두 검사하여, Redo와 Undo 연산을 실행할 트랜잭션과 체크포인트를 선정한다. 검사점의 Log 파일을 이용하여 회복을 실행한다. 검사점 이전에 처리된 트랜잭션들은 회복 대상에서 제외하고 이후에 처리된 트랜잭션에 대해서만 회복작업을 실행한다. 새로 시작한 트랜잭션은 Undo연산을 수행하고, Commit된 트랜잭션은 Redo를 수행한다. 로그 역방향으로 Undo 실행 후 로그방향으로 Redo를 실행한다.
로그를 이용하지 않고 데이터베이스에 대한 페이지 테이블 전체를 교체하는 방법으로, 로그 레코드를 출력하는 오버헤드를 없앨 수 있다. 디스크 접근회수를 줄이기 위해 현 페이지와 그림자 페이지, 총 2개의 페이지 테이블을 유지하고 트랜잭션 실행 중에는 현 페이지 테이블만을 사용하는 것으로 Undo 및 Redo의 연산이 필요없는 방법이다.
갱신 방법 : 트랜잭션이 실행되는 동안 현재 페이지 테이블과 그림자 페이지 테이블을 이용한다. 현재 페이지 테이블은 주기억장치에, 그림자 테이블은 하드디스크에 저장한다. 데이터베이스 트랜잭션의 시작지점에 현재 페이지 테이블의 내용과 동일한 그림자 페이지 테이블을 생선한다. 트랜잭션의 변경 연산이 수행되면 현재 페이지 테이블의 내용만 변경하고 그림자 페이지 테이블의 내용은 변경하지 않는다. 트랜잭션이 성공적으로 완료될 경우 현재 페이지 테이블의 내용을 그림자페이지 테이블의 내용으로 저장한다.
회복 기법 : 그림자 페이지 테이블을 반환하고, 현 페이지 테이블을 폐기한다. 그림자 페이지 테이블을 현재 페이지 테이블로 설정한다.