이기종간 DB Link 문의 드립니다.

by kikiki767 posted Sep 26, 2023


* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.

OS
CentOS Stream 8
CUBRID Ver.
11.2.7.0797
CUBRID TOOL Ver.
csql
응용 환경(API)
java, php, odbc 등 입력


* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.

 

에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
 

안녕하세요. 제목 그대로 이기종간 DB Link 문의 드립니다.

 

테스트는 CUBRID DBLink — CUBRID 11.2.0 documentation 문서를 참고하였으며,

 

최종적으로 DB Link를 사용하면 다음과 같은 에러가 발생합니다.

 

$ cubrid gateway status
@ cubrid gateway status
% oracle_gateway
----------------------------------------------------------------------
        ID   PID                  QPS        LQS   PSIZE STATUS       
----------------------------------------------------------------------
         1 632501                    0          0  132920 IDLE         
         2 632502                    0          0  132920 IDLE         
         3 632503                    0          0  132920 IDLE         
         4 632504                    0          0  132920 IDLE         
         5 632505                    0          0  132920 IDLE         

% mysql_gateway OFF

 

 

csql> CREATE SERVER remote_srv ( HOST='192.168.11.1', PORT=1521, DBNAME=orcl, USER=hr, PASSWORD='oracle4U');
 

csql> SELECT * FROM DBLINK (remote_srv, 'SELECT c1 FROM t1') AS t(c1 int);

In the command from line 2,

ERROR: dblink - Cannot communicate with server

 

 

 

테스트 한 서버의 환경은 다음과 같습니다.

 

  서버 A 서버 B
IP 192.168.11.1 192.168.11.2
Hostname db1 db2
DB  Oracle 12.2.0.1 Cubrid 11.2.7.0797
Port 1521 30000

 

 

스텝은 다음과 같이 진행했습니다.

 

 

1. unixODBC 설치 (서버 B)

 

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

 

$ mkdir unidODBC
$ cd unixODBC-2.3.9/

 

$ ./configure --prefix=/home/cubrid/unixODBC
$ make
$ make install

 

2. ODBC Driver 정보 설정 (서버 B)

 

$ cd /home/cubrid/unixODBC/etc

 

$ cat odbcinst.ini 
[Oracle 12c ODBC driver]
Description = Oracle ODBC driver v12c
Driver = /home/cubrid/oracle/instantclient_12_2/libsqora.so.12.1

 

3. 오라클 인스턴트 클라이언트 ODBC 설치 (서버 B)

 

$ mkdir -p /home/cubrid/oracle
$ cd oracle

 

$ unzip instantclient-basic-linux.x64-12.2.0.1.0.zip
$ unzip instantclient-odbc-linux.x64-12.2.0.1.0-2.zip

 

4. 오라클 인스턴트 클라이언트 환경변수 설정 (서버 B)

 

$ tail -3 .bash_profile 
export ORACLE_INSTANT_CLIENT=/home/cubrid/oracle/instantclient_12_2
export PATH=$ORACLE_INSTANT_CLIENT:$PATH
export LD_LIBRARY_PATH=$ORACLE_INSTANT_CLIENT:$LD_LIBRARY_PATH

 

5. Oracle Database에 엔결을 위한 연결정보 설정 (서버 B)

 

$ mkdir -p /home/cubrid/dblink_config

$ cd dblink_config

$ cat tnsnames.ora 
orcl =
  (DESCRIPTION=
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.11.1)(PORT = 1521)
  )
  (CONNECT_DATA =
        (SERVICE_NAME=ORCL)
  )
)

 

6. TNS_ADMIN 환경변수 설정 (서버 B)

 

$ tail -1 .bash_profile 
export TNS_ADMIN=/home/cubrid/dblink_config

 

7. Oracle Database 환경변수 설정 (서버 B)

 

$ tail -4 .bash_profile 
export ORACLE_SID=orcl
export ORACLE_BASE=/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH

 

8. Oracle을 위한 cubrid_gataway.conf 설정 (서버 B)

 

$ cd $CUBRID/conf

/* [%oracle_gateway] 부분을 편집한다. */
[cubrid@urp2 conf]$ cat cubrid_gateway.conf
..
..
CGW_LINK_SERVER_IP      =192.168.11.1
CGW_LINK_SERVER_PORT    =1521
CGW_LINK_ODBC_DRIVER_NAME   =Oracle 12c ODBC driver
..
..

 

 

제가 잘못 설정한 부분이 있는지 확인 부탁 드립니다.

 

감사합니다.

 

 


Articles

1 2 3 4 5 6 7 8 9 10