2026년 05월 23일 | Oracle DBA 가이드
?? 이 글에서 다루는 내용
ORA-00200 에러의 원인 분석, 해결 SQL, 예방 방법을 실무 관점에서 정리합니다.
# ORA-00200: Control File Could Not Be Created 완벽 해결 가이드
ORA-00200란?
ORA-00200은 Oracle 데이터베이스가 컨트롤 파일(Control File)을 생성하지 못할 때 발생하는 에러입니다. 컨트롤 파일은 데이터베이스의 물리적 구조(데이터 파일, 리두 로그 파일 위치 등)와 데이터베이스 상태 정보를 담고 있는 핵심 파일로, 이 파일 없이는 데이터베이스를 정상적으로 마운트하거나 오픈할 수 없습니다. 주로 데이터베이스 생성(CREATE DATABASE) 단계, 컨트롤 파일 재생성(CREATE CONTROLFILE) 작업, 또는 RMAN을 통한 복구 과정에서 이 에러가 발생하며, 즉각적인 원인 파악과 조치가 필요합니다.
주요 발생 원인
1. 파일 시스템 권한 문제 또는 디렉토리 미존재
Oracle 프로세스(일반적으로 oracle OS 계정)가 컨트롤 파일을 생성하려는 경로에 대한 쓰기 권한이 없거나, 해당 디렉토리 자체가 존재하지 않을 때 가장 빈번하게 발생합니다. 예를 들어 CONTROL_FILES 파라미터에 지정된 경로가 실제 OS에 존재하지 않거나, 마운트 포인트가 누락된 경우가 이에 해당합니다. 실무에서 스토리지 재구성, 서버 이전, NFS 마운트 해제 이후 이 문제가 종종 발생합니다.
2. 디스크 공간 부족 (No Space Left on Device)
컨트롤 파일이 생성될 파티션 또는 볼륨의 가용 디스크 공간이 부족한 경우에도 ORA-00200이 발생합니다. 컨트롤 파일 자체의 크기는 수십 MB 수준이지만, 이미 디스크가 꽉 찬 상태라면 Oracle은 파일 생성 자체를 실패 처리합니다. 특히 아카이브 로그가 과도하게 쌓이거나 트레이스 파일이 디스크를 점유하여 공간이 부족해지는 상황과 동시에 발생하는 경우가 많습니다.
3. CONTROL_FILES 파라미터 설정 오류
SPFILE 또는 PFILE 내의 CONTROL_FILES 파라미터에 잘못된 경로, 오타, 또는 접근 불가능한 경로가 지정된 경우에 발생합니다. 데이터베이스를 새 서버로 마이그레이션하거나 디렉토리 구조를 변경한 이후 파라미터 파일을 갱신하지 않은 경우, 또는 CREATE CONTROLFILE 구문에서 경로를 잘못 기입한 경우가 대표적인 예입니다.
해결 방법
원인 1 해결: 디렉토리 생성 및 권한 부여
먼저 alert log와 trace 파일을 확인하여 정확히 어느 경로에서 실패했는지 파악합니다.
-- alert log 위치 확인
SELECT VALUE FROM V$DIAG_INFO WHERE NAME = 'Diag Trace';
-- 현재 CONTROL_FILES 파라미터 확인
SHOW PARAMETER CONTROL_FILES;
-- 또는
SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME = 'control_files';
확인 후 OS 레벨에서 디렉토리를 생성하고 권한을 부여합니다.
# OS 명령어 (root 또는 oracle 계정)
mkdir -p /u01/app/oracle/oradata/ORCL
chown oracle:oinstall /u01/app/oracle/oradata/ORCL
chmod 750 /u01/app/oracle/oradata/ORCL
# 디스크 마운트 확인
df -h /u01/app/oracle/oradata/ORCL
ls -ld /u01/app/oracle/oradata/ORCL
디렉토리 생성 후 데이터베이스를 다시 시작합니다.
-- DB 재기동 시도
STARTUP NOMOUNT;
ALTER DATABASE MOUNT;
ALTER DATABASE OPEN;
원인 2 해결: 디스크 공간 확보 후 재생성
# OS에서 디스크 사용량 확인
df -h
du -sh /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/*
# 오래된 트레이스 파일 정리 (30일 이상)
find /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/ -name "*.trc" -mtime +30 -delete
find /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/ -name "*.trm" -mtime +30 -delete
아카이브 로그로 인한 공간 부족 시 RMAN을 활용하여 정리합니다.
-- RMAN으로 오래된 아카이브 로그 삭제
-- (백업 완료된 아카이브 로그만 삭제)
rman target /
# RMAN 프롬프트에서 실행
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
공간 확보 후 컨트롤 파일을 재생성합니다.
-- 컨트롤 파일 재생성 예시
-- NOMOUNT 상태에서 실행
STARTUP NOMOUNT;
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u01/app/oracle/oradata/ORCL/redo01.log' SIZE 50M,
GROUP 2 '/u01/app/oracle/oradata/ORCL/redo02.log' SIZE 50M,
GROUP 3 '/u01/app/oracle/oradata/ORCL/redo03.log' SIZE 50M
DATAFILE
'/u01/app/oracle/oradata/ORCL/system01.dbf',
'/u01/app/oracle/oradata/ORCL/sysaux01.dbf',
'/u01/app/oracle/oradata/ORCL/undotbs01.dbf',
'/u01/app/oracle/oradata/ORCL/users01.dbf'
CHARACTER SET AL32UTF8;
원인 3 해결: CONTROL_FILES 파라미터 수정
SPFILE을 사용하는 경우 파라미터를 수정합니다.
-- 현재 SPFILE 사용 여부 확인
SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME = 'spfile';
-- SPFILE에서 CONTROL_FILES 파라미터 수정 (NOMOUNT 상태에서도 가능)
-- 먼저 PFILE로 추출
CREATE PFILE='/tmp/init_backup.ora' FROM SPFILE;
PFILE을 텍스트 편집기로 열어 경로를 수정한 후 다시 SPFILE로 변환합니다.
-- pfile을 직접 수정한 뒤 spfile 재생성
CREATE SPFILE FROM PFILE='/tmp/init_backup.ora';
-- 또는 SPFILE 직접 수정 (마운트 가능한 경우)
ALTER SYSTEM SET CONTROL_FILES=
'/u01/app/oracle/oradata/ORCL/control01.ctl',
'/u01/app/oracle/fast_recovery_area/ORCL/control02.ctl'
SCOPE=SPFILE;
수정 후 DB를 재기동하여 정상 여부를 확인합니다.
-- 재기동 및 확인
SHUTDOWN IMMEDIATE;
STARTUP;
-- 컨트롤 파일 정상 인식 확인
SELECT STATUS, NAME FROM V$CONTROLFILE;
-- 컨트롤 파일 상세 정보 확인
SELECT * FROM V$CONTROLFILE_RECORD_SECTION;
예방 방법
1. 컨트롤 파일 다중화 및 정기적인 백업 정책 수립
컨트롤 파일은 반드시 서로 다른 디스크(또는 ASM 디스크 그룹)에 최소 3개 이상 다중화하여 관리해야 합니다. 단일 지점 장애(SPOF)로 인해 모든 컨트롤 파일이 손상되는 상황을 방지할 수 있습니다. 또한 RMAN을 통해 정기적으로 컨트롤 파일 자동 백업을 활성화하고, BACKUP CURRENT CONTROLFILE 명령 또는 CONFIGURE CONTROLFILE AUTOBACKUP ON 설정을 통해 주요 구조 변경 시마다 자동 백업이 수행되도록 구성합니다.
-- 컨트롤 파일 자동 백업 활성화 (RMAN)
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/backup/cf_%F';
-- 현재 다중화 상태 확인
SELECT NAME FROM V$CONTROLFILE;
2. 디스크 공간 및 파일 시스템 모니터링 자동화
디스크 공간 부족은 예측 가능한 문제임에도 불구하고 실무에서 자주 간과됩니다. Oracle Enterprise Manager(OEM), Zabbix, Nagios 등의 모니터링 도구를 활용하여 주요 파일 시스템의 사용률이 80%를 초과하면 즉시 알림이 발송되도록 임계치를 설정합니다. 아울러 아카이브 로그 자동 삭제 정책과 트레이스 파일 자동 정리 스크립트를 cron job으로 등록하여 운영 중 공간 고갈 상황을 사전에 방지합니다.
-- 아카이브 로그 공간 사용 현황 확인
SELECT DEST_NAME, STATUS, TARGET, ARCHIVER,
SCHEDULE, DESTINATION, BINDING
FROM V$ARCHIVE_DEST
WHERE STATUS = 'VALID';
-- FRA(Fast Recovery Area) 사용률 확인
SELECT SPACE_LIMIT/1024/1024/1024 AS LIMIT_GB,
SPACE_USED/1024/1024/1024 AS USED_GB,
ROUND(SPACE_USED/SPACE_LIMIT*100, 2) AS USED_PCT
FROM V$RECOVERY_FILE_DEST;
관련 에러
| 에러 코드 | 설명 |
|———–|——|
| ORA-00201 | control file version incompatible — 컨트롤 파일의 버전이 Oracle 소프트웨어 버전과 호환되지 않을 때 발생. 업그레이드 또는 다운그레이드 후 주로 나타남. |
| ORA-00202 | control file: 'string' — 컨트롤 파일 접근 중 발생한 하위 에러로, ORA-00200과 함께 스택 형태로 출력되는 경우가 많음. 정확한 파일 경로와 문제를 특정할 때 유용. |
| ORA-00210 | cannot open the specified control file — 지정된 컨트롤 파일을 열 수 없는 경우 발생. 파일이 존재하지 않거나 손상된 경우 나타남. |
| ORA-00227 | corrupt block detected in control file — 컨트롤 파일 내부의 블록이 손상된 경우 발생. 하드웨어 오류나 비정상 종료 이후 나타날 수 있으며, 컨트롤 파일 재생성이 필요. |
| ORA-01503 | CREATE CONTROLFILE failed — CREATE CONTROLFILE 명령 자체가 실패했을 때 발생하는 상위 에러로, ORA-00200과 함께 발생하여 근본 원인 파악에 활용. |
> 💡 DBA 실무 팁: ORA-00200 발생 시 가장 먼저 $ORACLE_BASE/diag/rdbms/ 파일을 확인하세요. Alert log에는 실패한 경로와 OS 레벨의 에러 메시지가 함께 기록되어 있어 원인을 빠르게 특정할 수 있습니다. 컨트롤 파일 관련 작업 전에는 반
주요 ORA 에러를 정리하는 시리즈입니다.
블로그 홈에서 다른 에러도 확인하세요.
? 본 포스트는 AI가 생성한 기술 가이드입니다. 운영 환경 적용 전 충분한 검토를 권장합니다.