★★무정지 상태에서의 복구 - 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
|