DB/Oracle Administrator

오라클 백업 및 복구(RMAN)

soccerda 2012. 7. 6. 01:24
반응형
 
1. RMAN(Recover Manager)
가. 개요 : DBA가 SQL명령을 통해 수동으로 데이터베이스를 백업하고 복원하는 것이 아니라, 특정 프로그램이 DBA를 대신해 백업 및 복구를 자동으로 수행하는데 이때 사용되는 유틸이 RMAN이다. oracle 8 버전부터 지원하였으며, ASM 저장방식 환경하에서는 RMAN만을 이용하여 백업 및 복구를 할 수 있다(file system, raw device 저장방식에서는 수동 백업/복구, RMAN을 이용한 백업/복구가 모두 가능)
나. RMAN의 특징
- 자주 실행하는 작업을 스크립트로 저장 가능
- 증분 백업(Incremental Backup) 지원
- 빈 블록은 제외하고 백업 수행 가능(용량 감소 기능)
- 백업수행 중 장애블록 탐지
다. RMAN의 메모리 구조
- 기본적으로 PGA를 사용하며, 부족 시 Large Pool 사용
- Input Buffer, Output Buffer 사용
라. 작동원리
- target 데이터베이스에 접속 : SID 검사, sys 계정으로 로그인, Channel Server Process 생성
- SYS.DBMS_RCVMAN 패키지 호출 : Control file을 읽어 DB의 물리적구조, DB버전 확인
- SYS.DBMS_BACKUP_RESTORE 호출 : 입력/출력 버퍼생성, 백업파일 생성

참고 : RMAN의 디스크 공간할당 방식
RMAN은 전체 백업파일에 필요한 공간을 미리 확보한 뒤 백업을 수행하는 것이 아니라, 백업 수행도중 50M(기본값)씩 공간을 할당하는 방식으로 백업을 수행한다. 그러므로 디스크(또는 테이프)에 공간이 충분하지 않으면, 백업중간에 공간부족으로 백업이 실패 할 수 있음에 유의해야한다.

2. Recover Catalog(복구 카탈로그)
가. 개요 : RMAN 으로 백업/복구를 수행 시 필요한 데이터를 저장해 두는 저장소이다. 별도의 catalog server를 구축하여 저장할 수도 있고, target 서버의 control file에 저장할 수도 있다.

나. catalog server 구성

- 실습 서버정보
<Target 서버>
version : 11g
oracle_sid : testdb

<Catalog 서버>
version : 11g
oracle_sid : rcserver

- 진행과정
<Catalog 서버>
$ sqlplus / as sysdba
1
2
3
4
5
6
7
8
9
10
11
12
-- catalog 관리 테이블스페이스 생성
create tablespace rc_tbs
datafile '/app/oracle/oradata/testdb/rc_tbs01.dbf' size 10M
autoextend on maxsize 1G;
-- catalog 관리자 계정 생성
create user rcuser identified by rcuser
default tablespace rc_tbs
temporary tablespace temp;
-- 관련 권한 부여
grant connect, resource, recovery_catalog_owner to rcuser;


<Target 서버>
$ vi $ORACLE_HOME/network/admin/tnsnames.ora
RCSERVER =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.100)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = rcserver)
)
)

$ tnsping rcserver

$ rman target / catalog rcuser/rcuser@rcserver

RMAN> create catalog tablespace rc_tbs

RMAN> register database;

RMAN> backup database;

RMAN> exit

$ sqlplus / as sysdba
1
2
select tablespace_name, bytes/1024/1024 mb, status, file_name
from dba_data_files


<Catalog 서버>

$ sqlplus rcuser/rcuser
1
2
3
4
select * from rc_database;
select db_name, tablespace_name, bytes/1024/1024 mb, name "file_name"
from rc_datafile;


참고 : "ORA-00845" 에러 발생 시 해결방법

▶ 원인
Oracle Database 11g의 새로운 기능 중 AMM(Automatic Memory Management)을 사용하기 위해서 Linux 에서 memory_target, memory_max_size를 세팅 후 Database를 startup 할 때, 마운트된 /dev/shm 크기가 memory_target 이나 memory_max_size 에서 지정한 값보다 작거나, 리눅스의 shared memory가 마운트된 /dev/shm 와 맵핑이 되어 있지 않을 경우발생 할 수 있다.

▶ 해결방법
# umount /dev/shm
# mount -t tmpfs shmfs -o size=2g /dev/shm
# vi /etc/fstab
tmpfs /dev/shm tmpfs size=2g 0 0

참조사이트 : http://dinggur.tistory.com/178
참고 : 10g에서 rman 실행 시 멈춰버릴 때 해결방법
▶ 원인
10g 에서 rman의 실행경로가 잘못 지정되어 실행되지 않는 버그가 있다.

▶ 해결
오라클 디렉토리에 있는 rman을 지정된 위치로 다시 복사해준다.
$ which rman
/usr/X11R6/bin/rman

$ su -
# cp product/10g/bin/rman /usr/X11R6/bin/rman


3. Recovery Catalog DB 관리

가. Catalog DB와 Backupset 정보 동기화
RMAN> crosscheck backupset;

나. Catalog DB에만 남아있는 backupset 정보삭제
RMAN> delete expired backupset;

다. backupset 목록 확인
RMAN> list backupset;

라. backupset 삭제
RMAN> delete backupset;
RMAN> delete backupset BSKey;

마. 수동 백업파일 Catalog DB에 등록/삭제
RMAN> catalog datafilecopy '/data/backup/example01.dbf';
RMAN> list copy;
RMAN> change datafilecopy '/data/backup/example01.dbf' uncatalog;

바. 채널할당
RMAN> configure default device type to disk;
RMAN> configure channel device type disk
format '/data/backup/%U_%T';

참고 : 채널할당 시 치환문
%U : 파일명이 중복되지 않도록 RMAN이 Unique한 이름을 자동으로 생성
%T : 백업날짜

RMAN> run {
allocate channel c1 type disk
format '/data/backup/rman/%U_%T';
backup tablespace example;
}

RMAN> backup tablespace example format '/data/backup/rman/%U_%T';

사. Image Copy로 백업수행(Begin Backup 방식과 유사한 방법)
RMAN> copy datafile '/app/oracle/oradata/testdb/users01.dbf'
to '/data/backup/rman/user01.dbf';

아. 다양한 형태의 백업방법
RMAN> run {
allocate channel c1 device type disk
format '/data/backup/rman/%U_%T'
backup database;
}

RMAN> run {
allocate channel c1 device type disk
allocate channel c2 device type disk
allocate channel c3 device type disk
backup tablespace example, users, system
include current controlfile;
}

RMAN> run {
allocate channel c1 device type disk;
backup datafile 1,2,3,4,5;
}

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

RMAN> run {
allocate channel c1 device type disk
allocate channel c2 device type disk
allocate channel c3 device type disk
backup
tablespace example channel c1
format '/data/backup/rman/%U_%T'
tablespace system channcl c2
format '/data/backup/rman/%U_%T'
tablespace sysaux channcl c3
format '/data/backup/rman/%U_%T';
}

4. 증분백업(Incremental backup)
가. 차등 증분 백업 : 현재 백업 시점에서 지정해준 레벨과 과거시점에 백업된 데이터의 레벨을 비교하여, 작거나 같으면 그 시점부터 지금까지의 모든 데이터를 백업하는 방법, 만약 제일 먼저 찾은 과거시점의 백업 레벨이(가장 최근에 백업된 레벨) 현재 지정해준 레벨보다 크다면, 더 과거시점으로 되돌아가 작거나 같은 레벨시점이 올 때까지 검색 및 비교를 반복한다.

RMAN> run {
allocate channel c1 type disk;
allocate channel c2 type disk;
backup incremental level 0
database format '/data/backup/rman/%U_%T';
}

RMAN> run {
allocate channel c1 type disk;
backup incremental level 3
tablespace users;
}

나. 누적 증분 백업 : 현재 백업 시점에서 지정해준 레벨과 과거시점에 백업된 데이터의 레벨을 비교하여, 작은 시점부터 지금까지의 모든 데이터를 백업하는 방법

RMAN> run {
allocate channel c1 type disk;
backup incremental level 3 cumulative
tablespace example;
}

다. Block Change Tracking 기능 활성봐/비활성화
1
2
3
4
alter database enable block change tracking
using file '/data/backup/rman/block_tracking.dat';
alter database disable block change tracking;


라. 압축하며 백업 수행
RMAN> backup as compressed backupset database
format '/data/backup/rman/%U_%T';

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

마. Multi Section Backup(11g 새 기능) : 매우 큰 1개의 Datafile을 여러 프로세스가 병렬 처리
RMAN> report schema
RMAN> backup as compressed backupset
section size 100m
format '/data/backup/rman/%U_%T'
datafile 1;

바. 백업 진행상황 확인
1
2
3
4
5
6
7
select sid, serial#, context, sofar, totalwork,
round(sofar/totalwork*100,2) "% completed"
from v$session_longops
where opname like 'RMAN%'
and opname not like '%aggregate%'
and totalwork != 0
and sofar <> totalwork;

참고 : RMAN의 제한사항
- Online Redolog, Parameter, listener.ora, tnsnames.ora 파일은 백업 불가능
- open 상태에서 백업을 받으려면 archive log 모드로 운영해야 됨
- 데이터베이스가 mount 또는 open 상태여야 됨

반응형

'DB > Oracle Administrator' 카테고리의 다른 글

오라클 에러코드(한글)  (0) 2012.07.06
오라클 백업 및 복구(RMAN)  (0) 2012.07.06
오라클 수동 DB생성  (0) 2012.07.06
오라클 백업 및 복구(Flashback)  (0) 2012.07.06
오라클 백업 및 복구(SQL Loader)  (0) 2012.07.06