2026년 09월 27일 | DBMS Error 가이드
이 글에서 다루는 내용
ORA-16014 에러의 원인 분석, 해결 SQL, 예방 방법을 실무 관점에서 정리합니다.
ORA-16014 log not archiving, no available destinations 는?
ORA-16014는 Oracle 데이터베이스가 ARCHIVELOG 모드로 운영 중일 때, 온라인 리두 로그(Online Redo Log)를 아카이브하려 하지만 유효한 아카이브 목적지(Archive Destination)가 하나도 없을 때 발생하는 에러입니다. 이 에러가 발생하면 데이터베이스는 로그 스위치(Log Switch)를 완료하지 못하고, 결국 모든 온라인 리두 로그 그룹이 가득 차면 데이터베이스 전체가 중단(Hang) 상태에 빠질 수 있습니다. 특히 야간 배치 작업이나 대용량 DML 작업이 집중되는 시간대에 발생할 경우, 서비스 전체가 멈추는 심각한 장애로 이어질 수 있어 즉각적인 대응이 필요합니다.
주요 발생 원인
1. 아카이브 목적지 디스크 공간 부족
가장 흔하고 치명적인 원인입니다. LOG_ARCHIVE_DEST_n 파라미터에 설정된 경로의 파일시스템이 100% 사용 중이면, Oracle은 더 이상 아카이브 로그 파일을 생성할 수 없습니다. 이 경우 Oracle은 해당 목적지를 자동으로 비활성화(DEFER)시키며, 사용 가능한 다른 목적지가 없으면 ORA-16014가 발생합니다. 실무에서는 FRA(Fast Recovery Area) 용량 초과가 이 문제의 가장 빈번한 트리거입니다.
2. 아카이브 목적지 경로 오류 또는 권한 문제
LOG_ARCHIVE_DEST_n에 설정된 디렉토리 경로가 존재하지 않거나, Oracle 프로세스(oracle 유저)가 해당 경로에 쓰기 권한이 없는 경우에도 동일한 에러가 발생합니다. 운영 중에 스토리지 마운트 포인트가 변경되거나, 디렉토리가 실수로 삭제된 경우가 대표적입니다. 이 경우 Alert 로그에 ORA-19504, ORA-27040 등의 OS 수준 에러가 함께 기록됩니다.
3. 모든 아카이브 목적지가 DEFER 또는 INACTIVE 상태
Oracle은 아카이브에 실패한 목적지를 DEFER 상태로 전환하는데, LOG_ARCHIVE_MIN_SUCCEED_DEST 파라미터에 지정된 최소 성공 목적지 수를 충족하는 활성(ACTIVE) 목적지가 없으면 아카이빙 자체를 중단합니다. DBA가 수동으로 특정 목적지를 DEFER로 설정한 채 방치하거나, Standby DB와의 연결이 장시간 끊어진 상태에서 MANDATORY 옵션이 설정된 경우가 해당됩니다.
해결 방법
원인 1: 디스크 공간 부족 해결
먼저 현재 아카이브 목적지 상태와 공간을 확인합니다.
-- 아카이브 목적지 상태 확인
SELECT DEST_ID, DEST_NAME, STATUS, TARGET, ARCHIVER, SCHEDULE,
DESTINATION, ERROR
FROM V$ARCHIVE_DEST
WHERE STATUS != 'INACTIVE';
-- FRA 사용 현황 확인
SELECT NAME,
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;
RMAN을 이용해 불필요한 아카이브 로그를 즉시 삭제합니다.
-- RMAN에서 백업 완료된 아카이브 로그 삭제
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-1';
-- 또는 특정 기간 이전 아카이브 로그 삭제
RMAN> DELETE ARCHIVELOG UNTIL TIME 'SYSDATE-3';
FRA 크기를 늘리는 방법도 병행합니다.
-- FRA 크기 확장 (예: 100GB로 설정)
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 100G SCOPE=BOTH;
원인 2: 경로 오류 및 권한 문제 해결
Alert 로그와 목적지 에러 메시지를 먼저 확인합니다.
-- 목적지 에러 메시지 상세 확인
SELECT DEST_ID, DESTINATION, STATUS, ERROR, FAIL_COUNT, FAIL_DATE
FROM V$ARCHIVE_DEST
WHERE STATUS = 'ERROR' OR ERROR IS NOT NULL;
경로 문제가 확인되면 파라미터를 즉시 수정합니다.
-- 아카이브 목적지 경로 변경 (예시)
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = 'LOCATION=/new/archive/path' SCOPE=BOTH;
-- 변경 후 목적지 활성화
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1 = ENABLE SCOPE=BOTH;
OS 레벨에서 디렉토리 생성 및 권한 부여도 필수입니다.
# OS 명령으로 디렉토리 생성 및 권한 설정
mkdir -p /new/archive/path
chown oracle:oinstall /new/archive/path
chmod 750 /new/archive/path
원인 3: 목적지 DEFER 상태 해결
-- 모든 아카이브 목적지 상태를 상세 조회
SELECT DEST_ID, STATUS, TARGET, ARCHIVER, SCHEDULE,
DESTINATION, FAIL_COUNT, ERROR
FROM V$ARCHIVE_DEST
ORDER BY DEST_ID;
-- DEFER된 목적지를 즉시 재활성화
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1 = ENABLE;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2 = ENABLE;
-- 최소 성공 목적지 수 조정 (임시 조치)
ALTER SYSTEM SET LOG_ARCHIVE_MIN_SUCCEED_DEST = 1 SCOPE=BOTH;
-- Standby 목적지를 OPTIONAL로 변경 (임시 조치)
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2 =
'SERVICE=standby_db OPTIONAL REOPEN=300' SCOPE=BOTH;
조치 후 수동으로 로그 스위치를 수행하여 밀린 아카이브를 처리합니다.
-- 수동 로그 스위치 및 체크포인트 수행
ALTER SYSTEM SWITCH LOGFILE;
ALTER SYSTEM CHECKPOINT;
-- 아카이브 프로세스 정상화 확인
SELECT PROCESS, STATUS, LOG#, SEQUENCE#
FROM V$MANAGED_STANDBY
WHERE PROCESS LIKE 'ARC%';
예방 방법
1. 아카이브 공간 모니터링 자동화
FRA 및 아카이브 목적지 사용률을 주기적으로 모니터링하는 스크립트를 Cron Job으로 등록하고, 임계값(예: 80%) 초과 시 DBA에게 알람이 전송되도록 구성해야 합니다. Oracle Enterprise Manager(OEM)의 Archivelog Destination Space Usage 지표를 활용하거나, 아래와 같은 쿼리를 스케줄링하여 능동적으로 감지하는 것이 Best Practice입니다.
-- 사용률 80% 이상인 경우 경고 (모니터링 스크립트에 활용)
SELECT NAME,
ROUND(SPACE_USED / SPACE_LIMIT * 100, 2) AS USED_PCT
FROM V$RECOVERY_FILE_DEST
WHERE SPACE_USED / SPACE_LIMIT > 0.8;
2. RMAN 백업 정책과 아카이브 로그 정리 자동화
아카이브 로그는 RMAN 백업 완료 후 자동 삭제되도록 정책을 설정하여 디스크 공간이 적시에 확보되도록 해야 합니다. 또한 CONFIGURE ARCHIVELOG DELETION POLICY 설정을 통해 Data Guard 환경에서도 안전하게 아카이브 로그를 관리할 수 있습니다.
-- RMAN에서 아카이브 로그 삭제 정책 설정
RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO DISK;
-- Data Guard 환경에서의 삭제 정책
RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;
관련 에러
- ORA-16038: 로그를 아카이브할 수 없어 데이터베이스 Hang이 발생할 때 함께 나타나는 에러로, ORA-16014와 쌍으로 Alert 로그에 기록됩니다.
- ORA-19809: FRA(Fast Recovery Area) 공간 한도 초과 에러로, FRA를 아카이브 목적지로 사용할 때 ORA-16014의 직접적인 원인이 됩니다.
- ORA-00257: Archiver 프로세스(ARCn)가 아카이브에 실패했을 때 발생하며, 일반 사용자 세션에서 DML을 차단하는 형태로 나타납니다.
- ORA-16055:
LOG_ARCHIVE_MIN_SUCCEED_DEST조건을 만족하는 목적지가 없을 때 발생하며, ORA-16014와 함께 출력될 수 있습니다.
주요 DBMS error code를 정리하는 시리즈입니다.
블로그 홈에서 다른 에러도 확인하세요.
본 포스트는 AI가 생성한 기술 가이드입니다. 운영 환경 적용 전 충분한 검토를 권장합니다.