특정 시점의 DB 복구하기
1. Dev
1)Production과 동일한 oracle 엔진 버전을 설치한다.(Patch 적용 포함)
2)dbca를 실행 시킨다. Production과 동일하게 환경을 맞추어 설치한다.
3)listener/instance를 services.msc에서 stop시킨다.
4)아래의 폴더들을 Production으로 부터 copy하여 Dev에 paste를 한다.
(service가 내려가 있는 상태에서 작업이 가능하다.)
C:\oracle\product\10.2.0\db_1\database --> pfile, spfile 존재
C:\oracle\product\10.2.0\db_1\dbs --> password 파일 존재
C:\oracle\product\10.2.0\db_1\NETWORK --> listener.ora, tnsnames.ora 등 네트워크 관련 파일 존재
C:\oracle\product\10.2.0\db_1\RDBMS
5)listener/instance를 services.msc에서 start시킨다.
6)off-line backup 파일을 아래와 같이 rename하여 copy한다.(database_)
D:\database_
E:\database_
7)DB shutdown
C:\>sqlplus /nolog
SQL>conn sys/tiger as sysdba;
SQL>shutdown immediate
8)이름 바꾸기(Instance가 Idle 상태에서 폴더 이름 변경이 가능하다)
D:\database와 D:\database_의 이름을 바꾼다.
E:\database와 E:\database_의 이름을 바꾼다.
10)복구하기
SQL>startup mount
SQL>recover database using backup controlfile until cancel;
auto 선택
SQL>alter database open resetlogs;
SQL>archive log list;
SQL>shutdown immediate
11)아카이브모드 해제
SQL>startup mount
SQL>alter database noarchivelog;
SQL>alter database open;
2. Production
9) 현재시점까지의 archive파일 이동시킨다.
C:\>sqlplus /nolog
SQL>conn sys/tiger as sysdba;
SQL>alter system switch logfile;
off-line backup 이후 부터 현재 시점까지의 archive파일을 Dev에 옮긴다.
P.S.
ALTER DATABASE DATAFILE 'E:\PRECISE\PRECISEDATA\PRECISE_SLXO2P.DBF' OFFLINE DROP;
ALTER DATABASE OPEN;
DROP TABLESPACE PRECISE 'E:\PRECISE\PRECISEDATA\PRECISE_SLXO2P.DBF' INCLUDING CONTENTS;