행위

"오라클 rman 개요"의 두 판 사이의 차이

DB CAFE

(예제 6. 차등 증분 백업 실습)
(예제 6. 차등 증분 백업 실습)
345번째 줄: 345번째 줄:
 
   7    }
 
   7    }
 
</source>
 
</source>
 +
  
 
* level 3 으로 users tablespace 만 차등 증분 백업 받기
 
* level 3 으로 users tablespace 만 차등 증분 백업 받기

2023년 8월 5일 (토) 00:25 판

thumb_up 추천메뉴 바로가기


1 RMAN[편집]

android * RMAN ( Recovery Manager ) : 백업과 복구를 위한 전용 유틸리티

  • 관리자가 RMAN 에게 명령하면 RMAN 이 알아서 백업/복구 실행
  • 증분블럭백업가능 ; 과거에 백업받은 자료를 비교해서 그 이후에 추가된 자료만 백업(저장공간 대폭감소)
  • 백업시 자료가 있는 블록만 백업
    • (datafile size 가 전체 5G 라도 사용하는 블럭만 백업하여 공간 절약


rmancoa5.gif

1.1 RMAN 의 주요특징[편집]

android # 자주 실행하는 작업을 스크립트로 저장 : RMAN Recover Catalog Server를 사용할 경우 자주 사용하는 백업 명령어들을 스크립트로 저장한 후 불러서 사용할 수 있음

  1. 증분 블록 레벨 백업 기능 지원 : 과거 백업 받은 내역을 조사해서 그 기준 백업 이후에 변경된 블록만 찾아서 백업 수행 가능
    예 ) 기존 100M 파일에서 10M 만 변경되도 100M 를 백업받아야 하지만 RMAN 은 변경된 10M 만 백업 가능
  2. 사용되지 않은 블록 건너뛰고 백업 수행 : 총 100M 을 백업 받는다고 사용안한 블록은 건너뛰고 현재 사용중인 블록만 찾아서 백업
  3. 백업 수행 중 훼손된 블록 감지 : 백업 수행중 훼손된 블록을 감지해서 마킹해두고 계속 백업 수행
  4. ASM 기반 유일한 백업 도구 : ASM 기반으로 Storage 를 관리하는 경우는 RMAN외 백업할수 있는 방법이 없음
  5. 백업 수행시 압축 지원 : RMAN으로 백업을 진행하면서 동시에 압축까지 가능, 이때 압축으로 인한 자원 손실등이 거의 없음


1.2 RMAN 구성도[편집]

Oracle_rman_channel_allocation.jpg

1.3 RMAN 이용 백업 / 복구 순서[편집]

android # 관리자가 RMAN 유틸리티에게 백업 / 복구 명령

  1. RMAN 은 관리자를 대신해 대상 서버(target database) 에 접속하여 백업 / 복구를 수행
  2. Recover Catalog Server 가 있으면 백업 관련 정보를 Catalog Database 에 기록, 없다면 Target Database 의 Controlfile 에기록
  • RMAN 은 기본적으로 PGA 사용, PGA 공간이 부족할 경우 SGA를 사용하여 백업을 수행


1.4 채널 설정하기[편집]

  1. Channel = 백업/복구 하는 경로 백업시 반드시 channel 을 할당 해주어야 한다.

1.4.1 자동 Channel 설정[편집]

[oracle@localhost~]$ rman target / catalog rcuser/rcuser@rcserver  ( 복구 카탈로그 서버 사용시 )

or

[oracle@localhost~]$ rman target sys/oracle ( 복구 카탈로그 서버 사용 안할 경우 )
RMAN> configure default device type to disk ;     <-- 자동 채널 설정 명령어

-> 이렇게 하면 default device 가 파라미터 파일의 db_recovery_file_dest 파라미터 경로로 설정 됨

or

RMAN> configure channel device type disk
   2    format '/data/backup/rman/%U_%T' ;                <-- /data/backup/rman 디렉토리에 백업파일이 생성됨

1.4.2 수동 Channel 설정[편집]

  1. 백업을 수행할 때 백업 받을 경로를 직접 지정
RMAN> backup tablespace example format '/data/backup/open/%U_%T' ;

1.5 RMAN 백업 종류[편집]

  1. backupset 으로 백업 수행 ( default )
    1. Backupset = RMAN이 백업파일을 만들 때 RMAN 만이 알 수 있는 형태로 백업파일을 생성하는데 이것을 backupset 이라함
    2. Backuppiece = backupset 의 크기가 너무 클 경우 분할해서 여러 개의 파일로 나누어 백업 받는데 분할되는 하나의 백업파일을 backuppiece 라 한다.
  2. Image copy로 백업 수행 ( begin backup 과 비슷한 개념, 백업보다 카피에 많이 사용 )
RMAN> copy
      datafile '/app/oracle/oradata/testdb/example01.dbf'
      to '/data/backup/rman/example01.dbf.bak' ;

1.6 RMAN 백업시 주의사항[편집]

  1. open 상태에서 백업을 받으려면 DB가 archive log mode 로 운영되어야 한다.
  2. DB가 마운트 또는 오픈상태여야 한다.
  3. 운영중인 온라인 리두로그 파일은 백업이 불가
  4. no archive log mode 에서는 Clean 백업만 사용가능
    1. Clean 백업이란 오프라인 테이블스페이스나 읽기전용 테이블스페이스 백업을 의미
  5. RMAN 으로 백업을 수행하는 것은 Begin backup시의 조건들과 동일해야 함

1.7 RMAN 명령어 종류[편집]

1.7.1 독립형 명령[편집]

  1. RMAN> prompt 에 1개의 명령어만 들어가는 방식
RMAN> backup tablespace example ;

1.7.2 작업형 명령[편집]

  1. 프로그램의 스크립트처럼 여러 개의 명령어를 한꺼번에 사용할 수 있는 방법
RMAN> run {
       allocate channel ch1 type disk maxpiecesize 10m ;
       allocate channel ch2 type disk maxpiecesize 50m ;
       backup
       tablespace users channel ch1
       format '/data/backup/close/%T_users.bak' ;
       tablespace example channel ch2
       format '/data/backup/close/%T_example.bak' ;
       }
connect target "/"

run {
    allocate channel c1 device type disk format '+RECO/BACKUP/RTISP/%d_%U';
    configure controlfile autobackup on;
    set controlfile autobackup format for device type disk to '+RECO/BACKUP/RTISP/ctl.%d.%F';
    backup channel c1 database plus archivelog delete all input;
}

list backup;

list backup summary;
LIST BACKUP OF DATABASE;
LIST BACKUP OF TABLESPACE TS_...;
LIST BACKUPSET OF DATAFILE 1;
LIST COPY OF DATAFILE 1, 2;

LIST BACKUP COMPLETED AFTER/BEFORE/BETWEEN '2014-01-15' AND '2014-01-16';
LIST BACKUP SUMMARY COMPLETED AFTER  "TO_DATE('2014-01-16','YYYY-MM-DD')";

list backup of archivelog all summary;
LIST BACKUP OF ARCHIVELOG ALL;
LIST BACKUP OF ARCHIVELOG like '+RECO/...%';
LIST BACKUP OF ARCHIVELOG FROM SEQUENCE 10;
LIST BACKUP OF ARCHIVELOG FROM TIME 'SYSDATE - 7';

1.7.3 증분 백업[편집]

이전에 백업받았던 백업파일과 비교해서 변경된 부분만 골라서 백업을 수행

1399363524_51.jpg

1.7.4 차등 증분 백업[편집]

백업 받을 때 설정했던 숫자가 자기보다 작거나 같으면 그시점부터 지금까지 모든 데이터를 백업
RMAN> run {
   2    allocate channel c1 type disk ;
   3    backup
   4    incremental level 0       <-- 차등 증분 백업을 의미
   5    database
   6    format '/data/backup/rman/%U_%T' ;
   7    }

1.7.5 누적 증분 백업[편집]

백업 받을 때 설정했던 숫자가 자기보다 작을경우 그 시점부터 지금까지 모든 데이터를 백업
RMAN> run {
   2    allocate channel c2 type disk ;
   3    backup
   4    incremental level 3 cumulative       <-- 누적 증분 백업을 의미
   5    tablespace example ;
   6    }
  • Block change tracking : 데이터 블록들의 변경된 블록만 추적하는 기능

1.7.6 압축하면서 백업 수행[편집]

RMAN> backup as compressed backupset database
   2    format '/data/backup/rman/%T_%U' ;

1.7.7 압축하면서 전체 archive log file 백업[편집]

RMAN> backup s compressed backupset archivelog all
   2    format '/data/backup/rman/%U_%T' ;

1.7.8 RMAN-06059, ORA-19625 - RMAN 백업시 archivelog 경로가 변경 되었을 경우[편집]

오라클의 fast recovery area를 disable 하고 archive log 모드에서 기본 경로가 아닌 다른 directory에 archive log를 저장할 경우 RMAN을 이용한 백업 시 archive log 파일을 못찾는 에러가 발생함.

1.7.8.1 에러 예제[편집]

RMAN> backup archivelog all ;

Starting backup at 14-OCT-14
current log archived
using channel ORA_DISK_1

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup command at 10/14/2014 01:12:43
RMAN-06059: expected archived log not found, loss of archived log compromises recoverability
ORA-19625: error identifying file /u01/oracle/product/flash_recovery_area/INNIDB/archivelog/2014_10_01/o1_mf_1_21_b2qyqgpg_.arc
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

1.7.8.2 해결 방법[편집]

RMAN> change archivelog all crosscheck ;
    • 주의

위와 같은 방법으로 설정을 한다면 백업 시 backupset이 저장되는 디렉토리는 $ORACLE_HOME/dbs에 저장

1.7.9 MultiSection Backup[편집]

하나의 파일이 아주 클 경우 여러 개의 프로세스가 동시에 다른 백업 셋을 생성해서 백업을 받을 수 있음
RMAN> backup as compressed backupset
   2    section size 100m
   3    format '/data/backup/rman/%U_%T'
   4    datafile 1 ;

1.7.10 이외 옵션들[편집]

1.7.10.1 keep - backup 수행시 backupset 보존기간 설정[편집]

RMAN> backup as compressed backupset tablespace example
   2    format '/data/backup/rman/%U_%T'
   3    keep until time 'sysdate +90' ;         <-- 보존기간을 90일로

1.7.10.2 Not backed up[편집]

- 백업 안 된 데이터파일만 골라서 백업하기 - 기준일을 주고 싶으면 since time=sysdate -5 이런식으로 오늘 기준으로 최근 5일이내 추가된 파일을 백업

1.7.11 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 ;

1.8 주요 백업 예제[편집]

1.8.1 예제 1. 전체 데이터 베이스를 백업[편집]

1.8.2 독립형[편집]

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

1.8.3 작업형[편집]

RMAN> run {
   2    allocate channel ch1 device type disk 
   3    format '/data/backup/rman/%U_%T' ;
   4    backup as compressed backupset database ;
   5    }

1.8.4 예제 2. Channel 3개를 할당해서 example, users, system, control file 을 백업[편집]

RMAN> run {
   2    allocate channel ch1 device type disk ;
   3    allocate channel ch2 device type disk ;
   4    allocate channel ch3 device type disk ;
   5    backup as compressed backupset
   6    tablespace example, users, system ;
   7    include current controlfile ;
   8    }


1.8.5 예제 3. 전체 데이터 파일의 위치를 확인 한 후 파일 번호로 백업수행[편집]

RMAN> report schema ;

Report of database schema for database with db_unique_name TESTDB
List of Permanent Datafiles
;===========================

File Size(MB) Tablespace           RB segs Datafile Name

---- -------- -------------------- ------- ------------------------

1    760      SYSTEM               ***     /data/temp7/system01.dbf
2    560      SYSAUX               ***     /data/temp7/sysaux01.dbf
3    2865     UNDOTBS1             ***     /data/temp7/undotbs01.dbf
4    201      USERS                ***     /data/temp7/users01.dbf
5    345      EXAMPLE              ***     /data/temp7/example01.dbf
6    5        TS_FDA01             ***     /data/temp7/ts_fda01.dbf
7    0        UNDO_FDA             ***     /data/temp7/undo_fda01.dbf
List of Temporary Files

:=======================

File Size(MB) Tablespace           Maxsize(MB) Tempfile Name

---- -------- -------------------- ----------- --------------------

1    400      TEMP01               32767       /data/temp7/temp01.dbf
RMAN> run {
   2    allocate channel c1 type disk ;
   3    backup as compressed backupset datafile 1,2 ;         <-- SYSTEM, SYSAUX 가 백업됨
   4    }

예제 4. 현재 사용 중인 Control file 만 백업

RMAN> run {
   2    allocate channel c1 type disk ;
   3    backup current controlfile ; }

1.8.6 예제 5. 아래 조건으로 RMAN 백업[편집]

  • RMAN 을 사용하여 sysaux, example, users 테이블 스페이스를 백업
  • 백업경로
    • sysaux -> /data/backup/open/
    • example -> /data/backup/rman/
    • users -> /data/backup/close/
  • 작업형 명령어 사용
  • channel 은 3개로 병렬작업
  • 각 channel 하나당 크기가 최대 10m 이넘지 않도록 설정
RMAN> run {
allocate channel ch1 type disk maxpicesize 10m;
allocate channel ch2 type disk maxpicesize 10m;
allocate channel ch3 type disk maxpicesize 10m;
backup compressed backupset 
tablespace sysaux channel ch1
format '/data/backup/open/%U_%T' ;
tablespace example channel ch2
format '/data/backup/rman/%U_%T' ;

tablespace users channel ch3
format '/data/backup/close/%U_%T' ;
}

1.8.7 예제 6. 차등 증분 백업 실습[편집]

  • level 0 으로 데이터베이스 전체 백업받기
RMAN> run {
   2    allocate channel c1 type disk ;
   3    backup
   4    incremental level 0       
   5    database
   6    format '/data/backup/rman/%U_%T' ;
   7    }


  • level 3 으로 users tablespace 만 차등 증분 백업 받기
RMAN> run {
   2    allocate channel c2 type disk ;
   3    backup as compressed backupset
   4    incremental level 3       
   5    tablespace users ;
   6    }

1.8.8 예제 7. 누적 증분 백업하기[편집]

RMAN> run {
   2    allocate channel c2 type disk ;
   3    backup as compressed backupset
   4    incremental level 3 cumulative 
   5    tablespace example ;
   6    }

1.8.9 예제 8. 전체 데이터베이스를 백업하면서 Archive log file 함께 백업하기[편집]

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

1.8.10 예제 9. Archive log file 만 백업하기[편집]

RMAN> backup as compressed backupset archivelog all ;