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

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

이 글에서 다루는 내용

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

ORA-01124 cannot recover data file – file is in use or recovery 는?

ORA-01124 에러는 Oracle 데이터베이스에서 데이터 파일을 복구하려 할 때, 해당 파일이 이미 사용 중이거나 다른 복구 작업이 진행 중인 경우 발생하는 에러입니다. 주로 RECOVER 명령을 수동으로 실행하거나, RMAN을 통한 복구 작업 중에 데이터 파일의 상태가 올바르지 않을 때 나타납니다. 이 에러는 데이터베이스의 가용성과 직결되는 심각한 문제이므로, 원인을 정확히 파악하고 신속하게 조치해야 합니다.


주요 발생 원인

  • 데이터 파일이 ONLINE 상태에서 복구 시도

가장 흔한 원인으로, 데이터 파일이 아직 ONLINE 상태이거나 데이터베이스가 열려 있는 상태에서 복구 명령을 실행할 때 발생합니다. Oracle은 ONLINE 상태의 데이터 파일에 대해 수동 복구를 허용하지 않으며, 반드시 파일을 OFFLINE 상태로 전환하거나 데이터베이스를 MOUNT 상태로 유지해야 복구가 가능합니다.

  • 이전 복구 작업이 완료되지 않고 중단된 경우

RMAN 또는 SQL*Plus를 통한 이전 복구 작업이 비정상적으로 종료되었을 때, 해당 데이터 파일의 내부 상태가 “복구 중”으로 표시된 채 남아 있을 수 있습니다. 이 상태에서 새로운 복구 작업을 시도하면 Oracle이 충돌을 감지하고 ORA-01124를 발생시킵니다. 이런 경우 V$RECOVER_FILE 뷰를 통해 복구 대기 중인 파일의 상태를 확인해야 합니다.

  • 데이터베이스가 OPEN 상태에서 OFFLINE 없이 복구 시도

데이터베이스가 정상적으로 OPEN된 상태에서 특정 데이터 파일에 대해 RECOVER 명령을 실행하는 경우에도 발생합니다. 특히 Tablespace를 OFFLINE으로 전환하지 않은 상태에서 해당 테이블스페이스에 속한 데이터 파일을 복구하려 할 때 자주 발생하며, 복구 전에 반드시 사전 작업(OFFLINE 전환)이 필요합니다.


해결 방법

방법 1: 데이터 파일 상태 확인 후 OFFLINE 처리

먼저 현재 데이터 파일의 상태를 확인합니다.

-- 데이터 파일 상태 확인
SELECT file#, name, status, recover
FROM v$datafile
WHERE recover = 'YES' OR status = 'RECOVER';

-- 복구가 필요한 파일 목록 확인
SELECT * FROM v$recover_file;

파일이 ONLINE 상태라면, 데이터베이스가 OPEN 상태에서 해당 파일을 OFFLINE으로 전환합니다.

-- 데이터 파일 OFFLINE 처리 (파일 번호 기준)
ALTER DATABASE DATAFILE 5 OFFLINE;

-- 또는 테이블스페이스 전체를 OFFLINE 처리
ALTER TABLESPACE users OFFLINE IMMEDIATE;

OFFLINE 처리 후 복구를 진행합니다.

-- 특정 데이터 파일 복구
RECOVER DATAFILE 5;

-- 또는 테이블스페이스 복구
RECOVER TABLESPACE users;

복구 완료 후 다시 ONLINE으로 전환합니다.

-- 데이터 파일 ONLINE 복구
ALTER DATABASE DATAFILE 5 ONLINE;

-- 테이블스페이스 ONLINE 전환
ALTER TABLESPACE users ONLINE;

방법 2: 데이터베이스를 MOUNT 상태로 변경 후 복구

데이터베이스 전체 복구가 필요한 경우, OPEN 상태에서 MOUNT 상태로 전환합니다.

-- 데이터베이스 종료 및 MOUNT 상태로 시작
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;

-- 전체 데이터베이스 복구
RECOVER DATABASE;

-- 특정 파일만 복구
RECOVER DATAFILE '/oradata/users01.dbf';

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

방법 3: RMAN을 사용한 복구

RMAN을 통해 보다 안전하게 복구 작업을 수행하는 방법입니다.

-- RMAN 접속 후 복구 수행
-- (터미널에서 실행)
-- rman target /

-- RMAN 내부 명령어
RUN {
  SQL 'ALTER DATABASE DATAFILE 5 OFFLINE';
  RESTORE DATAFILE 5;
  RECOVER DATAFILE 5;
  SQL 'ALTER DATABASE DATAFILE 5 ONLINE';
}

방법 4: 이전 복구 작업 초기화

이전 복구 작업이 중단된 경우, 아래 방법으로 상태를 초기화할 수 있습니다.

-- 현재 복구 관련 세션 확인
SELECT sid, serial#, username, program, status
FROM v$session
WHERE program LIKE '%RMAN%' OR username = 'SYS';

-- 필요 시 세션 강제 종료 (sid, serial# 대입)
ALTER SYSTEM KILL SESSION '23,1457' IMMEDIATE;

-- 데이터 파일 상태 재확인
SELECT file#, name, status FROM v$datafile WHERE file# = 5;

-- 파일 상태 강제 초기화 (주의하여 사용)
ALTER DATABASE DATAFILE 5 OFFLINE DROP;
-- 이후 백업에서 복원 필요

예방 방법

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

ORA-01124 에러를 예방하는 가장 효과적인 방법은 RMAN을 이용한 정기적인 백업 스케줄링과 주기적인 복구 테스트입니다. 운영 환경과 동일한 테스트 환경에서 분기별로 복구 훈련을 실시하여, 실제 장애 발생 시 당황하지 않고 절차를 수행할 수 있도록 준비해야 합니다. 또한 복구 절차를 문서화하여 DBA 팀 전원이 공유해야 합니다.

“`sql

— RMAN 자동 백업 스크립트 예시

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

CONFIGURE BACKUP OPTIMIZATION ON;

BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT;

“`

  • Alert Log 및 V$ 뷰 모니터링 자동화

데이터 파일의 상태 변화를 실시간으로 감지할 수 있도록 V$DATAFILE, V$RECOVER_FILE, V$DATABASE 뷰를 주기적으로 모니터링하는 스크립트를 구축해야 합니다. Oracle Enterprise Manager 또는 사용자 정의 스크립트를 통해 파일 상태가 비정상으로 변경될 경우 즉시 알림을 받을 수 있도록 설정해 두면, 문제가 심각해지기 전에 선제적으로 대응할 수 있습니다.

“`sql

— 데이터 파일 상태 모니터링 쿼리 (cron 또는 scheduler로 주기 실행)

SELECT f.file#, f.name, f.status, f.checkpoint_change#,

d.name AS db_name, TO_CHAR(SYSDATE, ‘YYYY-MM-DD HH24:MI:SS’) AS check_time

FROM v$datafile f, v$database d

WHERE f.status NOT IN (‘ONLINE’, ‘SYSTEM’)

ORDER BY f.file#;

“`


관련 에러

  • ORA-01110: 데이터 파일 식별 에러로, ORA-01124와 함께 자주 발생하며 문제가 된 데이터 파일의 경로와 번호를 알려줍니다.
  • ORA-01113: 데이터 파일이 미디어 복구를 필요로 할 때 발생하며, ORA-01124의 전조 증상으로 나타나는 경우가 많습니다.
  • ORA-01157: 데이터 파일을 식별하거나 잠글 수 없을 때 발생하며, 파일 시스템 문제와 연관될 수 있습니다.
  • ORA-00283: 복구 세션이 오류로 취소되었을 때 발생하며, ORA-01124와 함께 출력되어 복구 작업 실패를 알려줍니다.
  • ORA-10873: RMAN 복구 중 파일이 이미 복구 대기 중일 때 발생하는 에러로, ORA-01124와 유사한 상황에서 나타납니다.

DBMS 에러 코드 시리즈

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

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

댓글 남기기