2026년 06월 06일 | DBMS Error 가이드
이 글에서 다루는 내용
ORA-00289 에러의 원인 분석, 해결 SQL, 예방 방법을 실무 관점에서 정리합니다.
ORA-00289 suggestion: archive log destination 는?
ORA-00289는 Oracle 데이터베이스가 아카이브 로그(Archive Log)를 저장할 목적지(destination)를 제안하거나, 현재 설정된 아카이브 로그 목적지에 문제가 있음을 알리는 정보성/경고 메시지입니다. 이 에러는 주로 아카이브 로그 목적지가 꽉 찼거나, 경로가 유효하지 않거나, 권한 문제가 발생했을 때 함께 출력되며 ORA-00255, ORA-00257 등 다른 아카이브 관련 에러와 동반되는 경우가 많습니다. ARCHIVELOG 모드로 운영 중인 운영계 데이터베이스에서 자주 발생하며, 방치할 경우 데이터베이스가 중단(hang)되는 심각한 장애로 이어질 수 있습니다.
주요 발생 원인
1. 아카이브 로그 목적지 디스크 공간 부족
가장 빈번하게 발생하는 원인으로, 아카이브 로그가 저장되는 디스크 파티션의 여유 공간이 소진된 경우입니다. Oracle은 아카이브 로그를 기록할 공간이 없으면 Archiver 프로세스(ARCn)가 중단되고, 결국 Redo Log 스위치가 불가능해져 데이터베이스 전체가 멈추게 됩니다. 특히 배치 작업이나 대량 DML이 수행되는 시간대에 집중적으로 발생하므로, 디스크 사용률 모니터링이 필수입니다.
2. 아카이브 로그 목적지 경로 설정 오류
LOG_ARCHIVE_DEST_n 파라미터에 지정된 경로가 존재하지 않거나 잘못 설정된 경우입니다. 서버 이전, OS 재설치, 마운트 포인트 변경 등의 작업 이후에 기존 경로가 무효화되는 상황이 흔히 발생합니다. 이 경우 Archiver 프로세스는 해당 목적지에 아카이브 로그를 쓰지 못하고 ORA-00289와 함께 경고를 출력합니다.
3. OS 파일 시스템 권한 문제
Oracle 프로세스를 실행하는 OS 계정(보통 oracle)이 아카이브 목적지 디렉토리에 대한 쓰기 권한이 없는 경우입니다. 보안 정책 변경, 패치 작업 후 권한 초기화 등 다양한 이유로 발생할 수 있으며, 이 경우에도 Archiver는 로그를 기록하지 못합니다. 에러 로그에는 ORA-00289와 함께 OS 레벨의 permission denied 메시지가 함께 출력되는 것이 특징입니다.
해결 방법
원인 1: 디스크 공간 부족 해결
먼저 현재 아카이브 로그의 사용 현황을 확인합니다.
-- 아카이브 로그 목적지 및 사용 현황 확인
SELECT DEST_ID, DEST_NAME, STATUS, TARGET, ARCHIVER, SCHEDULE,
DESTINATION, BINDING, MAX_FAILURE, ERROR
FROM V$ARCHIVE_DEST
WHERE STATUS != 'INACTIVE';
-- 아카이브 로그 파일 목록 및 크기 확인
SELECT NAME, SEQUENCE#, BLOCKS, BLOCK_SIZE,
ROUND((BLOCKS * BLOCK_SIZE) / 1024 / 1024, 2) AS SIZE_MB,
FIRST_TIME, NEXT_TIME, DELETED
FROM V$ARCHIVED_LOG
WHERE DELETED = 'NO'
ORDER BY FIRST_TIME DESC;
-- RMAN을 통한 불필요한 아카이브 로그 삭제 (백업 완료된 것)
-- RMAN 접속 후 실행:
-- RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
-- 이미 백업된 아카이브 로그만 삭제
-- RMAN> DELETE NOPROMPT ARCHIVELOG ALL BACKED UP 1 TIMES TO DISK;
-- FRA(Flash Recovery Area) 사용량 확인
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 크기 조정 (충분한 공간으로 확대)
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 200G SCOPE=BOTH;
원인 2: 아카이브 경로 설정 오류 해결
-- 현재 아카이브 목적지 파라미터 확인
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;
-- 변경 후 Archiver 상태 확인
SELECT PROCESS, STATUS, LOG#, SEQUENCE#
FROM V$MANAGED_STANDBY
WHERE PROCESS LIKE 'ARC%';
-- 또는
SELECT * FROM V$ARCHIVE_PROCESSES;
-- 아카이브 로그 모드 및 목적지 전체 상태 점검
ARCHIVE LOG LIST;
-- 특정 목적지 비활성화 (임시 조치)
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2 = '' SCOPE=BOTH;
-- 새로운 목적지 활성화
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2 = 'LOCATION=/backup/archive MANDATORY' SCOPE=BOTH;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2 = ENABLE SCOPE=BOTH;
원인 3: OS 권한 문제 해결
-- Oracle Alert Log에서 에러 상세 내용 확인
-- (SQL*Plus에서 실행)
SELECT VALUE FROM V$DIAG_INFO WHERE NAME = 'Diag Trace';
-- 아카이브 목적지 디렉토리 권한 확인용 쿼리
-- (실제 권한 변경은 OS 레벨에서 수행)
-- OS 명령어: ls -la /oradata/archive
-- OS 명령어: chown oracle:dba /oradata/archive
-- OS 명령어: chmod 755 /oradata/archive
-- 권한 수정 후 Archiver 프로세스 재시작 확인
SELECT ARCHIVER FROM V$INSTANCE;
-- 수동으로 아카이브 강제 실행 (테스트용)
ALTER SYSTEM ARCHIVE LOG CURRENT;
-- 특정 로그 시퀀스 아카이브
ALTER SYSTEM ARCHIVE LOG SEQUENCE 1234;
-- 데이터베이스가 hang 상태인 경우 긴급 조치
-- (아카이브 목적지를 임시로 변경하여 즉시 해제)
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;
예방 방법
1. 아카이브 로그 디스크 사용률 자동 모니터링 및 알림 설정
아카이브 로그 디스크가 70~80% 이상 사용되었을 때 자동으로 알림이 발송되도록 모니터링 스크립트를 구성하고, OS 레벨의 cron job 또는 Oracle Enterprise Manager(OEM) 임계치 경보를 설정해야 합니다. RMAN 백업 정책과 아카이브 로그 보존 정책(Retention Policy)을 명확히 수립하여 오래된 아카이브 로그가 정기적으로 정리되도록 자동화하는 것이 핵심입니다.
-- 아카이브 로그 모니터링용 쿼리 (cron 스크립트에 활용)
SELECT TO_CHAR(TRUNC(FIRST_TIME, 'HH'), 'YYYY-MM-DD HH24') AS ARCHIVE_HOUR,
COUNT(*) AS LOG_COUNT,
ROUND(SUM(BLOCKS * BLOCK_SIZE) / 1024 / 1024, 2) AS TOTAL_MB
FROM V$ARCHIVED_LOG
WHERE FIRST_TIME >= SYSDATE - 7
AND DELETED = 'NO'
GROUP BY TRUNC(FIRST_TIME, 'HH')
ORDER BY 1 DESC;
2. FRA(Flash Recovery Area) 적극 활용 및 충분한 용량 확보
DB_RECOVERY_FILE_DEST와 DB_RECOVERY_FILE_DEST_SIZE를 통해 FRA를 구성하면 Oracle이 자동으로 공간을 관리해 주며, 공간 부족 시 RMAN 정책에 따라 불필요한 파일을 자동 정리합니다. FRA 크기는 최소 7일치 아카이브 로그 + 전체 백업 크기를 수용할 수 있도록 충분히 확보하고, Multiplexing을 통해 두 곳 이상의 아카이브 목적지를 운영하여 단일 장애점(SPOF)을 제거하는 것이 Best Practice입니다.
-- FRA 설정 권장 예시
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-00255: Archiver 프로세스가 아카이브 로그 기록에 실패했을 때 발생하며 ORA-00289와 거의 항상 함께 출력됩니다.
- ORA-00257: Archiver 오류로 내부 접속만 허용되는 상태로, 아카이브 공간이 완전히 고갈되었을 때 발생하는 가장 심각한 관련 에러입니다.
- ORA-16014: 아카이브 목적지가 유효하지 않아 로그를 아카이브할 수 없을 때 발생합니다.
- ORA-19809: FRA 공간 한도 초과 시 발생하며 DB_RECOVERY_FILE_DEST_SIZE 조정이 필요합니다.
- ORA-00270: 아카이브 로그 생성 중 오류가 발생했을 때 나타나는 에러로, ORA-00289와 연계하여 원인을 추적해야 합니다.
주요 DBMS error code를 정리하는 시리즈입니다.
블로그 홈에서 다른 에러도 확인하세요.
본 포스트는 AI가 생성한 기술 가이드입니다. 운영 환경 적용 전 충분한 검토를 권장합니다.