Oracle RMAN명령으로 ARCHIVELOG 삭제하기

Oracle DB

데이터베이스를 Full Backup했다면 그 시점까지의 ARCHIVELOG정보는 Full Backup에 포함되어 있기 때문에 ARCHIVELOG를 더 이상 필요로 하지 않습니다. 이 점을 인식하지 못하고 방치한다면 언젠가는 디스크 사용영역이 고갈 되어 데이터베이스에 심각한 오류가 발생 할 수 있습니다. 이 글 에서는 이런 오류를 미연에 방지하기 위해 ARCHIVELOG파일을 삭제하는 방법을 소개합니다.

ARCHIVELOG파일 확인

ARCHIVELOG 저장 장소 확인과 테스트용 대량 ARCHIVELOG 작성에 대해서는 [ARCHIVELOG 저장 장소 변경하기 > 3 ARCHIVELOG작성 확인용 대량 데이터 작성] 글을 참조 하십시오. 다음 화면과 같이 ARCHIVELOG파일이 쌓여가는 것을 확인 할 수 있습니다.

테스트용 대량 ARCHIVELOG 작성으로 다음 화면과 같이 드라이브 사용 가능 영역이 고갈 되었음을 확인 할 수 있습니다..

또한 [이벤트 뷰어] 화면에서 디스크 영역 없음 경고를 확인 할 수 있습니다.

RMAN명령으로 ARCHIVELOG 삭제하기

다음과 같이 rman명령으로 데이터베이스에 접속하면 RMAN> 프롬프트가 표시됩니다.

E:\>rman target /
복구 관리자: Release 12.2.0.1.0 - Production on 토 1월 22 22:18:49 2022
Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.
대상 데이터베이스에 접속됨: ORCL(DBID=1591013992)
RMAN> 

다음과 같이 RMAN> 프롬프트에서 list archivelog all 명령으로 아카이브된 로그 복사본 목록을 표시합니다.

RMAN> list archivelog all;
db_unique_name ORCL을(를) 가진 데이터베이스에 대한 아카이브된 로그 복사본 목록
=====================================================================
키     스레드 시퀀스     S Low 시간
------- ---- ------- - --------
3       1    39      A 22/01/22
        이름: E:\APP\ORACLE\ARCH\ARC0000000039_1063233258.0001

4       1    40      A 22/01/22
        이름: E:\APP\ORACLE\ARCH\ARC0000000040_1063233258.0001
... 중간 생략 ...
29      1    65      A 22/01/22
        이름: E:\APP\ORACLE\ARCH\ARC0000000065_1063233258.0001

위해서 표시된 아키이브된 모든 복사본 목록을 다음 명령으로 삭제합니다.

RMAN> delete archivelog all;
채널을 할당했습니다: ORA_DISK_1
채널 ORA_DISK_1: SID=250 장치 유형=DISK
db_unique_name ORCL을(를) 가진 데이터베이스에 대한 아카이브된 로그 복사본 목록
=====================================================================
키     스레드 시퀀스     S Low 시간
------- ---- ------- - --------
3       1    39      A 22/01/22
        이름: E:\APP\ORACLE\ARCH\ARC0000000039_1063233258.0001

4       1    40      A 22/01/22
        이름: E:\APP\ORACLE\ARCH\ARC0000000040_1063233258.0001
... 중간 생략 ...
29      1    65      A 22/01/22
        이름: E:\APP\ORACLE\ARCH\ARC0000000065_1063233258.0001
위 객체를 삭제하겠습니까(YES 또는 NO 입력)? YES
아카이브된 로그를 삭제했습니다.
아카이브된 로그 파일 이름=E:\APP\ORACLE\ARCH\ARC0000000039_1063233258.0001 RECID=3 STAMP=1094678994
아카이브된 로그를 삭제했습니다.
아카이브된 로그 파일 이름=E:\APP\ORACLE\ARCH\ARC0000000040_1063233258.0001 RECID=4 STAMP=1094679051
... 중간 생략 ...
아카이브된 로그를 삭제했습니다.
아카이브된 로그 파일 이름=E:\APP\ORACLE\ARCH\ARC0000000065_1063233258.0001 RECID=29 STAMP=1094680468
27 객체를 삭제함

참고로 [위 객체를 삭제하겠습니까(YES 또는 NO 입력)? YES ]를 표시하지 않고 진행하려면 다음과 같이 noprompt 옵션을 지정합니다.

RMAN> delete noprompt archivelog all;

다시 한번 list archivelog all 명령으로 아카이브된 로그 복사본 목록을 다시 확인하여 모두 삭제 되었음을 확인합니다.

RMAN> list archivelog all;
사양이 저장소의 아카이브된 로그와 일치하지 않습니다.

마지막으로 디스크를 확인하면 사용 가능 용량이 아카이브된 로그를 삭제한 만큼 증가 했음을 확인 할 수 있습니다.

댓글

제목과 URL을 복사했습니다