Oracle 접속 시
ORA-00257: archiver error. Connect internal only, until freed.
오류가 뜨는 경우, 아카이브 로그 사이즈(사용량) 확인해 줘야 한다.
**오라클은 11.2.0.3.0 버전 사용 중이다.
아카이브 로그는 백업 복구에 사용되는데 설정된 경로에 파일로 저장되고 있다.
해당 에러는 아카이브 로그 사이즈의 설정된 사용량 대비 실제 사용량이 Full일 경우 발생한 경우이다.
(대부분 아카이브 로그 저장소 Disk 사용량이 Full인 경우에 발생한다고 한다.)
현상 파악
우선, 아카이브 로그 사이즈를 조회해 본다.
set lines 500
col NAME format a45
SELECT NAME
,ROUND(SPACE_LIMIT/1024/1024/1024,2) SPACE_LIMIT_GB
,ROUND(SPACE_USED/1024/1024/1024,2) SPACE_USED_GB
,SPACE_RECLAIMABLE
,NUMBER_OF_FILES
FROM V$RECOVERY_FILE_DEST;
아카이브 로그 디렉터리 사용량은 LIMIT은 50GB이며, 현재 사용량은 49.97GB 이다.
아카이브 로그 저장 디렉터리의 경로에 파일이 존재한다.
참조 : 아카이브 로그 테이블 스페이스 사용량은 49.97GB인데, 실제 경로의 총 디렉터리 사용량은 1.8GB이다.
테이블 스페이스 사용량과 실제 Disk 사용량의 차이는 압축, 데이터베이스의 관리 등 여러 가지가 있다고 하는데, 이 부분은 좀 더 분석이 필요하며, 추후 업데이트할 수 있도록 해보겠다.
해결 방법 (2번 RMAN을 이용한 아카이브 로그 파일 삭제로 해결을 했으므로, 2번 방법에 대해 상세히 기재한다.)
- 아카이브 로그 테이블 스페이스 LIMIT 을 늘린다.(실제 DISK 사용량 대비)
- RMAN을 이용한 아카이브 로그 삭제
--RMAN 접속
$ rman target=/
--아카이브 로그 리스트 조회 (전체)
RMAN> LIST ARCHIVELOG ALL;
--아카이브 로그 리스트 조회 시 실제 아카이브 로그 디렉터리에서 조회된 파일이 조회된다.
--최근 3일 치를 제외한 나머지 삭제
RMAN> delete archivelog all completed before 'sysdate -3';
-- delete 문으로 해결이 안 될 경우 expired 된 아카이브 파일 제거
-- (최근 3일 치 제외 삭제 문장 수행 후 아카이브 로그 파일 사이즈 조회 시 사용량 변화가 없고(48.8GB), 오류도 동일하게 발생됐다.)
RMAN> crosscheck archivelog ALL;
RMAN> DELETE expired archivelog ALL;
아카이브 로그 사이즈 사용량이 줄어들었으며, 오류도 해결됐다.
--동일 경로 아카이브 로그 파일 제거됐다. (디렉터리는 존재)
--접속 테스트 (sysdba 가 아닌 일반 유저로 정상 접속되면 해결)
$ sqlplus ID/PW