"오라클 rman 아카이브로그 삭제"의 두 판 사이의 차이
DB CAFE
(→아카이브 로그 파일위치) |
(→3시간 이전에 백업 완료된 아카이브 로그 복사본 삭제) |
||
(같은 사용자의 중간 판 16개는 보이지 않습니다) | |||
17번째 줄: | 17번째 줄: | ||
SQL> archive log list; | SQL> archive log list; | ||
</source> | </source> | ||
+ | 또는 | ||
<source lang=sql> | <source lang=sql> | ||
− | + | SELECT NAME,LOG_MODE,ARCHIVE_CHANGE# | |
FROM V$DATABASE; | FROM V$DATABASE; | ||
</source> | </source> | ||
26번째 줄: | 27번째 줄: | ||
<source lang=sql> | <source lang=sql> | ||
SQL> select * from v$logfile; | SQL> select * from v$logfile; | ||
+ | -- 또는 | ||
+ | SQL> archive log list | ||
</source> | </source> | ||
36번째 줄: | 39번째 줄: | ||
<source lang=sql> | <source lang=sql> | ||
SQL> show parameter log_archive_format | SQL> show parameter log_archive_format | ||
+ | </source> | ||
+ | 또는 | ||
+ | <source lang=sql> | ||
+ | SELECT NAME,VALUE | ||
+ | FROM V$PARAMETER | ||
+ | WHERE NAME LIKE '%log_archive_format%'; | ||
</source> | </source> | ||
== 아카이브 로그 FULL 장애 조치 == | == 아카이브 로그 FULL 장애 조치 == | ||
− | === db_recovery_file_dest_size 최대치 증가 === | + | === 방법 1(RMAN이용 삭제) === |
+ | ==== db_recovery_file_dest_size 최대치 증가 ==== | ||
* ORA-19809: limit exceeded for recovery files 오류 발생시 | * ORA-19809: limit exceeded for recovery files 오류 발생시 | ||
<source lang=sql> | <source lang=sql> | ||
45번째 줄: | 55번째 줄: | ||
</source> | </source> | ||
− | === 파라미터 확인/ 변경 === | + | ==== 파라미터 확인/ 변경 ==== |
<source lang=sql> | <source lang=sql> | ||
SQL> show parameter db_recovery_file_dest; | SQL> show parameter db_recovery_file_dest; | ||
− | </source> | + | </source> |
+ | 또는 | ||
+ | <source lang=sql> | ||
+ | SELECT NAME,VALUE | ||
+ | FROM V$PARAMETER | ||
+ | WHERE NAME LIKE '%db_recovery_file_dest%'; | ||
+ | </source> | ||
− | === 아카이브 로그 삭제 === | + | ==== 아카이브 로그 삭제 ==== |
# RMAN 이용 | # RMAN 이용 | ||
<source lang=sql> | <source lang=sql> | ||
61번째 줄: | 77번째 줄: | ||
-- 전체 삭제 | -- 전체 삭제 | ||
RMAN> connect target / | RMAN> connect target / | ||
+ | |||
+ | -- RMAN 카탈로그 정보 정리 | ||
RMAN> crosscheck archivelog all; | RMAN> crosscheck archivelog all; | ||
+ | |||
RMAN> delete expired archivelog all; -- 전체 삭제 | RMAN> delete expired archivelog all; -- 전체 삭제 | ||
− | </source> | + | </source> |
+ | |||
+ | === 방법 2 === | ||
+ | ==== alert log 확인 및 상태확인 ==== | ||
+ | {ORACLE_HOME}/admin/SID/bdump/alert_SID.log 을 확인 후 archiver 관련 에러를 찾을 수있다. | ||
+ | 어떤 장애가 발생했을때 로그의 확인은 필수 | ||
+ | |||
+ | ==== 현재 로그 상태 확인 ==== | ||
+ | <source lang=sql> | ||
+ | SELECT * FROM V$LOG; | ||
+ | </source> | ||
+ | => "sequence#"의 번호 "archive" 확인 | ||
+ | |||
+ | ==== 현재 파라미터 설정값 확인 ==== | ||
+ | <source lang=sql> | ||
+ | show parameter log_archive_dest | ||
+ | </source> | ||
+ | 현재 archive 저장 위치와 상태 확인. | ||
+ | log_archive_dest_state_1 확인 | ||
+ | |||
+ | ==== 여유공간 확보 및 장애조치 ==== | ||
+ | 파일을 삭제하는등의 조치를 취하여 여유공간을 확보. | ||
+ | |||
+ | ==== archiver 재시작 ==== | ||
+ | # DB를 끄지 않고 복구하는 방법 | ||
+ | # 운영중인 DB는 함부로 shutdown 할 수없기 때문에 이렇게 복구를 하도록 한다 | ||
+ | <source lang=sql> | ||
+ | alter system set log_archive_dest_state_1=defer; | ||
+ | alter system set log_archive_dest_state_1=enable; | ||
+ | alter system archive log stop; | ||
+ | alter system archive log start; | ||
+ | </source> | ||
+ | * 디렉토리가 삭제되었을때 디렉토리를 다시 생성하고 아래의 명령으로만 archiver 가 동작하는것은 확인 | ||
+ | <source lang=sql> | ||
+ | alter system set log_archive_dest_state_1=enable; | ||
+ | </source> | ||
+ | full 백업(권장) | ||
+ | |||
# OS명령어 사용 | # OS명령어 사용 | ||
72번째 줄: | 128번째 줄: | ||
RMAN> LIST ARCHIVELOG ALL; | RMAN> LIST ARCHIVELOG ALL; | ||
RMAN> DELETE ARCHIVELOG LIKE '%.arc'; | RMAN> DELETE ARCHIVELOG LIKE '%.arc'; | ||
− | + | </source> | |
+ | |||
+ | === 최근 3일전 아카이브로그 남겨두고 삭제 === | ||
+ | <source lang=sql> | ||
RMAN> delete archivelog all completed before 'sysdate -3'; | RMAN> delete archivelog all completed before 'sysdate -3'; | ||
+ | </source> | ||
+ | |||
+ | === 최근 3일전 까지만 남기고 이전 아카이브로그 삭제 === | ||
+ | <source lang=sql> | ||
+ | RMAN> delete noprompt archivelog until time 'sysdate-3' all; | ||
+ | </source> | ||
+ | === 3시간 이전에 백업 완료된 아카이브 로그 복사본 삭제 === | ||
+ | <source lang=sql> | ||
+ | RMAN> delete copy of archivelog all completed before sysdate-3/24 ; | ||
+ | </source> | ||
+ | |||
+ | === CROSSCHECK 명령에 의해 검색되어 추출된 만료 아카이브 로그 삭제 === | ||
+ | <source lang=sql> | ||
+ | RMAN> DELETE EXPIRED ARCHIVELOG ALL; | ||
+ | </source> | ||
+ | |||
+ | === 디스크에 2번 백업된 아카이브 로그 삭제 === | ||
+ | <source lang=sql> | ||
+ | RMAN> DELETE ARCHIVELOG ALL BACKED UP 2 TIMES to disk; | ||
+ | </source> | ||
+ | |||
+ | |||
+ | === 시퀀스 100 까지 삭제 === | ||
+ | <source lang=sql> | ||
+ | RMAN> DELETE NOPROMPT ARCHIVELOG UNTIL SEQUENCE = 100; | ||
</source> | </source> | ||
98번째 줄: | 182번째 줄: | ||
</source> | </source> | ||
* crontab 추가시 | * crontab 추가시 | ||
+ | <source lang=shell> | ||
00 22 * * * /u01/app/oracle/rman_arch_del.sh > /tmp/rmanarch.log | 00 22 * * * /u01/app/oracle/rman_arch_del.sh > /tmp/rmanarch.log | ||
+ | </source> | ||
[[Category:oracle]] | [[Category:oracle]] |
2024년 8월 30일 (금) 17:53 기준 최신판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
목차
1 아카이브 로그 사이즈 조회[편집]
- 최대 MAX 및 현재 아카이브로그 사이즈 조회
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
, CON_ID
FROM V$RECOVERY_FILE_DEST;
2 (현재)아카이브 로그 상태/시퀀스조회[편집]
- SQL*PLUS
$ sqlplus / as sysdba
SQL> archive log list;
또는
SELECT NAME,LOG_MODE,ARCHIVE_CHANGE#
FROM V$DATABASE;
3 아카이브 로그 파일위치[편집]
- - redo 로그 파일위치와 갯수
SQL> select * from v$logfile;
-- 또는
SQL> archive log list
- - 파일의 크기 및 어떤 파일이 사용되는지 확인
SQL> select group#, sequence#, bytes, members, status from v$log;
4 아카이브 로그 포맷 확인[편집]
SQL> show parameter log_archive_format
또는
SELECT NAME,VALUE
FROM V$PARAMETER
WHERE NAME LIKE '%log_archive_format%';
5 아카이브 로그 FULL 장애 조치[편집]
5.1 방법 1(RMAN이용 삭제)[편집]
5.1.1 db_recovery_file_dest_size 최대치 증가[편집]
- ORA-19809: limit exceeded for recovery files 오류 발생시
SQL> alter system set db_recovery_file_dest_size=100G;
5.1.2 파라미터 확인/ 변경[편집]
SQL> show parameter db_recovery_file_dest;
또는
SELECT NAME,VALUE
FROM V$PARAMETER
WHERE NAME LIKE '%db_recovery_file_dest%';
5.1.3 아카이브 로그 삭제[편집]
- RMAN 이용
-- 최근 3일치를 제외한 나머지 삭제
RMAN> connect target /
RMAN> LIST ARCHIVELOG ALL;
RMAN> delete archivelog all completed before 'sysdate -3';
-- 전체 삭제
RMAN> connect target /
-- RMAN 카탈로그 정보 정리
RMAN> crosscheck archivelog all;
RMAN> delete expired archivelog all; -- 전체 삭제
5.2 방법 2[편집]
5.2.1 alert log 확인 및 상태확인[편집]
{ORACLE_HOME}/admin/SID/bdump/alert_SID.log 을 확인 후 archiver 관련 에러를 찾을 수있다. 어떤 장애가 발생했을때 로그의 확인은 필수
5.2.3 현재 파라미터 설정값 확인[편집]
show parameter log_archive_dest
현재 archive 저장 위치와 상태 확인. log_archive_dest_state_1 확인
5.2.4 여유공간 확보 및 장애조치[편집]
파일을 삭제하는등의 조치를 취하여 여유공간을 확보.
5.2.5 archiver 재시작[편집]
- DB를 끄지 않고 복구하는 방법
- 운영중인 DB는 함부로 shutdown 할 수없기 때문에 이렇게 복구를 하도록 한다
alter system set log_archive_dest_state_1=defer;
alter system set log_archive_dest_state_1=enable;
alter system archive log stop;
alter system archive log start;
- 디렉토리가 삭제되었을때 디렉토리를 다시 생성하고 아래의 명령으로만 archiver 가 동작하는것은 확인
alter system set log_archive_dest_state_1=enable;
full 백업(권장)
- OS명령어 사용
6 RMAN 아카이브 로그 삭제[편집]
RMAN> LIST ARCHIVELOG LIKE '%.arc';
RMAN> LIST ARCHIVELOG ALL;
RMAN> DELETE ARCHIVELOG LIKE '%.arc';
6.1 최근 3일전 아카이브로그 남겨두고 삭제[편집]
RMAN> delete archivelog all completed before 'sysdate -3';
6.2 최근 3일전 까지만 남기고 이전 아카이브로그 삭제[편집]
RMAN> delete noprompt archivelog until time 'sysdate-3' all;
6.3 3시간 이전에 백업 완료된 아카이브 로그 복사본 삭제[편집]
RMAN> delete copy of archivelog all completed before sysdate-3/24 ;
6.4 CROSSCHECK 명령에 의해 검색되어 추출된 만료 아카이브 로그 삭제[편집]
RMAN> DELETE EXPIRED ARCHIVELOG ALL;
6.6 시퀀스 100 까지 삭제[편집]
RMAN> DELETE NOPROMPT ARCHIVELOG UNTIL SEQUENCE = 100;
7 RMAN 아카이브 로그 삭제 쉘 스크립트[편집]
rman_arch_del.sh
#!/bin/bash
export ORACLE_HOME=/oracle/app/oracle/product/12.2.0/db_home
export ORACLE_SID=ORCL
export PATH=$ORACLE_HOME/bin:$PATH
delBackup () {
rman log=/oracle/backup/arch_del.log << EOF
connect target /
DELETE noprompt ARCHIVELOG ALL COMPLETED BEFORE 'sysdate -3';
CROSSCHECK ARCHIVELOG ALL;
DELETE EXPIRED ARCHIVELOG ALL;
exit
EOF
}
#Main
delBackup
- crontab 추가시
00 22 * * * /u01/app/oracle/rman_arch_del.sh > /tmp/rmanarch.log