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

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

이 글에서 다루는 내용

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

ORA-01122 database file failed verification check 는?

ORA-01122 에러는 Oracle 데이터베이스가 기동(startup) 과정에서 데이터파일의 헤더 정보를 검증할 때 불일치가 발생하면 나타나는 에러입니다. 주로 데이터파일의 SCN(System Change Number), 체크포인트 정보, 또는 데이터베이스 ID가 컨트롤 파일에 기록된 정보와 맞지 않을 때 발생합니다. 이 에러는 보통 ORA-01110(데이터파일 번호 및 경로 정보)과 함께 출력되며, 부적절한 복구 작업이나 백업 복원 과정에서 자주 마주치게 됩니다.


주요 발생 원인

1. 불완전한 미디어 복구 (Incomplete Media Recovery)

가장 흔한 원인으로, 백업에서 데이터파일을 복원한 뒤 적절한 복구(recover) 과정을 거치지 않고 데이터베이스를 열려고 할 때 발생합니다. 복원된 데이터파일의 SCN이 컨트롤 파일이 기대하는 SCN보다 낮을 경우 Oracle은 해당 파일이 유효하지 않다고 판단하여 이 에러를 발생시킵니다. 이 경우 아카이브 로그 또는 리두 로그를 이용해 파일을 현재 시점으로 완전히 복구해야 합니다.

2. 컨트롤 파일과 데이터파일 간의 불일치 (Control File Mismatch)

컨트롤 파일이 재생성되었거나, 이전 백업의 컨트롤 파일을 사용 중인 경우 데이터파일의 체크포인트 SCN과 컨트롤 파일에 기록된 SCN이 맞지 않아 에러가 발생합니다. 예를 들어, 컨트롤 파일을 CREATE CONTROLFILE 명령으로 재생성하거나 구 버전의 컨트롤 파일로 교체한 후 복구 없이 open하려 할 때 이 문제가 나타납니다. 이 상황에서는 컨트롤 파일에 맞는 복구 작업이 반드시 선행되어야 합니다.

3. 데이터파일 손상 또는 잘못된 복사본 사용 (Corrupted or Mismatched Datafile)

파일 시스템 레벨에서의 복사, OS 명령어를 이용한 파일 이동, 또는 스토리지 장애로 인해 데이터파일이 물리적으로 손상되거나 올바르지 않은 버전의 파일이 사용될 때 발생합니다. 특히 핫 백업(open backup) 중에 파일을 복사한 후 END BACKUP 처리를 하지 않은 경우, 파일이 백업 모드 상태로 남아 있어 이 에러가 나타날 수 있습니다. 이 경우 해당 파일의 백업 모드를 해제하거나 정상적인 복구 절차를 수행해야 합니다.


해결 방법

방법 1: 데이터파일 복구 수행 (가장 일반적인 해결책)

먼저 에러가 발생한 데이터파일 번호를 확인합니다.

-- alert log 또는 아래 뷰에서 문제 파일 확인
SELECT file#, status, name, checkpoint_change#
FROM v$datafile
WHERE status != 'ONLINE';

-- 데이터파일 상태 상세 확인
SELECT file#, error, recover, fuzzy, checkpoint_change#
FROM v$datafile_header;

문제 파일을 확인한 후, MOUNT 상태에서 복구를 수행합니다.

-- 데이터베이스를 MOUNT 상태로 기동
STARTUP MOUNT;

-- 특정 데이터파일 복구 (예: 파일 번호 5번)
RECOVER DATAFILE 5;

-- 또는 파일 경로로 복구
RECOVER DATAFILE '/oracle/oradata/ORCL/datafile05.dbf';

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

방법 2: 백업 모드(Hot Backup Mode) 해제

파일이 백업 모드에 걸려 있는 경우, 아래와 같이 처리합니다.

-- 백업 모드 상태 확인
SELECT file#, status, name
FROM v$backup
WHERE status = 'ACTIVE';

-- 특정 테이블스페이스의 백업 모드 해제
ALTER TABLESPACE users END BACKUP;

-- 모든 테이블스페이스 백업 모드 일괄 해제
BEGIN
  FOR ts IN (SELECT tablespace_name FROM dba_tablespaces) LOOP
    EXECUTE IMMEDIATE 'ALTER TABLESPACE ' || ts.tablespace_name || ' END BACKUP';
  END LOOP;
END;
/

-- 이후 데이터베이스 복구 및 오픈
RECOVER DATABASE;
ALTER DATABASE OPEN;

방법 3: RESETLOGS 옵션을 이용한 오픈 (불완전 복구 후)

아카이브 로그가 부족하여 완전한 복구가 불가능한 경우 사용합니다. 이 방법은 데이터 손실이 발생할 수 있으므로 반드시 신중하게 사용해야 합니다.

-- 불완전 복구 후 RESETLOGS로 데이터베이스 오픈
ALTER DATABASE OPEN RESETLOGS;

-- RESETLOGS 후 즉시 전체 백업 수행 (필수!)
-- RMAN 사용 시:
-- RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

방법 4: 특정 데이터파일만 오프라인 처리 후 복구

운영 중 특정 파일만 문제가 생긴 경우, 해당 파일만 오프라인으로 변경 후 복구합니다.

-- 문제 파일을 오프라인으로 변경
ALTER DATABASE DATAFILE '/oracle/oradata/ORCL/datafile05.dbf' OFFLINE;

-- 데이터베이스 오픈
ALTER DATABASE OPEN;

-- 오프라인 파일 복구
RECOVER DATAFILE '/oracle/oradata/ORCL/datafile05.dbf';

-- 복구 완료 후 온라인으로 복귀
ALTER DATABASE DATAFILE '/oracle/oradata/ORCL/datafile05.dbf' ONLINE;

방법 5: RMAN을 이용한 복구

-- RMAN 연결 후 복구 수행
-- $ rman target /

-- RMAN에서 특정 데이터파일 복구
RESTORE DATAFILE 5;
RECOVER DATAFILE 5;

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

-- 복구 후 오픈
ALTER DATABASE OPEN;

-- 불완전 복구의 경우
ALTER DATABASE OPEN RESETLOGS;

예방 방법

1. 정기적인 RMAN 백업 및 검증 자동화

ORA-01122 에러의 가장 근본적인 예방책은 신뢰할 수 있는 백업 체계를 구축하고 정기적으로 백업 유효성을 검증하는 것입니다. 단순히 백업을 수행하는 것에 그치지 않고, VALIDATE 명령어를 통해 실제 복구 가능 여부를 주기적으로 점검해야 합니다.

-- RMAN을 이용한 백업 유효성 검증 (실제 복원 없이 논리적 검증)
-- $ rman target /
VALIDATE DATABASE;
VALIDATE BACKUPSET ALL;

-- 데이터파일 블록 손상 여부 확인
SELECT * FROM v$database_block_corruption;

-- DB_FILE_CHECKSUM 파라미터 활성화 (데이터파일 I/O 시 체크섬 검증)
-- spfile 또는 init.ora에 설정
-- DB_BLOCK_CHECKSUM = TYPICAL  (기본값, 권장)
-- DB_BLOCK_CHECKSUM = FULL     (최고 수준 검증, 성능 영향 있음)

2. OS 레벨 파일 작업 금지 및 변경 관리 프로세스 수립

데이터파일을 OS 명령어(cp, mv 등)로 직접 조작하는 행위는 파일 헤더 정보의 불일치를 유발하는 주요 원인입니다. 반드시 Oracle이 제공하는 명령어(RMAN, ALTER DATABASE MOVE DATAFILE 등)를 사용해야 합니다. 또한 핫 백업 후 반드시 END BACKUP 처리를 수행하는 절차를 표준화하고, 모든 데이터베이스 변경 작업에 대해 변경관리(Change Management) 프로세스를 적용하여 무분별한 파일 조작을 방지해야 합니다.

-- Oracle 12c 이상: 온라인 상태에서 데이터파일 이동 (권장 방법)
ALTER DATABASE MOVE DATAFILE '/old/path/datafile05.dbf'
  TO '/new/path/datafile05.dbf';

-- 테이블스페이스 백업 모드 상태 정기 모니터링
SELECT file#, status, change#, time
FROM v$backup
ORDER BY status;

관련 에러

  • ORA-01110: ORA-01122와 항상 함께 출력되며, 문제가 발생한 데이터파일의 번호와 경로를 알려주는 에러입니다. ORA-01122 해결 시 이 에러 메시지를 통해 정확한 파일 위치를 파악해야 합니다.
  • ORA-01113: 데이터파일에 대한 미디어 복구가 필요하다는 에러로, ORA-01122와 함께 발생하는 경우가 많습니다. RECOVER DATAFILE 명령으로 해결합니다.
  • ORA-01194: 데이터파일이 일관성 있는 상태로 만들기 위해 더 많은 복구가 필요함을 나타내며, 불완전 복구 시나리오에서 함께 등장합니다.
  • ORA-00376: 현재 읽을 수 없는 데이터파일을 참조할 때 발생하며, ORA-01122로 인해 파일이 오프라인 상태일 때 연쇄적으로 발생합니다.
  • ORA-01578: 데이터파일의 물리적 블록 손상(corruption)을 나타내는 에러로, ORA-01122의 원인 중 하나가 블록 손상인 경우 함께 발생할 수 있습니다.

DBMS 에러 코드 시리즈

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

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

댓글 남기기