완전 복구와 불완전 복구
완전 복구와 불완전 복구의 차이, 로그 시퀀스 기준 복구 및 RESETLOGS 후 새 백업
#핵심 요약
완전 복구는 백업을 복원한 뒤 모든 리두를 적용해 장애 직전까지 되살림
불완전 복구(데이터베이스 시점 복구, 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
#끝점 정하기
SELECT group#, members, status, sequence# FROM v$log;
SELECT group#, member FROM v$logfile ORDER BY 1;결과 해석:
실습에서는 손상된 CURRENT 또는 ACTIVE 그룹의 시퀀스를 확인해 끝점으로 썼음
#시퀀스 기준 불완전 복구
RUN {
SET UNTIL SEQUENCE 10 THREAD 1;
RESTORE DATABASE;
RECOVER DATABASE;
}ALTER DATABASE OPEN RESETLOGS;BACKUP DATABASE;결과 해석:
UNTIL SEQUENCE n은 시퀀스 n 직전까지(n-1까지) 복구함(Recovery Catalog 유지와 복구의 설명)
시간 기준은 시간 기준 불완전 복구에 있음
#사용 조건과 주의사항
불완전 복구는 끝점 이후의 모든 변경을 잃음
한 테이블만 되돌리면 되는 경우 Flashback Table이나 PDB, 테이블스페이스 단위 복구를 먼저 검토함
RESETLOGS의 의미는 컨트롤 파일 백업과 복구에 있음