티스토리 뷰

반응형

안녕하세요. Informix는 기본적으로 Informix간의 데이터베이스 상호 참조는 가능하지만, 이기종 데이터베이스를 참조하는 기능은 없습니다. 이기종 데이터베이스를 참조하려면 Informix Enterprise Gateway Manager(EGM)가 필요한데요. EGM은 아래 그림과 같이 Informix Server와 별도의 프로세스를 거쳐서 이기종 데이터베이스에 접근할 수 있도록 해줍니다.

 

Informix High-Performance Federated Database System (Yunming Wang, 2012 IIUG Conference)

Enterprise Gateway는 DRDA 프로토콜과 ODBC를 사용하는 두가지 제품군이 있습니다. DRDA 프로토콜로는 DB2/zos와 UDB에, ODBC로는 DataDirect 사에서 제공하는 ODBC 관리자 및 드라이버를 통해 Oracle, SQL Server, MySQL 등의 데이터베이스에 접근할 수 있습니다. 한가지 주의할 점은 32비트 ODBC 관리자를 사용하므로 DataDirect에서 제공되지 않는 ODBC 드라이버를 사용할 경우 32비트용으로 사용해야한다는 하는 점입니다.

저는 EGM 7.31.UD4 버전을 설치하고 SQL Server에 접속하는 테스트를 해보았습니다. 시행착오가 좀 있었는데 구성 자체는 어렵지 않았습니다.

 

1. EGM 설치환경

① O/S : CentOS 7

② 클라이언트 : Informix Server 14.10.FC4W1

③ 접속대상DB : SQL Server 2017 on Linux

 

클라이언트와 접속대상DB가 같은 호스트에 있는 상태에서 구성 및 테스트를 했습니다.

 

2. EGM 구성순서

① EGM 설치 

설치전에 INFORMIXDIR 설정이 필요하고, 설치는 root 계정으로 합니다.

② EGM 인스턴스의 sqlhosts 파일 작성

Informix Server와 동일한 형식의 sqlhosts 파일을 작성합니다. 위치는 $INFORMIXDIR/etc 입니다.

③ EGM 환경변수 파일 수정

INFORMIXSERVER와 LD_LIBRARY 환경변수 설정의 주석을 제거하고 필요한 경우 라이브러리 경로를 추가합니다.

egmdba 유틸리티를 사용하려면 INFORMIXTERM 환경변수도 설정하는 것이 좋습니다.

그리고 GWDIRECTMODE를 설정해야 dbaccess 같은 유틸리티에서 직접 이기종 데이터베이스에 접속할 수 있습니다.

관련 내용은 아래 링크에서 확인했습니다.

members.iiug.org/forums/ids/index.cgi/read/23480

www.ibm.com/support/pages/error-29080-when-trying-use-substr-function-oracle-database

④ odbc.ini 파일 수정

$INFORMIXDIR/egm/odbc 경로에 odbc.ini 파일이 있습니다. 이 파일에서 SQL Server에 접속 정보를 수정하거나 추가합니다. 수정할 경우 Address와 dbname만 수정하면 됩니다.

[mssql]
Driver=/work1/informix/egm/egm/odbc/lib/IXsqls28.so
Description=DataDirect 8.0 SQL Server Wire Protocol
Address=xxx.xx.xx.xx,1433
AlternateServers=
AnsiNPW=Yes
ConnectionRetryCount=0
ConnectionRetryDelay=3
Database=dbname
LoadBalancing=0
LogonID=
Password=
QuotedId=No
SnapshotSerializable=0

3. EGM 프로세스 실행

EGM은 root 계정으로만 실행 가능합니다. root가 아닌 계정으로 실행하면 아래와 같이 오류가 발생합니다.

[informix@db2 odbc]$ egmd egm731ud4 -s egm -l /work1/informix/egm/egmd.log
2020-09-11 11:10:37.916976 daemon err = 25501: oserr = 0: errstr =  : The sqlexecd daemon must be started by root.

4. EGM 유저 및 데이터소스 등록

egmdba 유틸리티를 사용하여 EGM에서 사용할 유저명과 ODBC 데이터소스 이름, 데이터 소스에 접속하기위한 정보를 등록합니다. egmdba는 root 계정으로도 실행할 수 있지만 전체 관리 기능을 사용하려면 informix 계정으로 실행해야 합니다.

5. 접속 테스트

dbaccess를 사용하여 접속 테스트를 해봅니다. 

6. Informix의 데이터베이스에 접속한 상태에서 SQL Server 데이터베이스의 테이블을 조회하려고 할 때는, 아래처럼 오류가 발생하면서 EGM 프로세스가 다운되었습니다. 이 부분은 좀 더 테스트를 해봐야할 것 같습니다.

이기종 데이터베이스에 접근하는 것은 상당히 좋은 기능이지만 EGM은 별도의 상용제품이기 때문에 구매를 해야합니다. 따라서 기업입장에서는 비용을 들여서 구축하기에는 다소 부담이 될 것 같습니다.

시간나는대로 Oracle이나 MySQL도 접속 테스트를 해봐야겠습니다.

반응형
댓글