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 Views49
    read more
  2. SQLGate for CUBRID 영구 무료 라이선스 제공

    Date2020.04.09 Byadmin Views4458
    read more
  3. 저장프로시저 실행관련 문의

    Date2023.11.08 Byf0081 Views138
    Read More
  4. 다른 소유자 테이블 검색 권한

    Date2023.11.08 By박혀누 Views142
    Read More
  5. [CUBRID Admin] 사용자의 테이블 권한 편집

    Date2023.11.06 Bytree1891 Views97
    Read More
  6. 3909번 답변 좀 부탁드립니다.

    Date2023.11.06 Byf0081 Views91
    Read More
  7. [CUBRID Admin] 테이블 컬럼 순서 변경 불가

    Date2023.11.05 Bytree1891 Views178
    Read More
  8. 시스템 카탈로그 조회 외

    Date2023.11.01 Byf0081 Views121
    Read More
  9. 시리얼 생성 시 class_name, attr_name, started 컬럼 값을 변경하고 싶습니다.

    Date2023.11.01 Bygetpost Views111
    Read More
  10. cubrid 9.3.1 설치해서 원격으로 접속하고자 설치했는데 에러가 뜹니다

    Date2023.10.27 ByXstar Views97
    Read More
  11. loaddb 실행 중 발생하는 오류에 대해서 문의 드립니다.

    Date2023.10.19 By뚜벅뚜벅 Views102
    Read More
  12. 큐브리드 매니서 실행 문의

    Date2023.10.19 By마리오 Views96
    Read More
  13. 큐브리드 DB가 실행되지 않는 것 같습니다.

    Date2023.10.18 By뚜벅뚜벅 Views123
    Read More
  14. ===<ResultofSELECTCommandinLine1>=== 등의 출력 없이 결과값만 반환받고 싶습니다.

    Date2023.10.18 Byf0081 Views93
    Read More
  15. 가로 데이터 세로로 조회

    Date2023.10.18 ByGgyak Views120
    Read More
  16. 테이블별 row 개수를 조회하는 쿼리

    Date2023.10.18 Bycncn Views111
    Read More
  17. [ADO.NET] Syntax error: unexpected

    Date2023.10.17 Bytree1891 Views152
    Read More
  18. 큐브리드매니저 패스워드 변경 문의건

    Date2023.10.16 Byyurrrr Views102
    Read More
  19. Db프로시져 스케쥴 실행 성공 리포트나 로그 결과른 보고싶습니다

    Date2023.10.16 ByRoy Views105
    Read More
  20. db 데이터용량을 조회하는 쿼리

    Date2023.10.11 Bycncn Views117
    Read More
  21. 특정 값 우선 정렬

    Date2023.10.11 Bydrunkenascii Views66
    Read More
  22. 이기종간 DB Link 문의 드립니다.

    Date2023.09.26 Bykikiki767 Views104
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 200 Next
/ 200

Contact Cubrid

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