본문 바로가기

IT

오라클xe 데이터파일에서 복구후기



2010년, 파워빌더 + Oracle 10g Express Edition 으로 개발했던 회원관리 프로그램을 모 단체에 설치해드렸던 적이 있었다. 회원관리를 네트워크 시스템으로 운영할 목적으로, 기존에 로컬 DB로 작동하던 프로그램을 OracleXE를 이용하여 여러사람이 사용할 수 있도록 수정한 프로그램 이었다.

그럭저럭 사용하셨는지 연락이 없었는데, 그곳에서 아주 오랜만에 연락이 왔다.
프로그램이 실행되지 않는다고~~

여차저차해서 원인을 살펴보니 Database가 작동하지 않았다.
그래서 사연을 들어보니 DB가 설치되어있던 컴퓨터가 하드웨어 고장으로 OS를 새로 깔았다는 슬픈 소식~
서버를 뒤져보았으나, dmp파일은 2년전 것이 전부였다.

그래서 복구하기 힘들다고 말씀드렸으나, 
2년간 업데이트 했던 회원정보를 한꺼번에 날릴 수는 없으니 계속해서 복구 가능여부를 물어보셨다.


안타까운 마음에, 예전 오라클 cold backup이 생각나서 혹시라도 하드디스크에 이전 oracle data폴더가 살아있는지 확인했더니, 다행히 하드디스크 파일 전체가 백업되어 있었다.





사실 오라클을 다룬지도 오래고, cold backup 및 복구를 해본지도 몰라서...
그냥 나름대로 무식한 방법으로 복구해보기로 작정하고서...
예전에 설치되어있던 컴퓨터와 같은 OS, 같은 디렉토리에 설치한 후, 파일 전체를 복사해서 서비스를 돌리면 가능하지 않을까 하는 마음에^^


1) 예전 컴퓨터와 같은 OS(win98)에 같은 버젼의 오라클xe 설치파일을 다운받고, 프로그램을 설치했다.



2) 오라클 관련 서비스를 모두 종료한 후, 프로그램이 설치된 경로(예, C:\oraclexe)에 백업되어있던 기존 파일을 복사해 넣었다.


3) 복사완료 후, 서비스를 다시 시작하니, OracleServiceXE는 시작됐지만, OracleXETNSListener가 시작되지 않는다.
시작된다고 메세지는 나오지만 새로고침 하면 다시 서비스가 종료되었다는 표시로 바뀐다.


당연히 SQL명령줄 에서도 아무런 명령이 실행되지 않고, 모두 에러가 발생했다.
이런 방법으로 오라클을 복원하는 것은 불가능 한 것 같다.


4) 다른 방법으로 OracleServiceXE만 실행된 상태에서, 바로 exp 명령으로 Database를 백업받아보았다.




아싸~ 예상밖으로 Database export에 성공했다.


5) 서버로 사용할 컴퓨터에 다시 OracleXE를 설치했다.
정상적인 서비스를 설치한 후, 좀 전에 받았던 dmp 파일을 이용하여 데이터베이스를 복구하니 잘 돈다^^






역시나, 전산 관리자가 없는 상태에서 오라클DB를 유지보수 하는 것은 무리가 있나보다. 
그냥 사용하는 경우는 관계없지만, 어떤 문제상황이 발생했을 경우, 문제를 해결하기가 쉽지 않거나 비용이 많이 발생한다.

무작정 시도한 것이 잘 해결되어 나름 기뻤지만, 언제까지나 이런 방법이 가능할 지 알 수 없으니,
자료 백업받으실 수 있는 배치파일을 만들어 드리고, 정기적으로 데이터 백업을 받으실 수 있도록 설명드렸다.