행위

오라클 RMAN CLONE 복구

DB CAFE

thumb_up 추천메뉴 바로가기


RMAN+Clone DB 사용해서 복구

11g는 Targetless Duplicate 기능으로 target DB에 접속하지 않고 Backpset 과 Archive log 파일만을 이용해 CloneDB구성이 가능

1. RMAN 으로 전체 데이터베이스 백업

[oracle@localhost~] $ rman target /
RMAN> backup as compressed backupset format '/data/rman/%U_%T' database ;

2. test 테이블 생성 및 drop

[oracle@localhost~] $ sqlplus / as sysdba
SYS> create table scott.test
  2    (no number,
  3    name varchar2(10)) ;
SYS> insert into scott.test values(1, '김효섭') ;
SYS> insert into scott.test values(2, '홍길동') ;
SYS> commit ;
SYS> select * from scott.test ;
NO    NAME
---------
1       김효섭
2       홍길동
SYS> alter system switch logfile ;
SYS> /
SYS> /
SYS> /
SYS> select to_char(sysdate,'yyyy-mm-dd:hh24:mi:ss') from dual ;
TO_CHAR(SYSDATE,'Y
-----------------
2014-11-17:04:00:00
SYS> drop table scott.test purge ;

3. Clone DB 용 Parameter File 생성 및 수정 --spfile 일 경우 :

SYS> create pfile='/app/oracle/product/11g/dbs/initclone.ora' from spfile ;

--pfile 일 경우 :

SYS> !cp /app/oracle/product/11g/dbs/inittestdb.ora /app/oracle/product/11g/dbs/initclone.ora
SYS> ! vi /app/oracle/product/11g/dbs/initclone.ora

수정 db_name='clone' control_files='/data/db/clone/control01.ctl'

  1. memory_target=823132160 주석처리

추가 db_file_name_convert=('/data/temp4/','/data/db/clone') /data/temp4 는 현재 운영중인 데이터파일 경로 log_file_name_convert=('/data/temp4/','/data/db/clone') /data/temp4 는 현재 운영중인 로그 파일 경로

4. Clone DB 구성용 디렉토리 생성

[oracle@localhost~] $ mkdir -p /data/db/clone
[oracle@localhost~] $ mkdir -p /app/oracle/admin/clone
[oracle@localhost~] $ mkdir -p /app/oracle/admin/clone/adump
[oracle@localhost~] $ mkdir -p /app/oracle/admin/clone/dpdump

5. Archive log 파일을 backupset 이 있는 경로에 복사

[oracle@localhost~] $ cp /data/arc1/* /data/rman/

6. RMAN 의 Targetless DUPLICATE 를 이용하여 시간기반 무정지 복구

[oracle@localhost~] $ export ORACLE_SID=clone
[oracle@localhost~] $ export NLS_DATE_FORMAT='YYYY-MM-DD:HH24:MI:SS'
[oracle@localhost~] $ sqlplus / as sysdba
SYS> startup nomount       <-- 파라미터파일 밖에 없어서 노마운트까지만 오픈 
SYS> exit
[oracle@localhost~] $ rman auxiliary /
RMAN > duplicate database to 'clone'
   2     pfile='/app/oracle/product/11g/dbs/initclone.ora'
   3     nofilenamecheck
   4     backup location '/data/rman'
   5     until time '2014-11-17:04:00:00' ;

----------복구중----------

RMAN> exit
SYS> select * from scott.test ;

NO    NAME
---------
1       김효섭
2       홍길동
복구 끝!

7. exp/imp로 복구한 테이블을 운영 DB에 입력

[oracle@localhost~] $ exp scott/tiger file=/home/oracle/test.dmp tables=test
[oracle@localhost~] $ export ORACLE_SID=testdb
[oracle@localhost~] $ imp scott/tiger file=/home/oracle/test.dmp ignore=y
[oracle@localhost~] $ sqlplus / as sysdba

SYS> select * from scott.test ;
NO    NAME
---------
1       김효섭
2       홍길동