"오라클 rman"의 두 판 사이의 차이
DB CAFE
(새 문서: RMAN+Clone DB 사용해서 복구 11g는 Targetless Duplicate 기능으로 target DB에 접속하지 않고 Backpset 과 Archive log 파일만을 이용해 CloneDB구성이 가능 1....) |
|||
1번째 줄: | 1번째 줄: | ||
RMAN+Clone DB 사용해서 복구 | RMAN+Clone DB 사용해서 복구 | ||
+ | |||
11g는 Targetless Duplicate 기능으로 target DB에 접속하지 않고 Backpset 과 Archive log 파일만을 이용해 CloneDB구성이 가능 | 11g는 Targetless Duplicate 기능으로 target DB에 접속하지 않고 Backpset 과 Archive log 파일만을 이용해 CloneDB구성이 가능 | ||
1. RMAN 으로 전체 데이터베이스 백업 | 1. RMAN 으로 전체 데이터베이스 백업 | ||
− | + | <source lang=sql> | |
[oracle@localhost~] $ rman target / | [oracle@localhost~] $ rman target / | ||
− | |||
RMAN> backup as compressed backupset format '/data/rman/%U_%T' database ; | RMAN> backup as compressed backupset format '/data/rman/%U_%T' database ; | ||
− | + | </source> | |
2. test 테이블 생성 및 drop | 2. test 테이블 생성 및 drop | ||
− | + | <source lang=sql> | |
[oracle@localhost~] $ sqlplus / as sysdba | [oracle@localhost~] $ sqlplus / as sysdba | ||
− | + | </source> | |
+ | <source lang=sql> | ||
SYS> create table scott.test | SYS> create table scott.test | ||
− | |||
2 (no number, | 2 (no number, | ||
− | |||
3 name varchar2(10)) ; | 3 name varchar2(10)) ; | ||
− | |||
SYS> insert into scott.test values(1, '김효섭') ; | SYS> insert into scott.test values(1, '김효섭') ; | ||
− | |||
SYS> insert into scott.test values(2, '홍길동') ; | SYS> insert into scott.test values(2, '홍길동') ; | ||
− | |||
SYS> commit ; | SYS> commit ; | ||
− | |||
SYS> select * from scott.test ; | SYS> select * from scott.test ; | ||
− | |||
NO NAME | NO NAME | ||
− | |||
--------- | --------- | ||
− | |||
1 김효섭 | 1 김효섭 | ||
− | |||
2 홍길동 | 2 홍길동 | ||
+ | </source> | ||
+ | <source lang=sql> | ||
SYS> alter system switch logfile ; | SYS> alter system switch logfile ; | ||
− | |||
SYS> / | SYS> / | ||
− | |||
SYS> / | SYS> / | ||
− | |||
SYS> / | SYS> / | ||
− | |||
SYS> select to_char(sysdate,'yyyy-mm-dd:hh24:mi:ss') from dual ; | SYS> select to_char(sysdate,'yyyy-mm-dd:hh24:mi:ss') from dual ; | ||
− | |||
TO_CHAR(SYSDATE,'Y | TO_CHAR(SYSDATE,'Y | ||
− | |||
----------------- | ----------------- | ||
− | |||
2014-11-17:04:00:00 | 2014-11-17:04:00:00 | ||
+ | </source> | ||
+ | <source lang=sql> | ||
SYS> drop table scott.test purge ; | SYS> drop table scott.test purge ; | ||
+ | </source> | ||
3. Clone DB 용 Parameter File 생성 및 수정 | 3. Clone DB 용 Parameter File 생성 및 수정 | ||
− | |||
--spfile 일 경우 : | --spfile 일 경우 : | ||
− | + | <source lang=sql> | |
SYS> create pfile='/app/oracle/product/11g/dbs/initclone.ora' from spfile ; | SYS> create pfile='/app/oracle/product/11g/dbs/initclone.ora' from spfile ; | ||
+ | </source> | ||
− | --pfile 일 경우 : | + | --pfile 일 경우 : |
− | + | <source lang=sql> | |
SYS> !cp /app/oracle/product/11g/dbs/inittestdb.ora /app/oracle/product/11g/dbs/initclone.ora | SYS> !cp /app/oracle/product/11g/dbs/inittestdb.ora /app/oracle/product/11g/dbs/initclone.ora | ||
+ | </source> | ||
+ | <source lang=sql> | ||
SYS> ! vi /app/oracle/product/11g/dbs/initclone.ora | SYS> ! vi /app/oracle/product/11g/dbs/initclone.ora | ||
+ | </source> | ||
수정 | 수정 | ||
− | |||
db_name='clone' | db_name='clone' | ||
− | |||
control_files='/data/db/clone/control01.ctl' | control_files='/data/db/clone/control01.ctl' | ||
#memory_target=823132160 주석처리 | #memory_target=823132160 주석처리 | ||
− | |||
추가 | 추가 | ||
− | |||
db_file_name_convert=('/data/temp4/','/data/db/clone') /data/temp4 는 현재 운영중인 데이터파일 경로 | db_file_name_convert=('/data/temp4/','/data/db/clone') /data/temp4 는 현재 운영중인 데이터파일 경로 | ||
− | |||
log_file_name_convert=('/data/temp4/','/data/db/clone') /data/temp4 는 현재 운영중인 로그 파일 경로 | log_file_name_convert=('/data/temp4/','/data/db/clone') /data/temp4 는 현재 운영중인 로그 파일 경로 | ||
4. Clone DB 구성용 디렉토리 생성 | 4. Clone DB 구성용 디렉토리 생성 | ||
− | + | <source lang=sql> | |
[oracle@localhost~] $ mkdir -p /data/db/clone | [oracle@localhost~] $ mkdir -p /data/db/clone | ||
+ | </source> | ||
+ | <source lang=sql> | ||
[oracle@localhost~] $ mkdir -p /app/oracle/admin/clone | [oracle@localhost~] $ mkdir -p /app/oracle/admin/clone | ||
+ | </source> | ||
+ | <source lang=sql> | ||
[oracle@localhost~] $ mkdir -p /app/oracle/admin/clone/adump | [oracle@localhost~] $ mkdir -p /app/oracle/admin/clone/adump | ||
+ | </source> | ||
+ | <source lang=sql> | ||
[oracle@localhost~] $ mkdir -p /app/oracle/admin/clone/dpdump | [oracle@localhost~] $ mkdir -p /app/oracle/admin/clone/dpdump | ||
+ | </source> | ||
5. Archive log 파일을 backupset 이 있는 경로에 복사 | 5. Archive log 파일을 backupset 이 있는 경로에 복사 | ||
− | + | <source lang=sql> | |
[oracle@localhost~] $ cp /data/arc1/* /data/rman/ | [oracle@localhost~] $ cp /data/arc1/* /data/rman/ | ||
− | + | </source> | |
6. RMAN 의 Targetless DUPLICATE 를 이용하여 시간기반 무정지 복구 | 6. RMAN 의 Targetless DUPLICATE 를 이용하여 시간기반 무정지 복구 | ||
− | + | <source lang=sql> | |
[oracle@localhost~] $ export ORACLE_SID=clone | [oracle@localhost~] $ export ORACLE_SID=clone | ||
− | |||
[oracle@localhost~] $ export NLS_DATE_FORMAT='YYYY-MM-DD:HH24:MI:SS' | [oracle@localhost~] $ export NLS_DATE_FORMAT='YYYY-MM-DD:HH24:MI:SS' | ||
− | |||
[oracle@localhost~] $ sqlplus / as sysdba | [oracle@localhost~] $ sqlplus / as sysdba | ||
− | + | </source> | |
+ | <source lang=sql> | ||
SYS> startup nomount <-- 파라미터파일 밖에 없어서 노마운트까지만 오픈 | SYS> startup nomount <-- 파라미터파일 밖에 없어서 노마운트까지만 오픈 | ||
− | |||
SYS> exit | SYS> exit | ||
− | + | </source> | |
+ | <source lang=sql> | ||
[oracle@localhost~] $ rman auxiliary / | [oracle@localhost~] $ rman auxiliary / | ||
− | + | </source> | |
+ | <source lang=sql> | ||
RMAN > duplicate database to 'clone' | RMAN > duplicate database to 'clone' | ||
− | |||
2 pfile='/app/oracle/product/11g/dbs/initclone.ora' | 2 pfile='/app/oracle/product/11g/dbs/initclone.ora' | ||
− | |||
3 nofilenamecheck | 3 nofilenamecheck | ||
− | |||
4 backup location '/data/rman' | 4 backup location '/data/rman' | ||
− | |||
5 until time '2014-11-17:04:00:00' ; | 5 until time '2014-11-17:04:00:00' ; | ||
119번째 줄: | 109번째 줄: | ||
RMAN> exit | RMAN> exit | ||
− | + | </source> | |
+ | <source lang=sql> | ||
SYS> select * from scott.test ; | SYS> select * from scott.test ; | ||
NO NAME | NO NAME | ||
− | |||
--------- | --------- | ||
− | |||
1 김효섭 | 1 김효섭 | ||
− | |||
2 홍길동 | 2 홍길동 | ||
− | |||
복구 끝! | 복구 끝! | ||
− | + | </source> | |
7. exp/imp로 복구한 테이블을 운영 DB에 입력 | 7. exp/imp로 복구한 테이블을 운영 DB에 입력 | ||
− | + | <source lang=sql> | |
[oracle@localhost~] $ exp scott/tiger file=/home/oracle/test.dmp tables=test | [oracle@localhost~] $ exp scott/tiger file=/home/oracle/test.dmp tables=test | ||
− | |||
[oracle@localhost~] $ export ORACLE_SID=testdb | [oracle@localhost~] $ export ORACLE_SID=testdb | ||
− | |||
[oracle@localhost~] $ imp scott/tiger file=/home/oracle/test.dmp ignore=y | [oracle@localhost~] $ imp scott/tiger file=/home/oracle/test.dmp ignore=y | ||
− | |||
[oracle@localhost~] $ sqlplus / as sysdba | [oracle@localhost~] $ sqlplus / as sysdba | ||
SYS> select * from scott.test ; | SYS> select * from scott.test ; | ||
− | |||
NO NAME | NO NAME | ||
− | |||
--------- | --------- | ||
− | |||
1 김효섭 | 1 김효섭 | ||
− | |||
2 홍길동 | 2 홍길동 | ||
+ | </source> |
2019년 9월 5일 (목) 21:40 판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
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'
- 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 홍길동