Oracle/RMAN

백업&복구 17번째 RMAN ; RMAN 환경설정, 증분백업, 백업과 관련된 여러가지 내용

에몽이ㅋ 2012. 2. 26. 16:52
RMAN 백업은 begin bakcup와 같이 DB를 켜놓고 하는 작업이기떄문에,
Archivelog모드이여야 합니다.

RMAN 현재 환경설정 값보기

show all;
RMAN> show all;

RMAN configuration parameters for database with db_unique_name TESTDB are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT   '/app/rman/%U_%T.rman';
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/app/oracle/product/11g/dbs/snapcf_testdb.f'; # default


백업 시 어느 경로에 파일을 저장할 지, 어떤 형식으로 저장할 지 지정하기
RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT   '/app/rman/%U_%T.rman';
(%U : unique한 번호생성, %T : 파일번호)

백업 시 여러개의 채널을 생성해서 병렬적으로 백업할지 지정
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 숫자 BACKUP TYPE TO BACKUPSET;

 
증분백업(Incremental Backup)
; 이전에 백업받은 파일을 참조해서 변경된 부분만 골라서 백업받는 기능입니다.

두가지 증분백업
1. 차등증분백업

; 백업받을때 설정했던 숫자가 자기보다 작거나 같으면, 작거나 같은 그 시점부터 현재까지 모든 변경된 데이터를 백업받는 것
2. 누적증분백업
; 백업받을때 설정했던 숫자가 자기보다 작으면, 숫자가 작은 그 시점부터 현재까지 모든 변경된 데이터를 백업받는 것 

( 출저 :  http://dinggur.tistory.com/183 )

시나리오
월요일은 DB full backup
화요일은 users tablespace의 월요일 ~ 화요일까지의 변경된 내용만 백업
수요일은 example tablespace의 월요일 ~ 수요일까지의 변경된 내용만 백업
목요일은 full backup인데 최근의 백업으로부터 현재까지 변경된 내용만 백업
금요일은 test tablespace 월요일 ~ 금요일까지의 변경된 내용만 백업
토요일은 DB full backup인데 월요일 ~ 토요일까지 변경된 내용만 백업

차등증분백업 (incremental level x 옵션)
월   backup incremental level 0 database;
화   backup incremental level 3 tablespace users;
수   backup incremental level 3 tablespace example; 
목   backup incremental level 3 database;
금   backup incremental level 2 tablespace test; (level 3이면 목요일로부터의 변경사항만 백업)
토   backup incremental level 1 database; (level 0 해도 똑같음)

누적증분백업 (incremental level x cumulative 옵션)
월   backup incremental level 0 cumulative database;
화   backup incremental level 3 cumulative tablespace users;
수   backup incremental level 3 cumulative tablespace example;  
목   backup incremental level 4 cumulative database; (level 3이면 월요일로부터 현재까지 변경된 내용을 백업)
금   backup incremental level 2 cumulative tablespace test; (level 3, 4모두 동일)
토   backup incremental level 1 cumulative database; (level 2해도 동일, 금요일에 level에 따라 3,4도 동일할 수 있음) 

* 위와 같이 원하는 자료만 골라서 매일 매일 다르게 백업을 받을 수 있습니다.
시나리오를 잘 짜서 수행하시면 됩니다.



Multisection Backup(11g)
; 채널을 여러개 할당해서 병렬적으로 작업한다고 해도, 각각 채널이 tablespace별로 분할받기 떄문에
한 tablespace가 엄청나게 커버리면 병렬로 작업한다고 해도 시간단축의 의미가 별로 없습니다.

그래서 한 tablespace를 여러채널이 붙어서 작업하는 기능입니다.
옵션 : section size 300M   <--- 300M가 넘는 tablespace는 여러개의 채널이 분할백업받는다는 의미입니다.

RMAN > backup as compressed backupset
section size 300M
database; (tablespace, datafile 가능, oracle이 쭉 백업하다가 300M가 넘는 파일을 발견하면 바로 채널을 생성해서 달라붙습니다.)


백업 중 작업진행사항 확인하는 쿼리
select sid, serial#, context, sofar, totalwork,
round(sofar/totalwork*100,2) "%_complete"
from v$session_longops
where opname like 'RMAN%'
and opname not like '%aggregate%'
and totalwork <> 0
and sofar <> totalwork;