* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
|
CentOS Stream 8 |
|
11.2.7.0797 |
|
csql |
|
java, php, odbc 등 입력 |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
안녕하세요. 제목 그대로 이기종간 DB Link 문의 드립니다.
테스트는 CUBRID DBLink — CUBRID 11.2.0 documentation 문서를 참고하였으며,
최종적으로 DB Link를 사용하면 다음과 같은 에러가 발생합니다.
$ cubrid gateway status % 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
$ mkdir unidODBC
$ ./configure --prefix=/home/cubrid/unixODBC |
2. ODBC Driver 정보 설정 (서버 B)
$ cd /home/cubrid/unixODBC/etc
$ cat odbcinst.ini |
3. 오라클 인스턴트 클라이언트 ODBC 설치 (서버 B)
$ mkdir -p /home/cubrid/oracle
$ unzip instantclient-basic-linux.x64-12.2.0.1.0.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 |
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] 부분을 편집한다. */ |
제가 잘못 설정한 부분이 있는지 확인 부탁 드립니다.
감사합니다.
서버생성시, 서버 정보가 잘못된것으로 보입니다.
현재 서버 정보가 원격인 Orcale 서버 정보가 들어가있습니다.
HOST 와 PORT 를 원격 oracle 서버에 접속할 gateway 서버 정보를 입력하셔야 합니다.
cubrid_gateway.conf 에 설정한 정보를 참조하세요.
참고로, 아래 방법으로 먼저 dblink 쿼리해 보시기 바랍니다.
csql> select * from dblink('192.168.11.2:53000:orcl:hr:oracle4U:', 'SELECT c1 FROM t1') AS t(c1 int);
** 참고로 53000 은 cubrid_gateway.conf 에서 설정하신 BROKER_PORT 를 사용하시면 됩니다.
더 자세한 내용은 아래 참고하기시 바랍니다.
https://www.cubrid.org/manual/ko/11.2/sql/dblink.html#id15