IT 기술/Oracle
[삽질기] 개발용 DB 복구 :: OS상의 문제로 Datafile이 손실되었을때 처리
ㅇㅔ ㄷㅡ
2008. 2. 20. 13:22
월요일에 갑자기 사무실에 있는 개발서버의 오라클 DB가 다운되어 있다는 얘기를 들었습니다.
팀원의 반정도가 본사로 교육을 받으러가있었서 급할게 없기에 천천히 복구 작업을 하게되었죠. 하드디스크 하나를 제거한 뒤에 datafile을 못 찾아서 생긴 현상이었기에 해당 datafile을 삭제해주고 DB를 open하려고 했는데...
여기서 문제가 발생했다. 오류 메세지를 보니 ORA-00600이고 상세 오류 정보에 [2252]가 포함되어 있기에 검색을 해봤더니 SCN관련 오류인듯했다. 다시 서버를 점검해보니 서버의 시스템 날자가 2003년도 1월로 되어있기에 이를 오늘 날자로 바꿔주고 Oracle을 재시작해줬더니 잘 되었다.
그리고 DB를 open한뒤에 해당 테이블 스페이스를 삭제해준걸로 마무리를 했습니다.
이렇게 써놓으니 아주 쉽게 넘어간것 같은데... 사실 이 과정이 이틀이나 걸렸던것이다.
처음엔 controlfile을 재생성하려고 했었다. ORA-00600 [2252] ~~~ 뭐 이런 메세지를 처음 봐서 너무 당황한 나머지 DB 재생성까지 생각했던 것인데... ㅡ.ㅡa
여기서 이번 사례를 정리해보면
환경
1) 아카이브 로그 모드가 아니다. ㅡ.ㅡ
2) Offline backup을 한 적이 없다. ㅜ.ㅜ
3) 해당 테이블스페이스는 없어져도 된다. ^^ (빙고~)
증상
1) Oracle DBMS가 mount 단계에서 open되지 않고 멈추어있다.
원인
1) Datafile 일부가 없어졌다.
해결책
1) 해당 파일을 없애준뒤에 DB를 open한다.
2) 해당 테이블스페이스를 삭제한다.
팀원의 반정도가 본사로 교육을 받으러가있었서 급할게 없기에 천천히 복구 작업을 하게되었죠. 하드디스크 하나를 제거한 뒤에 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;
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;
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) 해당 테이블스페이스를 삭제한다.