ORA-16038: log N sequence# M cannot be archived
Oracle의미
Oracle이 온라인 redo 로그 파일을 아카이브할 수 없어 해당 로그 그룹을 재사용할 수 없다. ARCHIVELOG 모드에서 아카이브가 멈추면 데이터베이스가 새 트랜잭션을 받지 못하고 행(hang) 상태가 될 수 있다.
원인
보통 아카이브 로그 대상 또는 Fast Recovery Area(FRA)가 가득 찼거나, 디스크 공간이 부족하거나, 아카이브 대상에 접근할 수 없거나, 권한/마운트 문제가 있다. ORA-19809(복구 파일 한도 초과) 또는 ORA-00312와 함께 자주 나타난다.
해결 방법
아카이브 대상/FRA의 공간을 확보한다: 오래된 아카이브 로그를 RMAN으로 FRA 외부 대상에 백업한 후 삭제하거나(DELETE ARCHIVELOG ALL COMPLETED BEFORE ...; Data Guard 환경에서는 standby로 아직 전송/적용되지 않은 아카이브 로그를 삭제하지 않는다), db_recovery_file_dest_size를 늘린다. 대상 상태 확인: ARCHIVE LOG LIST; 및 SELECT dest_name, status, error FROM v$archive_dest WHERE status != 'INACTIVE'; 문제가 해결되면 아카이브가 중단된 지점부터 재개된다.
같은 데이터베이스의 다른 항목
- ORA-02449unique/primary keys in table referenced by foreign keys (테이블의 고유/기본 키가 외래 키에서 참조됨)
- ORA-01950no privileges on tablespace 'name' (테이블스페이스에 대한 권한 없음)
- ORA-01110data file N: 'path'
- ORA-19809limit exceeded for recovery files
- ORA-00376file N cannot be read at this time
- ORA-12520TNS:listener could not find available handler for requested type of server (리스너가 요청한 서버 유형의 핸들러를 찾지 못함)
- ORA-28001the password has expired