Incremental Backup

BUMSOO·2024년 9월 24일

Backup & Recovery

목록 보기
16/18

RMAN 백업유형

  • FULL BACKUP은 사용된 모든 데이터 파일의 블록을 포함해서 백업을 수행한다.

    • 레벨 0 Incremental backup은 full backup과 동일하다.
  • Differential Incremental backup

    • 레벨 n이하의 최근 백업이후에 변경된 모든 블록의 레벨 n의 백업이다.
    • ex) 레벨 1 incremental 백업은 마지막 incremental 백업 이후 수정한 블록만 포함해서 백업 수행
  • Cumulative incremental backup

    • 레벨 n-1 이후의 이전 백업 이후에 변경된 모든 블록을 포함하는 백업
  • 예1) differential incremental

# 레벨 0에서 incremental(full backup) 
매주 일요일에는 레벨 0백업을 수행한다.
backup incremental level 0 database;

수요일을 제외한 다른 요일에는 incremental 2 레벨 백업을 수행한다.
backup incremental level 2 database;

수요일에는 일요일 이후에 변경된 모든 블록을 백업 수행한다.
backup incremental level 1 database;
02212220
  • 예2) cumulative incremental
화요일과 금요일은 누적 증분 백업수행
backup incremental level 2 cumulative database;
022C122C20

Block Change Tracking

  • 변경사항 추적 파일에 변경된 블록의 주소를 기록,CTWR(백그라운드 프로세스)

  • 활성화된 경우 RMAN에 의해 자동으로 사용된다.

  • 백업중에 데이터 파일을 전체 스캔하지 않도록 incremental 백업 최적화
    alter database enable block change tracking using file '/home/oracle/backup/rman/block_tracking.txt';

  • db_create_file_dest 파라미터를 설정한 경우 블록 변경사항 추적 파일의 이름을 지정할 필요가 없다. OMF(Oracle Managed File)방식으로 생성된다.

    • 활성화
      alter database enable block change tracking;

    • 비활성화
      alter database disable block change tracking;

    • 활성화 여부 확인
      select status,filename,bytes/1024/1024 mb from v$block_change_tracking;

Incremental backup;

  1. 변경사항 추적 파일 활성화 하기
    alter database enable block change tracking;

  2. incremental full backup 받기
    backup incremental level 0 database;
    - 백업셋의 Type이 FULL로 되어있으면 incremental backup에는 사용할 수 없다.
    - incremental로 백업받게 되면 Type은 Incr이고 level이 0은 full backup이다.

    - 특정한 백업셋번호를 이용해서 삭제
    delete backupset 3,4;

  3. v$backup_datafile 뷰를 통해서도 incremental backup 받은걸 확인할 수 있다.

 select file#,incremental_level, completion_time, blocks, datafile_blocks, used_change_tracking 
 from v$backup_datafile;

  1. 새로운 테이블 생성 후 dml 작업도 수행
create table hr.inc_emp tablespace example as select * from hr.employees;
insert into hr.inc_emp select * from hr.inc_emp;
  1. level 0 백업 이후의 변경내용을 incremental 백업 받는다.
    backup incremental level 1 database;

  2. v$backup_datafile 뷰를 통해서도 확인

select file#,incremental_level, completion_time, blocks, datafile_blocks, used_change_tracking 
from v$backup_datafile;

  1. DB 내린 후 example 데이터파일 삭제로 장애유발

  2. rman통해 incremental 레벨로 받은 백업본을 이용해서 복구를 진행할때 처음 restore 할때는 0 level로 되어있는 full backup본만 먼저 restore 한뒤 recover 시에 그 후 level의 백업본을 restore 한뒤 redo를 적용해서 recover을 진행한다.

  1. 후에 change block tracking을 비활성화 할때
    alter database disable block change tracking;

  2. 비활성화 확인
    select status,filename,bytes/1024/1024 mb from v$block_change_tracking;

Incremental updated backup(image copy backup)

1) 직접 설정
alter database enable block change tracking using file '/home/oracle/backup/rman/block_tracking.txt';

2) OMF(Oracle Managed File)
show parameter db_create_file_dest

alter system set db_create_file_dest='/home/oracle/backup/rman/';

  • 변경사항 추적 파일 활성화(OMF)
    alter database enable block change tracking;

  • 활성화 확인
    select * from v$block_change_tracking;

  1. image copy를 이용해서 incremental backup level 0 수행
run {
	allocate channel ch1 device type disk format '/home/oracle/backup/rman/incr/%U';
    
    backup as copy tag 'base01' incremental level 0 database;
   	backup as copy current controlfile;
    }
 
 list copy;


- list copy에서는 incremental level을 확일 할 방법은 없기 때문에 copy본을 생성할때 tag의 이름을 명확하게 주어 구별할 수 있게 해야한다.

  • tag 를 기준으로 image copy 삭제
    delete copy tag=BASE01;
  1. 신규 테이블생성 후 dml 작업

  2. level 0 이후의 변경사항에 대해 level 1로 백업을 받지만 copy로는 못받고 backup set으로만 받을 수 있다.

run {
	allocate channel ch1 device type disk format '/home/oracle/backup/rman/incr/%U';
    
    backup tag 'incr_update' incremental level 1 database;
   	backup as copy current controlfile;
    }

  1. updated incremental backup
  • 0 level 백업에 1 level 백업을 적용한다.
run {
	allocate channel ch1 device type disk format '/home/oracle/backup/rman/incr/%U';
    
    recover copy of database with tag 'base01';
    }

  1. list copy 확인

결론은 image copy로는 level 0 이외에는 생성할 수 없고 backupset 으로 level n단계 백업을 생성 후 level 0의 image copy에 추가해주는 방식(그걸 rman에서는 recover 하는걸로 생각하나보다)으로 적용을 해야한다.

0개의 댓글