실제 ALTIBASE의 unix ODBC Driver와 연동하기 위한 방법을 설명한다.
ODBC.INI 설정
사용자계정의 환경변수에 다음을 설정한다.
해당 설정은 odbc driver의 접속정보를 기록하는 설정파일을 지정한 파일로 사용하겠다는 의미이다.
/home/unixODBC/etc/odbc.ini에는 다음과 같이 기록한 후 저장한다
odbc.ini 예제
- 주요 설정값
설정항목 | 설정값 | 설명 |
---|---|---|
Driver | libaltibase_odbc-64bit-ul64.so | Bit에 따라 제공되며 중요한 것은 ul64/32의 확인이다. 일부 ODBC Manager의 컴파일단계에서 SQLLEN에 대한 정의를 4byte/8byte로 달리하여 접속단계부터 오류가 날 수 있음으로 해당 ODBC Manager를 컴파일 할 때 SQLLEN을 어떻게 정의했는지를 확인해야 한다. (32/64bit의 구분이 아님) |
libaltibase_odbc-64bit-ul32.so | ||
libaltibase_odbc.so | libaltibase_odbc.so는 32bit용 unixodbc driver와 사용되는 odbc driver이다. altibase 32bit client package 에 포함되어 있는 파일이다. 정확하게는 파일의 비트를 사용자가 확인해서 써야 한다. (file <FileName>으로 확인) unixodbc 를 32bit 로 컴파일해서 사용하는 경우 이 Driver를 지정해서 사용해야 한다. | |
LongDataCompat | ON | lob 데이타를 사용할 경우 ON 설정을 한다. |
위의 SQLLEN의 길이정보는 다음과 같이 확인한다.
shell> /home/unixODBC/bin] ./odbcinst -j
unixODBC 2.3.2
DRIVERS............: /home/unixODBC/etc/odbcinst.ini
....................
SQLULEN Size.......: 4 ( 64bit인 경우 8 )
SQLLEN Size........: 4 ( 64bit인 경우 8 )
SQLSETPOSIROW Size.: 2
ODBC연결테스트
위과 같이 설정이 완료되면 unixODBC Manager가 설치된 디렉토리에서 다음과 같은 수행을 한다.
위와 같이 정상적인 접속 프롬프트가 보여지면 정상적으로 DB에 연결될 상태라고 볼 수 있다. AIX의 경우는 간혹 libodbcinst.so 의 파일이 LIBRARY_PATH에 잡히지 않거나 특이한 이유로 정상적으로 설치했음에도 불구하고 접속이 안 되는 경우가 있다.
libodbcinst.so.1 파일이 컴파일 한 소스디렉토리에 존재하는지 확인하고 이것에 대한 libodbcinst.so 가 존재하지 않을 경우 libodbcinst.so.1에 대한 심볼릭 링크를 걸어 LD_LIBRARY_PATH내에 위치시킬 경우 해결이 가능하다.
SUN의 경우는 LD_LIBRARY_PATH_64 에 unixODBC Manager의 lib경로를 설정해야 접속이 가능하다
ODBC trace log 설정
unixODBC 에서 호출하는 ODBC 함수를 파일로 로깅하여 문제 원인분석시 유용하게 활용할 수 있다. unixODBC가 trace log 를 남기도록 설정하는 방법은 아래와 같다.
ODBCINST.INI 파일 설정
odbc.ini 파일이 위치한 경로와 동일 디렉토리 경로에 odbcinst.ini 에 위와 같이 설정한다. DSN 명은 반드시 [ODBC] 를 사용하여야 한다. TraceFIle 설정값은 로깅할 내용이 기록될 파일의 위치와 파일명이다. Trace = Yes/No 로깅 여부를 선택할 수 있다.
unixODBC Trace 출력예
trace.log 열어 보면 위와 같은 파일 내용을 확인할 수 있다.