오라클 백업 및 복구(RMAN)

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
-- 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
select tablespace_name, bytes/1024/1024 mb, status, file_name
from dba_data_files
<Catalog 서버> $ sqlplus rcuser/rcuser
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 기능 활성봐/비활성화
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; 바. 백업 진행상황 확인
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 상태여야 됨

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다