Oracle ORA-00289 오류: 원인 및 해결책 완전 가이드

발행: (2026년 6월 6일 AM 09:01 GMT+9)
7 분 소요
원문: Dev.to

Source: Dev.to

ORA-00289: 아카이브 로그 대상 – 원인, 해결 방법 및 예방

ORA-00289는 Oracle에서 아카이브 로그 대상이 제안되었거나 문제가 있음을 알리는 정보/경고 메시지입니다. 보통 ORA-00255 또는 ORA-00257과 같은 다른 아카이버 관련 오류와 함께 나타나며, Archiver 프로세스(ARCn)가 설정된 대상에 아카이브 로그를 기록할 수 없음을 의미합니다. 이 문제가 해결되지 않으면 전체 데이터베이스가 멈출 수 있어 ARCHIVELOG 모드 데이터베이스에서 가장 운영상 중요한 오류 중 하나가 됩니다.

가장 흔한 원인

아카이브 로그를 보관하는 파일 시스템에 공간이 부족하면 ARCn 프로세스가 새로운 아카이브 로그를 기록하지 못하고, 결국 모든 redo 로그 전환을 차단해 데이터베이스가 정지합니다.

-- 아카이브 로그 대상 상태 확인
SELECT DEST_ID, STATUS, TARGET, DESTINATION, ERROR
FROM V$ARCHIVE_DEST
WHERE STATUS != 'INACTIVE';

-- 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
FROM V$RECOVERY_FILE_DEST;

-- FRA 크기 즉시 확대
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 200G SCOPE=BOTH;

LOG_ARCHIVE_DEST_n에 지정된 경로가 존재하지 않거나 잘못된 경우

서버 마이그레이션이나 마운트 포인트 변경 후 경로가 사라지면 Archiver가 조용히 실패하고 ORA-00289를 발생시킵니다.

-- 현재 아카이브 대상 파라미터 확인
SHOW PARAMETER LOG_ARCHIVE_DEST;

-- 대상 경로 수정
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = 'LOCATION=/oradata/archive' SCOPE=BOTH;

-- 또는 FRA를 대상에 사용
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = 'LOCATION=USE_DB_RECOVERY_FILE_DEST' SCOPE=BOTH;

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

OS 사용자 권한 문제

Oracle OS 사용자가 아카이브 대상 디렉터리에 쓰기 권한이 없으면 Archiver가 새 아카이브 로그 파일을 만들 수 없습니다. 보안 정책 변경이나 OS 패치 후에 흔히 발생합니다.

-- 권한 수정 후 현재 로그를 강제로 아카이브해 테스트
ALTER SYSTEM ARCHIVE LOG CURRENT;

-- 아카이브 로그 목록 확인
ARCHIVE LOG LIST;

-- 아카이브 로그가 정상적으로 생성되는지 확인
SELECT SEQUENCE#, NAME, FIRST_TIME, NEXT_TIME, DELETED
FROM V$ARCHIVED_LOG
WHERE FIRST_TIME >= SYSDATE - 1/24
ORDER BY SEQUENCE# DESC;

-- OS 수준 수정 (root 권한으로 실행)
chown oracle:dba /oradata/archive
chmod 755 /oradata/archive

긴급 조치: 임시 위치로 아카이브 대상 전환

데이터베이스가 정지 상태이고 즉시 완화가 필요할 때:

-- 임시 위치로 전환 (메모리 전용)
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = 'LOCATION=/tmp/archive_emergency' SCOPE=MEMORY;

-- 근본 원인 해결 후 원래 대상 복구
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = 'LOCATION=/oradata/archive' SCOPE=BOTH;

오래된 아카이브 로그 정리 (백업 존재 확인 후)

-- RMAN을 이용해 오래된 로그 삭제
-- RMAN> DELETE NOPROMPT ARCHIVELOG ALL BACKED UP 1 TIMES TO DISK;
-- RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';

시간당 생성되는 아카이브 로그 양 확인

SELECT TO_CHAR(TRUNC(FIRST_TIME, 'HH'), 'YYYY-MM-DD HH24') AS HOUR,
       COUNT(*) AS LOG_COUNT,
       ROUND(SUM(BLOCKS * BLOCK_SIZE) / 1024 / 1024, 2) AS TOTAL_MB
FROM V$ARCHIVED_LOG
WHERE FIRST_TIME >= SYSDATE - 1
  AND DELETED = 'NO'
GROUP BY TRUNC(FIRST_TIME, 'HH')
ORDER BY 1 DESC;

예방 및 모니터링 권고사항

  1. 디스크 사용량을 사전 예방적으로 모니터링하고 자동 정리
    OS 수준 모니터링(크론 작업 또는 OEM 알림)을 설정해 아카이브 로그 디스크 사용량이 75%를 초과하면 경고를 발생시키세요. RMAN 보존 정책을 연계해 성공적인 백업 후 자동으로 오래된 아카이브 로그를 삭제하도록 합니다.

  2. FRA와 중복 대상 활용
    Flash Recovery Area를 구성하고 최소 두 개 이상의 아카이브 대상을 설정해 단일 장애 지점을 없애세요. FRA 크기는 최소 7일치 아카이브 로그와 전체 백업 세트를 저장할 수 있을 만큼 충분히 크게 잡아야 합니다.

-- 권장 이중 대상 설정
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = '/fra/oradata' SCOPE=BOTH;
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 500G SCOPE=BOTH;

ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 =
  'LOCATION=USE_DB_RECOVERY_FILE_DEST MANDATORY' SCOPE=BOTH;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2 =
  'LOCATION=/backup/archive OPTIONAL REOPEN=300' SCOPE=BOTH;
ALTER SYSTEM SET LOG_ARCHIVE_MIN_SUCCEED_DEST = 1 SCOPE=BOTH;

오류 코드 및 설명

오류 코드설명
ORA-00255Archiver가 로그를 아카이브하지 못함 – 거의 항상 ORA-00289와 함께 발생
ORA-00257Archiver 오류; 해결될 때까지 내부 연결만 허용
ORA-19809FRA 공간 제한 초과; DB_RECOVERY_FILE_DEST_SIZE 증가 필요
ORA-16014로그를 아카이브할 수 없음; 사용 가능한 대상이 없음

📖 더 자세한 가이드를 원하시면?
oraerror.com — 상세 분석, 추가 SQL 예제, 예방 팁을 포함하고 있습니다.

0 조회
Back to Blog

관련 글

더 보기 »

모바일 한여름 열풍

!Cover image for Mobile Midsommer Madnesshttps://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploa...