(RMAN) 압축하면서 백업 수행하기(10g, 11g 공통)
Oracle/Backup & Recovery
Oracle 10g RMAN 부터 백업을 수행할 때 압축을 할 수 있다
RMAN에서 지원하는 압축은 기본값은 BZip2 이고 ZLIB 는 옵션으로 선택할 수 있고,
BZip2 방법은 압축 효율은 가장 좋지만 , CPU 부하가 많이 걸릴수 있고 속도 느리다.
그래서 11g R1부터는 Zlib 압축이 추가가 되었는데 CPU 부하는 적고 속도는 빠르지만 압축
효율이 Bzip2 에 비해 상대적으로 좋지 못하다.

ZLIB을 사용하려면 11g 이상 Advanced Compression Option 이 설치되어야 함.
아래 실습은 전, 후 용량 비교와 RMAN의 기본압축인 BZIP2방식을 이용해서 실습하겠음.

1) 압축하지 않고 기본 모드로 전체 Database 백업 수행
RMAN > backup database format '/data/backup/rman/%T_full_%U' ;
2) 압축 하면서 전체 database 백업 수행
RMAN > backup as compressed backupset database
2> format '/data/backup/rman/%T_full_comp_%U' ;
3) 압축하면서 전체 Archive log file 백업
RMAN > backup as compressed backupset archivelog all
2> format '/data/backup/rman/%U_%T';

그 외 각종 백업 옵션들
1) keep - backup 수행 시 bacjupset 보존기간 설정하기
RMAN> backup as compressed backupset tablespace example
2> format '/data/backup/rman/%U_%T'
3> keep until time 'sysdate+90' ;
2) not backuped up - 백업 안된 데이터파일만 골라서 백업
이 옵션은 특정 시점 이후 추가된 테이블 스페이스나 데이터 파일이 있을 경우
그 부분만 백업을 수행하는 기능입니다. 실습을 위해서 전체 백업을 수행 후
테이블 스페이스의 데이터 파일을 추가 한 후 이 옵션을 사용하여 백업을 수행하겠다.
[oracle@localhost ~]$ rman target sys/oracle

RMAN > backup as compressed backupset database
2> format '/data/backup/rman/%U_%T';

Starting backup at 02-DEC-13
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=40 device type=DISK
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/app/oracle/oradata/testdb/system01.dbf
input datafile file number=00002 name=/app/oracle/oradata/testdb/sysaux01.dbf
input datafile file number=00005 name=/app/oracle/oradata/testdb/example01.dbf
input datafile file number=00004 name=/app/oracle/oradata/testdb/users01.dbf
input datafile file number=00003 name=/app/oracle/oradata/testdb/undotbs01.dbf
( 이하 내용은 생략합니다 )
위와 같이 5개의 데이터 파일을 백업 수행했다.
그 후에 아래와 같이 test tablespace 를 신규로 생성하고
users tablespace 에 users02.dbf 를 추가 하고 기존에 존재하던 example Tablespace 에
테스트용 테이블 tt500 을 생성하고 데이터를 100 건 추가해서 내용을 변경했습니다.
RMAN> exit

Recovery Manager complete.
[oracle@localhost ~]$ sqlplus sys/oracle as sysdba
SQL*Plus: Release 11.2.0.2.0 Production on Mon Dec 2 02:57:00 2013
Copyright (c) 1982, 2010, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SYS>create tablespace test
2 datafile '/app/oracle/oradata/testdb/test001.dbf' size 10M;

Tablespace created.

SYS>alter tablespace users add datafile
2 '/app/oracle/oradata/testdb/users02.dbf' size 5M;

Tablespace altered.

SYS>create table tt500 (no number) tablespace example;

Table created.

SYS>begin
2 for i in 1..100 loop
3 insert into tt500 values (i);
4 end loop;
5 commit;
6 end;
7 /
PL/SQL procedure successfully completed.
그 후 위 옵션을 사용하여 추가된 데이터 파일만 백업 하겠다.
SYS>exit

[oracle@localhost ~]$ rman target sys/oracle

RMAN> backup as compressed backupset database
2> format '/data/backup/rman/%U_%T'
3> not backed up ;

Starting backup at 02-DEC-13
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=46 device type=DISK
skipping datafile 1; already backed up on 02-DEC-13
skipping datafile 2; already backed up on 02-DEC-13
skipping datafile 3; already backed up on 02-DEC-13
skipping datafile 4; already backed up on 02-DEC-13
skipping datafile 5; already backed up on 02-DEC-13
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00006 name=/app/oracle/oradata/testdb/test001.dbf
input datafile file number=00007 name=/app/oracle/oradata/testdb/users02.dbf
channel ORA_DISK_1: starting piece 1 at 02-DEC-13
channel ORA_DISK_1: finished piece 1 at 02-DEC-13
piece handle=/data/backup/rman/0moqfidj_1_1_20131202 tag=TAG20131202T030211
comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 02-DEC-13
위와 같이 마지막 백업 후 데이터 파일이 추가된 부분만 백업이 수행됨을 확인 할 수 있다.
즉 example Tablespace 와 같이 파일 추가 없이 내용만 변경된 것은 이 방법으로 백업 안됨.
만약 기준일을 주고 싶으면 (예를 들어 오늘을 기준으로 최근 5일 이내 추가된 파일) 아래와 같이 since 옵션을 사용하면 된다.
RMAN> backup as compressed backupset database
2> format '/data/backup/rman/%U_%T'
3> not backed up since time='sysdate - 5' ;

3) RMAN 백업 작업 진행사항 확인하기
RMAN 작업을 하다 보면 얼마나 진행되었고 얼마나 남았는지 궁금할 경우가 있다.
이럴 때는 아래의 방법으로 조회하면 결과를 알 수 있음
SYS> SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK,
2 ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE"
3 FROM V$SESSION_LONGOPS
4 WHERE OPNAME LIKE 'RMAN%'
5 AND OPNAME NOT LIKE '%aggregate%'
6 AND TOTALWORK != 0
7 AND SOFAR <> TOTALWORK ;
SID SERIAL# CONTEXT SOFAR TOTALWORK %_COMPLETE
---------- ---------- -------------- ------------- --------------- -----------------
15 18683 1 57530 202640 28.39
SYS> /
SID SERIAL# CONTEXT SOFAR TOTALWORK %_COMPLETE
---------- ---------- ------------- ------------- --------------- ------------------
15 18683 1 64890 202640 32.02
…  …   …   …   …   …   …   …   …   …   …   …   … ..
SYS> /
no rows selected <- 작업이 완료되면 이렇게 나옴

'Oracle > Backup & Recovery' 카테고리의 다른 글

RMAN 임시경로에서 복구하기  (0) 2014.11.14
RMAN으로 복구 하기  (0) 2014.11.14
RMAN 증분백업(incremental backup)  (0) 2014.11.13
RMAN backup 종류  (0) 2014.11.13
RMAN (Recovery manager) channel 설정  (0) 2014.11.13