본문 바로가기
oracle/[Recovery] RMAN & Flashback

[Recovery Manager] RMAN

by #moonyz 2014. 11. 13.

[RMAN 주요특징]

1. 자주 실행하는 작업을 스크립트로 저장

큰 데이터베이스의 경우 백업작업을 수행할때 많은 양의 코딩을 해야하는 경우가 많은데

RMAN Recovery Catalog Server를 사용할 경우 자주사용하는 백업 명령어들을 스크립트로 저장 가능


2. 증분 블록 레벨 백업 기능 지원 

과거에 백업 받은 내역을 조사해서 그 기준 이후에 변경된 블록만 찾아 백업 수행 가능

백업 공간을 절약하고 백업시간을 단축할수 있음.


3. 사용되지 않은 블록 건너뛰고 백업 수행

현재 사용하고 있는 블록만 찾아서 백업수행, Backupset으로 백업을 수행할 경우 자동으로 지원


4. 백업 수행 중 훼손된 블록 감지

백업 수행 도중 훼손된 블록을 감지할 경우 일반적인 백업과 달리 장애를 발생시키지 않고 마킹한 후 계속 백업을 진행함 


5. ASM기반 유일한 백업도구

ASM기반의 백업 및 복구는 RMAN외에 백업할 방법이 없음

최근 대용량 데이터베이스를 위해 출시된 EXADATA도 RMAN으로만 백업 및 복구 가능


6. 백업 수행시 압축 지원

백업을 진행하면서 동시에 압축까지 진행 가능

압축기능으로 인한 자원손실 (ex. CPU부하 등)이 거의 없으며, 압축효율도 아주 좋음



[Recover Manger 구성도]


- 관리자가 RMAN 유틸리티에게 백업이나 복구를 명령하면 관리자를 대신하여 대상서버(target database)에 접속하여 백업 수행

- Recovery Catalog Server가 있으면 백업관련 정보를 Catalog Database에 저장

Recovery Catalog Server가 없으면 Target database의 control file에 기록을 함

- RMAN을 이용할 경우 관리자는 RMAN에게 명령을 내리고 세부적인 작업은 RMAN이 적절하게 수행함

- RMAN 사용법만 익히면 백업복구원리를 알지 못해도 얼마든지 백업복구 수행 가능


- channel : 백업과 복구를 하는 경로

Recovery Catalog(복구카탈로그) : 백업 관련 정보 저장 (저장위치 등)


기존의 백업방식 : 사용자가 직접 백업상태로 설정->파일복사->백업상태해제 단계 등의 작업을 수행

기존의 복구방식 : 필요한 파일을 찾아서 복원하고 복구



[RMAN Memory 구조]



1. RMAN이 사용하는 메모리

- Input Buffer : 데이터파일에서 백업해야하는 블록만 추출해서 메모리로 가져옴

- Output Buffer : 백업파일(Backup Set)에 저장하기 위해 사용됨


2. 메모리 내 과정

① 메모리에 각 Data File 별로 input Buffer 생성

② input buffer에 data file에서 백업받아야 할 블록을 가져옴

③ 여러개의 input buffer중 하나가 가득차면 output buffer로 블록을 복사

④ output buffer 역시 가득 차게 되면 backup set에 내려씀 (output buffer에는 여러 data file의 블록이 혼재함)



[Channel 설정하기]

- channel : 백업과 복구를 하는 경로

- 백업을 수행하기 전에 channel을 할당해야 RMAN 백업/복구 수행가능

- 복구를 할때에는 channel을 할당하지 않아도 되지만 백업은 반드시 channel을 할당해야함

- 자동 channel 설정 : 별도의 경로를 지정하지 않아도 정해진 위치로 백업을 받음

- 수동 channel 설정 : 백업을 수행할 때 백업받을 경로를 직접 지정해주는 것


1. 자동 channel 설정하기

- 백업을 수행할때 별도의 경로를 지정해 주지 않아도 정해진 위치로 백업을 받음 (default channel)

- 복구 카탈로그 서버 사용O : [oracle@localhost ~]$ rman target / catalog rcuser/rcuser@rcserver

- 복구 카탈로그 서버 사용X : [oracle@localhost ~]$ rman target sys/oracle


# 자동으로 channel 설정

1. 자동으로 channel을 설정하는 명령어 입력

RMAN > configure default device type to disk;

default device가 parameter file의 db_recovery_file_dest 파라미터에 설정된 경로로 설정됨


2. RMAN으로 백업명령을 수행하여 저장된 경로 확인

piece_handle=뒤에 나오는 경로에 백업파일이 저장됨

현재 자동으로 설정된 경로는 parameter file의 db_recovery_file_dest 파라미터에 설정된 경로 ($ORACLE_BASE/fast_recovery_area/)



# 기본 경로 변경하기

1. 기본경로 변경

RMAN > configure channel device type disk format '/data/backup/rman/%U_%T';

format 파라미터를 사용하여 경로를 변경

파일이름 : %U_%T 

%U : 파일명이 중복되지 않도록 RMAN이 유니크한 번호로 파일이름 생성

%T : 백업한 날짜 표시



2. RMAN으로 백업명령을 수행하여 저장된 경로 확인 -> 새로 설정된 경로에 백업됨



2. 수동 channel 설정하기

- 백업을 수행할 때 백업 받을 경로를 직접 지정해는 것

- 자동 channel로 설정된 경로보다 수동channel로 설정된 경로를 우선적으로 적용하여 백업 수행

- 수동 channel을 사용하게 되면 RMAN은 해당 경로에 받는 백업파일을 관리하지 않음

- Retention Policy 등이 설정되어있어도 format 파라미터를 사용해서 경로를 변경하게되면 해당 정책들이 적용되지 않음

- FRA에 저장한다 하더라도 format 파라미터로 경로가 정해지면 관리자가 수동으로 백업파일을 관리해야함


# 독립형 명령어를 사용하여 수동 channel 설정하여 백업하기



#  작업형 명령어를 사용하여 수동 channel 설정하여 백업하기




#  Backup Set의 이름을 직접지정하여 백업하기



댓글