Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

subsay

데이터베이스 고급 기능 - 회복(Recovery) 본문

정보처리 기사

데이터베이스 고급 기능 - 회복(Recovery)

subsay 2017. 10. 11. 20:30

1. 회복의 개념


회복의 정의

 회복은 트랜잭션들을 수행하는 도중 장애가 발생하여 데이터베이스가 소상되었을 때 손상되기 이전의 정상 상태로 복구하는 작업이다.


장애의 유형

 - 트랜잭션 장애 : 입력 데이터 오류, 불명확한 데이터, 시스템 자원 요구의 과다 등 트랜잭션 내부의 비정상적인 상황으로 인하여 프로그램 실행이 중지되는 현상

 - 시스템 장애 : 데이터베이스에 손상을 입히지 않으나 하드웨어 오동작, 소프트웨어의 손상, 교착상태 등에 의해 모든 트랜잭션의 연속적인 수행에 장애를 주는 현상

 - 미디어 장애 : 저장장치인 디스크 블록의 손상이나 디스크 헤드등의 충돌 등에 의해 데이터베이스의 일부 또는 전부가 물리적으로 손상된 상태


회복 관리기(Recovery Management)

 - 회복 관리기는 DBMS의 구성 요소이다.

 - 회복 관리기는 트랜잭션 실행이 성공적으로 완료되지 못하면 트랜잭션이 데이터베이스에 생성했던 모든 변화를 취소(Undo)*시키고, 트랜잭션 수행 이전의 원래 상태로 복구하는 역할을 담당한다.

 - 메모리 덤프*, 로그(Log)*를 이용하여 회복을 수행한다.


*취소(Undo)

 Log에 보관한 정보를 이용하여 가장 최근에 변경된 내용부터 거슬러 올라가면서 트랜잭션 작업을 취소하여 원래의 데이터베이스로 복구합니다.


*Dump

 주기적으로 데이터베이스 전체를 복사해 두는 것


*Log

 갱신되기 전후의 내용을 기록하는 별도의 파일로, 저널(Journal)이라고도 합니다.


2. 회복 기법


연기 갱신 기법(Deferred Update)

 - 연기 갱신 기법은 트랜잭션이 성공적으로 완료될 때까지 데이터베이스에 대한 실질적인 갱신을 연기하는 방법이다.

 - 트랜잭션이 수행되는 동안 갱신된 내용은 일단 Log에 보관된다.

 - 트랜잭션의 부분 완료(성공적인 완료 직전) 시점에 Log에 보관한 갱신 내용을 실제 데이터베이스에 기록한다.

 - 트랜잭션이 부분 완료되기 전에 장애가 발생하여 트랜잭션이 Rollback되면 트랜잭션이 실제 데이터베이스에 영향을 미치지 않았기 때문에 어더한 개신 내용도 취소(Undo)시킬 필요 없이 무시하면 된다.

 - Redo*작업만 가능하다


*Redo

 덤프와 로그를 이용하여 가장 최근의 정상적인 데이터베이스로 회복시킨 후 트랜잭션을 재실행 시킵니다.



즉각 갱신 기법(Immediate Update)

 - 즉각 갱신 기법은 트랜잭션이 데이터를 갱신하면 트랜잭션이 부분 완료되기 전이라도 즉시 실제 데이터베이스에 반영하는 방법이다.

 - 장애가 발생하여 회복 작업할 경우를 대비하여 갱신된 내용들은 Log에 보관시킨다.

 - 회복 작업을 할 경우에는 Redo와 Undo 모두 사용이 가능하다.



그리자 페이지 대체 기법(Shadow Paging)

 - 그림자 페이지 대체 기법은 갱신 이전의 데이터베이스를 일정 크기의 페이지 단위로 구성하여 각 페이지마다 복사본인 그림자 페이지로 별도 보관해 놓고, 실제 페이지를 대상으로 트랜잭션에 의한 갱신 작업을 하다가 장애가 발생하여 트랜잭션 작업을 Rollback시킬 때, 갱신된 이후의 실제 페이지 부분에 그림자 페이지를 대체하여 회복시키는 기법이다.

 - 로그, Undo 및 Redo 알고리즘이 필요 없다



검사점 기법(Check Point)

 검사점 기법은 트랜잭션 실행 중 특정 단계에서 재 실행할 수 있도록 갱신 내용이나 시스템에 대한 상황 등에 관한 정보와 함께 검사점을 로그에 보관해 두고, 장애 발생 시 트랜잭션 전체를 철회하지 않고 검사점부터 회복 작업을  하여 회복시간을 절야하도록 하는 기법이다.