Background Image

FORUM

조회 수 228 추천 수 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 를 말씀해주셔서 해당 파일을 편집하니 정상적으로 수행되네요...;

     

     

     


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 5 admin 2024.04.23 3343
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 7367
3921 Cubrid의 Window 버전의 Broker Port 구성 방식 2 jhlee 2023.11.15 213
3920 [CUBRID Admin] ENUM 데이터 내보내기 1 tree1891 2023.11.14 208
3919 CUBRIDException: Data type references are incompatible. 에러관련 쿼리질문 15 file yhpark 2023.11.14 309
3918 사용자 삭제 시 소유한 오브젝트를 함께 삭제하는 방법 1 f0081 2023.11.14 259
3917 unloaddb 에러 확인 요청. 1 정현 2023.11.13 194
3916 유저생성 함수 반복 실행 시, fatal error발생 2 f0081 2023.11.09 215
3915 11.2버전에서 사용자 스키마에 대해서 궁금한 것이 있습니다. 1 로키 2023.11.08 286
3914 저장프로시저 실행관련 문의 4 f0081 2023.11.08 242
3913 다른 소유자 테이블 검색 권한 2 박혀누 2023.11.08 358
3912 [CUBRID Admin] 사용자의 테이블 권한 편집 1 tree1891 2023.11.06 211
3911 3909번 답변 좀 부탁드립니다. f0081 2023.11.06 193
3910 [CUBRID Admin] 테이블 컬럼 순서 변경 불가 12 tree1891 2023.11.05 318
3909 시스템 카탈로그 조회 외 1 f0081 2023.11.01 229
3908 시리얼 생성 시 class_name, attr_name, started 컬럼 값을 변경하고 싶습니다. 1 file getpost 2023.11.01 240
3907 cubrid 9.3.1 설치해서 원격으로 접속하고자 설치했는데 에러가 뜹니다 3 file Xstar 2023.10.27 217
3906 loaddb 실행 중 발생하는 오류에 대해서 문의 드립니다. 1 file 뚜벅뚜벅 2023.10.19 214
3905 큐브리드 매니서 실행 문의 1 마리오 2023.10.19 214
3904 큐브리드 DB가 실행되지 않는 것 같습니다. 4 file 뚜벅뚜벅 2023.10.18 217
3903 ===<ResultofSELECTCommandinLine1>=== 등의 출력 없이 결과값만 반환받고 싶습니다. 3 f0081 2023.10.18 227
3902 가로 데이터 세로로 조회 6 Ggyak 2023.10.18 233
Board Pagination Prev 1 ... 5 6 7 8 9 10 11 12 13 14 ... 206 Next
/ 206

Contact Cubrid

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