본문 바로가기

Web Develop Tech/Oracle9i Fundmantal II

ORACLE - User-Managed Incomplete Recovery



Incomplete Recovery (불완전 복구)


▣ 불완전 복구를 사용하기 위한 전제조건은 다음과 같습니다.

  • 아카이브 로그 모드로 운용이 되고 있어야 합니다.
  • [복구의 순서]
    1. DB Shutdown
    2. ★ 현재 데이터베이스 백업(이미 장애가 발생한 데이터베이스)
      • 나중에 복구를 할 때 실수로 잘못 복구했을 경우에 다시 사용하기 위해서, 백업을 해 놓습니다.
    3. 장애가 발생한 파일만이 아니라, 모든 데이터파일을 복원합니다(RESTORE)
    4. STARTUP MOUNT (OPEN 상태에서는 RESTORE DATABASE 명령어를 사용할 수 없습니다)
      • 이렇게 굳이 STARTUP MOUNT 를 하지 않아도 이미 데이터베이스의 중요 데이터파일에는 문제가 있기 때문에, 마운트 단계까지만 진행이 됩니다.
    5. 사용할 수 있는 명령어는 RECOVER DATABASE 밖에 없습니다. 따라서 RECOVER DATABASE를 수행합니다.
      • UNTIL 옵션을 사용하여, 복구할 영역을 지정할 수 있습니다.
        • TIME '시간지정'; - 시간지정의 형식은 따로 있습니다.
        • CANCEL - 아카이브로그나, 리두로그의 파일 중 일부가유실되었을 경우에 사용합니다.
        • CHANGE 'SCN#' - 시간기반으로 복구하는 것과 비슷합니다. SCN은 오라클서버가 임의로 부여하는 번호이며, 실제 번호는 점차 증가하는 형태입니다. 따라서 번호가 작으면 작을수록 오래전의 작업이라는 뜻입니다.
          • 이 CHANGE 명령어는 분산 데이터베이스 환경에서 주로 사용합니다.
    6. 이제, ALTER DATABASE OPEN 명령어를 사용하면 안됩니다.
      • 왜냐면, 이전에 복구를 했을 경우에 CANCEL로 했다면, 복구한 파일이 현재 시스템에 기록된 로그번호가 다릅니다. 당연히 전체복구가 아니기 때문입니다.
      • 따라서, 이 번호를 맞추어주면서 데이터베이스를 열어야 합니다.
      • 방법은 이렇습니다.
      • ALTER DATABASE OPEN RESETLOGS;
        • 이 방법을 사용하면, DB Incarnation 이 변경되며 오픈이 됩니다.
    7. ★ 현재의 데이터베이스를 백업합니다(장애가 발생한 데이터베이스를 복구한 상태)
      • 이 복구한 데이터베이스는 이전에 문제가 발생한 데이터베이스와는 완전히 다른 데이터베이스라는 것을 명심하세요. 따라서 복구를 잘 못했다면, 2번 과정으로 돌아가서 3번과정부터 다시 시도하면서 복구를 해야 합니다.
    8. 이제부터는 복구를 했던 데이터베이스가 운영되어지며, 시스템의 기반이 됩니다. 따라서 7번과정에서 백업을 다시 해주어서 운영해야 합니다.

  • 실제 이 복구과정은 정상적으로 운영되는 데이터베이스에서는 사용하면 안됩니다.
    • 이 방법은 운영중인 데이터베이스와 동일한 복제데이터베이스를 만들어 놓고, 이 복구과정을 복제데이터베이스를 대상으로 수행 합니다.
    • 그런 다음 이 복구데이터베이스에서 살려된 어떠한 테이블의 정보를 추출 EXPORT하고, 실제 운영중인 데이터베이스에 적용 IMPORT 합니다.

# COMPLETE RECOVERY와 INCOMPLETE RECOVERY 를 복구하는 대상은 Datafile입니다.

# 지금까지 Control file을 복구한 적은 없었는데, 이 불완전 복구를 할 경우에는 3번 단계에서 CONTROL FILE도 같이 복구해야 합니다. 이때는 Recover Database Until Time 명령어로 복구합니다.

  • 명령어 : RECOVER DATABASE UNTIL TIME '복구할 시간' USING BACKUP CONTROLFILE;

# 위의 명령어는 COMPLTE RECOVERY에는 사용할 수 없으며, 오직 INCOMPLETE RECOVERY에서만 사용할 수 있습니다.

# 위의 예제는 테이블스페이스를 삭제했을 경우에도 사용할 수 있습니다.

# 주의사항

  • 복구가 완료될 때까지 데이터베이스는 계속 닫혀있는 상태입니다.
  • 백업 및 복구시간이 거의 유사하게 걸립니다. 그만큼 복사에 걸리는 시간도 데이터베이스의 용량에 따라 가변적이게 됩니다.
  • 마지막으로 데이터베이스를 오픈할 때도 RESETLOGS옵션을 사용하여 수행합니다.

# RMAN 에서도 이 수행과정은 동일합니다.

  • 다만, RMAN에서는 위의 2번과정처럼 백업하지 않아도, 이전 데이터베이스로 돌아갈 수도 있습니다.