본문 바로가기

언어/Database

unixodbc 2.3.9 / freetds 1.2.18

freetds-1.2.18.tar.gz
2.91MB
unixODBC-2.3.9.tar.gz
1.60MB

출처: unixodbc 설정… (pchero21.com)

 

unixodbc 설정…

기존에 Windows 환경에서만 적용되던 모듈을 Unix로 컨버팅해야하는 경우가 생겼다. 대부분의 소스는 이미 Unix 환경에서 사용이 가능하도록 컨버팅이 되어 있었지만, 단하나… ODBC와 관련된 부분이

pchero21.com

기존에 Windows 환경에서만 적용되던 모듈을 Unix로 컨버팅해야하는 경우가 생겼다.

대부분의 소스는 이미 Unix 환경에서 사용이 가능하도록 컨버팅이 되어 있었지만, 단하나… ODBC와 관련된 부분이 있었다.

이걸 어떻게 해야하나…

시간은 없었고..

결론은 unixodbc를 사용하고 소스는 원본을 최대한 손을 안대는 방향으로 하기로 했다.

아래의 환경에서 작업을 구성했다.

작업 환경

OS : HP-UX B.11.31 U ia64
Compiler : HP C/aC++ B3910B A/06.27
unixodbc : unixODBC-2.3.1
freetds : freetds-0.91

unixodbc 컴파일

unixodbc 사이트에 들어가서 최신의 odbc package(unixODBC-2.3.1)을 내려받아 설치한다.

http://www.unixodbc.org/

freetds 컴파일

freetds 사이트에 들어가서 최신의 freetds package(stable 버전..)을 내려받아 설치한다.

http://freetds.schemamania.org/index.html

완성된 설정 내용

/etc/odbc.ini

[TEST]
Driver = FreeTDS
Description = MSSQL Setting..
Servername = ODBC_TEST
Trace = No
Database = 4.2
Port = 1433

/etc/odbcinst.ini

[FreeTDS]
Description = MSSQL Setting..
Driver = /usr/local/freetds/lib/libtdsodbc.so
UsageCount = 1

참고 사이트들..

참고 : http://dirk.net/2010/09/18/sql-server-with-freetds-unicode-data-error/

참고 : http://stackoverflow.com/questions/2922829/freetds-and-unixodbc-character-converting

참고 : http://blog.naver.com/PostView.nhn?blogId=bebas&logNo=80118437810

참고 : http://stackoverflow.com/questions/3261909/build-32bit-on-64-bit-linux-using-a-configure-script

참고 : http://h30499.www3.hp.com/t5/Languages-and-Scripting/freeTDS-on-HP-UX-11-31/td-p/4671681

참고 : http://www.freetds.org/userguide/odbcdiagnose.htm

참고 : http://kldp.org/node/51717

----------------------------------------------------------------------------------------------------------------------------------

unixodbc 설치방법: [GOLDILOCKS] unixODBC 연동하기 (tistory.com)

연동환경

 

서버

 OS

 CentOS Linux release 7.2.1511

 DATABASE

 Goldilocks 3.1.0 r23226

 클라이언트

 OS

 CentOS Linux release 7.2.1511

 UNIX ODBC

 unixODBC v2.3.4

 

 

unixODBC DRIVER MANAGER 다운로드

 

 [ 다운로드 방법 1 ]

 1. http://www.unixodbc.org/ 사이트에 접속합니다.

 2. Download 탭을 클릭한 뒤, tar.gz 압축파일을 다운로드 합니다.

 3. 다운로드한 압축파일을 클라이언트 OS로 전송합니다.

 

 

 [ 다운로드 방법 2 ]

 1. 클라이언트 OS 에서 wget 명령어를 사용하여 다운로드 합니다.

  * SHELL> wget http://www.unixodbc.org/unixODBC-2.3.4.tar.gz

$ wget http://www.unixodbc.org/unixODBC-2.3.4.tar.gz

--2017-09-13 06:56:49--  http://www.unixodbc.org/unixODBC-2.3.4.tar.gz

Resolving www.unixodbc.org (www.unixodbc.org)... 87.106.19.214

Connecting to www.unixodbc.org (www.unixodbc.org)|87.106.19.214|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 1830660 (1.7M) [application/x-gzip]

Saving to: ‘unixODBC-2.3.4.tar.gz’

100%[===========================================================>] 1,830,660   7.25KB/s   in 5m 59s

2017-09-13 07:02:50 (4.98 KB/s) - ‘unixODBC-2.3.4.tar.gz’ saved [1830660/1830660]

 

unixODBC DRIVER MANAGER 설치

 * 설치전 사전 정보입니다.

 설치 계정

 centos

 설치 경로

 /home/centos/unixODBC

 gcc 버전

 gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11)

 

 1. tar.gz 파일을 압축해제 합니다.

 2. 압축해제한 경로로 들어갑니다.

 3. unixODBC 를 설치합니다.

$ tar xzf unixODBC-2.3.4.tar.gz
$ cd unixODBC-2.3.4
$ ./configure --prefix=/home/centos/unixODBC
$ make
$ make install



unixODBC DRIVER MANAGER 연동

 

 1. 설치한 경로로 들어갑니다.

 2. bin 파일로 들어갑니다.

 3. odbcinst 실행파일을 수행하여 unixODBC DRIVER MANAGER 정보를 확인합니다.

$ cd /home/centos/unixODBC
$ cd bin
$ ./odbcinst -j

unixODBC 2.3.4
DRIVERS............: /home/centos/unixODBC/etc/odbcinst.ini
SYSTEM DATA SOURCES: /home/centos/unixODBC/etc/odbc.ini
FILE DATA SOURCES..: /home/centos/unixODBC/etc/ODBCDataSources
USER DATA SOURCES..: /home/centos/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8 

 SQLLEN Size 가 4 인 경우

 libgoldilockscs-ul32.so

 SQLLEN Size 가 8 인 경우

 libgoldilockscs-ul64.so

 

 4. USER DATA SOURCES 의 경로에 Goldilocks ODBC 정보를 등록합니다.

 * 테스트 시의 IP 및 PORT 입니다.

 Server IP

 192.168.0.50

 Database Listener Port

 22581

 

$  cat /home/centos/.odbc.ini

[ODBC Data Sources]
GoldilocksODBC = Goldilocks ODBC Driver

[GoldilocksODBC]
# DRIVER : DATABASE ODBC DRIVER
# HOST   : DATABASE SERVER IP
# PORT   : DATABASE LISTENER PORT 

DRIVER = /home/centos/goldilocks_home/lib/libgoldilockscs-ul64.so
HOST   = 192.168.0.50
PORT   = 22581



unixODBC 연결 테스트

 1. unixODBC 의 isql 명령어를 사용하여 Goldilocks 에 접속합니다.

$ cd /home/centos/unixODBC/bin
$ ./isql -v GoldilocksODBC TEST test
SQL>


-----------------------------------------------------------------------------------------------------------------------------------

freetds 설치가이드: Oracle Linux 7.6에 FreeTDS 설치 가이드 :: 내맘대로긍정 (tistory.com)

OS환경 : Oracle Linux 7.6, Windows Server 2012 (64bit)

 

DB 환경 : Oracle Database 12.1.0.2, SQL Server 2012

 

방법 : FreeTDS 설치 가이드

FreeTDS 다운로드

FreeTDS는 이기종간 연결을 위한 유닉스와 리눅스용 라이브러리의 집합임

http://www.freetds.org/index.html 공식홈페이지 접속

 

 

오른쪽에 있는 Stable Release (1.2.3)을 눌려서 파일 다운로드 후 서버에 업로드

 

 

FreeTDS 설치

# tar -xvf freetds-1.2.3.tar.gz 
# cd freetds-1.2.3/
# ./configure -prefix=/usr/local/freetds -enable-msdblib -with-gnu-ld
# make
# make install

make 시 warning: ~~ 이 발생해도 무시하고 make install 진행

 

 

freetds.conf 파일 설정

아래 내용 최하단에 추가

# vi /usr/local/freetds/etc/freetds.conf

[ms2012]
host = 192.168.137.12 # MsSQL Server IP Address
port = 1433 # MsSQL Server Port
tds version = 8.0
client charset = UTF-8

freetds tsql 정상 동작 확인

예시

# /usr/local/freetds/bin/tsql -S <freetds.conf에서 정한이름> -U 계정 -P '패스워드'

실사용

# /usr/local/freetds/bin/tsql -S ms2012 -U sa -P 'dnls1!'

locale is "en_US.UTF-8"

locale charset is "UTF-8"

using default charset "UTF-8"

1> select * from table_1;

2> go

cola

1

1

(2 rows affected)

1> quit

1, 2, 3, 4.... 계속숫자가 올라가지 않고 1> 에서 멈춰서 텍스트를 입력할 수 있으면 정상

테이블 조회도 정상적으로 가능함