2026년 06월 04일 | DBMS Error 가이드
이 글에서 다루는 내용
ORA-00255 에러의 원인 분석, 해결 SQL, 예방 방법을 실무 관점에서 정리합니다.
ORA-00255 error archiving log 는?
ORA-00255 에러는 Oracle 데이터베이스가 ARCHIVELOG 모드로 운영 중일 때, 온라인 리두 로그(Online Redo Log)를 아카이브 로그로 복사하는 아카이빙 프로세스(ARCn)가 실패했을 때 발생하는 에러입니다. 이 에러는 데이터베이스의 가용성과 복구 능력에 직접적인 영향을 미치며, 심각한 경우 데이터베이스가 아예 정지(Hang)되거나 새로운 트랜잭션을 받지 못하는 상태로 이어질 수 있습니다. 주로 아카이브 로그 저장 경로의 디스크 공간 부족, 잘못된 경로 설정, 또는 OS 레벨의 파일 시스템 권한 문제 등으로 인해 발생합니다.
주요 발생 원인
- 아카이브 로그 저장 디렉토리의 디스크 공간 부족 (Disk Full)
가장 빈번하게 발생하는 원인으로, 아카이브 로그가 저장되는 파일 시스템 또는 ASM 디스크 그룹의 여유 공간이 부족할 때 발생합니다. Oracle은 아카이브 로그 파일을 성공적으로 생성할 수 없으면 ARCn 프로세스가 실패하고 ORA-00255 에러를 Alert 로그에 기록합니다. 특히 배치 작업이나 대용량 DML 작업 이후 리두 로그 생성량이 폭발적으로 증가하면서 디스크를 가득 채우는 경우가 많습니다.
- 아카이브 로그 저장 경로(LOG_ARCHIVE_DEST) 설정 오류 또는 경로 접근 불가
LOG_ARCHIVE_DEST 또는 LOG_ARCHIVE_DEST_n 파라미터에 설정된 경로가 존재하지 않거나, OS 레벨에서 Oracle 프로세스가 해당 경로에 쓰기 권한이 없는 경우에 발생합니다. 시스템 마이그레이션, 서버 재부팅 후 마운트 포인트가 누락되거나, NFS 마운트가 해제된 상태에서 아카이빙을 시도하면 이 에러가 발생합니다. 특히 Data Guard 환경에서 Standby 사이트의 네트워크 문제로 원격 아카이브 경로에 접근하지 못할 때도 이 에러가 연쇄적으로 발생할 수 있습니다.
- Flash Recovery Area(FRA) 용량 초과
DB_RECOVERY_FILE_DEST를 아카이브 로그 저장 위치로 사용하는 경우, FRA에 설정된 최대 크기(DB_RECOVERY_FILE_DEST_SIZE)를 초과하면 아카이빙이 실패합니다. FRA는 아카이브 로그 외에도 백업 파일, Flashback 로그 등 다양한 파일을 함께 관리하기 때문에, 오래된 백업 파일이 정리되지 않으면 빠르게 공간이 소진될 수 있습니다. 이 경우 Oracle은 FRA 관련 에러와 함께 ORA-00255를 동반하여 Alert 로그에 기록합니다.
해결 방법
원인 1 해결: 디스크 공간 확보
먼저 현재 아카이브 로그 경로와 사용량을 확인합니다.
-- 현재 아카이브 로그 설정 확인
ARCHIVE LOG LIST;
-- 아카이브 로그 파일 사용 현황 확인
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,
COMPLETION_TIME
FROM V$ARCHIVED_LOG
WHERE STANDBY_DEST = 'NO'
AND COMPLETION_TIME > SYSDATE - 1
ORDER BY COMPLETION_TIME DESC;
이미 백업된 아카이브 로그를 RMAN을 통해 삭제하여 공간을 확보합니다.
-- RMAN을 통해 이미 백업된 아카이브 로그 삭제
-- (반드시 백업 완료 여부 확인 후 삭제)
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-3';
-- 특정 시퀀스 이전의 아카이브 로그 삭제
RMAN> DELETE ARCHIVELOG UNTIL SEQUENCE 5000 THREAD 1;
-- 백업 후 아카이브 로그 자동 삭제 설정
RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO DISK;
원인 2 해결: 아카이브 경로 재설정
-- 현재 아카이브 경로 확인
SHOW PARAMETER LOG_ARCHIVE_DEST;
-- 새로운 아카이브 경로로 변경 (동적 변경 가능)
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = 'LOCATION=/u02/oradata/archive' SCOPE=BOTH;
-- 기존 실패한 아카이브 경로를 비활성화
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2 = '' SCOPE=BOTH;
-- 아카이브 로그 상태 강제 재시도
ALTER SYSTEM ARCHIVE LOG ALL;
-- 특정 시퀀스 아카이브 재시도
ALTER SYSTEM ARCHIVE LOG SEQUENCE 4999 THREAD 1;
OS 레벨에서 디렉토리 권한도 반드시 확인합니다.
-- SQL*Plus에서 HOST 명령으로 OS 권한 확인
HOST ls -la /u02/oradata/archive/
HOST chown -R oracle:oinstall /u02/oradata/archive/
HOST chmod 750 /u02/oradata/archive/
원인 3 해결: FRA 공간 확보 및 크기 조정
-- FRA 현재 사용 현황 확인
SELECT * FROM V$RECOVERY_FILE_DEST;
-- FRA 내 파일 유형별 사용량 확인
SELECT FILE_TYPE,
ROUND(SPACE_USED / 1024 / 1024 / 1024, 2) AS USED_GB,
ROUND(SPACE_RECLAIMABLE / 1024 / 1024 / 1024, 2) AS RECLAIMABLE_GB,
NUMBER_OF_FILES
FROM V$RECOVERY_AREA_USAGE;
-- FRA 크기를 임시로 늘려 즉각적인 문제 해결
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 200G SCOPE=BOTH;
-- RMAN을 통해 FRA 내 오래된 파일 삭제
RMAN> DELETE OBSOLETE;
RMAN> DELETE EXPIRED BACKUP;
RMAN> CROSSCHECK ARCHIVELOG ALL;
RMAN> DELETE EXPIRED ARCHIVELOG ALL;
예방 방법
- 아카이브 로그 사용량 모니터링 자동화 및 임계치 알람 설정
아카이브 로그 저장 경로와 FRA의 디스크 사용률을 정기적으로 모니터링하는 스크립트를 구축하고, 사용률이 80%를 초과하면 DBA에게 자동으로 알람이 발송되도록 설정해야 합니다. 아래 쿼리를 cron job 또는 Oracle Enterprise Manager의 임계치 알람으로 활용하면 사전에 문제를 감지할 수 있습니다.
-- FRA 사용률 80% 이상 감지 쿼리 (모니터링 스크립트에 활용)
SELECT NAME,
ROUND(SPACE_LIMIT / 1024 / 1024 / 1024, 2) AS LIMIT_GB,
ROUND(SPACE_USED / 1024 / 1024 / 1024, 2) AS USED_GB,
ROUND((SPACE_USED / SPACE_LIMIT) * 100, 2) AS USED_PCT
FROM V$RECOVERY_FILE_DEST
WHERE (SPACE_USED / SPACE_LIMIT) * 100 > 80;
또한 RMAN 백업 스크립트에 아카이브 로그 삭제 정책을 반드시 포함시켜, 백업 완료 후 자동으로 오래된 아카이브 로그가 정리되도록 운영 프로세스를 표준화해야 합니다.
- 다중 아카이브 경로(Multiplexing) 설정 및 LOG_ARCHIVE_MIN_SUCCEED_DEST 활용
단일 아카이브 경로에 의존하는 것은 매우 위험합니다. 최소 2개 이상의 아카이브 경로를 설정하고 LOG_ARCHIVE_MIN_SUCCEED_DEST 파라미터를 통해 최소 성공 기준을 설정하면, 한 경로에서 문제가 발생하더라도 데이터베이스가 중단되지 않고 운영을 지속할 수 있습니다.
-- 2개의 아카이브 경로 설정 (이중화)
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = 'LOCATION=/u02/archive MANDATORY' SCOPE=BOTH;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2 = 'LOCATION=/u03/archive OPTIONAL' SCOPE=BOTH;
-- 최소 1개 경로 성공 시 아카이빙 완료로 처리
ALTER SYSTEM SET LOG_ARCHIVE_MIN_SUCCEED_DEST = 1 SCOPE=BOTH;
관련 에러
- ORA-00257: 아카이버(ARCn)가 아카이브 로그를 기록할 공간이 없어 내부 에러가 발생한 경우로, ORA-00255와 함께 Alert 로그에 자주 동반 출력됩니다. ORA-00257은 데이터베이스가 SYSDBA 접속을 제외한 모든 접속을 차단할 수 있는 더 심각한 상태를 나타냅니다.
- ORA-19809: FRA의 복구 파일 관련 제한 초과 에러로, FRA 공간 부족 시 ORA-00255와 연계하여 발생합니다.
- ORA-16038: 지정된 아카이브 로그 파일을 아카이빙할 수 없을 때 발생하며, ORA-00255의 세부 원인을 나타내는 경우가 많습니다.
- ORA-00270: 아카이브 로그 파일 생성 중 에러로, ORA-00255와 유사한 상황에서 발생하며 OS 레벨의 I/O 에러와 연관된 경우가 많습니다.
주요 DBMS error code를 정리하는 시리즈입니다.
블로그 홈에서 다른 에러도 확인하세요.
본 포스트는 AI가 생성한 기술 가이드입니다. 운영 환경 적용 전 충분한 검토를 권장합니다.