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

[Data File 장애복구-DDL장애] drop tablespace 명령에 의해 삭제된 Tablespace 복구

by #moonyz 2014. 11. 3.

1. 테스트용 Tablespace 생성

SQL > create tablespace 테이블스페이스명 datafile '경로' size 크기;



2재 사용하고 있는 Data File, Redo Log File, Control File 확인

SQL > select name from v$datafile;

SQL > select name from v$controlfile;

SQL > select member from v$logfile;



3. 전체 닫힌 백업 수행 

DB 종료 -> 백업 -> DB open



4. drop할 Tablespace에 테이블 생성

SQL > create table 테이블명 (컬럼명 컬럼형식) tablespace 테이블스페이스명;

SQL > insert into 테이블명 values (데이터입력값)

SQL > commit;



5. 테스트용으로 생성한 Tablespace를 drop 시켜 장애 발생

- Tablespace를 drop시켰기 때문에 datafile을 조회하면 drop된 테이블스페이스 조회불가

- 테이블스페이스에 생성한 테이블 역시 data file이 삭제되었기 때문에 존재하지 않는다고 에러 



6. 복구를 하기위해서 백업 해두었던 파일을 임시경로를 생성하여 복사

- data file과 control file은 백업해두었던 파일을 임시경로로 복사

- redo log file만 현재 사용중인 파일을 임시 복구 경로로 복사

※ drop table은 data file만 백업파일을 사용하는 반면 drop tablespace는 data file과 control file을 백업해둔 파일사용



7. control file의 경로를 수정하기 위해서 parameter file을 vi로 수정

- pfile을 사용중이기 때문에 파라미터파일을 vi로 열어 control file 경로 ㅅ



8. control file의 경로를 바꾼후 mount 상태로 DB open



9. data file을 임시 복구 경로로 위치정보 변경



10. redo log file을 임시 복구 경로로 위치정보 변경



11. drop tablespace는 alter log file에 데이터가 남기 때문에 alter log file을 검색하여 drop된 시간을 알아냄

- alter log file의 내용이 많기 때문에 vi editor의 검색기능을 사용하여 원하는 정보를 검색 : /검색할단어





12. 복구 시도 

- 복구할 시간은 장애가 발생한 시간의 몇초 전으로 설정하여 복구

- control file을 백업받은 파일로 사용하였기 때문에 using backup controlfile 옵션을 추가하여 복구

- sequence #29번인 archive log file을 찾는데 파일이 없기때문에 에러발생 -> 현재 redo log file을 조회하여 원하는 sequence 번호가 있는지 확인



13. 로그 파일 조회

- 원하는 sequence 번호가 있으면 기억해두었다가 recover 할때 사용



14. recover를 다시 수행하여 sequence 번호가 존재하는 redo log file의 이름을 직접 지정하여 복구를 완료 시킴



15. mount 상태인 DB를 resetlogs옵션을 추가하여 open -> 테이블스페이스와 해당 테이블스페이스에 존재했던 테이블이 복구되었는지 확인

SQL > alter database open resetlogs;


댓글