17장 회복

17장. 회복

17.1. 장애와 회복

회복(Recovery)
장애(failure)가 일어났을 때 데이타베이스를 장애 발생 이전의 일괸된 상태(consistent state)로 복원시킴
※ 일관된 상태 : 데이터베이스에 오류가 없는 상태, 즉 데이터베이스의 내용에 모순이 없는 상태

 장애(failure)
정해진 명세대로 시스템이 작동하지 않는 상태
ex) 디스크 붕괴, 전원고장으로 인한 하드웨어결함, 소프트웨어의 논리 오류로 인한 소프트웨어 결함, 오퍼레이터의 실수

  1. 트랜잭션(transacttion) 장애
    트랜젝션내의 논리적 오류나 내부 조건, 즉 입력 데이터의 불량, 데이터의 불명, 시스템 자원의 과다 사용 요구등으로 정상적인 실행을 계속할 수 없는 상태
  2. 시스템(system) 장애
    하드웨어의 오동작으로 메인 메모리에 있는 정보의 손실이나 교착상태가 발생하여 더 이상 실행을 계속할 수 없는 상태
  3. 미디어(media) 장애
    디스크 헤드 붕괴나 고장으로 인해 저장장치의 데이터베이스 일부 또는 전부가 손상된 상태

 위의 장애에 대한 회복을 위해 DBMS는 보통 시스템 코딩의 10퍼센트 이상을 회복 관리자(recovery manager)에 할당하여 대비하고 있다.

 데이터베이스 회복의 기본 원리 = 데이터의 중복(data redundancy)
☞ 데이터베이스에 포함된 테이터를 시스템의 어디엔가 별도로 중복해서 저장해 두고 불의의 사고가 일어났을 때 이 데이터를 이용하여 다시 재건할 수 있다.

 

장애가 발생했을 때 회복을 위해 취할 수 있는 조치

  1. Redo
    데이터베이스 내용 자체가 손상이 된 경우에 가장 최근의 복제본을 적재시킨 후 이 복제본 이후에 일어난 변경만을 로그를 이용하여 재실행함으로써 데이터베이스를 복원
  2. Undo
    데이터베이스 내용 자체는 손상되지 않았지만 변경 중이거나 변경된 내용에 대한 신뢰성을 잃어버린 경우에 로그를 이용하여 모든 변경들을 취소시킴으로써 원래의 데이터베이스 상태로 복원하는 것

 

17.2. 데이터베이스 저장 연산

소멸저장장치(volatile storage)
메인 메모리와 같이 시스템의 붕괴와 함께 저장된 데이터를 상실

비소멸저장장치(nonvolatile storage)
디스크나 테이프와 같이 시스템 붕괴 시에도 보통  저장된 데이터는 손실되지 않음. 다만 저장장치 자체의 고장으로 손실을 가져올 수 있음

안정저장장치(stable storage)
데이터의 손실이 발생하지 않게 여러 개의 비소멸장치로 구성된 저장장치

 

입력과 출력 연산은 블록단위로 수행

디스크블록
물리적 블록(physical block), 디스크에 있는 블록

버퍼블록(buffer block)
메인 메모리에 있는 볼록

 

17.3. 트랜잭션

17.3.1 트랜잭션의 특성

트랜잭션(transaction)
하나의 논리적 기능을 수행하기 위한 작업의 단위. 데이터베이스의 일관된 상태를 또 다른 일관된 상태로 변환시킴.
즉, T를 트랜잭션, S를 데이터베이스의 일관된 상태의 집합이라 하면 트랜잭션과 데이터베이스 상태와의 관계를 다음과 같은 식으로 기술 할수 있음

T : Si → Sj , Si,Sj ∈ S

 

트랜젝션이 가져야 할 특성 (ACID성질)

  1. Atomicity (원자성)
    트랜잭션은 자기의 연산을 전 부 도는 전무(all or nothing)실행만이 있지 일부 실행으로 트랜잭션의 기능을 갖는 것은 아니다.
  2. Consistency (일관성)
    트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성있는 데이터베이스 상태로 변환한다. 즉, 트랜잭션 실행의 결과로 데이터베이스 상태가 모순되지 않는다.
  3. Isolation (격리성)
    트랜잭션이 실행 중에 있는 연산의 중간결과는 다른 트랜잭션이 접근할 수 없다.
  4. Durability (영속성)
    트랜잭션이 일단 그 실행을 성공적으로 완료하면 그 결과는 영속적이다. 따라서 시스템은 어떤 경우에도 완료된 결과의 영속성을 보장해야 한다.

 

 ※ Atomicity(원자성) : 트랜잭션 실행의 시작에서부터 성공적으로 마칠 때까지를 한 단위로 해서 일관성을 검사

 └ 원자성을 위한 연산 : Commit(완료), Rollback(복귀)

 

17.3.2. 트랜잭션 상태

  1. 활동 (active)
    트랜잭션이 Begin Trans에서부터 실행을 시작하였거나 실행 중인 상태
  2. 부분 완료 (partially committed)
    트랜잭션이 마지막 명령문을 실행한 직후의 상태
  3. 실패 (failed)
    정상적 실행을 더 이상 계속할 수 없어서 중단한 상태
  4. 철회 (aborted)
    트랜잭션이 실행에 실패하여 Rollback연산을 수행한 상태
  5. 완료 (committed)
    트랜잭션이 실행을 성공적으로 완료하여 Commit연산을 수행한 상태

 

  1. BEGIN_TRANS;
  2. UPDATE ACCOUNT
  3. SET Balance = Balance - 100
  4. WHERE Accnt = 'A';
  5. IF ERROR GO TO UNDO;
  6.  
  7. UPDATE ACCOUNT
  8. SET Balance = Balance + 100
  9. WHERE Accnt = 'B' 

 

 

Creative Commons License