Oracle Backup And Recovery 강좌
Archive Log Mode에서의 불완전복구 2 1 12,368

by drakula 불완전복구 Time-Based Incomplete Recovery Cancel-Based 복구 [2008.04.20]


  불완전 복구란 장애 시점 이전으로 데이터베이스를 돌리는 방식으로 사용자가 중요한 테이블이나 테이블스페이스를 삭제 하는 경우나, 복구에 필요한 아카이브 로그 파일의 손실로 인해 손실이 일어나기 전까지 복구를 수행하는 방식으로 나누어 집니다.

Time-Based Incomplete Recovery

  - Database Mode : Archive Log Mode

  - Database 상태 : OPEN상태

  - 백업 : 2007년 8월15일 Full Backup과 Archive를 전부 가지고 있음

  - 장애 발생 : 2007년 8월17일 오전 9시경 INSA 테이블을 삭제 했다는 통보를 받았고, 이 테이블은 논리적인 백업을 두지 않았다.

  - 복구 계획 : INSA 테이블은 중요한 정보가 들어 있으므로 복구가 필요하다고 판단, 현재 데이터베이스 전체를 장애가 나기 바로 전 시점으로 돌리기로 복구 계획을 수립

복구 순서
  • 1. Database를 Mount
  • 2. 데이터 베이스를 과거 시점으로 돌려야 하므로 모든 데이터 파일을 복사
  • 3. 에러가 나기 바로 전 시점으로 돌리기 위해 백업 이후의 ARCHIVE를 적용
  • 4. Database를 RESETLOGS를 이용 OPEN (RESETLOGS는 LOG SEQUENCE 번호를 1로 맞추어 주는 기행을 수행)

장애상황 발생

  INSA 테이블을 생성 한 후 시간을 확인한 후 에러 상황을 만듦

 
  
    

복구실패 대비를 위한 백업 실행

  데이터베이스를 SHUTDOWN 하고, 복구 실패에 대비하기 위해 지금 현재의 데이터 베이스 파일을 전부 복사해 둔다

 
   
    

데이터파일 RESTORE 실행

  데이터베이스를 과거 시점으로 돌리기 위해서 MOUNT 단계에서 모든 데이터 파일을 RESTORE한다

 
  
    

복구 실행

  위의 에러가 나기 전 시점인 2007-08-17:09:37:26초까지 데이터베이스를 돌린다. ARCHIVE를 자동으로 수행하기 위해서 SET AUTORECOVERY ON 명령어를 사용한다

 
  
    

RESETLOGS로 OPEN

  TIME-BASED를 이용 데이터베이스를 과거 시점으로 돌렸으므로, RESETLOGS로 OPEN한다.그런 이후 INSA 테이블이 존재 하는지 확인하고, ARCHIVE번호도 확인한다.

 
    
    

백업수행

  RESETLOGS를 이용 OPEN하였을 경우에는 LOG SEQUENCE 번호가 전부 변경되었으므로 이전의 백업본은 필요가 없으므로 반드시 백업을 수행한다.

 
  
    

Cancel-Based Incomplete Recovery

  - Database Mode : Archive Log Mode

  - Database 상태 : SHUTDOWN상태

  - 백업 : 2007년 8월15일 Full Backup과 Archive를 전부 가지고 있음

  - 장애 발생 : insa01.dbf파일이 손실 되어 Complete Recovery를 수행하려고 시도 하였으나, 변경 이후의 Archive가 전부 존재 하지 않음.

  - 복구 계획 : INSA 테이블은 중요한 정보가 들어 있으므로 복구가 필요하다고 판단, 현재 데이터베이스 존재하는 archive 까지만 복구 하기로 계획

복구순서
  • 1. Database를 Mount
  • 2. 데이터 베이스를 과거 시점으로 돌려야 하므로 모든 데이터 파일을 복사
  • 3. 에러가 나기 바로 전 시점으로 돌리기 위해 백업 이후의 ARCHIVE를 적용
  • 4. Database를 RESETLOGS를 이용 OPEN (RESETLOGS는 LOG SEQUENCE 번호를 1로 맞추어 주는 기행을 수행)

장애상황 발생

  DB가 SHUTDOWN된 상태에서 INSA01.DBF가 손상되었고, ARC00037,001 ARCHIVE도 손상되었음. 현재 데이터파일이 존재 하지 않으므로 MOUNT 단계까지만 데이터베이스가 올라옴

 
  
    

COMPLETE RECOVERY 수행

  처음에는 COMPLETE RECOVERY를 수행.그러나 아카이브 파일이 존재 하지 않으므로 에러가 난다

 
   
    

CANCEL-BASED RECOVERY 수행

  결국 이전 ARCHIVE까지만 수행하기 위해, CANCEL-BASED를 이용해 데이터베이스를 복구 한다

 
   
    

  해당 아카이브를 요구 할 때 cancel 명령어를 수행

 
  
    

RESETLOGS 오픈

  데이터베이스를 RESETLOGS를 이용 OPEN한다

 
  
    

  INSA 테이블이 존재하는지 확인한다

 
  
    

BACKUP-Control File을 이용한 불완전 복구

  - Database Mode : Archive Log Mode

  - Database 상태 : OPEN 상태

  - 백업 : 2007년 8월15일 Full Backup과 Archive를 전부 가지고 있음

  - 장애 발생 : 테이블 INSA 스페이스가 삭제 되었고, ARCHIVE파일도 유실

  - 복구 계획 : INSA 테이블스페이스는 은 중요한 정보가 들어 있으므로 복구가 필요하다고 판단 Database를 Mount

복구순서

  1. 데이터 베이스를 과거 시점으로 돌려야 하므로 모든 데이터 파일을 복사하고, 테이블 스페이스가 삭제되면 현재 CONTROLFILE에도 존재하지 않으므로 복구되지 않으므로 백업본을 이용하기 위해 CONTROLFILE도 복사한다

  2. 에러가 나기 바로 전 시점으로 돌리기 위해 백업 이후의 ARCHIVE를 적용

  3. Database를 RESETLOGS를 이용 OPEN (RESETLOGS는 LOG SEQUENCE 번호를 1로 맞추어 주는 기행을 수행)

  테이블 스페이스가 삭제된 시점을 확인하기 위해 ALERT 파일을 확인

 
  
    

  모든 데이터파일과 CONTROLFILE을 복사한 이후 TIME-BASED 방법을 이용

 
  
    

  데이터베이스를 RESETLOGS를 이용하여 OPEN한 이후 데이터를 확인한다.

 
  
    

- 강좌 URL : http://www.gurubee.net/lecture/1983

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by 유효열 [2008.10.06 18:13:46]
--테이블 스페이스가 삭제된 시점을 확인하기 위해 ALERT 파일을 확인
alert 파일 확인하는법 좀 올려주세요~ ^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입