데이터베이스 연구실.log

백업 보존과 정리

REDUNDANCY와 RECOVERY WINDOW에 따른 백업 정리, KEEP 백업과 FRA 용량 및 RMAN 설정 관리

BACKUP OPTIMIZATIONRETENTION POLICYREDUNDANCYRECOVERY WINDOWREPORT OBSOLETEDELETE OBSOLETEKEEP FOREVERKEEP UNTIL TIMENOKEEPFRA

#핵심 요약

기본 보존 정책은 REDUNDANCY 1임
데이터 파일과 컨트롤 파일마다 전체 또는 레벨 0 백업을 몇 개 둘지 정하고, 넘치는 것은 obsolete가 됨

RECOVERY WINDOW OF n DAYS는 지금부터 n일 전 어느 시점으로든 복구할 수 있게 필요한 백업과 로그를 남김

RMAN은 obsolete 백업을 자동으로 지우지 않음
REPORT OBSOLETE로 보고 DELETE OBSOLETE로 지움

KEEP 백업은 보존 정책 계산에서 빠지는 보관용 백업임
KEEP FOREVER는 Recovery Catalog가 있어야 하고, FRA에는 KEEP 백업을 만들 수 없음

#개념과 동작 원리

Backup and Recovery Reference 19c (E96242-15), keepOption

정책 의미
REDUNDANCY n(기본 1) 데이터 파일, 컨트롤 파일별로 전체 또는 레벨 0 백업 n개를 둠
그 백업들을 복구하는 데 필요한 아카이브 로그와 증분 백업도 남김
RECOVERY WINDOW OF n DAYS 지금부터 가장 이른 복구 가능 시점까지의 일수
창 안에 드는 전체, 레벨 0 백업과, 창 안 임의 시점 복구에 필요한 로그와 레벨 1 백업을 남김
TO NONE 정책 해제
어떤 백업도 obsolete로 보지 않음
CLEAR 기본값 REDUNDANCY 1로 되돌림
NONE과 다름

정책을 해제한 상태에서 정책 옵션 없이 REPORT OBSOLETE, DELETE OBSOLETE를 실행하면 오류가 남

FRA를 쓰면서 정책을 해제하면 안 됨
obsolete가 되지 않은 파일은 다른 곳에 백업된 경우에만 FRA에서 지울 수 있기 때문임

#KEEP 백업

연말 결산, 감사 대응처럼 특정 시점 백업을 오래 보관해야 할 때 보존 정책을 따르지 않는 백업(Archival Backup)을 만듦
일반 백업은 시간이 지나면 obsolete가 되어 DELETE OBSOLETE로 지워지지만, KEEP 백업은 영구 보관(KEEP FOREVER)이나 지정 기간 보관(KEEP UNTIL TIME)으로 남음
이미 받은 백업은 CHANGE BACKUP ... KEEP ...으로 나중에 바꿀 수 있음

KEEP은 보존 정책에서 빠지는 보관용 백업임
복원과 일관된 상태까지의 복구에 필요한 파일을 모두 담음
데이터베이스가 열려 있으면 필요한 아카이브 로그를 자동으로 만들어 함께 백업함

FOREVER는 영원히 obsolete가 되지 않음
백업 기록이 결국 컨트롤 파일에서 밀려나므로 Recovery Catalog가 필요함
다른 KEEP 옵션은 카탈로그가 필요 없음

UNTIL TIME은 그 시각이 지나면 정책과 관계없이 obsolete가 됨
'SYSDATE+365' 같은 식도 쓸 수 있음

NOKEEP은 KEEP 속성을 없애 일반 백업으로 되돌림

FRA에 KEEP 백업을 만들려고 하면 오류가 남
KEEP은 여러 백업셋을 만들므로 FORMAT에 %U를 쓰는 것이 쉬움

PDB 백업은 local undo일 때만 자기 완결적임

#필수 명령어 또는 SQL

#정책 확인과 obsolete 보고, 삭제

RMAN조회만 함
SHOW ALL;
SHOW RETENTION POLICY;
REPORT OBSOLETE;
REPORT NEED BACKUP;

결과 해석:

실습 기록: 기본 상태에서 CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default가 보였음
설명: REDUNDANCY 1이면 각 데이터 파일의 가장 최근 백업 1개만 남기고, 그보다 오래된 백업과 그 백업에만 필요한 아카이브 로그가 모두 REPORT OBSOLETE에 나옴

RMAN객체 또는 설정을 변경함
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
CONFIGURE RETENTION POLICY CLEAR;
RMAN데이터 또는 파일을 삭제함, 되돌릴 수 없음
DELETE OBSOLETE;

결과 해석:

설명: REDUNDANCY 2에서 DELETE OBSOLETE를 실행하자 정책상 남길 2개를 빼고 모두 지워졌음

#태그 백업을 보존 정책에서 제외

RMAN객체 또는 설정을 변경함
BACKUP DATAFILE <FILE_NO> TAG 'df_keep' FORMAT '<BACKUP_DIR>/df_%U';
LIST BACKUP TAG 'df_keep';

CHANGE BACKUP TAG 'df_keep' KEEP FOREVER;
REPORT OBSOLETE;
LIST BACKUP TAG 'df_keep';

결과 해석:

실습 기록: KEEP FOREVER 뒤 그 백업은 REPORT OBSOLETE에서 사라지고, LIST BACKUP에 Keep: BACKUP_LOGS Until: FOREVER가 보였음
실습에서는 태그 백업을 /home/oracle/df4_%U로 만들었는데 출력의 조각 경로는 /home/oracle/archival/df4_...였음

RMAN객체 또는 설정을 변경함
CHANGE BACKUP TAG 'df_keep' NOKEEP;

결과 해석:

실습 기록: NOKEEP 뒤 Keep 줄이 사라지고 그 백업이 다시 obsolete 목록에 나왔음

#1년 보관용 전체 백업

RMAN객체 또는 설정을 변경함
BACKUP DATABASE TAG 'full_archival' FORMAT '<BACKUP_DIR>/full_%U' KEEP UNTIL TIME 'SYSDATE+365';
LIST BACKUP TAG 'full_archival';

결과 해석:

설명: FORMAT을 빼고 FRA에 만들려고 하면 KEEP 백업은 FRA에 둘 수 없다는 오류가 남
LIST BACKUP에 Until:로 1년 뒤 날짜가 보임

#FRA 용량과 정리 가능 비율

SQL*Plus (SYSDBA)조회만 함
SHOW PARAMETER db_recovery_file_dest
SELECT * FROM v$recovery_area_usage;
SQL*Plus (SYSDBA)객체 또는 설정을 변경함
ALTER SYSTEM SET db_recovery_file_dest_size = 20G;

결과 해석:

설명: FRA가 가득 차면 아카이브 로그를 만들 수 없어 데이터베이스가 멈출 수 있음
V$RECOVERY_AREA_USAGE.PERCENT_RECLAIMABLE은 obsolete라서 Oracle이 지울 수 있는 비율임

#RMAN 설정 전체를 기본값으로

RMAN객체 또는 설정을 변경함
CONFIGURE RETENTION POLICY CLEAR;
CONFIGURE BACKUP OPTIMIZATION CLEAR;
CONFIGURE CONTROLFILE AUTOBACKUP CLEAR;
CONFIGURE DEVICE TYPE DISK CLEAR;
CONFIGURE CHANNEL DEVICE TYPE DISK CLEAR;
SHOW ALL;

결과 해석:

실습에서는 15개 항목을 각각 CLEAR로 되돌리고 SHOW ALL에서 모든 줄에 # default가 붙었는지 확인했음
위 블록은 그중 일부임
병렬도와 백업 형식은 CONFIGURE DEVICE TYPE DISK CLEAR 한 줄로 되돌림

#백업 최적화

RMAN객체 또는 설정을 변경함
CONFIGURE BACKUP OPTIMIZATION ON;

결과 해석:

OFF(기본값): 같은 파일이라도 매번 백업함

ON: 같은 내용의 백업이 이미 있는 파일(이미 백업한 아카이브 로그, 읽기 전용 테이블스페이스 등)은 건너뛰어 시간과 공간을 아낌
보존 정책에 필요한 개수는 지키면서 건너뜀

REDUNDANCY와 RECOVERY WINDOW는 동시에 쓸 수 없고 마지막에 설정한 것이 적용됨
기본값은 REDUNDANCY 1이며 수업 자료는 운영에서 2 이상을 권함

#사용 조건과 주의사항

DELETE OBSOLETE는 백업 파일을 실제로 지움
실행 전에 REPORT OBSOLETE로 대상을 확인함

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

마지막 갱신 개인 학습 기록이며 운영 환경 적용 전 공식 문서 확인 필요

두 글자 이상 입력, 위아래 화살표로 이동하고 Enter로 열기