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

ORA-00257
2026년 10월 29일 | DBMS Error 가이드

이 글에서 다루는 내용

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

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

ORA-00257은 Oracle 데이터베이스의 아카이브 로그(Archive Log) 저장 공간이 가득 찼거나 아카이버(Archiver) 프로세스가 아카이브 로그를 정상적으로 기록하지 못할 때 발생하는 심각한 에러입니다. 이 에러가 발생하면 일반 사용자의 데이터베이스 접속이 차단되며, SYSDBA 권한을 가진 내부 관리자만 접속하여 문제를 해결할 수 있습니다. ARCHIVELOG 모드로 운영 중인 데이터베이스에서 주로 발생하며, 즉각적인 조치를 취하지 않으면 데이터베이스 전체가 정지될 수 있는 매우 위험한 상황입니다.


주요 발생 원인

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

아카이브 로그가 저장되는 디스크 파티션의 용량이 가득 찬 경우로, 실무에서 가장 빈번하게 발생하는 원인입니다. 대용량 배치 작업이나 갑작스러운 트랜잭션 폭증으로 인해 아카이브 로그가 빠르게 생성되어 디스크를 소진시키는 상황에서 특히 자주 발생합니다. DB_RECOVERY_FILE_DEST 또는 LOG_ARCHIVE_DEST로 지정된 경로의 디스크 사용률을 즉시 확인해야 합니다.

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

Oracle 11g 이후 버전에서는 DB_RECOVERY_FILE_DEST_SIZE 파라미터로 FRA의 최대 크기를 제한하는데, 이 한계에 도달하면 ORA-00257이 발생합니다. FRA 안에는 아카이브 로그뿐만 아니라 RMAN 백업 파일, Flashback 로그 등도 함께 저장되므로, 예상보다 빠르게 공간이 소진될 수 있습니다. FRA 공간 사용 현황을 주기적으로 모니터링하지 않으면 예고 없이 에러가 발생할 수 있습니다.

3. 아카이버(ARCn) 프로세스 오류 또는 아카이브 대상 경로 접근 불가

네트워크 마운트 경로(NFS 등)를 아카이브 목적지로 사용하는 환경에서 마운트가 해제되거나 권한 문제가 발생할 경우 ARCn 프로세스가 아카이브 로그를 기록하지 못합니다. LOG_ARCHIVE_DEST에 여러 목적지를 지정했을 때 MANDATORY 옵션이 걸린 목적지에 접근 불가 상황이 발생하면 동일 에러가 발생합니다. alert log를 반드시 확인하여 ARCn 프로세스의 구체적인 에러 메시지를 파악해야 합니다.


해결 방법

1단계: SYSDBA로 접속 및 현황 파악

에러 발생 시 일반 계정으로는 접속이 불가하므로 SYSDBA로 접속합니다.

-- SYSDBA로 접속
CONNECT / AS SYSDBA

-- 아카이브 모드 및 아카이브 로그 상태 확인
ARCHIVE LOG LIST;

-- FRA 사용 현황 확인
SELECT 
    SPACE_LIMIT / (1024*1024*1024) AS LIMIT_GB,
    SPACE_USED  / (1024*1024*1024) AS USED_GB,
    SPACE_RECLAIMABLE / (1024*1024*1024) AS RECLAIMABLE_GB,
    NUMBER_OF_FILES
FROM V$RECOVERY_FILE_DEST;

-- FRA 내 파일별 상세 현황 확인
SELECT 
    FILE_TYPE,
    PERCENT_SPACE_USED,
    PERCENT_SPACE_RECLAIMABLE,
    NUMBER_OF_FILES
FROM V$FLASH_RECOVERY_AREA_USAGE;

2단계: 아카이브 로그 백업 후 삭제 (근본 해결)

-- RMAN으로 접속하여 아카이브 로그 백업 및 삭제
-- (운영 환경에서는 반드시 백업 후 삭제)
# OS 레벨에서 RMAN 실행
rman target /

# RMAN 내에서 아카이브 로그 백업 후 삭제
RMAN> BACKUP ARCHIVELOG ALL DELETE INPUT;

# 이미 백업된 아카이브 로그만 삭제 (더 안전한 방법)
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-1';

# 백업되지 않은 로그 포함 전체 삭제 (긴급 상황 시에만 사용)
RMAN> DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-2';

3단계: FRA 크기 확장 (임시 해결)

-- 현재 FRA 설정 확인
SHOW PARAMETER DB_RECOVERY_FILE_DEST;

-- FRA 크기 즉시 확장 (재시작 불필요)
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 100G SCOPE=BOTH;

-- FRA 경로 변경이 필요한 경우
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = '/new/archive/path' SCOPE=BOTH;

4단계: 아카이브 로그 목적지 확인 및 수정

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

-- 문제가 있는 목적지 비활성화 (긴급 조치)
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='' SCOPE=BOTH;

-- 또는 OPTIONAL로 변경하여 해당 목적지 실패 시 무시
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='LOCATION=/archive2 OPTIONAL' SCOPE=BOTH;

-- ARCn 프로세스 강제 재시작 (필요 시)
ALTER SYSTEM SWITCH LOGFILE;
ALTER SYSTEM ARCHIVE LOG ALL;

5단계: 정상화 확인

-- 아카이브 로그 상태 재확인
ARCHIVE LOG LIST;

-- 미처리 아카이브 로그 확인
SELECT * FROM V$ARCHIVE_GAP;

-- 현재 아카이버 프로세스 상태 확인
SELECT PROCESS, STATUS FROM V$MANAGED_STANDBY
WHERE PROCESS LIKE 'ARC%';

예방 방법

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

FRA 사용률이 70~80%에 도달하면 자동으로 경고 알림이 발송되도록 모니터링 스크립트를 구성하고 Oracle Enterprise Manager 또는 별도의 모니터링 툴과 연동합니다. 아래 쿼리를 크론잡(cron job)에 등록하여 주기적으로 점검하는 것을 권장합니다.

-- FRA 임계치 모니터링 쿼리 (80% 이상 시 경고)
SELECT 
    ROUND((SPACE_USED / SPACE_LIMIT) * 100, 2) AS USAGE_PCT,
    CASE 
        WHEN (SPACE_USED / SPACE_LIMIT) * 100 >= 80 THEN '위험: 즉시 조치 필요'
        WHEN (SPACE_USED / SPACE_LIMIT) * 100 >= 60 THEN '경고: 공간 확보 필요'
        ELSE '정상'
    END AS STATUS
FROM V$RECOVERY_FILE_DEST;

2. RMAN을 이용한 정기적인 아카이브 로그 백업 및 정리 자동화

RMAN 스케줄러 또는 OS 크론잡을 활용하여 매일 또는 주기적으로 아카이브 로그를 백업하고 오래된 로그를 자동 삭제하는 정책을 수립합니다. 보존 정책(RETENTION POLICY)을 명확히 설정하여 불필요한 아카이브 로그가 누적되지 않도록 관리합니다.

-- RMAN 보존 정책 설정 (7일 이상 된 아카이브 로그는 불필요)
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

-- 백업 완료 후 자동 삭제 정책
CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO DISK;

관련 에러

  • ORA-19809: 복구 영역(Recovery Area) 공간 한계 초과. FRA 크기 제한에 걸렸을 때 함께 발생하는 경우가 많습니다.
  • ORA-19804: 복구 영역에서 요청한 공간을 확보할 수 없을 때 발생하며, ORA-00257과 함께 alert log에 기록됩니다.
  • ORA-16014: 아카이브 로그를 기록할 공간이 없고 대안적인 목적지도 없을 때 발생하는 에러로, 다중 아카이브 목적지 환경에서 ORA-00257과 연관됩니다.
  • ORA-00055: 최대 DML Lock 수 초과 에러로, 아카이브 로그 장애로 인한 시스템 부하 상황에서 동반될 수 있습니다.

DBMS 에러 코드 시리즈

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

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

댓글 남기기