불완전 복구 - DDL 관련 장애복구(2) 

drop tablespace명령으로 삭제된 tablespace 복구. (backup file 있을경우.)

 

[ 관련 에러 코드 ]

 

ORA-00328 : archived log ends at change 186554, need later change 187779

ORA-00334 : archived log : xxxxxxxx

 

 

 

 

 

 

[ 백 업 하 기 & 장 애 발 생 ]

 1. test tablespace를 생성한다.

 

2. 변경 전 data file, control file, redo log file을 조회한 후, db를 종료해 전체 닫힌 백업을 수행한다.

 

3. db를 open후 test tablespace 에 table을 생성하고, 값을 하나 입력한다.

 

4. tablespace를 drop 한다.

 

[ 해 결 ]

1. db를 종료 후 임시 복구 경로로 필요한 파일을 복사하는데, tablespace를 drop한 경우 복구할 때 주의할 점이 있다.

* recover 명령을 수행하면, control file에 있는 data file과 redo log file의 정보를 보고 복구를 한다. 그런데 drop tablespace 명령어의 경우에는 control file에서 해당 data file을 삭제하므로, drop 한 이후의 control file에는  test tablespace에 대한 정보가 없기 때문에 recover 할 때, 복구 대상에서 test tablespace는 빠지게 된다. 그래서 control file은 이전에 백업한 파일을 사용해서 복구한다.

 

2.control file의 경로를 변경한다.

 

3. mount로 db를 open후, control file의 변경내용을 조회하고, 변경전의 data file과 redo log file의 경로를 조회한다.

 

4. data file의 경로를 변경한다.

 

5. redo log file의 경로를 변경한다.

 

6. drop tablespace의 경우에 장애가 발생한 시점의 시간이 alert log file에 기록되므로, alert log 를 조회한다.

 - 그럼 너무 많은 내용이 있어서 검색기능을 활용한다. : esc키 누른 뒤, /(슬러쉬) + 찾을내용을 입력하면 해당 문구를 찾아준다.

-검색하고자하는 문자열이 다음 문자열을 찾고 싶을 때는 소문자 n을 눌러주면 다음 문자열을 계속 찾아준다.

 

7. 복구명령을 내리는데, 이 경우 또 주의할 점이 있다.

 drop tablespace의 경우 control file도 backup파일에서 복사해오게 되면, control file과  data file의 SCN이 같게 되므로 recover할 때 두 번호가 같아서 recover를 아예 하지 않게 된다. 그래서 'control file을 새로 만들거나, control file이 백업본일 경우' using backup controlfile 옵션을 이용해서 SCN번호를 무시하고 recover를 계속 진행하도록 한다.

-> recover database until time '시간' using backup controlfile;

-> recover 명령을 내렸을 때 에러와 함께 sequence 번호가 뜨는데, 이 번호는 해당 번호의 archive log file을 찾는데 저 파일이 없어서 에러가 나오는 것이다.

 

8. 새 터미널 창을 하나 더 열어서 redo log의 상태를 조회해서 위에서 본 sequence 번호에 해당하는 redo log file의 경로를 확인한다.

 

9. 아까 화면에서 멈춘 곳에 해당 redo log file의 경로를 적어준다.

 

10. resetlogs 옵션을 이용해 db를 open한 후, 해당 tablespace가 복구되어있는지 조회한다.

 

 

 

Print Friendly and PDF Posted by JJ*
: