IT 기술/Oracle

[삽질기] 개발용 DB 복구 :: OS상의 문제로 Datafile이 손실되었을때 처리

ㅇㅔ ㄷㅡ 2008. 2. 20. 13:22
 월요일에 갑자기 사무실에 있는 개발서버의 오라클 DB가 다운되어 있다는 얘기를 들었습니다.
팀원의 반정도가 본사로 교육을 받으러가있었서 급할게 없기에 천천히 복구 작업을 하게되었죠. 하드디스크 하나를 제거한 뒤에 datafile을 못 찾아서 생긴 현상이었기에 해당 datafile을 삭제해주고 DB를 open하려고 했는데...

SQL> set linesize 150

SQL> col ts_name format a15

SQL> col filename format a60

SQL> SELECT A.TS#, A.NAME AS TS_NAME, B.FILE#, B.NAME AS FILENAME, B.STATUS, B.ENABLED FROM v$tablespace A, v$datafile B WHERE A.TS#=B.TS#

테이블스페이스 이름과 활당된 데이터파일 목록 출력


SQL> ALTER DATABASE DATAFILE 14 OFFLINE DROP;
-- 14번 데이터파일이 없어진 파일이다.

SQL> ALTER DATABASE OPEN;


 여기서 문제가 발생했다. 오류 메세지를 보니 ORA-00600이고 상세 오류 정보에 [2252]가 포함되어 있기에 검색을 해봤더니 SCN관련 오류인듯했다. 다시 서버를 점검해보니 서버의 시스템 날자가 2003년도 1월로 되어있기에 이를 오늘 날자로 바꿔주고 Oracle을 재시작해줬더니 잘 되었다.
그리고 DB를 open한뒤에 해당 테이블 스페이스를 삭제해준걸로 마무리를 했습니다.

SQL> ALTER DATABASE DATAFILE 14 OFFLINE DROP;

SQL> ALTER DATABASE OPEN;

SQL> DROP TABLESPACE LIS;



 이렇게 써놓으니 아주 쉽게 넘어간것 같은데... 사실 이 과정이 이틀이나 걸렸던것이다.
처음엔 controlfile을 재생성하려고 했었다. ORA-00600 [2252] ~~~ 뭐 이런 메세지를 처음 봐서 너무 당황한 나머지 DB 재생성까지 생각했던 것인데... ㅡ.ㅡa
여기서 이번 사례를 정리해보면

환경
1) 아카이브 로그 모드가 아니다.     ㅡ.ㅡ
2) Offline backup을 한 적이 없다.   ㅜ.ㅜ
3) 해당 테이블스페이스는 없어져도 된다.    ^^ (빙고~)

증상
1) Oracle DBMS가 mount 단계에서 open되지 않고 멈추어있다.

원인
1) Datafile 일부가 없어졌다.

해결책
1) 해당 파일을 없애준뒤에 DB를 open한다.
2) 해당 테이블스페이스를 삭제한다.