본문 바로가기
oracle/[Recovery] Data File

[Data File 장애복구-DML장애] 임시경로 사용하여 복구 (update->commit 수행하여 장애발생)

by #moonyz 2014. 11. 2.

[불완전 복구 (Incomplete Recovery) - 논리적 장애 복구하기]

- 장애가 발생했을 경우 장애가 발생한 과거의 특정 시점까지만 복구하는것 (현재시점까지 복구X)

- 모든 Data File 을 장애가 발생하기 전에 백업받았던 것으로 전부 복원

- Redo Log File과 Control File은 복구를 수행하는 현재시점의 것을 사용해야 한다.

- Data File만 복원하여 Archive log file을 적용시켜 장애 직전시점까지 복구함


- 잘못된 update 수행 후 commit 하여 복구

- 아래 실습은 pfile로 진행


1. 현재 사용하고 있는 Data File, Redo Log File, Control File 확인

SQL > select name from v$controlfile;

SQL > select name from v$datafile;

SQL > select member from v$logfile;



2. DB 종료후 Full backup 수행



3. 테이블 생성 -> 데이터 입력 -> commit : 데이터가 존재하는 테스트용 테이블 생성

- 데이터가 존재하는 시간 확인하여 데이터가 존재했던 시간으로 복구 하는 테스트



4. 잘못된 update를 수행 -> commit 수행하여 장애 발생시킴

- commit이 수행되었기 때문에 rollback 작업을 해도 데이터가 되돌려 지지 않음



5. DB정지후 복구 

- 원본 파일들을 건드리지 않기 위해 임시 디렉토리를 생성하여 복구에 필요한 파일들 복사

- 모든 Data File을 장애가 발생하기 전에 백업해 두었던 파일을 임시경로로 복원

- Control file과 redo log file은 복구하는 현재 시점에 사용하고 있는 파일을 임시경로로 복사



6. parameter file 수정하여 control file경로 변경해줌

SQL > !vi $ORACLE_HOME/dba/inittestdb.ora --파라미터 파일 수정하여 control file임시경로로 설정

*.control_files='/data/temp/control01.ctl'




7. mount상태로 open하여 data file, redo log file의 설정 변경작업을 수행해야함 



8. Data File의 위치를 복구 경로로 변경



9. Redo Log File의 위치를 복구경로로 변경



10. 복구 후 open

SQL > recover database until time '복구원하는 시간' ;

SQL > alter database open RESETLOGS;

- 현재 Data file은 백업파일, control file과 redo log file은 현재시점의 파일이기 때문에 SCN이 맞지 않으므로 open불가

- RESETLOGS 옵션을 사용하여 특정시점으로 open


댓글