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

ORA-00200
2026년 10월 25일 | DBMS Error 가이드

이 글에서 다루는 내용

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

ORA-00200 control file could not be created 는?

ORA-00200 에러는 Oracle 데이터베이스가 컨트롤 파일(Control File)을 생성하려고 시도했으나 실패했을 때 발생하는 에러입니다. 컨트롤 파일은 데이터베이스의 물리적 구조(데이터파일, 리두 로그 파일 위치 등)를 기록하는 매우 중요한 이진 파일로, 이 파일이 없으면 데이터베이스 자체를 시작할 수 없습니다. 주로 CREATE DATABASE 명령 실행 시, 컨트롤 파일 재생성(CREATE CONTROLFILE) 시, 또는 RMAN 복구 과정에서 발생하며, 파일 시스템 문제나 권한 부족, 잘못된 경로 설정 등이 주된 원인입니다.


주요 발생 원인

1. 파일 시스템 권한 부족 또는 경로 오류

가장 흔한 원인으로, Oracle 소프트웨어를 실행하는 OS 계정(일반적으로 oracle)이 컨트롤 파일을 생성하려는 디렉토리에 대한 쓰기 권한이 없는 경우입니다. 또한 CONTROL_FILES 파라미터에 지정된 경로 자체가 존재하지 않거나 오타가 있는 경우에도 이 에러가 발생합니다. 예를 들어, /u01/oradata/ORCL/ 디렉토리가 실제로 존재하지 않는 상태에서 컨트롤 파일 생성을 시도하면 즉시 실패합니다.

2. 디스크 공간 부족

컨트롤 파일이 생성될 파일 시스템의 여유 공간이 부족하거나 OS 레벨의 파일 개수 제한(ulimit)에 도달했을 때 발생합니다. 운영 환경에서 디스크 모니터링이 미흡한 경우 갑작스럽게 디스크가 가득 차는 상황이 발생하며, 이때 Oracle은 컨트롤 파일을 정상적으로 기록하지 못합니다. RAC(Real Application Clusters) 환경에서는 공유 스토리지의 용량 부족이 특히 치명적입니다.

3. 잘못된 CONTROL_FILES 파라미터 설정

init.ora 또는 spfile의 CONTROL_FILES 파라미터 값이 잘못 설정된 경우입니다. 경로명에 공백이 포함되어 있거나, ASM(Automatic Storage Management) 환경에서 디스크 그룹명이 잘못 지정된 경우, 또는 파라미터 파일 자체가 손상된 경우에 이 문제가 발생합니다. 특히 데이터베이스를 새로운 서버로 마이그레이션하거나 스토리지를 변경한 직후에 자주 나타납니다.


해결 방법

원인 1 해결: 디렉토리 생성 및 권한 부여

먼저 OS 레벨에서 경로와 권한을 확인하고 수정합니다.

-- 1단계: 현재 CONTROL_FILES 파라미터 확인
SHOW PARAMETER control_files;

-- 출력 예시:
-- NAME          TYPE   VALUE
-- control_files string /u01/oradata/ORCL/control01.ctl,
--                      /u02/oradata/ORCL/control02.ctl
# OS 레벨에서 디렉토리 생성 및 권한 부여 (root 또는 oracle 계정)
mkdir -p /u01/oradata/ORCL/
mkdir -p /u02/oradata/ORCL/
chown -R oracle:oinstall /u01/oradata/ORCL/
chown -R oracle:oinstall /u02/oradata/ORCL/
chmod 755 /u01/oradata/ORCL/
chmod 755 /u02/oradata/ORCL/
-- 2단계: 디렉토리 확인 후 컨트롤 파일 재생성
-- NOMOUNT 상태에서 실행
STARTUP NOMOUNT;

CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS NOARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/u01/oradata/ORCL/redo01.log'  SIZE 50M,
  GROUP 2 '/u01/oradata/ORCL/redo02.log'  SIZE 50M,
  GROUP 3 '/u01/oradata/ORCL/redo03.log'  SIZE 50M
DATAFILE
  '/u01/oradata/ORCL/system01.dbf',
  '/u01/oradata/ORCL/sysaux01.dbf',
  '/u01/oradata/ORCL/undotbs01.dbf',
  '/u01/oradata/ORCL/users01.dbf'
CHARACTER SET AL32UTF8;

원인 2 해결: 디스크 공간 확인 및 확보

-- Oracle 내부에서 컨트롤 파일 크기 및 경로 확인
SELECT name, block_size, file_size_blks,
       block_size * file_size_blks AS total_bytes_approx
FROM v$controlfile;

-- 불필요한 아카이브 로그 삭제로 공간 확보 (RMAN 사용)
-- RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
# OS 레벨 디스크 공간 확인
df -hP /u01/oradata/
df -hP /u02/oradata/

# ulimit 확인 (파일 개수 제한)
ulimit -n
ulimit -a

# oracle 계정의 ulimit 상향 조정 (/etc/security/limits.conf)
# oracle soft nofile 65536
# oracle hard nofile 65536

원인 3 해결: CONTROL_FILES 파라미터 수정

-- SPFILE에서 파라미터 수정
-- NOMOUNT 상태에서 실행 가능
ALTER SYSTEM SET control_files=
  '/u01/oradata/ORCL/control01.ctl',
  '/u02/oradata/ORCL/control02.ctl'
SCOPE=SPFILE;

-- PFILE을 사용하는 경우 init.ora 직접 수정 후 확인
-- control_files = ('/u01/oradata/ORCL/control01.ctl',
--                  '/u02/oradata/ORCL/control02.ctl')

-- 수정 후 DB 재기동
SHUTDOWN ABORT;
STARTUP;

-- 컨트롤 파일 정상 생성 확인
SELECT status FROM v$instance;
SELECT name FROM v$controlfile;

ASM 환경에서의 추가 확인

-- ASM 환경에서 디스크 그룹 용량 확인
SELECT group_number, name, state, type,
       total_mb, free_mb,
       ROUND((free_mb/total_mb)*100, 2) AS free_pct
FROM v$asm_diskgroup
ORDER BY group_number;

-- ASM 환경 CONTROL_FILES 예시
ALTER SYSTEM SET control_files=
  '+DATA/ORCL/CONTROLFILE/current.260.1234567890',
  '+FRA/ORCL/CONTROLFILE/current.256.1234567891'
SCOPE=SPFILE;

예방 방법

1. 컨트롤 파일 다중화(Multiplexing) 및 정기적 백업

컨트롤 파일은 반드시 서로 다른 물리적 디스크(또는 ASM 디스크 그룹)에 최소 2개 이상 다중화하여 관리해야 합니다. 또한 RMAN을 통한 정기적인 컨트롤 파일 백업을 스케줄링하고, ALTER DATABASE BACKUP CONTROLFILE TO TRACE를 주기적으로 실행하여 텍스트 형태의 재생성 스크립트를 별도 보관하는 것이 좋습니다.

-- 컨트롤 파일 텍스트 백업 생성 (재생성 스크립트 보관용)
ALTER DATABASE BACKUP CONTROLFILE TO TRACE
  AS '/home/oracle/backup/controlfile_backup.sql' REUSE NORESETLOGS;

-- RMAN을 통한 자동 백업 설정
-- RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
-- RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/rman/%F';

2. 파일 시스템 및 디스크 모니터링 자동화

운영 환경에서는 디스크 사용률 85% 초과 시 자동 알림이 발송되도록 모니터링 체계를 구축해야 합니다. Oracle Enterprise Manager(OEM) 또는 커스텀 쉘 스크립트를 통해 v$controlfile, v$asm_diskgroup 등의 뷰를 주기적으로 조회하여 이상 징후를 사전에 감지하는 것이 중요합니다.

-- 컨트롤 파일 상태 모니터링 쿼리 (정기 실행 권장)
SELECT cf.name        AS controlfile_path,
       cf.status      AS status,
       cf.block_size,
       cf.file_size_blks * cf.block_size / 1024 / 1024 AS size_mb
FROM   v$controlfile cf;

관련 에러

  • ORA-00201: control file version incompatible – 컨트롤 파일의 버전이 Oracle 소프트웨어 버전과 맞지 않을 때 발생하며, ORA-00200과 함께 나타나는 경우가 많습니다.
  • ORA-00202: control file: '%s' – 특정 컨트롤 파일을 열거나 접근하는 데 실패했음을 나타내는 에러로, ORA-00200의 하위 에러로 같이 출력되는 경우가 많습니다.
  • ORA-00204: error in reading (block %s, # blocks %s) of control file – 컨트롤 파일 읽기 오류로, 파일 손상이나 I/O 문제와 관련이 있습니다.
  • ORA-00205: error in identifying control file – 컨트롤 파일을 식별하지 못하는 에러로, 파라미터 설정 오류나 파일 손상 시 발생합니다.
  • RMAN-06172: no AUTOBACKUP found or specified handle is not a valid copy or piece – RMAN 복구 중 컨트롤 파일 백업을 찾지 못할 때 발생하며, ORA-00200 이후 복구 과정에서 마주칠 수 있습니다.

DBMS 에러 코드 시리즈

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

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

댓글 남기기