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

ORA-00250
2026년 06월 04일 | DBMS Error 가이드

이 글에서 다루는 내용

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

ORA-00250 archiver not started 는?

ORA-00250 에러는 Oracle 데이터베이스에서 아카이버(Archiver) 프로세스가 실행되지 않은 상태에서 아카이브 로그 관련 작업을 수행하려 할 때 발생합니다. Oracle은 ARCHIVELOG 모드로 운영될 때 온라인 리두 로그(Online Redo Log)가 꽉 차면 아카이버 프로세스(ARCn)가 이를 아카이브 로그 파일로 복사하는데, 이 프로세스가 기동되지 않은 경우 해당 에러가 발생합니다. 주로 데이터베이스 재기동 후 아카이버 프로세스가 정상적으로 시작되지 않았거나, 수동으로 아카이버를 중지한 뒤 재시작하지 않은 상황에서 빈번하게 나타납니다.


주요 발생 원인

1. 아카이버 프로세스(ARCn)가 비정상 종료된 경우

아카이버 프로세스는 운영 중 디스크 공간 부족, 아카이브 경로 접근 오류, OS 리소스 고갈 등 다양한 이유로 비정상 종료될 수 있습니다. 프로세스가 종료되면 Oracle은 이를 자동으로 재시작하려 하지만, 근본 원인이 해결되지 않으면 반복적으로 종료되고 결국 아카이버가 멈춘 상태가 됩니다. 이 상태에서 아카이브 관련 명령을 실행하면 ORA-00250이 발생합니다.

2. 데이터베이스가 ARCHIVELOG 모드이지만 아카이버를 수동으로 중지한 경우

DBA가 유지보수 목적으로 ALTER SYSTEM STOP ARCHIVAL 또는 ALTER SYSTEM ARCHIVE LOG STOP 명령을 사용해 아카이버를 수동으로 중지한 후 재시작하는 것을 잊어버리는 경우가 있습니다. ARCHIVELOG 모드에서 아카이버 없이 온라인 리두 로그가 꽉 차면 데이터베이스 자체가 정지(hang)될 수 있으므로 매우 위험한 상황입니다. 이 경우 아카이버를 즉시 재기동해야 하며, 운영 환경에서는 특별한 이유 없이 아카이버를 수동 중지하지 않도록 해야 합니다.

3. 데이터베이스 기동 시 초기화 파라미터 설정 오류

LOG_ARCHIVE_DEST 또는 LOG_ARCHIVE_DEST_n 파라미터가 잘못 설정되어 있거나 해당 경로가 존재하지 않을 경우, 아카이버 프로세스가 기동 직후 오류를 만나 종료됩니다. 또한 ARCHIVE_LAG_TARGET, LOG_ARCHIVE_MAX_PROCESSES 등의 파라미터가 잘못 구성된 경우에도 아카이버가 정상적으로 시작되지 않을 수 있습니다. 이러한 파라미터 문제는 alert 로그 파일에서 관련 ORA- 에러와 함께 기록되므로 반드시 확인해야 합니다.


해결 방법

1단계: 현재 아카이브 모드 및 아카이버 상태 확인

먼저 데이터베이스의 아카이브 모드와 아카이버 상태를 확인합니다.

-- 데이터베이스 아카이브 모드 확인
ARCHIVE LOG LIST;

-- 아카이버 상태 확인
SELECT ARCHIVER FROM V$INSTANCE;

-- 아카이브 프로세스 상태 확인
SELECT * FROM V$ARCHIVE_PROCESSES;

V$INSTANCEARCHIVER 컬럼이 STOPPED로 표시된다면 아카이버가 중지된 상태입니다.


2단계: 아카이브 로그 경로 및 여유 공간 확인

아카이버 재시작 전 경로와 디스크 공간을 반드시 확인합니다.

-- 아카이브 로그 목적지 설정 확인
SELECT DEST_ID, DEST_NAME, STATUS, TARGET, ARCHIVER, SCHEDULE, DESTINATION
FROM V$ARCHIVE_DEST
WHERE STATUS != 'INACTIVE';

-- 아카이브 로그 관련 파라미터 확인
SHOW PARAMETER LOG_ARCHIVE_DEST;
SHOW PARAMETER LOG_ARCHIVE_MAX_PROCESSES;

-- 최근 아카이브된 로그 확인
SELECT SEQUENCE#, NAME, COMPLETION_TIME
FROM V$ARCHIVED_LOG
ORDER BY COMPLETION_TIME DESC
FETCH FIRST 10 ROWS ONLY;

3단계: 아카이버 수동 시작

문제 원인을 파악한 후 아카이버를 수동으로 기동합니다.

-- 아카이버 수동 시작 (가장 일반적인 해결책)
ALTER SYSTEM ARCHIVE LOG START;

-- 아카이브 프로세스 수를 늘려 재시작 (부하가 많은 경우)
ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES = 4 SCOPE=BOTH;
ALTER SYSTEM ARCHIVE LOG START;

-- 특정 아카이브 목적지를 지정하여 수동 아카이브
ALTER SYSTEM ARCHIVE LOG CURRENT;

4단계: 아카이브 경로 문제 해결 후 재설정

경로 문제가 원인인 경우 파라미터를 수정하고 재기동합니다.

-- 아카이브 목적지 재설정 (잘못된 경로 수정)
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = 'LOCATION=/u01/app/oracle/archive' SCOPE=BOTH;

-- 아카이브 목적지 상태를 활성화
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1 = ENABLE SCOPE=BOTH;

-- 변경 후 아카이버 재시작
ALTER SYSTEM ARCHIVE LOG START;

-- 정상 동작 확인
SELECT ARCHIVER FROM V$INSTANCE;

5단계: Alert 로그에서 근본 원인 파악

-- Alert 로그 위치 확인
SELECT VALUE FROM V$DIAG_INFO WHERE NAME = 'Diag Trace';

-- 최근 ORA- 에러 조회 (11g 이상)
SELECT ORIGINATING_TIMESTAMP, MESSAGE_TEXT
FROM V$DIAG_ALERT_EXT
WHERE MESSAGE_TEXT LIKE '%ORA-%'
  AND ORIGINATING_TIMESTAMP > SYSDATE - 1
ORDER BY ORIGINATING_TIMESTAMP DESC;

Alert 로그에는 아카이버 중지의 근본 원인(디스크 풀, 권한 오류 등)이 기록되어 있습니다.


예방 방법

1. 아카이브 로그 공간 모니터링 자동화

아카이브 로그 목적지의 디스크 사용률을 주기적으로 모니터링하고, 임계치 초과 시 자동 알림을 받도록 설정해야 합니다. Oracle Enterprise Manager(OEM) 또는 사용자 정의 스크립트를 통해 아카이브 로그 경로의 여유 공간이 20% 미만으로 떨어지면 즉시 DBA에게 이메일이나 SMS로 알림을 보내도록 구성하는 것이 Best Practice입니다. 또한 아카이브 로그를 주기적으로 백업(RMAN)하고 삭제하여 공간을 확보하는 정책을 수립해야 합니다.

-- 아카이브 목적지 사용 현황 모니터링 쿼리
SELECT DEST_ID,
       DEST_NAME,
       STATUS,
       DESTINATION,
       SPACE_LIMIT,
       SPACE_USED,
       ROUND((SPACE_USED / NULLIF(SPACE_LIMIT, 0)) * 100, 2) AS USED_PCT
FROM V$ARCHIVE_DEST_STATUS
WHERE STATUS != 'INACTIVE';

2. 아카이버 프로세스 헬스체크 스크립트 등록

Cron 또는 Oracle Scheduler를 이용해 아카이버 프로세스 상태를 주기적으로 점검하는 스크립트를 등록하고, 이상 감지 시 자동 복구 또는 알림을 트리거하도록 설정합니다. 아카이버가 STOPPED 상태로 감지되면 자동으로 ALTER SYSTEM ARCHIVE LOG START를 실행하거나 on-call DBA에게 즉시 통보하는 자동화 체계를 갖추는 것이 중요합니다.

-- Oracle Scheduler를 이용한 아카이버 상태 점검 Job 예시
BEGIN
  DBMS_SCHEDULER.CREATE_JOB(
    job_name        => 'CHECK_ARCHIVER_STATUS',
    job_type        => 'PLSQL_BLOCK',
    job_action      => '
      DECLARE
        v_archiver VARCHAR2(10);
      BEGIN
        SELECT ARCHIVER INTO v_archiver FROM V$INSTANCE;
        IF v_archiver = ''STOPPED'' THEN
          -- 알림 로직 또는 자동 재시작 로직 삽입
          EXECUTE IMMEDIATE ''ALTER SYSTEM ARCHIVE LOG START'';
        END IF;
      END;',
    start_date      => SYSTIMESTAMP,
    repeat_interval => 'FREQ=MINUTELY;INTERVAL=10',
    enabled         => TRUE,
    comments        => 'Check and restart archiver if stopped'
  );
END;
/

관련 에러

  • ORA-00255: 아카이브 작업 오류 (Archive error while archiving log sequence)
  • ORA-00257: 아카이버가 내부 오류로 멈춘 상태 – 아카이브 공간 부족 시 주로 발생, DB 접속 자체가 제한됨
  • ORA-16020: 아카이브 목적지 한계 초과 관련 오류
  • ORA-19502: 아카이브 파일 쓰기 오류 (디스크 공간 부족 또는 권한 문제)
  • ORA-00270: 아카이브 로그 파일 생성 중 오류

ORA-00257은 ORA-00250과 밀접하게 연관된 에러로, 아카이버가 멈추면 결국 ORA-00257로 이어져 일반 사용자의 DB 접속까지 차단될 수 있으므로 ORA-00250 발생 시 즉각적인 조치가 필수입니다.


DBMS 에러 코드 시리즈

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

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

댓글 남기기