2026년 07월 05일 | DBMS Error 가이드
이 글에서 다루는 내용
ORA-01107 에러의 원인 분석, 해결 SQL, 예방 방법을 실무 관점에서 정리합니다.
ORA-01107 database must be mounted for media recovery 는?
ORA-01107 에러는 미디어 복구(Media Recovery)를 수행하려고 할 때 데이터베이스가 MOUNT 상태가 아닌 경우 발생하는 에러입니다. Oracle에서 미디어 복구는 데이터 파일 손상, 아카이브 로그 적용 등의 복구 작업을 의미하며, 이 작업은 반드시 데이터베이스가 MOUNT 상태일 때만 수행할 수 있습니다. 즉, 데이터베이스가 OPEN 상태이거나 NOMOUNT 상태에서 복구 명령을 실행하면 이 에러가 발생합니다.
주요 발생 원인
- 데이터베이스가 OPEN 상태에서 복구 명령 실행
가장 흔한 원인으로, DBA가 운영 중인 데이터베이스(OPEN 상태)에서 RECOVER DATABASE 또는 RECOVER DATAFILE 명령을 실행할 때 발생합니다. 미디어 복구는 데이터베이스가 완전히 열려 있으면 실행할 수 없으며, 반드시 MOUNT 상태로 전환 후 수행해야 합니다. 특히 전체 데이터베이스 복구(Complete Recovery) 시나리오에서 이 실수가 자주 발생합니다.
- NOMOUNT 상태에서 복구 명령 실행
데이터베이스를 시작할 때 STARTUP NOMOUNT 명령으로 시작한 후, 컨트롤 파일 복구 없이 곧바로 데이터 파일 복구를 시도할 때 발생합니다. NOMOUNT 상태는 인스턴스만 기동된 상태로, 컨트롤 파일조차 읽지 않은 상태입니다. 따라서 데이터 파일의 위치와 상태를 알 수 없기 때문에 미디어 복구가 불가능합니다.
- 스크립트 자동화 오류로 인한 상태 불일치
RMAN 또는 SQL*Plus 복구 스크립트에서 데이터베이스 상태 확인 없이 무조건적으로 복구 명령을 실행하는 경우입니다. 자동화된 백업/복구 스크립트가 이전 단계의 실패를 감지하지 못하고 데이터베이스가 MOUNT 상태가 아님에도 복구 명령을 호출하게 됩니다. 이는 야간 자동 복구 스크립트나 DR(Disaster Recovery) 시나리오에서 특히 빈번하게 나타납니다.
해결 방법
원인 1 해결: 데이터베이스를 MOUNT 상태로 전환 후 복구
현재 데이터베이스 상태를 먼저 확인하고, OPEN 상태라면 MOUNT 상태로 전환합니다.
-- 1. 현재 데이터베이스 상태 확인
SELECT STATUS FROM V$INSTANCE;
-- 2. 데이터베이스가 OPEN 상태라면 종료 후 MOUNT로 기동
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
-- 3. 미디어 복구 수행 (전체 데이터베이스 복구)
RECOVER DATABASE;
-- 4. 복구 완료 후 데이터베이스 OPEN
ALTER DATABASE OPEN;
-- 5. 특정 데이터 파일만 복구하는 경우
RECOVER DATAFILE '/u01/oradata/ORCL/users01.dbf';
-- 또는 파일 번호로 복구
RECOVER DATAFILE 5;
원인 2 해결: NOMOUNT에서 MOUNT로 상태 전환
-- 1. 현재 NOMOUNT 상태에서 MOUNT로 전환
ALTER DATABASE MOUNT;
-- 2. 상태 확인
SELECT STATUS FROM V$INSTANCE;
-- 3. 아카이브 로그를 이용한 복구 수행
RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
-- 4. 복구 후 RESETLOGS로 OPEN
ALTER DATABASE OPEN RESETLOGS;
원인 3 해결: 스크립트에 상태 확인 로직 추가
-- 복구 스크립트 실행 전 상태 확인 프로시저 예시
DECLARE
v_status VARCHAR2(20);
BEGIN
SELECT STATUS INTO v_status FROM V$INSTANCE;
IF v_status = 'OPEN' THEN
DBMS_OUTPUT.PUT_LINE('ERROR: Database is OPEN. Shutdown and mount first.');
RAISE_APPLICATION_ERROR(-20001, 'Database must be in MOUNT state for media recovery.');
ELSIF v_status = 'STARTED' THEN
-- NOMOUNT 상태 (STARTED = NOMOUNT)
DBMS_OUTPUT.PUT_LINE('INFO: Database is in NOMOUNT state. Mounting...');
EXECUTE IMMEDIATE 'ALTER DATABASE MOUNT';
DBMS_OUTPUT.PUT_LINE('INFO: Database mounted successfully.');
ELSIF v_status = 'MOUNTED' THEN
DBMS_OUTPUT.PUT_LINE('INFO: Database is in MOUNT state. Ready for recovery.');
END IF;
END;
/
-- RMAN을 사용한 복구 방법 (권장)
-- RMAN은 자동으로 상태를 관리하므로 더 안전합니다.
RMAN TARGET /
-- RMAN 내에서 복구 명령
-- RMAN> STARTUP MOUNT;
-- RMAN> RESTORE DATABASE;
-- RMAN> RECOVER DATABASE;
-- RMAN> ALTER DATABASE OPEN RESETLOGS;
RMAN을 활용한 완전한 복구 시나리오
-- RMAN 복구 전체 시나리오
-- Step 1: RMAN으로 데이터베이스 연결 및 MOUNT 상태로 기동
-- (OS 커맨드라인에서 실행)
-- $ rman target /
-- RMAN 내부 명령:
-- STARTUP FORCE MOUNT; -- 강제로 MOUNT 상태로 재시작
-- Step 2: 데이터 파일 복원
-- RESTORE DATABASE;
-- Step 3: 아카이브 로그 적용 (복구)
-- RECOVER DATABASE;
-- Step 4: 데이터베이스 OPEN
-- ALTER DATABASE OPEN;
-- 불완전 복구 (특정 시점까지)
-- RECOVER DATABASE UNTIL TIME "TO_DATE('2024-01-15 10:00:00','YYYY-MM-DD HH24:MI:SS')";
-- ALTER DATABASE OPEN RESETLOGS;
-- 복구 후 상태 최종 확인
SELECT INSTANCE_NAME, STATUS, DATABASE_STATUS
FROM V$INSTANCE;
SELECT FILE#, NAME, STATUS, RECOVER
FROM V$DATAFILE;
예방 방법
- 복구 전 데이터베이스 상태 자동 점검 루틴 구축
모든 복구 스크립트의 첫 번째 단계로 반드시 데이터베이스 상태를 확인하는 로직을 포함해야 합니다. V$INSTANCE 뷰를 조회하여 STATUS 컬럼이 ‘MOUNTED’인지 확인하고, 그렇지 않은 경우 자동으로 올바른 상태로 전환하거나 DBA에게 알림을 발송하는 자동화 체계를 구축하세요. RMAN을 사용하는 경우 RMAN 자체가 상태 관리를 일부 자동화해주므로 SQL*Plus 수동 복구보다 RMAN 활용을 권장합니다.
- 복구 절차 문서화 및 정기적인 복구 훈련 실시
재해 복구(DR) 시나리오에 대한 단계별 Runbook을 작성하고, 각 단계에서 데이터베이스 상태를 명시적으로 표시해 두어야 합니다. 분기별 또는 반기별로 테스트 환경에서 실제 복구 훈련을 실시하여 스크립트와 절차의 정확성을 검증하고, 팀원 모두가 복구 절차를 숙지할 수 있도록 교육하세요.
관련 에러
- ORA-01109:
database not open— 데이터베이스가 OPEN 상태가 아닐 때 일반 쿼리를 실행하면 발생. 복구 작업 이후 OPEN 전환이 제대로 되지 않았을 때 연계되어 나타남. - ORA-01113:
file N needs media recovery— 특정 데이터 파일이 미디어 복구가 필요한 상태임을 나타내며, ORA-01107과 함께 자주 등장. - ORA-01110:
data file N: 'filename'— ORA-01113과 함께 발생하여 복구가 필요한 파일의 경로를 알려줌. - ORA-00264:
no recovery required— 복구가 필요 없는 상태에서 복구 명령을 실행할 때 발생. 복구 완료 후 재확인 시 나타날 수 있음. - ORA-01194:
file N needs more recovery to be consistent— 불완전 복구 이후 데이터 파일이 아직 일관성을 확보하지 못한 상태. RESETLOGS 없이 OPEN 시도 시 연계 발생.
주요 DBMS error code를 정리하는 시리즈입니다.
블로그 홈에서 다른 에러도 확인하세요.
본 포스트는 AI가 생성한 기술 가이드입니다. 운영 환경 적용 전 충분한 검토를 권장합니다.