RMAN 기본 백업과 복원
RMAN으로 데이터 파일을 백업하고, 손상된 데이터 파일을 복원(RESTORE)한 뒤 그 이후 변경을 적용(RECOVER)해 완전 복구하는 흐름이며 SYSTEM, UNDO 파일과 일반 데이터 파일을 구분함
#핵심 요약
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
#백업 전 확인
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;결과 해석: 개별 실행 출력은 기재 없음
#백업
rman target sys nocatalogBACKUP DATABASE; -- 전체 데이터 파일
BACKUP DATAFILE 1, 4, 7; -- 지정한 데이터 파일만결과 해석:
두 명령을 꼭 이어서 실행하는 것은 아님
지정 백업만 했다면 그 목록에 없는 파일은 따로 백업이 있어야 복구할 수 있음
SHOW ALL;
LIST BACKUP;
LIST BACKUP OF TABLESPACE SYSTEM;
LIST BACKUP OF DATAFILE <FILE_NO>;결과 해석: 개별 실행 출력은 기재 없음
#복구가 필요한 파일 확인
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 파일 복구
SHUTDOWN IMMEDIATE
STARTUP MOUNTRESTORE DATAFILE 1;
RECOVER DATAFILE 1;ALTER DATABASE OPEN;결과 해석:
RECOVER 중 로그 부족 같은 오류가 나면 OPEN으로 넘어가지 않고 원인을 먼저 확인함
#일반 데이터 파일 복구 (데이터베이스 OPEN 상태)
ALTER DATABASE DATAFILE <FILE_NO> OFFLINE;RESTORE DATAFILE <FILE_NO>;
RECOVER DATAFILE <FILE_NO>;ALTER DATABASE DATAFILE <FILE_NO> ONLINE;결과 해석:
파일이 오프라인인 동안 그 데이터는 쓸 수 없음
데이터베이스는 계속 열려 있었으므로 ALTER DATABASE OPEN을 다시 실행하지 않음
#복구 후 검증
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 환경의 백업과 복구 글에서 다룸