본문 바로가기
🗄️ DB_이야기/# 🛢️ Oracle

[Oracle] RMAN 복구(BACKUPSET)

by gwon_s 2026. 2. 6.

0️⃣ RMAN 복구의 기본 원리 

👉 복구는 항상 “백업의 반대 순서”로 진행

 
Control File
→ Datafile (Level 0)
→ Datafile (Level 1)
→ Archive Log
→ OPEN RESETLOGS

 

1️⃣ 데이터 복구 유형

  • 완전 복구
  • 불완전 복구

2️⃣ 장애 시 복구 유형

  • Data File 손상(DB는 살아있음)
  • 전체 Data File 손상(DB OPEN 불가)
  • Control File 손상
  • spfile 손상

 


완전 복구

Full 복구👇

더보기

- 전체 Data File을 복구

- 최신 시점까지 복구 

- 모든 Archive Log가 존재해야만 복구 가능

 

MOUNT 단계:

SQL> shutdown immediate;
SQL> startup mount;

 

복구:

RMAN> restore database;
RMAN> recover database;

 

DB OPEN:

SQL> alter database open;

 

특정 Dafa File 복구 👇

더보기

- 특정 Data File만 복구할때

- 해당 Data File을 최신 SCN까지 복구

- DB OPEN 상태에서 복구 가능

 

장애 Data File 넘버 조회:

-- SQL로 조회
SQL> SEELCT file#, name FROM v$datafile;

-- RMAN에서 조회
RMAN> report schema;

 

해당 Data File OFF:

SQL> alter database datafile 7 offline;

 

해당 Data File 복구:

RMAN> restore datafile 7;
RMAN> recover datafile 7;

 

해당 Data File ON:

SQL> alter database datafile 7 online;

 

Tablespace 단위 복구 👇

더보기

- 특정 Tablespace 복구할때

 

해당 Tablespace OFF:

SQL> alter tablespace users offline;

 

해당 Tablespace 복구:

RMAN> restore tablespace users;
RMAN> recover tablespace users;

 

해당 Tablespace ON:

SQL> alter tablespace users online;

 

Archive Log만 복구 👇

더보기

- archive log 전체 복구

RMAN> restore archivelog all;

 

불완전 복구

불완전 복구는 redo 기록을 의도적으로 중간에서 끊는 작업이기 때문에,
Oracle은 그 지점 이후의 redo를 모두 폐기하고 새 redo 흐름을 시작해야 함으로 RESETLOGS가 필수

더보기

- 특정 시점까지 복구 가능

- DB MOUNT 상태에서만 가능

- RESETLOGS 및 SET UNTIL 필수 조건

👉 RESETLOGS 이후 필수적으로 FULL(Level 0) 백업을 진행하여 시작점을 만들것

 

DB MOUNT:

SQL> shutdonw immediate;
SQL> startup mount;

 

특정 시점까지 복구:

RMAN> run{
	set until time "to_date('2026-02-05 13:00:00', 'YYYY-MM-DD HH24:MI:SS')";
    restore database;
    recover database;
}

 

DB OPEN 및 RESETLOGS 진행:

SQL> alter database open resetlogs;