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

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

이 글에서 다루는 내용

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

ORA-00257 archiver error, connect internal only until freed 는?

ORA-00257은 Oracle 데이터베이스의 아카이브 로그 공간이 가득 차서 아카이버(Archiver) 프로세스가 더 이상 아카이브 로그를 기록할 수 없을 때 발생하는 에러입니다. 이 에러가 발생하면 데이터베이스는 보호 모드로 전환되어 SYSDBA 또는 SYSOPER 권한을 가진 내부 접속(Internal Connection)만 허용하고, 일반 사용자의 접속 및 DML 작업이 모두 차단됩니다. ARCHIVELOG 모드로 운영 중인 운영계 데이터베이스에서 자주 발생하며, 즉각적인 조치 없이 방치할 경우 전체 서비스 중단으로 이어질 수 있는 매우 심각한 에러입니다.


주요 발생 원인

1. 아카이브 로그 저장 경로의 디스크 공간 부족 (가장 흔한 원인)

LOG_ARCHIVE_DEST 또는 DB_RECOVERY_FILE_DEST로 지정된 경로의 디스크 공간이 100% 소진되면 발생합니다. 일반적으로 배치 작업이나 대량 DML 발생 시 아카이브 로그가 폭발적으로 증가하여 공간이 순식간에 고갈되는 케이스가 많습니다. 특히 FRA(Fast Recovery Area)를 사용하는 환경에서는 DB_RECOVERY_FILE_DEST_SIZE 파라미터로 설정된 한도를 초과할 때도 동일하게 발생합니다.

2. FRA(Fast Recovery Area) 용량 한도 초과

Oracle 10g 이후 기본적으로 활성화된 FRA 기능은 아카이브 로그, RMAN 백업, 플래시백 로그 등을 통합 관리합니다. FRA 내부에 아카이브 로그뿐 아니라 RMAN 백업 파일, 컨트롤 파일 자동 백업 등이 함께 쌓이면서 설정된 DB_RECOVERY_FILE_DEST_SIZE 용량을 초과하면 ORA-00257이 발생합니다. 이 경우 단순히 오래된 아카이브 로그만 삭제해도 해결되지 않고, RMAN을 통해 FRA 전체를 관리해야 합니다.

3. 아카이브 로그가 백업되지 않아 삭제 불가 상태

RMAN 정책상 백업 완료된 아카이브 로그만 자동 삭제 대상이 됩니다. 만약 RMAN 백업 스크립트가 실패하거나 장기간 실행되지 않은 경우, 아카이브 로그가 삭제되지 않고 계속 누적되어 공간 부족을 유발합니다. 백업 완료 여부를 Oracle 카탈로그가 인식하지 못한 경우 CROSSCHECK 명령으로 동기화한 후 삭제 처리해야 합니다.


해결 방법

STEP 1. 현재 상태 진단

먼저 SYSDBA 권한으로 접속하여 아카이브 로그 및 FRA 상태를 확인합니다.

-- SYSDBA 권한으로 접속
CONNECT / AS SYSDBA

-- FRA 사용 현황 확인 (가장 중요)
SELECT
    SPACE_LIMIT / (1024*1024*1024)       AS "FRA 총 용량(GB)",
    SPACE_USED  / (1024*1024*1024)       AS "사용 중(GB)",
    SPACE_RECLAIMABLE / (1024*1024*1024) AS "회수 가능(GB)",
    NUMBER_OF_FILES                       AS "파일 수"
FROM V$RECOVERY_FILE_DEST;

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

-- 아카이브 로그 생성 추이 확인 (최근 7일)
SELECT
    TRUNC(COMPLETION_TIME, 'DD') AS "날짜",
    COUNT(*)                      AS "아카이브 수",
    ROUND(SUM(BLOCKS * BLOCK_SIZE) / (1024*1024*1024), 2) AS "크기(GB)"
FROM V$ARCHIVED_LOG
WHERE COMPLETION_TIME >= SYSDATE - 7
  AND STANDBY_DEST = 'NO'
GROUP BY TRUNC(COMPLETION_TIME, 'DD')
ORDER BY 1;

STEP 2. FRA 용량 임시 확장 (즉각 조치)

서비스 중단이 발생한 긴급 상황에서는 먼저 FRA 용량을 늘려 정상화한 후 정리 작업을 수행합니다.

-- FRA 용량 증설 (예: 200GB로 확장)
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 200G SCOPE = BOTH;

-- 변경 확인
SHOW PARAMETER DB_RECOVERY_FILE_DEST;

STEP 3. RMAN으로 아카이브 로그 삭제 (근본 해결)

단순 OS 명령어로 파일을 삭제하면 Oracle 카탈로그와 불일치가 발생하므로 반드시 RMAN을 통해 삭제해야 합니다.

-- RMAN 접속
-- $ rman target /

-- 아카이브 로그 상태 교차 확인 (카탈로그 동기화)
CROSSCHECK ARCHIVELOG ALL;

-- 이미 백업된 아카이브 로그 삭제
DELETE NOPROMPT ARCHIVELOG ALL BACKED UP 1 TIMES TO DISK;

-- 특정 날짜 이전 아카이브 로그 삭제 (예: 3일 이전)
DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-3';

-- 삭제 후 FRA 공간 회수 확인
-- SQL> SELECT SPACE_USED/(1024*1024*1024) FROM V$RECOVERY_FILE_DEST;

STEP 4. OS 레벨 디스크 공간 확인 및 정리

FRA 외부 경로를 사용하는 경우 OS 레벨에서 직접 확인합니다.

-- 아카이브 로그 저장 경로 확인
SELECT VALUE FROM V$PARAMETER WHERE NAME = 'log_archive_dest_1';

-- 아카이브 완료 목록 조회 (삭제 가능한 파일 확인)
SELECT NAME, COMPLETION_TIME,
       ROUND(BLOCKS * BLOCK_SIZE / 1024 / 1024, 2) AS SIZE_MB,
       DELETED
FROM V$ARCHIVED_LOG
WHERE STANDBY_DEST = 'NO'
  AND DELETED = 'NO'
ORDER BY COMPLETION_TIME;

예방 방법

1. FRA 모니터링 자동화 및 알림 설정

아래 스크립트를 크론잡(Cron Job)에 등록하여 FRA 사용률이 80%를 초과할 경우 담당자에게 자동으로 이메일 또는 SMS 알림이 발송되도록 구성하세요. Oracle Enterprise Manager(OEM)를 사용하는 환경이라면 Recovery Area Free Space 메트릭의 임계값을 반드시 설정해야 합니다.

-- FRA 사용률 모니터링 뷰 생성 (DBA 툴용)
CREATE OR REPLACE VIEW DBA_FRA_USAGE_MONITOR AS
SELECT
    ROUND(SPACE_USED * 100 / SPACE_LIMIT, 2)  AS USAGE_PCT,
    ROUND(SPACE_LIMIT / 1073741824, 1)         AS TOTAL_GB,
    ROUND(SPACE_USED  / 1073741824, 2)         AS USED_GB,
    ROUND((SPACE_LIMIT - SPACE_USED) / 1073741824, 2) AS FREE_GB,
    SYSDATE                                     AS CHECK_TIME
FROM V$RECOVERY_FILE_DEST;

-- 사용률 80% 초과 시 경고용 조회
SELECT * FROM DBA_FRA_USAGE_MONITOR WHERE USAGE_PCT >= 80;

2. RMAN 자동 백업 및 아카이브 로그 삭제 정책 수립

RMAN 백업 스크립트에 아카이브 로그 자동 삭제 정책을 포함하고, 실행 결과를 반드시 로그로 남겨 실패 여부를 모니터링하세요. 보존 정책(RETENTION POLICY)을 명확히 설정하면 백업 완료된 아카이브 로그를 자동으로 관리할 수 있습니다.

-- RMAN 보존 정책 설정 (복구 윈도우 7일 기준)
-- RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

-- 아카이브 로그 자동 삭제 정책 설정
-- RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO DISK;

-- 백업 스크립트 예시 (daily_backup.rman)
/*
RUN {
  BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT;
  DELETE NOPROMPT OBSOLETE;
}
*/

관련 에러

  • ORA-00255: 아카이버 프로세스 자체가 아카이브에 실패할 때 발생하며, ORA-00257과 함께 Alert 로그에 기록됩니다.
  • ORA-19809: FRA 공간 한도 초과 시 발생하는 에러로, DB_RECOVERY_FILE_DEST_SIZE 설정값을 초과했음을 의미합니다.
  • ORA-19815: FRA 사용률이 100%에 도달했을 때 Alert 로그에 출력되며, ORA-00257 발생 직전 경고 신호입니다.
  • ORA-16014: 아카이브 로그 목적지가 유효하지 않거나 접근 불가 상태일 때 발생합니다.

DBMS 에러 코드 시리즈

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

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

댓글 남기기