Oracle ORA-01194 오류 원인과 해결 방법 완벽 가이드

ORA-01194
2026년 07월 09일 | DBMS Error 가이드

이 글에서 다루는 내용

ORA-01194 에러의 원인 분석, 해결 SQL, 예방 방법을 실무 관점에서 정리합니다.

ORA-01194 file needs more recovery to be consistent 는?

ORA-01194 에러는 Oracle 데이터베이스에서 특정 데이터 파일이 일관된 상태(Consistent State)로 복구되기 위해 추가적인 리두(Redo) 적용이 필요할 때 발생합니다. 주로 불완전 복구(Incomplete Recovery) 또는 미디어 복구(Media Recovery) 과정에서, 데이터 파일의 SCN(System Change Number)이 컨트롤 파일 또는 다른 파일과 동기화되지 않은 상태일 때 나타납니다. 이 에러는 데이터베이스를 OPEN 하려고 시도할 때 Oracle이 파일 간의 일관성 검사를 수행하면서 감지됩니다.


주요 발생 원인

  • 불완전 복구(Incomplete Recovery) 후 데이터베이스 오픈 시도

불완전 복구를 수행한 후 RESETLOGS 옵션 없이 데이터베이스를 오픈하려 할 때 이 에러가 발생합니다. 불완전 복구는 특정 시점까지만 리두 로그를 적용하기 때문에, 복구가 완료된 후에는 반드시 ALTER DATABASE OPEN RESETLOGS 명령을 사용해야 합니다. 이를 누락하면 Oracle은 파일이 충분히 복구되지 않았다고 판단하여 ORA-01194를 발생시킵니다.

  • 특정 데이터 파일만 복구된 불균형 상태

전체 데이터베이스 복구가 아닌, 특정 데이터 파일만 백업에서 복구(Restore)했을 경우 발생합니다. 이 경우 복구된 파일의 SCN이 컨트롤 파일이나 다른 데이터 파일의 SCN과 맞지 않아 일관성 문제가 생깁니다. 모든 파일에 걸쳐 리두 로그가 균등하게 적용되어야만 데이터베이스가 정상적으로 열릴 수 있습니다.

  • 컨트롤 파일 재생성 또는 백업 컨트롤 파일 사용 후 복구 부족

CREATE CONTROLFILE 명령이나 백업 컨트롤 파일(Backup Control File)을 사용하여 복구할 때, 컨트롤 파일이 인식하는 데이터 파일의 체크포인트 SCN과 실제 파일의 SCN이 다를 수 있습니다. 이 경우 추가적인 복구 단계 없이 데이터베이스를 오픈하려 하면 ORA-01194가 발생합니다. 반드시 RECOVER DATABASE USING BACKUP CONTROLFILE 명령을 통해 추가 복구를 완료해야 합니다.


해결 방법

방법 1: 불완전 복구 후 RESETLOGS로 오픈

불완전 복구(Point-in-Time Recovery)를 완료한 후에는 반드시 RESETLOGS 옵션으로 오픈해야 합니다.

-- RMAN을 이용한 Point-in-Time 복구 예시
RMAN> RUN {
  SET UNTIL TIME "TO_DATE('2024-01-15 10:00:00', 'YYYY-MM-DD HH24:MI:SS')";
  RESTORE DATABASE;
  RECOVER DATABASE;
}

-- SQL*Plus에서 RESETLOGS로 데이터베이스 오픈
SQL> ALTER DATABASE OPEN RESETLOGS;

방법 2: 특정 데이터 파일에 추가 복구 적용

특정 파일에만 복구가 필요한 경우, 해당 파일을 식별하고 추가 복구를 적용합니다.

-- 복구가 필요한 파일 확인
SQL> SELECT FILE#, NAME, STATUS, CHECKPOINT_CHANGE#
     FROM V$DATAFILE
     ORDER BY FILE#;

-- 특정 데이터 파일에 복구 적용
SQL> RECOVER DATAFILE '/oradata/ORCL/users01.dbf';

-- 또는 파일 번호로 지정
SQL> RECOVER DATAFILE 4;

-- 아카이브 로그 자동 적용 옵션
SQL> RECOVER AUTOMATIC DATAFILE 4;

-- 복구 완료 후 데이터베이스 오픈
SQL> ALTER DATABASE OPEN;

방법 3: 백업 컨트롤 파일을 이용한 복구

컨트롤 파일을 새로 생성하거나 백업 컨트롤 파일을 사용한 경우의 복구 절차입니다.

-- Mount 상태로 데이터베이스 시작
SQL> STARTUP MOUNT;

-- 백업 컨트롤 파일을 사용하여 복구 수행
SQL> RECOVER DATABASE USING BACKUP CONTROLFILE;

-- 아카이브 로그 경로 지정 (필요 시)
-- Oracle이 로그 파일을 요청할 때 경로 입력 또는 AUTO 선택
-- Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
-- AUTO 입력 후 엔터

-- 복구 완료 후 RESETLOGS로 오픈
SQL> ALTER DATABASE OPEN RESETLOGS;

방법 4: RMAN을 이용한 전체 복구 절차

-- RMAN 연결
$ rman target /

-- 데이터베이스 복구 전체 절차
RMAN> STARTUP MOUNT;

RMAN> RESTORE DATABASE;

RMAN> RECOVER DATABASE;

-- 복구 후 데이터베이스 오픈
RMAN> ALTER DATABASE OPEN RESETLOGS;

-- 복구 후 백업 즉시 수행 권장
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

방법 5: 특정 파일의 SCN 및 상태 확인

-- 데이터 파일과 컨트롤 파일의 SCN 비교
SQL> SELECT A.FILE#,
            A.NAME,
            A.CHECKPOINT_CHANGE# AS FILE_SCN,
            B.CHECKPOINT_CHANGE# AS CTRL_SCN,
            A.STATUS
     FROM V$DATAFILE A, V$DATAFILE_HEADER B
     WHERE A.FILE# = B.FILE#
     ORDER BY A.FILE#;

-- 현재 데이터베이스 SCN 확인
SQL> SELECT CURRENT_SCN FROM V$DATABASE;

-- 아카이브 로그 상태 확인
SQL> SELECT SEQUENCE#, FIRST_CHANGE#, NEXT_CHANGE#, STATUS
     FROM V$ARCHIVED_LOG
     WHERE STANDBY_DEST = 'NO'
     ORDER BY SEQUENCE#;

예방 방법

  • 정기적인 백업 및 복구 테스트 수행

운영 환경에서는 RMAN을 사용하여 정기적인 전체 백업(Full Backup)과 증분 백업(Incremental Backup)을 자동화해야 합니다. 단순히 백업만 하는 것으로 끝내지 않고, 주기적으로 별도의 테스트 환경에서 실제 복구를 시뮬레이션하여 복구 절차가 올바르게 동작하는지 검증해야 합니다. 아래는 백업 정책 자동화 예시입니다.

-- RMAN 자동 백업 스크립트 예시 (crontab 또는 스케줄러 등록)
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/rman/%F';

-- 주간 전체 백업
RMAN> BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT;
  • 아카이브 로그 모드(ARCHIVELOG MODE) 유지 및 로그 보관 정책 수립

데이터베이스는 반드시 아카이브 로그 모드(ARCHIVELOG MODE)로 운영해야 하며, 아카이브 로그가 삭제되지 않도록 충분한 보관 기간을 설정해야 합니다. 아카이브 로그가 누락되면 복구 체인이 끊겨 ORA-01194와 같은 에러가 발생할 가능성이 높아집니다.

-- 아카이브 로그 모드 확인
SQL> SELECT LOG_MODE FROM V$DATABASE;

-- 아카이브 로그 모드로 전환 (필요 시)
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;

-- 아카이브 로그 대상 및 보관 정책 설정
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = 'LOCATION=/arch/orcl' SCOPE=BOTH;
SQL> ALTER SYSTEM SET LOG_ARCHIVE_MIN_SUCCEED_DEST = 1 SCOPE=BOTH;

관련 에러

  • ORA-01113: 데이터 파일에 미디어 복구가 필요함을 알리는 에러로, ORA-01194와 함께 자주 발생합니다. 파일이 오프라인 상태이거나 손상된 경우 나타납니다.
  • ORA-01110: 문제가 발생한 특정 데이터 파일의 이름과 번호를 제공하는 에러로, ORA-01194 발생 시 함께 출력되어 어떤 파일에 문제가 있는지 안내합니다.
  • ORA-01547: RECOVER DATABASE 명령 수행 중 복구할 로그가 더 이상 없을 때 발생하며, 불완전 복구 상황에서 ORA-01194 전후로 발생할 수 있습니다.
  • ORA-01152: 파일이 충분히 이전 백업에서 복구되지 않았을 때 발생하는 에러로, ORA-01194와 유사한 맥락에서 나타납니다.

DBMS 에러 코드 시리즈

주요 DBMS error code를 정리하는 시리즈입니다.
블로그 홈에서 다른 에러도 확인하세요.

본 포스트는 AI가 생성한 기술 가이드입니다. 운영 환경 적용 전 충분한 검토를 권장합니다.

댓글 남기기