데이터베이스 연구실.log

완전 복구와 불완전 복구

완전 복구와 불완전 복구의 차이, 로그 시퀀스 기준 복구 및 RESETLOGS 후 새 백업

COMPLETE RECOVERYINCOMPLETE RECOVERYDBPITRSET UNTIL SEQUENCESET UNTIL SCNOPEN RESETLOGSINCARNATION

#핵심 요약

완전 복구는 백업을 복원한 뒤 모든 리두를 적용해 장애 직전까지 되살림
불완전 복구(데이터베이스 시점 복구, DBPITR)는 과거의 한 시점(시간, SCN, 로그 시퀀스, 복원 지점)까지만 되살림

DBPITR은 대상 시점 이전에 받은 백업을 복원하고, 그 뒤 대상 시점까지의 증분 백업과 로그를 적용함

불완전 복구가 필요한 때: CURRENT나 ACTIVE 리두 로그가 손상됐을 때, 복구 중 필요한 아카이브 로그가 없을 때
사용자 실수를 되돌릴 때도 씀

불완전 복구 뒤에는 OPEN RESETLOGS로 열고, 새 전체 백업을 받음

#개념과 동작 원리

DBPITR은 물리 수준에서 데이터 파일을 과거 대상 시점의 상태로 되돌림

RMAN DBPITR에서는 대상 SCN, 로그 시퀀스, 복원 지점, 시간 중 하나를 정함
SCN으로 정하면 각 리두 스레드의 끝이나 그 SCN 중 먼저 오는 곳에서 멈춤
시간으로 정하면 그 시간에 맞는 SCN을 내부에서 정해 복구함

ARCHIVELOG 모드이고 백업 전략이 제대로 되어 있으면 거의 모든 상황에서 DBPITR을 쓸 수 있음

구분 완전 복구 불완전 복구
복구 끝점 장애 직전(모든 리두) 정한 시점(이후 변경은 버림)
여는 방법 일반 OPEN(현재 컨트롤 파일 기준) OPEN RESETLOGS
뒤처리 새 incarnation 시작, 새 전체 백업

수업 이론의 "cancel 기준 불완전 복구" 사용 시점: CURRENT 또는 ACTIVE 리두 로그 파일 손상, 복구 중 아카이브 로그가 없을 때
실습은 이름과 달리 RMAN의 SET UNTIL SEQUENCE로 진행했음

#필수 명령어 또는 SQL

#끝점 정하기

SQL*Plus (SYSDBA)조회만 함
SELECT group#, members, status, sequence# FROM v$log;
SELECT group#, member FROM v$logfile ORDER BY 1;

결과 해석:

실습에서는 손상된 CURRENT 또는 ACTIVE 그룹의 시퀀스를 확인해 끝점으로 썼음

#시퀀스 기준 불완전 복구

RMAN (MOUNT)객체 또는 설정을 변경함
RUN {
  SET UNTIL SEQUENCE 10 THREAD 1;
  RESTORE DATABASE;
  RECOVER DATABASE;
}
SQL*Plus (SYSDBA)객체 또는 설정을 변경함
ALTER DATABASE OPEN RESETLOGS;
RMAN객체 또는 설정을 변경함
BACKUP DATABASE;

결과 해석:

UNTIL SEQUENCE n은 시퀀스 n 직전까지(n-1까지) 복구함(Recovery Catalog 유지와 복구의 설명)
시간 기준은 시간 기준 불완전 복구에 있음

#사용 조건과 주의사항

불완전 복구는 끝점 이후의 모든 변경을 잃음
한 테이블만 되돌리면 되는 경우 Flashback Table이나 PDB, 테이블스페이스 단위 복구를 먼저 검토함

RESETLOGS의 의미는 컨트롤 파일 백업과 복구에 있음

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

마지막 갱신 개인 학습 기록이며 운영 환경 적용 전 공식 문서 확인 필요

두 글자 이상 입력, 위아래 화살표로 이동하고 Enter로 열기