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

[Data File 장애복구-DML장애] 필요한 파일만 복원후 복구 (delete->commit 수행하여 장애발생)

by #moonyz 2014. 11. 2.

- 잘못된 delete 수행 후 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. 백업 (close backup)

DB 종료 -> 백업 -> DB open



3. users 테이블 스페이스에 테스트용 테이블 생성후 데이터 입력



4. 데이터가 존재하는 시간 확인

SQL > select to_char(sysdate, 'YYYY-MM-DD:HH24:MI:SS') from dual ;

- 테스트이기 때문에 복구할 시간을 검색하여 복구시점을 알아내지만 현장에서는 복구시점을 알기위해서 log miner 사용해야함



5. 테스트할 테이블을 delete 시켜 장애 발생시킴.



6. 임시디렉토리를 만들어 복구를 수행한다.

- 원본데이터를 보존하기 위해서 임시경로를 만들어 복사한후 복구 수행

- control file의 경로를 임시경로로 지정



7. 복구에 반드시 필요한 파일만 임시경로로 복사

- 복구작업에 반드시 필요한 data file : system01.dbf, sysaux01.dbf, undotbs01.dbf

- 장애 데이터가 들어있는 data file : 실습에서는 users01.dbf



8. control file과 redo log file은 현재 사용중인 파일로 임시 복구 경로로 복사



9. mount 상태로 open

SQL > starup mount;



10. data file의 경로를 복구 경로로 위치 변경 

SQL > alter database rename file '이전 data file 경로' to '복구경로';

- example01.dbf는 복구하지 않기 때문에 복구경로로 복사도 하지않고 경로변경도 하지 않음 >> offline drop후 open



11. 복구에 필요없는 example01.dbf 데이터 파일을 offline drop

SQL > alter database datafile '데이터파일경로' offline drop;



12. redo log file의 경로를 복구 경로로 위치 변경 

SQL > alter database rename file '기존 리두로그 경로' to '복구경로';



13. 복구 후 확인

SQL > recover database until time '복구할 시간';

SQL > alter database open resetlogs;




댓글