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

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

이 글에서 다루는 내용

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

ORA-01079 ORACLE database was not properly created, operation aborted 는?

ORA-01079 에러는 Oracle 데이터베이스가 정상적으로 생성되지 않은 상태에서 데이터베이스 작업을 시도할 때 발생하는 치명적인 오류입니다. 이 에러는 주로 데이터베이스 생성(CREATE DATABASE) 과정이 중간에 중단되거나, 필수 시스템 파일이 손상 또는 누락된 경우에 나타납니다. 운영 환경에서는 매우 드물게 발생하지만, 일단 발생하면 데이터베이스 전체가 사용 불가 상태가 될 수 있어 즉각적인 대응이 필요합니다.


주요 발생 원인

1. 데이터베이스 생성(CREATE DATABASE) 과정의 비정상 종료

CREATE DATABASE 명령 실행 중 전원 차단, 네트워크 오류, 디스크 공간 부족 등으로 인해 프로세스가 강제 종료되면 데이터베이스 내부 메타데이터가 불완전한 상태로 남게 됩니다. 이 경우 Oracle은 데이터베이스가 “완전히 생성되지 않음(not properly created)” 상태로 인식하여 이후 OPEN 또는 MOUNT 시도 시 ORA-01079를 발생시킵니다. 특히 SYSTEM 테이블스페이스나 UNDO 테이블스페이스 생성이 완료되지 않았을 때 가장 빈번하게 발생합니다.

2. 필수 데이터 딕셔너리 스크립트(catalog.sql, catproc.sql) 미실행

Oracle 데이터베이스 생성 후에는 반드시 catalog.sql과 catproc.sql 스크립트를 실행하여 데이터 딕셔너리 뷰와 패키지를 구축해야 합니다. 이 스크립트들이 실행되지 않으면 Oracle은 데이터베이스가 완전히 초기화되지 않았다고 판단하여 ORA-01079 에러를 반환합니다. 수동으로 CREATE DATABASE 구문을 실행하는 환경(DBCA를 사용하지 않는 경우)에서 이 단계를 누락하는 경우가 많습니다.

3. 컨트롤 파일 손상 또는 불일치

컨트롤 파일은 데이터베이스의 생성 상태, 버전 정보, 파일 목록 등 핵심 메타데이터를 저장하는 파일입니다. 컨트롤 파일이 손상되거나, 여러 컨트롤 파일 복사본 간에 불일치가 발생하면 Oracle이 데이터베이스의 정합성을 검증하지 못하고 ORA-01079를 발생시킬 수 있습니다. 특히 잘못된 방법으로 컨트롤 파일을 복사하거나 이동했을 때 이 문제가 자주 발생합니다.


해결 방법

해결책 1: 데이터베이스를 완전히 재생성

가장 근본적인 해결책은 기존 불완전한 데이터베이스를 삭제하고 처음부터 올바르게 재생성하는 것입니다.

-- 1단계: 기존 인스턴스 강제 종료 (NOMOUNT 상태에서)
SHUTDOWN ABORT;

-- 2단계: 기존 데이터파일, 컨트롤파일, 리두로그 모두 OS 레벨에서 삭제 후
-- NOMOUNT 상태로 시작
STARTUP NOMOUNT;

-- 3단계: 데이터베이스 재생성 (기본 예시)
CREATE DATABASE mydb
   USER SYS IDENTIFIED BY sys_password
   USER SYSTEM IDENTIFIED BY system_password
   LOGFILE GROUP 1 ('/u01/oradata/mydb/redo01.log') SIZE 100M,
           GROUP 2 ('/u01/oradata/mydb/redo02.log') SIZE 100M,
           GROUP 3 ('/u01/oradata/mydb/redo03.log') SIZE 100M
   MAXLOGFILES 5
   MAXLOGMEMBERS 5
   MAXDATAFILES 100
   CHARACTER SET AL32UTF8
   NATIONAL CHARACTER SET AL16UTF16
   EXTENT MANAGEMENT LOCAL
   DATAFILE '/u01/oradata/mydb/system01.dbf' SIZE 500M REUSE
   SYSAUX DATAFILE '/u01/oradata/mydb/sysaux01.dbf' SIZE 300M REUSE
   DEFAULT TABLESPACE users
      DATAFILE '/u01/oradata/mydb/users01.dbf' SIZE 200M REUSE
      AUTOEXTEND ON MAXSIZE UNLIMITED
   DEFAULT TEMPORARY TABLESPACE tempts1
      TEMPFILE '/u01/oradata/mydb/temp01.dbf' SIZE 100M REUSE
   UNDO TABLESPACE undotbs1
      DATAFILE '/u01/oradata/mydb/undotbs1.dbf' SIZE 200M REUSE;

해결책 2: 데이터 딕셔너리 스크립트 실행

CREATE DATABASE는 성공했으나 이후 스크립트를 실행하지 않은 경우, SYS 계정으로 접속하여 필수 스크립트를 순서대로 실행합니다.

-- SQL*Plus에서 SYS로 접속
-- sqlplus / as sysdba

-- 데이터베이스 OPEN 상태 확인
SELECT STATUS FROM V$INSTANCE;

-- catalog.sql: 데이터 딕셔너리 뷰 생성
@?/rdbms/admin/catalog.sql

-- catproc.sql: PL/SQL 관련 패키지 및 프로시저 생성
@?/rdbms/admin/catproc.sql

-- 실행 완료 후 데이터베이스 재기동
SHUTDOWN IMMEDIATE;
STARTUP;

-- 딕셔너리 정상 생성 확인
SELECT COUNT(*) FROM DBA_TABLES WHERE OWNER = 'SYS';
SELECT COUNT(*) FROM DBA_OBJECTS WHERE STATUS = 'INVALID';

해결책 3: 컨트롤 파일 재생성

컨트롤 파일이 손상된 경우, 컨트롤 파일을 재생성하는 방법으로 해결할 수 있습니다.

-- 현재 컨트롤 파일 위치 확인
SELECT NAME, STATUS FROM V$CONTROLFILE;

-- 컨트롤 파일 재생성 스크립트 생성 (기존 DB에서 추출)
ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS '/tmp/cf_recreate.sql' NORESETLOGS;

-- NOMOUNT 상태에서 컨트롤 파일 재생성 (추출된 스크립트 기반으로 수정하여 실행)
STARTUP NOMOUNT;

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

-- OPEN
ALTER DATABASE OPEN;

-- 임시 파일 재추가 (컨트롤 파일 재생성 후 임시파일 정보 유실)
ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/oradata/mydb/temp01.dbf'
   SIZE 100M REUSE AUTOEXTEND ON;

해결책 4: Alert 로그 분석을 통한 정확한 원인 파악

-- Alert 로그 위치 확인 (Oracle 11g 이상)
SELECT VALUE FROM V$DIAG_INFO WHERE NAME = 'Diag Trace';

-- Alert 로그에서 ORA-01079 관련 메시지 검색 (OS 명령어)
-- grep -n "ORA-01079\|not properly created" /u01/app/oracle/diag/rdbms/mydb/mydb/trace/alert_mydb.log

-- V$DATABASE로 현재 DB 상태 확인
SELECT DBID, NAME, CREATED, DB_UNIQUE_NAME, 
       OPEN_MODE, DATABASE_ROLE, CONTROLFILE_TYPE
FROM V$DATABASE;

-- 인스턴스 상태 확인
SELECT INSTANCE_NUMBER, INSTANCE_NAME, 
       HOST_NAME, VERSION, STATUS, 
       DATABASE_STATUS, ACTIVE_STATE
FROM V$INSTANCE;

예방 방법

1. DBCA(Database Configuration Assistant)를 통한 표준화된 데이터베이스 생성

수동 스크립트 대신 Oracle이 제공하는 DBCA 도구를 사용하면 데이터베이스 생성의 모든 단계(CREATE DATABASE, catalog.sql, catproc.sql 실행, 초기 파라미터 설정 등)가 자동으로 완료됩니다. DBCA는 각 단계의 성공 여부를 체크하고 실패 시 적절한 오류 메시지를 제공하므로, 중간 단계 누락으로 인한 ORA-01079 발생을 원천적으로 차단할 수 있습니다. 수동 생성이 반드시 필요한 경우에는 Oracle 공식 문서의 체크리스트를 단계별로 검증하며 진행해야 합니다.

2. 컨트롤 파일 다중화 및 정기적인 백업

컨트롤 파일은 반드시 서로 다른 디스크에 3개 이상 다중화하여 보관해야 합니다. 또한 ALTER DATABASE BACKUP CONTROLFILE TO TRACE 명령을 정기적으로 실행하여 컨트롤 파일 재생성 스크립트를 안전한 위치에 보관해두면, 컨트롤 파일 손상 시 신속하게 복구할 수 있습니다. RMAN을 활용한 전체 데이터베이스 백업 정책도 함께 수립하여 최악의 상황에서도 복구 경로를 확보해두는 것이 중요합니다.

-- 컨트롤 파일 다중화 설정 예시 (spfile 또는 pfile에서)
-- CONTROL_FILES = '/u01/oradata/mydb/control01.ctl',
--                 '/u02/oradata/mydb/control02.ctl',
--                 '/u03/oradata/mydb/control03.ctl'

-- 컨트롤 파일 백업 (정기 실행 권장)
ALTER DATABASE BACKUP CONTROLFILE TO 
   '/backup/mydb/control_backup_20241201.ctl';

ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS 
   '/backup/mydb/cf_script_20241201.sql';

관련 에러

  • ORA-01078: Failure in processing system parameters — SPFILE/PFILE 처리 실패로 인스턴스 시작 불가. ORA-01079와 함께 발생하는 경우가 있음
  • ORA-01122: Database file %s failed verification check — 데이터파일 검증 실패로 ORA-01079와 유사한 DB 시작 불가 상황을 유발
  • ORA-01503: CREATE CONTROLFILE failed — 컨트롤 파일 생성 실패. ORA-01079의 원인 중 하나인 컨트롤 파일 문제와 직접 연관
  • ORA-00205: Error in identifying control file — 컨트롤 파일을 찾지 못할 때 발생하며, 컨트롤 파일 관련 ORA-01079 해결 시 함께 확인 필요
  • ORA-01113: File %s needs media recovery — 미디어 복구가 필요한 파일이 있을 때 발생하며, 불완전한 DB 생성 상황과 복합적으로 나타날 수 있음

DBMS 에러 코드 시리즈

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

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

댓글 남기기