본문 바로가기
Dev/Oracle

[Oracle] RMAN Backup

by 흰바다제비 2022. 6. 17.
728x90

RECOVERY MANAGER (RMAN)

: 오라클에서 제공하는 백업 및 복구 작업을 수행하고, 백업 전략 관리를 자동화하는 솔루션

 

RMAN은 기본적으로 PGA를 사용하고, PGA 공간이 부족할 경우 SGA를 사용하여 백업을 수행한다.

 
  • 특징 :
  • 증분 레벨 (INCREMENTAL LEVEL) 백업 기능 지원
  • BLOCK CHANGE TRACKING 기능
  • 백업 수행 중 훼손된 블록 감지
  • 자주 실행하는 작업을 스크립트로 저장 가능
  • 사용 중인 블록만 백업
  • 백업 수행시 압축 지원

 

  • 제한 사항 :
    • OPEN 상태에서 백업을 받으려면 DB가 ARCHIVE LOG MODE 이어야 한다.
    • DB가 MOUNT 또는 OPEN 상태여야 한다.

 

  • 백업 가능 대상
    • DATABASE
    • TABLESPACE
    • DATAFILE
    • ARCHIVED REDO LOG
    • CONTROL FILE

+) ONLINE REDO LOG에 대해서는 백업하지 못하므로 ARCHIVE화 해서 백업을 한다.

 

 


 

  • RMAN 백업 종류

1. BACKUP SET으로 백업 수행 (DEFALUT)

: RMAN이 백업 파일을 만들 때 RMAN만이 알 수 있는 형태로 백업 파일을 만든다.

+ ) BACKUP PIECE : BACKUP SET의 용량이 너무 크면 분할해서 여러 개의 파일로 백업받을 수 있는데,

분할되는 하나의 백업 파일을 BACKUP PIECE라고 한다.

 

– 블록 압축 :

RMAN은 백업 시 불필요한 데이터 블록들을 백업 대상에서 제외시키는 블록 압축을 수행하여, 백업 파일의 용량을 감소시킨다. RMAN은 BACKUP SETS를 생성할 때 두 타입의 블록 압축을 사용한다.

  • 널 블록 압축 :
    • 데이터가 저장된 적이 없는 블록을 제외하고 백업
  • 미사용 블록 압축 :
    • 데이터가 저장된 적이 있지만 백업 시점에는 오브젝트가 할당되어 있지 않은 블록을 제외하고 백업
    • 이 방법으로 수행하기 위해서는 테이블 스페이스를 지역 관리 테이블 스페이스로 생성해야 한다.


2. IMAGE COPY로 백업 수행

: begin backup과 비슷한 개념

사용중인 블록만 백업 받기, 증분 백업 받기 불가

 

 

  • 증분 백업 :
    • 이전 백업 이후에 변경된 블록들만 백업

(사용자 백업에 비해 적은 용량의 백업 파일을 생성)

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=whdahek&logNo=220318335960

 

Rman 증분 백업

증분 백업 =이전에 받았던 백업 파일과 비교해서 변경된 부분만 받는 것이다. 차등증분백업과 누적증분백업...

blog.naver.com

 

  • 차등 증분 백업 :

백업 받을 때 설정했던 숫자가 자기보다 작거나 같으면 그 시점부터 지금까지 모든 데이터를 백업

ex ) 요일마다 LEVEL을 설정하고, 설정한 요일과 이 전 날(들)의 LEVEL을 비교하여 설정한 LEVEL보다 작거나 같은 날에 백업 진행. (일-월), (월-화), (화-수) . . .

 

  • 누적 증분 백업 :

백업 받을 때 설정했던 숫자가 작은 경우에만 그 시점부터 지금까지 모든 데이터를 백업

ex ) 요일마다 LEVEL을 설정하고, 설정한 요일과 이 전 날을 비교하여 해당 요일의 LEVEL 이 작으면 백업을 수행하는 것은 동일하지만, 범위가 누적된다. (일-월), (일-월-화), (일-월-화-수), (목-금), (목-금-토) ...

 


백업 방법

  • BACKUP

    : BACKUP [BACKUP-TYPE] [OPTION]

 

  • BACKUP-TYPE :

DATABASE : 데이터베이스 전체 백업

TABLESPACE 'TABLESPACE NAME' : 지정한 테이블스페이스만 백업

DATAFILE '파일명' : 특정 데이터 파일만 백업

DATAFILECOPY '파일명' : 지정한 데이터파일을 복사하여 백업

ARCHIVELOG ALL : 백업시 모든 아카이브 파일도 함께 백업

CURRENT CONTROLFILE : 백업시 현재 컨트롤 파일도 함께 백업

CONTROLFILECOPY '파일명' : 현재 컨트롤 파일을 복사하여 백업

 

  • OPTION :

TAG='내용' : 현재 백업절차에 대한 주석을 작성

FILESPERSET=n : 백업조각의 수를 지정

DELETE INPUT : 백업 후 아카이브 파일들을 삭제

FORMAT = '파일 경로와 파일명' : 백업파일의 경로와 파일명을 지정

 

-- 독립형

: RMAN> prompt에 1개의 명령어만 들어간다

backup as compressed backupset database

format '/data/backup/rman/%U_%T';

 

-- 작업형

: 프로그램의 스크립트처럼 여러 개의 명령어를 한꺼번에 사용할 수 있다.

run {

allocate channel ch1 device type disk

format '/data/backup/rman/%U_%T' ;

backup as compressed backupset database ;

}

 

-- backup type별 비교

100mb짜리 datafile에서 80mb만 사용하고 있는 경우

  1. Image Copy
    1. 1:1 file match가 되므로 100mb 파일이 통째로 cp된다.
  2. BackupSet
    1. backup 결과 1개의 파일이 생성된다
    2. 사용된 공간 만큼 까지만 BackupSet 에 기록한다. - > 공간의 효율성이 좋다
  3. Compressed Backup
    1. 파일 중간중간 사용하고 있지 않은 빈 블럭을 제외하고 백업 수행
    2. 빈 블록이 차지하고 있는 공간에 따라 압축도가 달라진다
    3. 복구 시 빈 블럭의 위치까지 원복하기 때문에 restore할 경우 속도가 많이 떨어진다.

 


 

  • Archived Redo Log File 백업

인스턴스가 MOUNT 혹은 OPEN 상태일 때 가능하다.

Backup Set에는 Archived Log File만 포함될 수 있으며 언제나 Full 백업한다.

 

backup archivelog all;

backup as compressed backupset archivelog all;

▶ Archived redo log 백업

 

backup database plus archivelog;

▶ 데이터 파일 백업시 Archived redo log도 포함

 

backup database plus archivelog delete input;

▶ database 전체 백업 및 archive log 백업 후 archive log file 삭제

 

backup as compressed backupset database plus archivelog

format '/data/backup/rman/%U_%T';

▶ 전체 데이터파일을 압축+백업하면서 archive log file 함께 백업

 

backup archivelog

from time 'sysdate - 9/24'

format 'E:\\Orabackup\ar_%s_%p_%t';

▶ 특정 시간 이후 생성된 archive log backup

 

-- sysdate

sysdate - 1 : 현재 날짜와 시간보다 1일전

sysdate - 7 : 현재 날짜와 시간보다 7일전

sysdate - 1/24 : 현재 날짜와 시간보다 1시간 전

sysdate - 9/24 : 현재 날짜와 시간보다 9시간 전

sysdate - 5/3600 : 현재 날짜와 시간보다 5분 전

 

backup format '/disk1/backup/ar_%t_%s_%p' arhivelog

from sequence=234

▶ 234 이상의 #를 가진 backup file만 backup 가능

 


 

  • Control File 백업

인스턴스가 MOUNT 혹은 OPEN 상태일 때 가능하다.

 

CONFIGURE CONTROLFILE AUTOBACKUP ON

▶ 데이터베이스 백업 후 자동으로 control file 백업

 

backup current controlfile;

backup database include current controlfile;

▶ Control file 백업

 

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT

FOR DEVICE TYPE DOST TO 'CTL_%F';

SET CONTROLFILE AUTOBACKUP FORMAT

FOR DEVICE TYPE DISK TO 'CTL_%F';

▶ Control file 백업 포맷 지정

 

-- 백업 포맷

Control file 기본 백업 포맷 : %F

       %F : IIIIIIIIII-YYYYMMDD-QQ

       IIIIIII : decimal로 표현된 DBID ( target DB에 쉽게 접속하기 위함)

       QQ : hexadecimal로 표현된 sequence (00 ~ FF)

 


 

  • SPFILE 백업

인스턴스가 MOUNT 혹은 OPEN 상태일 때 가능하다.

인스턴스가 PFILE을 사용하고 있다면 백업 불가능

 

BACKUP SPFILE;

BACKUP SPFILE FORMAT 'E:\RMAN\spfile_%d_%s_%T.bak';

BACKUP DATABASE FILESPERSET 4 FORMAT 'E:\RMAN\%d_%s_%p_%c_%t.bak';

SPFILE FORMAT 'E:\RMAN\spfile_%d_%s_%T.bak';

...

restore spfile to '<path with filename>' from autobackup;

restore spfile to pfile '<your path and filename>' from autobackup;

 


 

RMAN 백업 전 환경 설정

  • 채널 설정하기
    • Channel : 백업/복구 하는 경로. 백업시 반드시 channel을 할당해주어야 한다.
  1. 자동 channel 설정
CONFIGURE DEFAULT DEVICE TYPE TO DISK;

       → DEFAULT DEVICE가 파라미터 파일의 db_recovery_file_dest 파라미터 경로로 설정된다.

CONFIGURE CHANNEL DEVICE TYPE DISK
FORMAT ‘/data/backup/rman/%U_%T’;

       → /data/backup/rman 디렉토리에 백업 파일이 생성된다.

2. 수동 channel 설정

BACKUP TABLESPACE EXAMPLE FORMAT ‘/data/backup/open/%U_%T’;

→ 해당 방법으로 설정함

 

  • DEFAULT VALUES
    • SHOW ALL;

CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default

▶ Backup 보관 주기나 백업본 갯수를 설정

 

CONFIGURE BACKUP OPTIMIZATION OFF; # default

▶ 이미 Backup된 항목들이 있다면 skip

 

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

▶ Default backup device 설정

 

CONFIGURE CONTROLFILE AUTOBACKUP ON; # default

▶ Backup이나 Copy 등의 명령 수행 후 자동으로 control file backup 수행

 

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default

▶ Autobackup 되는 control file의 기본 format 변경

 

CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default

▶ Backup시 몇개의 채널을 할당할 지 설정

 

CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

▶ datafile, control file의 backup set의 copy본 갯수 설정

 

CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

▶ Archivelog file의 backup set의 copy본 갯수 설정

 

CONFIGURE MAXSETSIZE TO UNLIMITED; # default

▶ backup set의 maximum size 설정

 

CONFIGURE ENCRYPTION FOR DATABASE OFF; # default

▶ 모든 백업이 암호화 되도록 설정

 

CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default

▶ 기본 백업 암호화 알고리즘을 AES128 비트 암호화로 구성함

 

CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default

▶ 데이터 백업 파일을 백업셋을 이용할 시 압축 방식을 지정함

 

CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default

▶ RMAN 출력 로그 저장기간을 지정된 일 수로 구성함

 

CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default

▶ Flash recovery area의 archived redo log에 대한 삭제 여부를 설정

 

CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/oracle/app/oracle/product/192/dbs/snapcf_TESTDB.f'; # default

▶ RMAN은 resync시 생성되는 임시 snapshot control file의 이름을 지정함

 


  • 추가 환경설정

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 30 DAYS;

▶ BACKUP 유지 정책 설정 - 30일간의 백업만 유지

 

 

  • Retention Policies (2가지 중에 1가지만 선택)    -> default : redundancy 1 로 설정되어 있음

 :    보존할 백업과 백업 보존 기간을 설명. Retention Policy는 각각 단독으로 사용할 것.

 

1. Recovery Window (기간을 기준으로 백업 결정)   

RMAN> configure retention policy to recovery window of 7 days;

       -- 데이터 파일에 대해서 7일 이내에 백업한 파일이 존재해야 함

       -- 7일이 넘어간 백업 본에 대해서는 필요 없음을 명시 (7일 간만 유지)

 

2. Redundancy (file 갯수를 기준으로 백업 결정)   

RMAN> configure retention policy to redundancy 2;

       -- 정기적으로 백업 받아온 내용에 대해서 2개의 dbf 파일에 대해서만 유지. 나머지는 삭제

 

3. 현재 설정되어 있는 Retention Policy 확인   

RMAN> show retention policy;

 

 

참고

 

rman 백업 정리 및 스크립트

OS환경 : Oracle Linux 7.5 (64bit) DB 환경 : Oracle Database 19.7.0.0 방법 : rman 백업 스크립트 및 정리 rman 이란? recovery manager (RMAN)은 오라클에서 제공하는 백업 및 복구 작업을 수행하고 백업 전..

positivemh.tistory.com

 

728x90

'Dev > Oracle' 카테고리의 다른 글

[Oracle] 복구한 DB 원복  (0) 2022.06.20
[Oracle] RMAN 복구  (0) 2022.06.19
[Oracle] 조인 정리  (0) 2022.06.16
[Oracle] 대기 이벤트  (0) 2022.06.15
[Oracle] 계층구조 쿼리  (0) 2022.06.14

댓글