오라클 클라이언트는 설치과정이 좀 독특한 프로그램이다.. 자바로 만들어진 설치 프로그램은 윈도우, 리눅스, 유닉스, 맥 등의 OS에서 모두 사용하기 위해 설계가 되었는가 본데, 각 운영체제에서 당연히 여겨지는 점들이 지켜지지 않아 황당한 경우가 많다..

예를들면, 윈도우 환경에서 설치경로에 공백문자와 한글을 지원한다.. 하지만, 오라클 클라이언트는 이런 경로에 설치를 하면 제대로 동작을 안한다.. 더구나 일정 경로 이상 깊이가 길어지면 (즉, 경로명 길이가 길어지면) 동작을 안하는 경우도 있다.. 온갖 삽질을 통해 경험으로 이런 내용들을 알고 있어 오라클 클라이언트를 설치할때면 무조건 디폴트 경로에 설치를 한다.. 또 무슨 일이 생길지 모르므로.. 오라클의 새 버젼이 나올때 마다 오라클 클라이언트도 새로 나오는데, 왜 아직까지 이런 문제점들을 수정되지 않는가 모르겠다.. 이런 부분을 보면 한중일 2바이트 문자에 대한 지원을 Microsoft 만큼 제대로 하는 곳도 없다.. 오픈소스 진영도 Microsoft를 따라가려면 아직도 멀었다..

하지만, 이것도 내가 잘 하면 되는 것이지만 다른 사람이 이상하게 설치를 해둔 상황에 내가 이상한 점을 발견하고 문제를 해결해야 하는 상황을 접하게 되면 피곤하게 된다.. 이번에도 그런 경우였는데, 다른 서버에서는 잘 동작하는 IIS 서버 컴포넌트가 새 서버에 세팅을 했더니 DB 접속이 안되는 것이다.. 젠장..

정말 신기한 현상은 제어판의 ODBC 세팅하는 화면에서 접속 테스트를 해보면 접속이 제대로 된다는 것이다.. ODBC 세팅창에서는 제대로 되는데, 프로그램에서 안되니 우리 프로그램 문제라 생각하고 연락을 한 것이다..


Microsoft OLE DB Provider for ODBC Drivers 오류 '80004005'
5 (Oracle in OraHome92) 시스템 오류가 발생하여 지정한 드라이버를 로드하지 못했습니다.
/OracleTest.asp, 줄 15


컴포넌트가 DB 접속이 계속 실패를 하는데 원인 찾기가 쉽지 않아, ASP로 간단한 샘플코드를 만들어 확인을 해봤다.. ASP에서도 똑같은 오류가 발생했다.. 위와 같은 오류가 발생하였는데, 원인을 찾는 것이 쉽지 않았다.. 구글을 비롯해 네이버 지식인 등 검색을 좀 해봤는데 완전 똑같은 현상은 아니지만 비슷한 현상들 겪는 사람들이 좀 있었다.. 내용을 종합해보니 C 드라이브 루트가 아닌 D 드라이브에 오라클 클라이언트를 설치하면 제대로 동작을 안하는 경우가 있다는데 힌트를 얻었다.. 확인해보니 문제의 서버에도 오라클 클라이언트가 D 드라이브에 설치되어 있었다.. 젠장, 이렇게 황당한 경우가.. 왜 D 드라이브에 설치를 하면 정상동작을 안하는 것이야? 이렇게 만들라고 해도 이렇게 만들기 힘들겠다..


http://database.ssarang.net/?inc=read&aid=1641&criteria=mssql&subcrit=qna&id=&limit=20&keyword=&page=5

http://locke.tistory.com/40

http://sqler.pe.kr/web_board/view_list.asp?id=6551&read=1718&pagec=&gotopage=24&block=2&part=myboard3

원인을 찾기가 힘들었지 해결방법은 간단했다.. 오라클 클라이언트를 언인스톨 하고, C 드라이브에 설치를 하니 해결이 되었다.. 무슨 프로그램이 C 드라이브에 설치를 했을때와 D 드라이브에 설치를 했을때 동작이 틀려질 수가 있을까? 어떻게 만들면 이렇게 동작할 수가 있을까? 정말 신기하다..
Posted by 미친병아리

댓글을 달아 주세요

  1. Favicon of http://blog.powerumc.kr BlogIcon 땡초 2008.05.11 14:54  댓글주소  수정/삭제  댓글쓰기

    정말 어떻게 하면 저렇게 만들 수 있을까요? ㅋ
    재미있어요~ ^^

  2. Favicon of http://aromi.tistory.com BlogIcon aromi 2008.05.12 01:22  댓글주소  수정/삭제  댓글쓰기

    오라클은 9버전대까지도 JVM 버전이 무척 낮지요. 덕분에 초보 자바개발자들은 오라클 설치하고 잠시 혼란을 겪습니다. 구하기도 힘든 1.2와 1.1 JVM을 PATH 맨 앞에 넣어놓거든요.
    한글문제에 대해서는 두가지 유의사항이 있는데, 하나는 설치 원본을 CD가 아닌 임의의 폴더에 복사했을때 한글 경로가 있으면 안되고, 두번째는 로그온 이름에 한글이 있을 경우 환경변수의 TEMP 디렉토리를 다른 곳으로 바꿔야 합니다.
    몇번 데인 이후 어느 버전을 쓰던 조심하게 되었는데, 이런 대형 프로그램들은 소스 안에 엄청나게 하드코딩 해놔서 고치고 싶어도 쉽게 못고치나 봅니다.

    비슷한 예로, 솔라리스를 설치할때 네트웍 설정을 물어보는데 설치 끝내고 부팅을 하면 네트웍이 안됩니다. 왜냐면 설치할때 입력한 게이트웨이 설정이 저장되지 않았거든요. 거의 10년 가까이 있었던 유서깊은 전통의 버그였는데 안타깝게도(!) 버전 10에서 고쳐졌지요.

    • Favicon of http://madchick.egloos.com BlogIcon 미친병아리 2008.06.16 15:32  댓글주소  수정/삭제

      잘 못 작성을 해서 고치기 힘든 것은 이해를 하겠는데, 그래도 명색이 글로벌 기업으로 여러나라의 언어별로 지원하는 프로그램이라면 이 정도는 어떻게든 고쳐야 하는게 아닌가 하는 생각이 듭니다.. 물론, 고치고 말고는 오라클 맘이죠.. 오라클에게 고객의 목소리는 그저 참고 자료일 뿐..

  3. Favicon of https://perversion.tistory.com BlogIcon 재미있는사이트 2010.04.06 14:21 신고  댓글주소  수정/삭제  댓글쓰기

    안녕하세요. 초보 블로거 입니다. 아름다운 블로그에 좋은 글 잘 보고 갑니다.

    시간 나실 때 제블로그도 한번 방문해주세요.^^

    http://automobili.tistory.com/

MS SQL 2005를 수동으로 삭제하는 방법.. 설치시 오류가 났거나, 언인스톨 과정에서 오류가 난 경우, Visual Studio 설치시 지 맘대로 설치를 해버리는 쓸데없는 MS SQL 2005의 인스턴스들을 제거하고 싶은 경우에 사용..

Microsoft의 페이지들은 사이트 개편이 URL이 언제 어떻게 바뀌어버릴지 모르니 몇가지 핵심 내용을 메모해둘 필요가 있음..  원문은 http://support.microsoft.com/kb/909967/ko 참조..

아래 명령어를 실행하여 삭제하고 싶은 인스턴스를 선택하면 삭제됨..

"C:\Program Files\Microsoft SQL Server\90\Setup Bootstrap\ARPWrapper.exe" /Remove
설치된 인스턴스가 여러개인 경우, 언인스톨을 하고 나면 설치지원 프로그램들이 같이 삭제가 되기 때문에 설치 CD를 사용해 설치지원 프로그램만 설치한 후 취소를 하여 종료하고 다시 위의 명령어를 실행하여 삭제하고 싶은 인스턴스 갯수만큼 반복해야 함.. 불편하지만, 다른 방법 없음..
Posted by 미친병아리

댓글을 달아 주세요

기능 개선상 스토어드 프로시저가 몇개 추가되었는데, 갑자기 스토어드 프로시저 호출이 안되는거다.. 예전 스토어드 프로시저는 잘 호출되고 실행도 되는데 새로 추가된 스토어드 프로시저는 호출이 안된다.. 도대체 뭐가 문제인가.. 몇일을 끙끙 거리고 해매도 답도 안나오고..

스토어드 프로시저 내부에 select 가 2개 이상 있는 것도 아니고.. 이렇게 수정해보고, 저렇게 수정을 해봐도 해결이 안되더군..

2008/03/18 19:16:18 at ets.biz.admin.siteadmin.TestMngMgt.TestMngTO.testMngMarking2
(TestMngTO.java:500) [Debug] call proc_answer ex ( ?, '' ) start
2008/03/18 19:16:18 at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run
(ThreadPool.java:683) [Error] com.microsoft.sqlserver.jdbc.SQLServerException: 서버 커서는 둘 이상의 SELECT 문이 있는 원격 저장 프로시저나 저장 프로시저에서 사용할 수 없습니다. 기본 결과 집합이나 클라이언트 커서를 사용하십시오.
    at ets.biz.admin.siteadmin.TestMngMgt.TestMngTO.testMngMarking2(TestMngTO.java:522)
    at ets.biz.admin.siteadmin.TestMngMgt.TestMngBLC.testMngMarking2(TestMngBLC.java:154)
    at ets.biz.admin.siteadmin.TestMngMgt.TestMngBLC.doTheWork(TestMngBLC.java:51)
 
에러메시지를 가지고 구글 검색을 해봤는데도 검색도 안되고.. 결국, 안되는 영어로 메시지를 영어로 바꾸어 검색을 해서 영문에 해당하는 에러메시지를 찾아냈다.. 그 메시지로 Microsoft의 MSDN 사이트에서 검색을 하니 알려진 버그라는 사실을 찾았다.. 문제는 SQL Server JDBC 드라이버의 버그였으며, 최신버젼으로 업데이트 하니 해결되었다..
 
2006년에 수정된 버그인데, 몇날 몇일을 이것 때문에 시간을 허비한 것인지.. preparedStatement를 MS SQL 2000에서 수행할때 나는 버그였다.. 2005에서는 발생하지 않았다..

Posted by 미친병아리
TAG Java, JDBC, MSSQL

댓글을 달아 주세요

96년도에 졸업하고 사회생활을 하면서 가장 처음으로 접한 DB서버가 MS SQL 6.5였다.. 그래서 그런지, 오라클 보다는 MS SQL에 더 정이 가는가보다.. 첫인연도 그렇지만, 사용하기에 MS SQL 서버가 훨씬 편리하다는 특징이 더 이런 상황을 만들었을 것이라 생각한다..

MS SQL 서버의 편리함은 인스톨과정에서 부터 조금만 사용해보면 바로 나타난다.. 설치, DB 생성, 백업, 백업으로부터의 복구 등등의 과정을 프로젝트 진행간 자주 해보면 MS SQL 서버를 사용해보면 편리하다.. mySQL 같이 간편하면서, 성능은 오라클 못지 않는다고나 할까.. 뭐, 이렇게 말하면 오라클 유저들에게 한 소리 듣는다.. 어떻게 오라클과 MS SQL을 성능 비교를 할 수 있느냐, 비교할 것을 해야지.. 하지만, 난 MS SQL과 오라클의 성능차이는 거의 없다고 생각한다..

아무튼, MS SQL 서버를 사용하면서 가장 편리한 점은 DB 복사를 손쉽게 할 수 있다는 것이다.. 예를들면 개발중인 DB서버에서 이 DB를 다른 서버에 그대로 복사본을 만들고 싶으면 DB 파일만 새 서버에 복사를 해서 새 MS SQL 서버에서 파일로 DB에 연결만 하면 끝이다.. 오라클에서는 이 과정이 꽤 복잡하다..

하지만, 이때 좀 귀찮은 경우가 생길때가 있다.. 위와 같은 방법으로 A서버에 CBT라는 DB를 B서버에 똑같이 만들어서 A서버에서는 계속 개발을하고 B서버에서 단위테스트를 진행을 했다.. 그러다 DB가 변경된 부분들이 생겨서 B서버에 DB를 다시 옮겨야 한다.. 이때도 B서버의 CBT DB를 없애고 위와 같은 방법으로 새로 붙이면 되는데 문제는 계정이 좀 꼬이는 경우가 생긴다..

A서버에서와 같은 이름과 패스워드 계정으로 CBT DB에 접근하고 싶은데 이미 계정이 있으니 만들 수 없다는 둥, 이런 문제가 발생하는 것이다.. 정말 큰 문제는 이런 경우 MS SQL 엔터프라이즈 메니저 (2000이하) 혹은 SQL Server Management Studio (2005이상)가 제공하는 UI 상에서는 이 문제를 해결할 수 있는 방법이 없다.. 모든 작업을 커맨드 라인이 아닌 UI에서 하는 MS SQL 서버의 특징에 위배되는 상황이다.. 하지만, 뭐 방법없다.. UI에서 제공 안해주니 별 수 없지.. 쿼리를 날려 해결해야 한다.. 이때 사용하는 스토어드 프로시저가 sp_change_users_login 이다..

사용법 : EXEC sp_change_users_login 'Update_One', 'cbt', 'cbt'
이 스토어드 프로시저를 사용하지 않으면 해결할 수 있는 방법이 없는데, 도움말에서 이거 찾기도 쉽지 않다.. 쩝..
Posted by 미친병아리
TAG db, MSSQL

댓글을 달아 주세요

  1. Favicon of http://ismytreasure.tistory.com BlogIcon 민서대디 2007.07.05 13:36  댓글주소  수정/삭제  댓글쓰기

    좋은(?) 명령어 죠..^^
    가끔 애용하고 있다는..

  2. Favicon of http://bluesman.tistory.com BlogIcon Jerry 2007.08.15 21:07  댓글주소  수정/삭제  댓글쓰기

    블로그 답방 왔습니다. 티스토리에도 공간을 마련하셨네요. 앞으로 자주 들르도록 하겠습니다. 저는 보안을 하는 입장이다 보니, MS SQL 서버 하면 당장엔 1.25 대란이 떠오르네요. 블로그에 남겨주신 글을 보니, 예전에 기타도 치셨던 모양입니다. 일거리 외에 정신적 위안이 될 수 있는 취미가 있으면 참 좋다는 생각을 하곤 하는데, 간혹 이 취미때문에 스트레스를 받기도 해서 좀 난감할 때가 있습니다. 앞으로 종종 방문하도록 할께요. ^^