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

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

이 글에서 다루는 내용

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

ORA-01507 database not mounted 는?

ORA-01507 에러는 Oracle 데이터베이스가 MOUNT 상태에 도달하지 못한 상태에서 MOUNT 이상의 단계를 요구하는 명령을 실행할 때 발생하는 에러입니다. Oracle 데이터베이스는 기동 시 NOMOUNT → MOUNT → OPEN 세 단계를 순차적으로 거치는데, MOUNT 단계에서는 컨트롤 파일을 읽어 데이터베이스 구조를 인식하게 됩니다. 즉, 데이터베이스가 아직 NOMOUNT 상태이거나 완전히 기동되지 않은 상태에서 MOUNT 단계 이후에만 가능한 작업(예: 아카이브 로그 목록 조회, 데이터 파일 복구, RMAN 백업 등)을 시도할 때 이 에러가 발생합니다.


주요 발생 원인

1. 데이터베이스가 NOMOUNT 상태에서 MOUNT/OPEN이 필요한 명령 실행

가장 흔한 원인으로, DBA가 STARTUP NOMOUNT 명령으로 인스턴스만 기동한 후 데이터베이스를 MOUNT 단계로 올리지 않은 채 조회나 복구 작업을 시도할 때 발생합니다. 예를 들어 RMAN에서 ALTER DATABASE MOUNT 없이 바로 복구 명령을 수행하거나, V$DATAFILE 같은 MOUNT 이상에서 접근 가능한 뷰를 조회할 때 이 에러가 나타납니다.

2. 컨트롤 파일 손상 또는 분실로 인한 MOUNT 실패

Oracle이 MOUNT 단계에서 컨트롤 파일을 읽지 못하면 데이터베이스는 NOMOUNT 상태에 머물고, 이후 명령 수행 시 ORA-01507이 발생합니다. 컨트롤 파일이 삭제되거나 경로가 변경되었거나 파일이 손상된 경우, STARTUP 명령 자체가 MOUNT 단계에서 실패하여 ORA-00205 에러와 함께 NOMOUNT 상태로 남게 됩니다.

3. 자동화 스크립트 또는 RMAN 작업에서 단계 순서 오류

운영 자동화 스크립트나 RMAN 백업/복구 스크립트에서 데이터베이스 상태 확인 없이 명령을 순차 실행할 때 발생합니다. 특히 RAC 환경이나 Data Guard 구성에서 특정 인스턴스가 MOUNT되지 않은 채로 복제 또는 동기화 명령이 수행될 경우 이 에러가 연속적으로 발생하며, 자동화 파이프라인 전체가 실패하는 원인이 됩니다.


해결 방법

원인 1 해결: 데이터베이스를 MOUNT 상태로 올리기

현재 데이터베이스 상태를 먼저 확인한 후, 필요한 단계로 올려줍니다.

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

-- NOMOUNT 상태라면 MOUNT로 전환
ALTER DATABASE MOUNT;

-- MOUNT 상태에서 OPEN으로 전환 (정상 운영 시)
ALTER DATABASE OPEN;

-- 또는 처음부터 정상 기동
STARTUP;

RMAN 세션에서 작업 중이라면 아래와 같이 처리합니다.

-- RMAN에서 데이터베이스 상태 확인
RMAN> SELECT STATUS FROM V$INSTANCE;

-- RMAN에서 MOUNT 상태로 전환 후 복구 진행
RMAN> STARTUP MOUNT;
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN RESETLOGS;

원인 2 해결: 컨트롤 파일 문제 해결

컨트롤 파일 경로를 확인하고, 다중화된 컨트롤 파일 중 하나라도 유효하면 복원 가능합니다.

-- NOMOUNT 상태에서 현재 설정된 컨트롤 파일 경로 확인
SHOW PARAMETER CONTROL_FILES;

-- 컨트롤 파일 다중화 복사 (다른 복사본이 살아있을 때)
-- OS 명령으로 파일 복사 후 파라미터 수정
ALTER SYSTEM SET CONTROL_FILES=
  '/oradata/prod/control01.ctl',
  '/oradata/prod/control02.ctl'
  SCOPE=SPFILE;

-- SPFILE에서 컨트롤 파일 경로 확인 (NOMOUNT 상태에서 가능)
SELECT VALUE FROM V$SPPARAMETER WHERE NAME = 'control_files';

-- 컨트롤 파일을 RMAN으로 복원
RMAN> STARTUP NOMOUNT;
RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;
RMAN> ALTER DATABASE MOUNT;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN RESETLOGS;

원인 3 해결: 스크립트에 상태 검증 로직 추가

자동화 스크립트에서 상태를 확인하는 로직을 반드시 포함해야 합니다.

-- 데이터베이스 상태에 따른 조건 분기 예시 (SQL*Plus 활용)
DECLARE
  v_status VARCHAR2(20);
BEGIN
  SELECT STATUS INTO v_status FROM V$INSTANCE;
  
  IF v_status = 'STARTED' THEN
    -- NOMOUNT 상태: MOUNT 단계로 올림
    EXECUTE IMMEDIATE 'ALTER DATABASE MOUNT';
    DBMS_OUTPUT.PUT_LINE('Database mounted successfully.');
  ELSIF v_status = 'MOUNTED' THEN
    DBMS_OUTPUT.PUT_LINE('Database is already mounted.');
  ELSIF v_status = 'OPEN' THEN
    DBMS_OUTPUT.PUT_LINE('Database is open and running.');
  ELSE
    DBMS_OUTPUT.PUT_LINE('Unknown status: ' || v_status);
  END IF;
END;
/

-- 현재 상태 종합 확인 쿼리 (MOUNT 이상에서 가능)
SELECT
  i.INSTANCE_NAME,
  i.STATUS        AS INSTANCE_STATUS,
  d.STATUS        AS DB_STATUS,
  d.OPEN_MODE,
  d.LOG_MODE
FROM V$INSTANCE i, V$DATABASE d;

예방 방법

1. 데이터베이스 기동/종료 절차 표준화 및 상태 모니터링 자동화

모든 DBA 운영 스크립트에는 작업 전 반드시 현재 데이터베이스 상태(V$INSTANCE.STATUS)를 확인하는 로직을 포함해야 합니다. Oracle Enterprise Manager(OEM) 또는 커스텀 모니터링 스크립트를 활용하여 인스턴스가 예기치 않게 NOMOUNT 상태로 남아 있을 경우 즉시 알림을 받도록 구성하는 것이 Best Practice입니다. 특히 패치 작업이나 장애 복구 이후에는 데이터베이스 상태를 반드시 재검증하는 체크리스트를 수행하세요.

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

컨트롤 파일은 반드시 서로 다른 물리 디스크에 3개 이상 다중화하여 단일 장애 지점(SPOF)을 제거해야 합니다. RMAN의 BACKUP CURRENT CONTROLFILE 명령과 CONTROL_FILE_RECORD_KEEP_TIME 파라미터를 적절히 설정하여 컨트롤 파일 자동 백업이 주기적으로 수행되도록 하고, AUTOBACKUP 옵션을 활성화하여 어떠한 상황에서도 복원 가능한 환경을 유지하세요.

-- 컨트롤 파일 다중화 확인
SELECT NAME, STATUS FROM V$CONTROLFILE;

-- RMAN 컨트롤 파일 자동 백업 활성화
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/ctrl_%F';

관련 에러

  • ORA-01034: ORACLE not available — 인스턴스 자체가 기동되지 않은 상태로, ORA-01507보다 더 이전 단계의 에러입니다.
  • ORA-01033: ORACLE initialization or shutdown in progress — 데이터베이스가 기동 또는 종료 과정 중에 접속을 시도할 때 발생합니다.
  • ORA-00205: error in identifying control file — 컨트롤 파일을 찾지 못해 MOUNT 단계가 실패할 때 발생하며, ORA-01507의 직접적인 원인이 될 수 있습니다.
  • ORA-01109: database not open — MOUNT 상태에서 OPEN이 필요한 작업을 시도할 때 발생하며, ORA-01507과 유사한 맥락의 에러입니다.
  • ORA-01012: not logged on — 세션이 정상적으로 연결되지 않은 상태에서 명령을 수행할 때 발생하는 연관 에러입니다.

DBMS 에러 코드 시리즈

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

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

댓글 남기기