Background Image

FORUM

조회 수 104 추천 수 0 댓글 6
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄


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

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
..
..

 

 

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

 

감사합니다.

 

 

  • ?
    동구 2023.09.26 10:27
    csql> CREATE SERVER remote_srv ( HOST='192.168.11.1', PORT=1521, DBNAME=orcl, USER=hr, PASSWORD='oracle4U');

    서버생성시, 서버 정보가 잘못된것으로 보입니다.
    현재 서버 정보가 원격인 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
  • ?
    kikiki767 2023.09.26 10:41

    말씀하신 대로 했더니 다음 에러가 발생합니다. 

     

    csql> select * from dblink('192.168.137.252:53000:orcl:hr:oracle4U:', 'SELECT c1 FROM t1') AS t(c1 int);

    In the command from line 2,

    ERROR: dblink - [01000][0] [unixODBC][Driver Manager]Can't open lib 'Oracle 12c ODBC driver' : file not found[CAS INFO-192.168.137.252:53000,0,0].

     


    서버 만들어서 해도 동일하고요.
     

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

    In the command from line 1,

    ERROR: dblink - [01000][0] [unixODBC][Driver Manager]Can't open lib 'Oracle 12c ODBC driver' : file not found[CAS INFO-192.168.137.252:53000,0,0].

     

     

    libsqora.so.12.1 이 파일을 못 찾아서 에러가 발생하는 걸까요?

  • ?
    동구 2023.09.26 10:58
    네.. 일단 에러메시지 상으로는 odbc 드라이버 관련해 보입니다.

    오라클 관련 odbc 드라이버 설치 방법입니다. 아래 내용 참고하세요.


    1. Oracle 드라이버 설치

    * 드라이버 다운로드 경로 : https://www.oracle.com/kr/database/technologies/instant-client/downloads.html
    * 위 경로에서 Oracle 버전에 맞는 Basic Package (ZIP), ODBC Package (ZIP)을 다운받아 동일 폴더에 압축을 풉니다.

    ** oracle odbc 드라이버가 설치되고 사용될 임의의 디렉토리를 생성한다.
    # mkdir /opt/oracle/

    ** /opt/oracle 경로에 zip 파일 다운로드 확인
    [root@tonggu2 oracle]# ll
    total 77696
    -rw-r--r--. 1 root root 78759477 Jun 2 14:31 instantclient-basic-linux.x64-21.10.0.0.0dbru.zip
    -rw-r--r--. 1 root root 798620 Jun 2 14:32 instantclient-odbc-linux.x64-21.10.0.0.0dbru.zip

    ** unzip
    * unzip 파일이 없다면 설치한다. yum install unzip
    [root@tonggu2 oracle]# ll
    total 77700
    drwxr-xr-x. 4 root root 4096 Jun 7 15:06 instantclient_21_10
    // 디렉토리 생성확인 - 이 경로에 oracle odbc 관련 파일들이 존재한다.
    -rw-r--r--. 1 root root 78759477 Jun 2 14:31 instantclient-basic-linux.x64-21.10.0.0.0dbru.zip
    -rw-r--r--. 1 root root 798620 Jun 2 14:32 instantclient-odbc-linux.x64-21.10.0.0.0dbru.zip

    2. tnsnames.ora 파일 생성

    ; /opt/oracle/instantclient_21_10 디렉토리에 생성한다.
    [cubrid11@tonggu1 instantclient_21_10]$ vi tnsnames.ora

    /* orcle 서버 접속정보 입력 */

    orcl = // 접속 alias 명
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST=172.31.202.12)(PORT=1521))
    // 원격호스트 ip 및 port
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = ORCLCDB) // database 명
    )
    )

    3. 환경변수 설정
    ; cubrid 계정에서 아래와 같이 oracle 관련 환경변수 설정을 합니다.
    [cubrid11@tonggu1 ~]$ vi .bash_profile // 해당 파일 맨아래 추가

    #-------------------------------------------------------------------------------
    # set Oracle enviroment variables for CUBRID DBLink
    #-------------------------------------------------------------------------------
    export ORACLE_HOME=/opt/oracle/instantclient_21_10
    export PATH=$PATH:$ORACLE_HOME
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME
    export TNS_ADMIN=$ORACLE_HOME

    [cubrid11@tonggu1 ~]$ source .bash_profile // 새로운 환경설정 적용

    4. odbcinst.ini 설정
    ; /etc/odbcinst.ini 파일 하단에 추가

    [Oracle_ODBC_Driver]
    Driver=/opt/oracle/instantclient_21_10/libsqora.so.21.1
  • ?
    kikiki767 2023.09.26 11:13

    말씀하신 부분은 본문에서 적은 것처럼 기 적용되어 있습니다..

     

     

  • ?
    동구 2023.09.26 11:32
    네.. 공유드린 내용 참고하셔서 설정하신부분 다시한번 확인해 보시라는 의미 입니다.

    그리고, 에러가 file not found 이니..
    환경변수 설정하신 부분, 라이브러리 경로 등을 다시 한번 확인해 보시기 바랍니다.
  • ?
    kikiki767 2023.09.26 13:35

    먼저 도와주셔서 감사하다는 말씀 드립니다.

     

    원인은 odbcinst.ini 파일이였습니다.

     

    제가 수정한 파일은 --prefix 옵션을 지정하여 unixODBC 설치 후에 해당 디렉토리 내 etc 디렉토리 밑에 있는 파일이였습니다.

     

    동구님께서 /etc/odbciinst_ini 를 말씀해주셔서 해당 파일을 편집하니 정상적으로 수행되네요...;

     

     

     


  1. CUBRID 사용자를 위한 DBeaver 도구 출시 안내

    Date2024.04.23 Byadmin Views122
    read more
  2. SQLGate for CUBRID 영구 무료 라이선스 제공

    Date2020.04.09 Byadmin Views4476
    read more
  3. 큐브리드 DB 복원 관련 문의

    Date2023.08.14 Byfewkgpokp Views76
    Read More
  4. 비밀번호 변경 오류

    Date2023.08.18 Bydfahwh Views109
    Read More
  5. Docker

    Date2023.08.23 Bysj.han Views258
    Read More
  6. cannot communicate with the broker or received invalid packet

    Date2023.08.23 Byfree Views137
    Read More
  7. 데이터타입 조회 문의

    Date2023.08.23 By박혀누 Views85
    Read More
  8. 재귀절을 이용한 뷰 생성

    Date2023.08.24 Bysj.han Views107
    Read More
  9. 데이터베이스 삭제시 incorrect or missing password

    Date2023.08.26 Bydfahwh Views116
    Read More
  10. dbtimezone

    Date2023.08.30 Bysj.han Views98
    Read More
  11. 쿼리속도문제

    Date2023.09.01 ByGgyak Views163
    Read More
  12. Cubrid 물리명 길이 제한 값이 어떻게되나요?

    Date2023.09.05 By엘L Views109
    Read More
  13. killtran 관련하여 문의 드립니다.

    Date2023.09.06 By후루숑 Views155
    Read More
  14. 자연조인문제

    Date2023.09.17 Bydfahwh Views71
    Read More
  15. javasp start fail이 발생합니다.

    Date2023.09.22 By유수부쟁선 Views63
    Read More
  16. jdbc 오류

    Date2023.09.22 By대청댐 Views110
    Read More
  17. 이기종간 DB Link 문의 드립니다.

    Date2023.09.26 Bykikiki767 Views104
    Read More
  18. 특정 값 우선 정렬

    Date2023.10.11 Bydrunkenascii Views66
    Read More
  19. db 데이터용량을 조회하는 쿼리

    Date2023.10.11 Bycncn Views119
    Read More
  20. Db프로시져 스케쥴 실행 성공 리포트나 로그 결과른 보고싶습니다

    Date2023.10.16 ByRoy Views105
    Read More
  21. 큐브리드매니저 패스워드 변경 문의건

    Date2023.10.16 Byyurrrr Views102
    Read More
  22. [ADO.NET] Syntax error: unexpected

    Date2023.10.17 Bytree1891 Views153
    Read More
Board Pagination Prev 1 ... 190 191 192 193 194 195 196 197 198 199 ... 201 Next
/ 201

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales