2.clone DB를 이용한 drop tablespace 복구하기.

 

 

 

 

 * 전제 조건 

 - 백업 파일 경로 : /data/backup/close/

 - 운영서버 SID : testdb

 - 복구서버 SID : clonedb

 - 복구서버 파일 경로 : /data/temp/clone

 

 

 * 복구 순서 요약 

 

 1. 복구 서버용 파라미터 파일 생성

  $ cp inittestdb.ora initclonedb.ora 

 2. 백업 데이터 파일 복원

  $ mkdir -p /data/temp/clone

  $ cp /data/backup/close/*.dbf /data/temp/clone/

 3. 컨트롤 파일 재생성 (운영서버에서 진행)

  SYS> alter database backup controlfile to tace as '/app/oracle/re2.sql';

  $ vi /app/oracle/re2.sql -- 스크립트 수정 (logfile, data file 경로수정, controlfile set database "clonedb" resetlogs  로 수정)

 4. 불완전 복구 시작 -- data file에 에러가 발생한다. (★clonedb서버에서 진행★)

  SYS> @/app/oracle/re2.sql --스크립트 실행.

  SYS> recover database until time '2013-12-02:04:30:55' using backup controlfile;

 5. test01.dbf 파일 내용을 수정하고 다시 복구 시작

  SYS> select name from v$datafile;

  SYS> alter database create datafile '/app/oracle/product/11g/dbs/unnamed00006' as '/data/temp/clone/test02.dbf';

  SYS> recover database until time '2013-12-02:04:30:55' using backup controlfile;

  SYS> alter database open resetlogs;

 6. 복구 완료되면 clonedb서버에서 export후, 운영서버에 import 수행.

  $ export ORACLE_SID=clonedb

  $ exp scott/tiger file=gogak2.dmp tables=gogak2

  $ export ORACLE_SID=testdb

  $ imp scott/tiger=gogak2.dmp

 

 

 

 

 


 

 

[실습문제] 해보기

 

A. 전체닫힌백업

B. create tablesapce ts_new.

C. create table Tbl_gogak In Ts_new.

D. drop table Tbl_gogak *** 이상태로 돌아가기.

E. drop tablespace Ts_new ** including contents and datafiles 옵션을 주지 않으면 tablespace안에 있는 .dbf 파일이 남게되어 복구하면서 운영서버에 tablespace를 새로 생성해줄 때 만들 수 없다고 나온다.

 

 

 

 * 복구 순서 요약 

 

 1. 복구 서버용 파라미터 파일 생성

  $ cp inittestdb.ora initclonedb.ora 

 2. 백업 데이터 파일 복원

  $ mkdir -p /data/temp/clone

  $ cp /data/backup/close/*.dbf /data/temp/clone/

 3. 컨트롤 파일 재생성 (운영서버에서 진행)

  SYS> alter database backup controlfile to tace as '/app/oracle/re2.sql';

  $ vi /app/oracle/re2.sql -- 스크립트 수정 (logfile, data file 경로수정, controlfile set database "clonedb" resetlogs  로 수정)

 4. 불완전 복구 시작 -- data file에 에러가 발생한다. (★clonedb서버에서 진행★)

  SYS> @/app/oracle/re2.sql --스크립트 실행.

  SYS> recover database until time '2013-12-02:04:30:55' using backup controlfile;

 5. test01.dbf 파일 내용을 수정하고 다시 복구 시작

  SYS> select name from v$datafile;

  SYS> alter database create datafile '/app/oracle/product/11g/dbs/unnamed00006' as '/data/temp/clone/test02.dbf';

  SYS> recover database until time '2013-12-02:04:30:55' using backup controlfile; --drop table전의 시간으로 돌린다.

  SYS> alter database open resetlogs;

 6. 복구 완료되면 clonedb서버에서 export후, 운영서버에 import 수행.

  -- 옮겨줄 운영서버에 tablespace를 생성해주지 않으면, default tablespace에 table이 복원되고, tablespace를 생성해주면 원하는 tablespace에 table이 복원된다.

  $ create tablespace ts_new datafile '/app/oracle/oradata/testdb/ts_new.dbf' size 10M;

  $ export ORACLE_SID=clonedb

  $ exp system/oracle file=gogakabc.dmp tablespace=Ts_new 

  --tablespace는 scott계정으로 옮겨줄 수 없고, system계정으로 작업을 해야한다. 그리고 tablespace를 exp/imp하면 그안에 table도 같이 옮겨지므로 tablespace만 옮겨주면 된다.

  $ export ORACLE_SID=testdb

  $ imp system/oracle=gogakabc.dmp tablespace=Ts_new ignore=y full=y

 

 

 

Print Friendly and PDF Posted by JJ*
: