iBatis.net 을 사용하면 확실히 닷넷 코드 레벨에서 데이터베이스 관련하여 고민할 것이 많이 줄어들기 때문에 무척 좋습니다. Entity Framework 를 쓰면 얻을 수 있는 더 많은 잇점들이 있지만 간단하게 데이터베이스 엑세스에 대한 부분을 정리하고 간편화하는데에는 iBatis.net 이 훨씬 투입 공수가 적은 장점이 있습니다.

다만 iBatis.net 단에서 문제가 발생했을 때는 트러블 슈팅이 쉽지 않은편입니다. 오픈소스기 때문에 누가 책임을 져주는 것도 아니고 한번 내부적으로 처리된 에러 메세지들이 나오기 때문에 더 상세한 오류 원인을 찾으려 삽질하기 일쑤지요. 이번에 개발된 내용물을 클라우드 서버에 포팅하면서 겪은 문제 역시 마찬가지였습니다. 기록 차원에서 블로그에 정리해 둡니다.

에러의 시작, " Unable to open connection to ... "

로컬에서 MS-SQL 을 가지고 작업을 할때 아무런 문제가 없었던 로직. iBatis.net 의 장점을 십분 활용해 실서버 환경에서 provider.config 를 오라클에 맞추어 조정하면 가볍게 끝날것으로 생각했던 작업은 만 하루가 넘게 걸리고서야 해결될 수 있었습니다. 오래걸린 주요한 이유 중 하나가 바로 iBatis.net 가 추상적으로 던진 에러의 원인을 찾기 위함이었네요.

로컬은 32bit 개발환경이고 공교롭게도 처음 포팅했던 서버는 Windows Server 2003 32bit 버전이어서 더욱 오래 걸렸던 이번 에러. 두번째 포팅한 서버가 Windows Server 2008 R2 64bit 환경이었고, 여기에서 System.Data.OracleClient 네임스페이스에 매핑된 라이브러리가 32bit 냐 64bit 냐 때문에 발생하는 것이었습니다.  

참조링크 : OTN 의 OracleClient 64bit 모드 관련 Forum 글 참조 [바로가기]


비주얼 스튜디오로 빌드를 하면서 특별히 빌드 환경을 지정하지 않고 Any CPU 로 하고 있던게 화근이었습니다. iBatis.net 이 계속 에러를 토하는 과정에서 내부 에러를 살펴보니 아래와 같은 메세지를 내놓고 있었습니다. 기본적으로 iBatis.net 이 던져주는 Exception 의 Message 로는 확인이 되지 않는 부분이었습니다.


여러가지 해결 방법들이 제시되었고 가장 많은 것이 Oracle Client 를 환경에 맞게 재설치 하는 것이었는데 제가 전담하는 서버도 아니고 해서 그 방법을 쓰는건 너무 위험해 보였습니다. 그래서 x86 과 x64 로 빌드후 포팅을 해보기로 했는데, x86 으로 재빌드 하고 나서 아무런 문제가 없이 잘 수행되는게 확인 되었습니다.

혹시 비슷한 오류를 겪으시는 분들은 서버 환경에 따라 빌드 옵션을 다르게 주고 빌드한 다음 테스트를 해보시는 것을 추천해 드립니다. 이것 때문에 하루를 넘게 소비했다는 것이 참 어이가 없을 뿐입니다. 아무쪼록 누군가에게 도움이 되고 스스로에게도 언젠가 레퍼런스로 활용할 수 있도록 블로그에 글 남겨둡니다.

- NoPD -
 
신고
Posted by 노피디

티스토리 툴바