10.1 Clone DB 와 exp/imp 를 이용한 drop table 복구
Clone DB 생성 개념
TESTDB (운영) TESTDB2 (복구)
Parameter File 복사 → Parameter File
Control File 재생성 → Control File
Data File 백업 파일 → Data File
Redo log File 아카이브 → Redo log File
작업순서
1. 장애상황 발생
1) 테이블 스페이스 생성
2) 테이블 생성 후 데이터 입력
3) 테이블 삭제
2. Clone DB 용 파라미터 파일 생성 (pfile 사용)
3. 백업 데이터 파일 복원
4. 컨트롤 파일 재생성
5. 장애 난 시점 직전까지 시간 기반 복구로 테이블 복구
6. export 수행 후 운영 DB로 import 수행 (또는 DB Link 사용)
7. 복구 확인
복구 순서
1. 복구 서버(testdb2)용 파라미터 파일 생성
$ cd $ORACLE_HOME/dbs
$ cp inittestdb.ora inittestdb2.ora
db_name 과 control_files 값을 clone db 값으로 변경
$ vi inittestdb2.ora
db_name=testdb2
control_files=("/data/temp/clone/control01.ctl",
"/data/temp/clone/control02.ctl",
"/data/temp/clone/control03.ctl"
)
2. control file 생성
control file 을 생성하려면 데이터 파일이 존재해야 하므로 백업파일을 복원한다.
$ mkdir -p /data/temp/clone
$ cp /data/backup/close/*.dbf /data/temp/clone/
$ exit
SYS> select instance_name from v$instance ;
SYS> alter database backup controlfile to trace as '/app/oracle/re.sql' ;
SYS> !
$ vi /app/oracle/re.sql
STARTUP NOMOUNT
CREATE CONTROLFILE SET DATABASE "TESTDB2" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 (
'/data/temp/clone/redo01_a.log',
'/data/temp/clone/redo01_b.log'
) SIZE 50M BLOCKSIZE 512,
GROUP 2 (
'/data/temp/clone/redo02_a.log',
'/data/temp/clone/redo02_b.log'
) SIZE 50M BLOCKSIZE 512,
GROUP 3 (
'/data/temp/clone/redo03_a.log',
'/data/temp/clone/redo03_b.log'
) SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'/data/temp/clone/system01.dbf',
'/data/temp/clone/sysaux01.dbf',
'/data/temp/clone/test01.dbf',
'/data/temp/clone/users01.dbf',
'/data/temp/clone/example01.dbf',
'/data/temp/clone/undo01.dbf'
CHARACTER SET KO16MSWIN949
$ export ORACLE_SID=testdb2
SYS>@/app/oracle/re.sql
SYS> select name from v$controlfile ;
3. drop 된 테이블 복구하기
SQL> recover database until time '2013-12-26:16:18:26' using backup controlfile ;
auto
SQL> alter database open resetlogs ;
SQL> select instance_name from v$instance ;
SQL> select count(*) from scott.gogak ;
복구 완료
4. 복구된 테이블을 운영서버 (testdb) 로 이동하기
$ export ORACLE_SID=testdb2
$ exp scott/tiger file=gogak.dmp tables=gogak
$ export ORACLE_SID=testdb
$ imp scott/tiger file=gogak.dmp ignore=y
10.2 Clone DB 를 이용한 drop tablespace 복구
Alert log 에서 삭제된 시간 확인
작업순서 요약
1) 복구 서버용 파라미터 파일 생성
2) 백업 데이터 파일 복원
3) 컨트롤 파일 재생성
4) 불완전 복구 시작
5) test01.dbf 파일 내용 수정하고 다시 복구 시작
6) 복구 완료되면 export 후 운영 서버에 import 수행
위의 2번 과정까지 똑같이 수행 후
3번의
SQL> recover database until time '2013-12-26:16:18:26' using backup controlfile ;
auto
하면 test01.dbf 파일이 없어서 에러가 난다.
SQL> select name from v$datafile ;
SQL> alter database create datafile '/app/oracle/product/11g/dbs/UNNAMED00006'
2 as '/data/temp/clone/test01.dbf' ;
SQL> recover database until time '2013-12-26:16:18:26' using backup controlfile ;
auto
10.3 Clone DB 로 복구 후 DB Link 이용해서 이동하기