2026년 06월 01일 | DBMS Error 가이드
이 글에서 다루는 내용
ORA-00203 에러의 원인 분석, 해결 SQL, 예방 방법을 실무 관점에서 정리합니다.
ORA-00203 using the wrong control files 는?
ORA-00203 에러는 Oracle 데이터베이스가 시작될 때 데이터베이스 인스턴스가 참조하는 컨트롤 파일이 실제 데이터베이스에 속하지 않거나 잘못된 컨트롤 파일을 사용하려 할 때 발생하는 심각한 오류입니다. 이 에러는 주로 컨트롤 파일이 다른 데이터베이스의 것으로 교체되었거나, 백업으로부터 잘못된 컨트롤 파일이 복원된 경우에 나타납니다. 데이터베이스 MOUNT 또는 OPEN 단계에서 발생하며, 즉각적인 조치 없이는 데이터베이스를 정상적으로 기동할 수 없게 됩니다.
주요 발생 원인
1. 다른 데이터베이스의 컨트롤 파일을 사용한 경우
Oracle은 컨트롤 파일 내부에 데이터베이스 ID(DBID)와 데이터베이스 이름을 기록합니다. 인스턴스가 초기화 파라미터 파일(SPFILE/PFILE)에 지정된 컨트롤 파일을 읽을 때, 현재 인스턴스의 DBID와 컨트롤 파일에 저장된 DBID가 일치하지 않으면 ORA-00203이 발생합니다. 예를 들어 동일 서버에서 두 개의 데이터베이스를 운영하다가 실수로 다른 DB의 컨트롤 파일 경로를 지정한 경우가 대표적입니다.
2. 잘못된 백업 복원 또는 컨트롤 파일 복사 오류
RMAN 또는 수동 백업으로부터 컨트롤 파일을 복원할 때 잘못된 백업 세트를 선택하거나, 운영 DB가 아닌 테스트 DB의 컨트롤 파일을 복원하는 실수를 범할 경우 이 에러가 발생합니다. 특히 여러 환경(개발, 테스트, 운영)을 동일한 스토리지 공간에서 관리할 때 경로 혼선으로 인해 발생 빈도가 높습니다. 복원 직후 데이터베이스를 MOUNT하려 할 때 에러가 확인됩니다.
3. SPFILE/PFILE의 컨트롤 파일 경로 오설정
데이터베이스 파라미터 파일에서 CONTROL_FILES 파라미터가 존재하지 않는 경로나 다른 데이터베이스에 속한 컨트롤 파일 경로를 가리키도록 잘못 수정된 경우 에러가 발생합니다. DBA가 의도치 않게 SPFILE을 수정하거나 OS 레벨에서 파일을 이동한 뒤 파라미터를 갱신하지 않은 경우에도 동일한 증상이 나타납니다. 이 경우 alert log에서 구체적인 경로와 DBID 불일치 정보를 확인할 수 있습니다.
해결 방법
방법 1: 올바른 컨트롤 파일 경로 확인 및 PFILE 수정
먼저 alert log를 통해 현재 어떤 컨트롤 파일이 사용되고 있는지 확인하고, 현재 인스턴스의 DBID와 비교합니다.
-- alert log 경로 확인
SELECT VALUE FROM V$DIAG_INFO WHERE NAME = 'Diag Trace';
-- STARTUP NOMOUNT 상태에서 현재 CONTROL_FILES 파라미터 확인
STARTUP NOMOUNT;
SHOW PARAMETER CONTROL_FILES;
-- PFILE로 내용 덤프하여 컨트롤 파일 경로 확인
CREATE PFILE='/tmp/init_check.ora' FROM SPFILE;
PFILE을 열어 control_files 항목이 올바른 경로를 가리키는지 검토합니다. 경로가 잘못되어 있다면 직접 수정합니다.
-- PFILE 수정 후 SPFILE 재생성
CREATE SPFILE FROM PFILE='/tmp/init_check.ora';
-- 데이터베이스 재기동
SHUTDOWN ABORT;
STARTUP;
방법 2: 올바른 컨트롤 파일 복원 (RMAN 사용)
백업에서 올바른 컨트롤 파일을 복원해야 하는 경우 RMAN을 활용합니다.
-- RMAN 접속 후 NOMOUNT 상태에서 복원
RMAN TARGET /
STARTUP NOMOUNT;
-- 자동 백업에서 컨트롤 파일 복원
RESTORE CONTROLFILE FROM AUTOBACKUP;
-- 또는 특정 백업 피스로부터 복원
RESTORE CONTROLFILE FROM '/backup/ctrl_backup_20240101.bkp';
-- MOUNT 후 데이터베이스 복구
ALTER DATABASE MOUNT;
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;
방법 3: 컨트롤 파일 재생성 (최후 수단)
올바른 컨트롤 파일을 구할 수 없는 경우, 기존 데이터 파일 정보를 바탕으로 컨트롤 파일을 재생성할 수 있습니다.
-- NOMOUNT 상태에서 컨트롤 파일 재생성
STARTUP NOMOUNT;
CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/oradata/orcl/redo01.log' SIZE 200M,
GROUP 2 '/oradata/orcl/redo02.log' SIZE 200M,
GROUP 3 '/oradata/orcl/redo03.log' SIZE 200M
DATAFILE
'/oradata/orcl/system01.dbf',
'/oradata/orcl/sysaux01.dbf',
'/oradata/orcl/undotbs01.dbf',
'/oradata/orcl/users01.dbf'
CHARACTER SET AL32UTF8;
-- 컨트롤 파일 재생성 후 복구 진행
RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
ALTER DATABASE OPEN RESETLOGS;
-- 임시 테이블스페이스 추가 (재생성 후 누락될 수 있음)
ALTER TABLESPACE TEMP ADD TEMPFILE '/oradata/orcl/temp01.dbf' SIZE 100M;
방법 4: 현재 데이터베이스의 DBID 확인
에러 발생 원인을 정확히 파악하기 위해 현재 인스턴스의 DBID와 컨트롤 파일의 DBID를 비교합니다.
-- 정상 기동된 데이터베이스에서 DBID 확인
SELECT DBID, NAME, DB_UNIQUE_NAME, CREATED FROM V$DATABASE;
-- 컨트롤 파일 상태 및 경로 확인
SELECT NAME, STATUS, IS_RECOVERY_DEST_FILE
FROM V$CONTROLFILE;
-- 컨트롤 파일 내용 요약 확인
SELECT TYPE, RECORD_SIZE, RECORDS_TOTAL, RECORDS_USED
FROM V$CONTROLFILE_RECORD_SECTION
ORDER BY TYPE;
예방 방법
1. 컨트롤 파일 다중화 및 정기적인 백업 자동화
컨트롤 파일은 반드시 서로 다른 물리적 디스크 또는 ASM 디스크 그룹에 최소 3개 이상 다중화하여 관리해야 합니다. RMAN의 BACKUP CURRENT CONTROLFILE 또는 CONFIGURE CONTROLFILE AUTOBACKUP ON 설정을 통해 매일 자동 백업이 수행되도록 구성하고, 백업 후에는 반드시 유효성을 검증하는 루틴을 운영 절차에 포함시켜야 합니다.
-- RMAN에서 컨트롤 파일 자동 백업 활성화
RMAN TARGET /
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/ctrl_%F';
-- 컨트롤 파일 백업 확인
LIST BACKUP OF CONTROLFILE;
2. 환경별 데이터베이스 파라미터 파일 엄격한 관리
개발, 테스트, 운영 환경의 SPFILE 및 컨트롤 파일 경로를 명확히 분리하고, 변경 관리 프로세스를 통해서만 수정이 가능하도록 제어해야 합니다. 특히 CONTROL_FILES 파라미터 변경 시에는 변경 전후 값을 반드시 문서화하고, 변경 이력을 CMDB 또는 별도 파일로 관리하는 습관을 들여야 합니다.
-- 현재 CONTROL_FILES 파라미터 값 문서화
SELECT NAME, VALUE, DESCRIPTION
FROM V$PARAMETER
WHERE NAME = 'control_files';
-- SPFILE 변경 시 이전 PFILE 백업 생성 습관화
CREATE PFILE='/backup/pfile_backup_YYYYMMDD.ora' FROM SPFILE;
관련 에러
- ORA-00200: 컨트롤 파일 생성 불가 — 컨트롤 파일을 새로 생성하려 할 때 I/O 오류 또는 권한 문제가 발생한 경우
- ORA-00201: 컨트롤 파일 버전이 현재 Oracle 버전과 호환되지 않는 경우
- ORA-00202: 컨트롤 파일 자체에 접근할 수 없는 경우 (파일 손상 또는 경로 오류)
- ORA-00205: 컨트롤 파일 식별 오류 — 파라미터에 지정된 컨트롤 파일을 찾을 수 없는 경우
- ORA-01503: CREATE CONTROLFILE 명령 실패 시 발생하는 연관 에러
주요 DBMS error code를 정리하는 시리즈입니다.
블로그 홈에서 다른 에러도 확인하세요.
본 포스트는 AI가 생성한 기술 가이드입니다. 운영 환경 적용 전 충분한 검토를 권장합니다.