데이터베이스 연구실.log

RMAN 기본 백업과 복원

RMAN으로 데이터 파일을 백업하고, 손상된 데이터 파일을 복원(RESTORE)한 뒤 그 이후 변경을 적용(RECOVER)해 완전 복구하는 흐름이며 SYSTEM, UNDO 파일과 일반 데이터 파일을 구분함

RMANBACKUP DATABASEBACKUP DATAFILERESTORERECOVERV$RECOVER_FILENOCATALOG완전 복구

#핵심 요약

RESTORE는 백업 파일을 되돌려 놓는 작업이고, RECOVER는 그 이후의 변경 내역(증분 백업과 리두)을 적용하는 작업임

SYSTEM과 사용 중인 UNDO 데이터 파일은 데이터베이스를 MOUNT 상태로 두고 복원, 복구한 뒤 엶
오프라인이 가능한 일반 데이터 파일은 데이터베이스를 연 채 그 파일만 오프라인으로 내리고 복원, 복구한 뒤 온라인으로 올림

이 흐름은 ARCHIVELOG 모드, 현재 컨트롤 파일 유지, 필요한 백업과 리두 확보를 전제로 한 완전 복구임
RESETLOGS를 붙이지 않음

#개념과 동작 원리

실습 비유: 월요일 백업으로 금요일에 잃은 파일을 복원하면 파일은 먼저 월요일 상태로 돌아옴
그 뒤 필요한 리두를 적용해야 금요일 장애 직전까지 복구됨

복구 대상 데이터베이스 상태 순서
SYSTEM, 사용 중인 UNDO 데이터 파일 MOUNT RESTORE, RECOVER, OPEN
오프라인 가능한 일반 데이터 파일 OPEN(또는 MOUNT) 파일 OFFLINE, RESTORE, RECOVER, 파일 ONLINE

설명:

NOCATALOG는 별도 Recovery Catalog 없이 대상 데이터베이스 컨트롤 파일의 RMAN 기록을 쓴다는 뜻임

BACKUP DATABASE는 전체 데이터 파일 백업임
임시 파일과 온라인 리두 로그는 백업하지 않고, 아카이브 로그도 이 명령만으로는 함께 백업되지 않음
컨트롤 파일과 SPFILE 포함 여부는 자동 백업 설정에 따름

백업 형식은 RMAN 설정을 따르며 기본은 백업셋임
RMAN 백업에는 사용자 관리 핫 백업의 BEGIN BACKUP, END BACKUP이 필요 없음

LIST BACKUP에 기록이 있다는 것만으로 백업 파일에 실제로 접근할 수 있고 필요한 로그가 모두 있다고 판단하지 않음

백업 파일의 존재와 복원 가능성 점검은 CROSSCHECK와 VALIDATE에서 다룸

#필수 명령어 또는 SQL

#백업 전 확인

SQL*Plus (SYSDBA)조회만 함
SELECT name, open_mode, log_mode FROM v$database;
SHOW PARAMETER undo_tablespace

SELECT file_id, tablespace_name, file_name, bytes/1024/1024 AS mb, status
  FROM dba_data_files
 ORDER BY file_id;

결과 해석: 개별 실행 출력은 기재 없음

#백업

OS 셸 (oracle 사용자)조회만 함
rman target sys nocatalog
RMAN객체 또는 설정을 변경함
BACKUP DATABASE;              -- 전체 데이터 파일
BACKUP DATAFILE 1, 4, 7;      -- 지정한 데이터 파일만

결과 해석:

두 명령을 꼭 이어서 실행하는 것은 아님
지정 백업만 했다면 그 목록에 없는 파일은 따로 백업이 있어야 복구할 수 있음

RMAN조회만 함
SHOW ALL;
LIST BACKUP;
LIST BACKUP OF TABLESPACE SYSTEM;
LIST BACKUP OF DATAFILE <FILE_NO>;

결과 해석: 개별 실행 출력은 기재 없음

#복구가 필요한 파일 확인

SQL*Plus (SYSDBA, MOUNT 또는 OPEN)조회만 함
SELECT r.file#, d.name, r.error, r.change#, r.time
  FROM v$recover_file r
  JOIN v$datafile d ON r.file# = d.file#
 ORDER BY r.file#;

결과 해석:

장애 때 난 ORA 오류의 파일 번호, 경로와 함께 판단함
컨트롤 파일을 복원하거나 다시 만든 상황에서는 이 조회만으로 복구 대상 전체를 판단할 수 없음

#SYSTEM 또는 사용 중인 UNDO 파일 복구

SQL*Plus (SYSDBA)인스턴스 또는 서비스 중단이 필요함
SHUTDOWN IMMEDIATE
STARTUP MOUNT
RMAN객체 또는 설정을 변경함
RESTORE DATAFILE 1;
RECOVER DATAFILE 1;
SQL*Plus (SYSDBA)객체 또는 설정을 변경함
ALTER DATABASE OPEN;

결과 해석:

RECOVER 중 로그 부족 같은 오류가 나면 OPEN으로 넘어가지 않고 원인을 먼저 확인함

#일반 데이터 파일 복구 (데이터베이스 OPEN 상태)

SQL*Plus (SYSDBA)인스턴스 또는 서비스 중단이 필요함
ALTER DATABASE DATAFILE <FILE_NO> OFFLINE;
RMAN객체 또는 설정을 변경함
RESTORE DATAFILE <FILE_NO>;
RECOVER DATAFILE <FILE_NO>;
SQL*Plus (SYSDBA)객체 또는 설정을 변경함
ALTER DATABASE DATAFILE <FILE_NO> ONLINE;

결과 해석:

파일이 오프라인인 동안 그 데이터는 쓸 수 없음
데이터베이스는 계속 열려 있었으므로 ALTER DATABASE OPEN을 다시 실행하지 않음

#복구 후 검증

SQL*Plus (SYSDBA)조회만 함
SELECT name, open_mode FROM v$database;

SELECT file#, name, status FROM v$datafile WHERE file# IN (<FILE_NO>) ORDER BY file#;

SELECT r.file#, d.name, r.error
  FROM v$recover_file r JOIN v$datafile d ON r.file# = d.file#;

결과 해석:

설명: SYSTEM 파일은 V$DATAFILE.STATUS에 SYSTEM으로 보일 수 있음
V$RECOVER_FILE에 행이 없다는 결과만으로 업무 데이터 검증을 대신하지 말고, 백업 이후 넣은 데이터가 남아 있는지 실제 테이블을 조회함

#사용 조건과 주의사항

ARCHIVELOG 모드가 아니면 이 완전 복구 흐름을 쓸 수 없음
NOARCHIVELOG 환경의 복구는 기재 없음

ASM 환경에서 같은 흐름(아카이브 모드 전환, +DATA 파일 삭제 후 복원)은 ASM 환경의 백업과 복구 글에서 다룸

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

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

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