Wednesday, May 27, 2026Tech HubAboutContactAdvertiseNewsletter
Back to Home
ORA-00255 오류 원인과 해결 방법 완벽 가이드

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

ORA-00255란? ORA-00255는 Oracle 데이터베이스가 아카이브 로그 파일을 기록하려는 과정에서 실패했을 때 발생하는 에러입니다. ARCHIVELOG 모드로 운영 중인 데이터베이스에서 온라인 리두 로그 파일이 꽉 차 아카이빙이 필요한 시점에 아카이브 대상 경로에 파일을 쓰지 못할 경우 이 에러가 트리거됩니다. 이 에러가 지속되면 아카이빙이 중단되어 데이터베이스 전체가 hang 상태에 빠질 수 있으므로 즉각적인 조치가 반드시 필요합니다. 주요 발생 원인 1. 아카이브 로그 대상 경로의...

B
Blizine Admin
·5 min read·0 views
ORA-00255란? ORA-00255는 Oracle 데이터베이스가 아카이브 로그 파일을 기록하려는 과정에서 실패했을 때 발생하는 에러입니다. ARCHIVELOG 모드로 운영 중인 데이터베이스에서 온라인 리두 로그 파일이 꽉 차 아카이빙이 필요한 시점에 아카이브 대상 경로에 파일을 쓰지 못할 경우 이 에러가 트리거됩니다. 이 에러가 지속되면 아카이빙이 중단되어 데이터베이스 전체가 hang 상태에 빠질 수 있으므로 즉각적인 조치가 반드시 필요합니다. 주요 발생 원인 1. 아카이브 로그 대상 경로의 디스크 공간 부족 가장 흔하고 치명적인 원인입니다. LOG_ARCHIVE_DEST 또는 LOG_ARCHIVE_DEST_n 파라미터로 설정된 경로의 파일시스템 여유 공간이 소진되면 아카이빙이 즉시 실패합니다. 특히 배치 작업이나 대용량 DML이 집중되는 시간대에 갑자기 아카이브 로그가 폭발적으로 증가하여 디스크를 가득 채우는 경우가 실무에서 매우 자주 발생합니다. 2. 아카이브 대상 경로의 잘못된 설정 또는 접근 권한 문제 LOG_ARCHIVE_DEST_n 파라미터에 설정된 경로가 존재하지 않거나, Oracle 프로세스를 실행하는 OS 계정(oracle 유저)이 해당 디렉터리에 쓰기 권한을 가지고 있지 않은 경우에도 발생합니다. 운영 서버 교체, 마운트 포인트 변경, 또는 보안 정책 변경 이후에 갑자기 이 에러가 발생한다면 이 원인을 가장 먼저 의심해야 합니다. 3. ARCn 백그라운드 프로세스 장애 Oracle의 아카이버 프로세스(ARCn)가 내부 오류로 인해 비정상 종료되거나 응답하지 않는 상태가 되면 아카이빙이 중단됩니다. 이 경우 alert log에 ARCn 관련 추가 에러 메시지가 함께 기록되는 경우가 많으며, 단순히 아카이브 경로를 점검해도 문제가 해결되지 않을 때 프로세스 상태를 반드시 확인해야 합니다. 해결 방법 원인 1: 디스크 공간 부족 해결 먼저 현재 아카이브 로그 경로와 공간 사용량을 확인합니다. -- 현재 아카이브 로그 설정 경로 확인 SHOW PARAMETER log_archive_dest; -- 아카이브 로그 목록 및 크기 확인 SELECT NAME, BLOCKS * BLOCK_SIZE / 1024 / 1024 AS SIZE_MB, COMPLETION_TIME FROM V$ARCHIVED_LOG WHERE STANDBY_DEST = 'NO' AND DELETED = 'NO' ORDER BY COMPLETION_TIME DESC; -- 아카이브 로그 전체 누적 크기 요약 SELECT TRUNC(COMPLETION_TIME, 'DD') AS LOG_DATE, COUNT(*) AS LOG_COUNT, ROUND(SUM(BLOCKS * BLOCK_SIZE) / 1024 / 1024, 2) AS TOTAL_MB FROM V$ARCHIVED_LOG WHERE STANDBY_DEST = 'NO' AND DELETED = 'NO' GROUP BY TRUNC(COMPLETION_TIME, 'DD') ORDER BY LOG_DATE DESC; RMAN을 사용하여 이미 백업 완료된 아카이브 로그를 삭제합니다. 운영 환경에서는 반드시 백업 여부를 확인한 후 삭제하십시오. -- RMAN을 통한 백업 완료된 아카이브 로그 삭제 (가장 안전한 방법) -- RMAN 접속 후 실행: -- rman target / DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-1' BACKED UP 1 TIMES TO DEVICE TYPE DISK; -- 또는 특정 시간 이전의 백업된 아카이브 로그 삭제 DELETE NOPROMPT ARCHIVELOG UNTIL TIME 'SYSDATE - 2' BACKED UP 2 TIMES TO DISK; -- 삭제 후 RMAN 카탈로그 정합성 확인 CROSSCHECK ARCHIVELOG ALL; 원인 2: 아카이브 경로 설정 오류 해결 -- 현재 모든 아카이브 대상 상태 확인 SELECT DEST_ID, DEST_NAME, STATUS, TARGET, ARCHIVER, DESTINATION, ERROR FROM V$ARCHIVE_DEST WHERE STATUS != 'INACTIVE'; -- 에러가 발생한 아카이브 대상 비활성화 (임시 조치) ALTER SYSTEM SET LOG_ARCHIVE_DEST_2 = '' SCOPE=BOTH; -- 새로운 정상 경로로 변경 (경로가 OS에 실제 존재해야 함) ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = 'LOCATION=/archive/oradata/ORCL' SCOPE=BOTH; -- 변경 후 아카이브 상태 재확인 SELECT DEST_ID, STATUS, DESTINATION, ERROR FROM V$ARCHIVE_DEST WHERE DEST_ID <= 5; -- 아카이버 재기동 없이 수동으로 로그 스위치 후 아카이빙 정상 여부 확인 ALTER SYSTEM SWITCH LOGFILE; -- 현재 로그 아카이빙 진행 상황 모니터링 SELECT GROUP#, STATUS, ARCHIVED FROM V$LOG; OS 레벨에서 디렉터리 권한을 확인하고 조치합니다 (DBA가 시스템 팀에 요청하거나 직접 수행): -- Oracle 디렉터리 오브젝트를 통한 접근 테스트 (선택사항) -- OS 명령어로 확인: ls -ld /archive/oradata/ORCL -- 권한 부여: chown oracle:oinstall /archive/oradata/ORCL -- DB 레벨에서 아카이브 로그 모드 상태 확인 SELECT LOG_MODE, ARCHIVER FROM V$DATABASE; -- ARCn 프로세스 현재 상태 확인 SELECT PROCESS, STATUS, LOG_SEQUENCE#, STATE FROM V$MANAGED_STANDBY WHERE PROCESS LIKE 'ARC%'; 원인 3: ARCn 프로세스 장애 해결 -- alert log에서 에러 확인 (Oracle 11g 이상) SELECT ORIGINATING_TIMESTAMP, MESSAGE_TEXT FROM V$DIAG_ALERT_EXT WHERE MESSAGE_TEXT LIKE '%ARC%' OR MESSAGE_TEXT LIKE '%ORA-00255%' ORDER BY ORIGINATING_TIMESTAMP DESC FETCH FIRST 30 ROWS ONLY; -- 현재 아카이버 프로세스 수 확인 SHOW PARAMETER log_archive_max_processes; -- ARCn 프로세스 수를 늘려 재기동 유도 (최대 30까지 가능) ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES = 4 SCOPE=BOTH; -- 강제 로그 스위치로 아카이빙 재시도 유도 ALTER SYSTEM SWITCH LOGFILE; -- 아카이빙 강제 실행 (특정 시퀀스 재아카이빙) ALTER SYSTEM ARCHIVE LOG SEQUENCE 1234; -- 전체 미아카이브 로그 강제 아카이빙 ALTER SYSTEM ARCHIVE LOG ALL; 예방 방법 1. 아카이브 로그 공간 자동 모니터링 및 알람 구축 운영 환경에서는 아카이브 로그 디스크 사용률이 70~80%를 초과하기 전에 알람을 받을 수 있도록 모니터링 스크립트를 주기적으로 실행하는 것이 필수입니다. RMAN의 자동 삭제 정책(CONFIGURE ARCHIVELOG DELETION POLICY)과 OS 레벨의 cron 기반 모니터링을 함께 운영하면 더욱 안정적입니다. -- RMAN 아카이브 로그 보존 정책 설정 (백업 완료 후 자동 삭제 허용) -- RMAN 접속 후 실행: CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO DISK; CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY; -- 아카이브 로그 사용량 조기 경보용 모니터링 쿼리 (cron 스케줄러로 주기 실행) SELECT DEST_ID, DESTINATION, SPACE_LIMIT / 1024 / 1024 / 1024 AS LIMIT_GB, SPACE_USED / 1024 / 1024 / 1024 AS USED_GB, ROUND((SPACE_USED / SPACE_LIMIT) * 100, 2) AS USE_PCT FROM V$RECOVERY_FILE_DEST WHERE SPACE_LIMIT > 0; 2. FRA(Fast Recovery Area) 사용 및 크기 적절히 설정 LOG_ARCHIVE_DEST 대신 FRA(DB_RECOVERY_FILE_DEST)를 활용하면 Oracle이 공간 관리를 자동으로 수행하므로 운영 부담을 크게 줄일 수 있습니다. FRA 크기는 최소 일일 아카이브 로그 생성량의 3배 이상, 전체 데이터베이스 크기를 고려하여 충분히 할당해야 하며, 정기 RMAN 백업 후 자동으로 오래된 파일이 정리되도록 설정하는 것이 Best Practice입니다. -- FRA 설정 확인 및 변경 SHOW PARAMETER db_recovery_file_dest; -- FRA 경로 및 크기 설정 (실제 환경에 맞게 조정) ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = '/fra/oradata' SCOPE=BOTH; ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 200G SCOPE=BOTH; -- FRA 사용 현황 상세 조회 SELECT FILE_TYPE, PERCENT_SPACE_USED, PERCENT_SPACE_RECLAIMABLE, NUMBER_OF_FILES FROM V$RECOVERY_AREA_USAGE; 관련 에러 ORA-00257: 아카이버 프로세스 내부 에러로 인해 아카이빙이 완전히 중단된 상태. ORA-00255보다 더 심각한 단계이며 데이터베이스가 SYSDBA 접속만 허용하는 상태가 됩니다. ORA-19809: FRA(Fast Recovery Area) 공간이 DB_RECOVERY_FILE_DEST_SIZE 한도를 초과했을 때 발생하며 ORA-00255와 함께 나타나는 경우가 많습니다. ORA-16038: 온라인 리두 로그 아카이빙 실패. ORA-00255와 유사한 맥락에서 발생하며 alert log에서 함께 확인되는 경우가 많습니다. ORA-00270: 아카이브 로그 파일 생성 중 에러로, ORA-00255 발생 시 alert log에 연속으로 기록되는 대표적인 동반 에러입니다.

📰Originally published at dev.to

Comments