Oracle 19c RMAN RESTORE VALIDATE: 백업이 실제 복구 가능한지 확인하는 범위와 순서

Oracle 19c에서 백업이 실제로 복구 가능한지 확인하려면 RESTORE DATABASE VALIDATE를 사용합니다. RMAN이 현재 복구에 필요한 백업 조각과 이미지 복사를 고른 뒤 끝까지 읽지만, 데이터파일을 쓰지는 않습니다.

다만 이 명령의 성공은 “선택된 백업으로 파일을 복원할 수 있다”는 뜻입니다. 복구 시간 목표(RTO), 모든 아카이브 로그의 확보, 애플리케이션이 다시 정상 동작하는지까지 대신 검증하지는 않습니다. 정기 검증과 별도의 격리 복구 훈련은 구분해야 합니다.

핵심 답변

RESTORE ... VALIDATE는 RMAN이 실제 복구 때 선택할 백업을 읽어 복원 가능성을 확인하는 읽기 작업입니다. 운영 데이터파일은 만들거나 덮어쓰지 않습니다. 먼저 대상 범위와 채널 설정을 확인하고, 실패하면 재시도보다 누락된 조각·미디어 접근·암호화 키를 분리해 점검합니다.

적용 조건과 영향 범위

항목 적용·확인 내용 운영 영향 또는 예외
대상 Oracle Database 19c의 RMAN 백업·이미지 복사 CDB 전체와 PDB·테이블스페이스는 명령 범위를 분명히 나눕니다.
읽기 범위 RMAN이 실제 복구 후보를 선택하고 백업 블록을 읽습니다. 디스크·테이프·네트워크 I/O와 채널을 사용합니다.
보장 범위 선택된 백업의 가독성과 복원 후보 여부 복구 시간, 로그 적용 완료, 업무 정합성은 별도 훈련이 필요합니다.

왜 BACKUP VALIDATE나 CROSSCHECK만으로 부족한가

CROSSCHECK는 RMAN 저장소의 기록과 디스크 헤더 또는 미디어 관리 카탈로그를 대조합니다. 파일이 보인다는 사실을 확인하는 데 알맞지만, 백업 조각 전체를 읽어 복원 경로를 검증하는 명령은 아닙니다.

VALIDATE BACKUPSET는 지정한 백업 세트를 검사합니다. 반면 RESTORE ... VALIDATE는 데이터베이스나 특정 테이블스페이스처럼 복구 대상에서 출발하고, RMAN이 그 시점에 실제로 선택할 백업을 고릅니다. 같은 객체의 오래된 사본까지 모두 건강한지를 검사하는 용도도 아닙니다.

명령 선택표

질문 우선 명령 판단할 점
저장소 기록과 파일 존재가 맞는가 CROSSCHECK BACKUP 전체 블록의 읽기 검사는 아닙니다.
특정 백업 세트가 손상됐는가 VALIDATE BACKUPSET 백업 세트 키를 지정해야 합니다.
현재 DB를 복원할 재료가 충분한가 RESTORE DATABASE VALIDATE 실제 복구와 같은 후보 선택이 장점입니다.

작업 전: 복구 목표와 RMAN 구성을 먼저 확인

검증 창을 잡기 전에 무엇을 되살릴지 정합니다. 전체 CDB, 한 PDB, 또는 특정 테이블스페이스는 필요한 백업과 아카이브 로그가 다릅니다. 단순히 최근 전체 백업이 있다는 이유로 원하는 시점까지 복구된다고 판단하면 안 됩니다.

RMAN> SHOW ALL;
RMAN> LIST BACKUP SUMMARY;
RMAN> LIST ARCHIVELOG ALL;
실행 목적

권한: RMAN에 대상 데이터베이스로 접속할 수 있는 SYSDBA 또는 SYSBACKUP 권한이 필요합니다. 예상 결과: 자동 채널, 백업 보존 정책, 사용 가능한 백업과 아카이브 로그 목록을 확인합니다. 이 세 명령은 복구 파일을 만들지 않습니다.

테이프나 클라우드 모듈을 쓴다면 해당 장치용 채널이 실제 복구 때도 할당되는지 확인합니다. RMAN은 할당된 채널이 읽을 수 있는 백업만 후보로 고릅니다. 디스크 백업만 보이는 환경에서 테이프 백업을 검증하면, “백업 없음”은 백업 손상보다 채널 설정 문제일 수 있습니다.

최소 재현: 테스트 DB에서 검증 범위를 좁히기

운영에서 처음 실행할 명령을 바로 전체 데이터베이스로 넓히지 말고, 동일한 RMAN 구성의 테스트 환경에서 작은 테이블스페이스부터 시간과 I/O를 관찰합니다. 아래 예제의 APP_DATA는 예시 이름입니다. 실제 테이블스페이스 이름으로 바꾸기 전에 데이터파일 수와 백업 위치를 확인합니다.

RMAN> RESTORE TABLESPACE app_data VALIDATE;
실행 목적

적용 버전: Oracle Database 19c RMAN. 예상 결과: RMAN이 APP_DATA를 복원하는 데 필요한 백업을 선택하고 읽습니다. 출력에는 사용한 채널과 백업 조각, 검증 완료 또는 오류가 나타납니다. 데이터파일은 생성하지 않습니다.

운영 환경 주의

쓰기 작업은 아니어도 백업 전체를 읽으므로 테이프 장치, 객체 스토리지 대역폭, 디스크 캐시와 RMAN 채널을 점유할 수 있습니다. 백업 시간대·대량 배치·다른 복구 작업과 겹치지 않게 하고, I/O 지연이나 미디어 큐가 기준을 넘으면 중단 기준을 정해 둡니다.

전체 복구 가능성을 확인하는 기본 명령

RMAN> RESTORE DATABASE VALIDATE;
실행 목적

권한: 대상 DB에 RMAN으로 접속할 권한과 백업 저장소 읽기 권한이 필요합니다. 예상 결과: RMAN은 전체 데이터베이스의 복원 후보를 선택해 읽고, 정상이라면 각 조각에 validation complete를 기록합니다. 출력 파일은 쓰지 않습니다.

VALIDATE 위치는 RESTORE DATABASE VALIDATERESTORE VALIDATE DATABASE처럼 문법상 모두 쓸 수 있지만, 팀 표준에서는 한 형태로 고정해 운영 로그 검색을 쉽게 하는 편이 낫습니다. 실패한 조각 이름, 채널, 오류 시각을 남기고 같은 명령을 즉시 반복하지 않습니다. 일시적 네트워크 오류인지, 특정 백업 조각의 손상인지, 카탈로그 정보 불일치인지 먼저 분리합니다.

시점 복구 계획을 함께 확인하는 방법

장애 시점을 가정했다면 검증도 목표 시점을 포함해야 합니다. 다음 예제는 2026년 8월 15일 09:00:00까지 복원 가능한 백업 후보를 찾는 형태입니다. 날짜 형식과 시간대는 조직의 NLS 설정과 복구 절차에 맞춰 명확히 통일합니다.

RUN {
  SET UNTIL TIME "TO_DATE('2026-08-15 09:00:00','YYYY-MM-DD HH24:MI:SS')";
  RESTORE DATABASE VALIDATE;
}
실행 목적

예상 결과: 지정 시점까지 복원하는 데 적합한 백업을 선택해 읽습니다. 한계: 이 검증은 아카이브 로그를 실제 적용해 데이터베이스를 여는 단계가 아닙니다. 필요한 로그 보존과 복구 완료 여부는 별도 복구 훈련에서 확인해야 합니다.

롤백 방법

RESTORE ... VALIDATE는 출력 파일을 쓰지 않으므로 이 명령 자체에 대한 데이터 롤백은 없습니다. 다만 채널을 수동으로 구성했다면 RELEASE CHANNEL 또는 RMAN 세션 종료로 자원을 해제합니다. 검증 실패 후 DELETE EXPIRED나 백업 삭제를 성급히 실행하지 말고, 먼저 저장소 접근과 보존 정책을 확인합니다.

출력에서 성공과 실패를 구분하는 기준

정상 종료라면 RMAN 출력에 선택한 백업 조각의 경로와 채널별 검증 완료 메시지가 남습니다. 이때도 어떤 사본을 선택했는지 확인해야 합니다. 디스크와 테이프에 같은 백업이 있을 때 검증이 한 사본만 읽었다면, 다른 사본의 건전성까지 확인한 것은 아닙니다. 장치별 복구 경로가 필요하면 채널과 DEVICE TYPE을 바꿔 별도로 계획합니다.

오류가 났다면 가장 앞선 RMAN 오류와 직전의 백업 조각 이름을 함께 보존합니다. ‘백업을 찾지 못함’은 보존 정책으로 조각이 삭제됐거나, 카탈로그·컨트롤파일 기록이 오래됐거나, 채널이 해당 저장소를 읽지 못한다는 뜻일 수 있습니다. ‘읽기 오류’는 미디어나 네트워크 문제와 조각 손상을 구분해야 합니다. 오류 한 줄만 보고 백업 전체를 무효로 판단하지 않습니다.

RMAN> LIST BACKUP OF DATABASE SUMMARY;
RMAN> CROSSCHECK BACKUP;
RMAN> LIST EXPIRED BACKUP;
실행 목적

예상 결과: 검증 실패 때 RMAN 저장소가 알고 있는 백업 상태를 비교합니다. EXPIRED는 RMAN이 현재 위치에서 파일을 찾지 못한 상태이지, 곧바로 삭제해도 된다는 뜻은 아닙니다. 저장소·미디어 담당자의 확인 없이 삭제 명령을 이어서 실행하지 않습니다.

검증 후 읽어야 할 로그와 뷰

성공 메시지만 기록하지 말고 검증에 걸린 시간, 사용 채널, 읽은 백업 위치, 실패 조각을 운영 기록에 남깁니다. 실패가 블록 손상이라면 RMAN 출력과 alert log·trace를 보존합니다. Oracle은 검증에서 발견한 블록 손상 정보를 V$DATABASE_BLOCK_CORRUPTION에 기록할 수 있으므로, 이전 기록과 구분해 조회합니다.

SELECT file#,
       block#,
       blocks,
       corruption_type
FROM   v$database_block_corruption
ORDER  BY file#, block#;
실행 목적

권한: 동적 성능 뷰 조회 권한이 필요합니다. 예상 결과: 알려진 손상 블록 범위를 파일 번호와 함께 보여 줍니다. 결과가 비어 있어도 백업 전략 전체가 완전하다는 뜻은 아니며, RMAN 출력과 함께 해석합니다.

흔한 오해와 운영 순서

  • 성공했으니 DR 훈련은 불필요하다: 검증은 파일을 쓰지 않습니다. 격리된 환경에서 실제 RESTORERECOVER, 기동·업무 점검까지 주기적으로 연습합니다.
  • 헤더만 읽으면 충분하다: VALIDATE HEADER 또는 preview는 빠른 후보 확인에 유용하지만, 전체 블록 읽기와 다릅니다.
  • 실패하면 백업을 바로 삭제한다: 다른 사본·다른 장치·채널 설정을 확인하기 전에는 보존본을 제거하지 않습니다.
  • 운영 부하는 없다: 출력 파일을 쓰지 않아도 백업을 끝까지 읽는 작업입니다. 일정과 자원 한도를 복구 계획에 포함합니다.

정기 RESTORE DATABASE VALIDATE는 백업 성공 로그의 빈틈을 줄이는 좋은 점검입니다. 그러나 복구 가능성은 한 명령의 성공 여부가 아니라, 목표 시점의 로그·접근 권한·암호화 키·채널·복구 시간과 격리 복구 훈련이 함께 맞을 때 확인됩니다.

공식 출처