본문 바로가기
Tibero/기타

Tibero To Oracle DB Link(Listener)

by dan.de.lion 2016. 5. 31.

Tibero To Oracle DB Link(Listener)


Tibero To Oracle 10g

테스트 환경
OS : OEL release 7.2
Oralce : 10g Release 2
Tibero : 5SP1 FS04

Oracle Client 설치


  • oracle 사이트 이용하여 서버버전(리눅스 64bit)에 맞는 Instant Client를 확보한다.
    (Instant Client가 아니어도 상관은 없다. 가벼워서 사용하기 좋다.)
  • zip 파일로 적당한 위치에 압축을 푼다.(본 테스트에서는 OS 계정의 HOME경로 아래로 설정하였다.)
unzip instantclient-basic-linux-x86-64-10.2.0.3-20070103.zip

OS 계정 환경설정


  • Oracle의 client 홈경로(ORACLE_HOME) 및 Tibero Gateway 경로, Library 경로 등을 추가한다.
  • ORACLE_HOME경로는 위의 Client 설치 경로가 된다.
  • Tibero Gateway 경로는 적당한 위치로 지정한다.(본 테스트에서는 OS 계정의 HOME경로 아래로 설정하였다.)
  • 본 테스트에서는 리눅스의 bash쉘을 사용하므로 $HOME/.bash_profile을 편집한다.
    • 다른 쉘을 사용하는 경우 해당 쉘의 환경파일을 편집하면 된다.(e.g. .profile 등)
    • OS에 따라 Library 경로 설정이 달라진다.(e.g. SHLIB_PATH, LIBPATH, LD_LIBRARY_PATH 등등)
  • 아래와 같은 내용을 추가해 준다.(해당 OS 계정으로 재접속시 적용된다. 또는 강제적용(. ~/.bash_profile)한다.)
(전략)
##################ORACLE ENV##################
ORACLE_HOME=$HOME/instantclient_10_2
export ORACLE_HOME
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME
export LD_LIBRARY_PATH

##############GATE WAY ENV############
TBGW_HOME=$HOME/gateway
export TBGW_HOME

GateWay 확보 및 실행


  • Tibero 서버에 설치된 엔진을 통해 구할 수 있다.( $TB_HOME/client/bin에 들어있다.)
  • 티맥스소프트 TECHNET에서 설치하고자 하는 엔진을 받을 수 있다.
    (단, 회원가입이 필요하다. 이미 Tibero를 설치하려고 가입을 했다.)
  • gw4orcl이라는 이름(아마도 Gateway for oracle)으로 시작하는게 Tibero의 Oracle용 Gateway다.
  • gw4orcl, gw4orcl_11g, gw4orcl_10g 등의 이름으로 존재한다.
    (본 테스트에서는 gw4orcl_10g를 사용한다. Oracle 버전에 맞는게 좋겠다.)
  • 해당 파일을 위에서 설정한 $TBGW_HOME경로에 복사한다.
    ($TBGW_HOME$TB_HOME/client/bin으로 해도 상관은 없으니 관리가 편한 방법을 취사선택해서 사용한다.)
  • 아래 명령사용 결과에 not found 등이 없으면 정상이다.
ldd $TBGW_HOME/gw4orcl_10g
    linux-vdso.so.1 =>  (0x00007ffc543e1000)
    libclntsh.so.10.1 => $HOME/instantclient_10_2/libclntsh.so.10.1 (0x00007f4eba588000)
    libm.so.6 => /lib64/libm.so.6 (0x00007f4eba286000)
    libnnz10.so => $HOME/instantclient_10_2/libnnz10.so (0x00007f4eb9de3000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f4eb9bdf000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4eb99c3000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f4eb9602000)
    libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f4eb93e9000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f4ebb925000)
  • Gateway의 환경설정을 추가한다.
  • 사용 포트, 최대 접속개수, 로그 레벨 등을 설정할 수 있으며 $TBGW_HOME/gw4orcl_10g -h명령으로 확인 가능하다.
  • 아래 명령으로 설정파일 경로를 생성해 준다.
mkdir -p $TBGW_HOME/oracle/config/
  • $TBGW_HOME/oracle/config/tbgw.cfg파일을 생성하여 필요한 정보를 작성한다.
  • LISTENER_PORTLOG_LVL을 설정할 것이며 LISTENER_PORT는 적당한 포트를 사용한다.
#LISTENER_PORT=$gw_port #Gateway 사용포트
LISTENER_PORT=9999      #$gw_port=9999
LOG_LVL=2
  • Gateway를 실행하고 정상적으로 포트가 열렸는지 확인한다.
$TBGW_HOME/gw4orcl_10g
netstat -na | grep 9999 #$gw_port
tcp        0      0 0.0.0.0:9999            0.0.0.0:*               LISTEN

Tibero 접속정보 설정


  • $TB_HOME/client/config/tbdsn.tbr에 Gateway 접속정보를 설정해 준다.
  • 해당 정보를 사용하여 DB Link를 생성하게 된다.
(전략)
#$ALIAS=(                   #Tibero의 접속정보의 별칭
#  (GATEWAY=
#   (LISTENER=
#      (HOST=$IP)           #Gateway를 실행한 서버의 IP
#      (PORT=$gw_port)      #Gateway 사용 포트
#   )
#    (TARGET=$ORA_ALIAS)    #Oracle의 접속정보의 별칭- 다음단계에서 설정
#    (TX_MODE=GLOBAL|LOCAL) #Transaction 모드
#  )
#)
ORA_10G=(
  (GATEWAY=
   (LISTENER=
      (HOST=127.0.0.1) 
      (PORT=9999)
   )
    (TARGET=ORA_10G)
    (TX_MODE=LOCAL)
  )
)

Oralce 접속정보 설정


  • Oracle 서버에 접속하기위한 접속정보를 설정해준다.
  • $ORACLE_HOME/network/admin/경로에 설정 파일이 위치해야 하므로 폴더 생성이 필요하다.
mkdir -p $ORACLE_HOME/network/admin/
  • $ORACLE_HOME/network/admin/tnsnames.ora파일에 아래와 같이 접속정보를 작성한다.
(전략)
#$ORA_ALIAS =                                                           #Oracle의 접속정보의 별칭
#  (DESCRIPTION =
#    (ADDRESS = (PROTOCOL = TCP)(HOST = $ORA_IP)(PORT = $ora_port))     #Oracle 서버의 IP, 포트
#    (CONNECT_DATA =
#      (SERVER = DEDICATED)
#      (SERVICE_NAME = $ORACLE_SID)                                     #Oracle SID
#    )
#  )
ORA_10G =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.128.10)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

  • 위의 설정된 접속정보들을 토대로 Tibero DBMS내에 DATABASE LINK 객체를 생성한다.
/* -- 생성문법
 * CREATE DATABASE LINK 링크명   -- 생성할 링크명
 * CONNECT TO 오라클계정         -- Oracle 접속 계정
 * IDENTIFIED BY '암호'          -- Oracle 계정 암호
 * USING '$ALIAS' ;              -- Tibero 접속정보
 * -- 사용방법
 * SELECT * FROM 오브젝트@링크명 ;
 */

--링크 생성
CREATE DATABASE LINK ora10g
CONNECT TO scott IDENTIFIED BY 'tiger'
USING 'ORA_10G' ;

-- 사용방법
SELECT * FROM tab@ora10g ;

  • DB Link 구성 등에 따라 차이가 있으나 대부분 아래 단계와 큰 차이는 없다.
    1. SELECT * FROM tab@ora10g ; 쿼리를 수행한다.
    2. Tibero 내의 ora10g객체가 호출되다.
    3. ora10gUSING절의 Tibero 접속정보를 $TB_HOME/client/config/tbdsn.tbr에서 호출한다.
    4. $TB_HOME/client/config/tbdsn.tbr에 설정된 IP, 포트로 Gateway 접속한다.
    5. TARGET에 설정된 Oracle 접속정보를 $ORACLE_HOME/network/admin/tnsnames.ora에서 호출한다.
    6. $ORACLE_HOME/network/admin/tnsnames.ora에 설정된 IP, 포트, SID 등의 정보로
      ora10g계정/암호로 접속한다.
    7. Oralce 서버에서 SELECT * FROM tab를 수행한다.(쿼리에 따라 변경되는 경우도 있다.)
    8. Tibero 서버에서 결과를 받아온다.

번외


  • Tibero 접속 툴(tbsql)을 통해 Oracle에 직접 접속이 가능하다.(은근 편리하다.)
#tbsql Oracle_계정/암호@Tibero_접속정보
tbsql scott/tiber@ORA_10G

'Tibero > 기타' 카테고리의 다른 글

PHP와 tbOCI(Tibero OCI) 연동  (0) 2016.06.14
Tibero To Tibero DB Link  (0) 2016.06.14
Tibero To MS-SQL DB Link  (0) 2016.06.03
Tibero To Sybase DB Link  (0) 2016.06.03
Tibero to Oracle DB Link(Local Gateway)  (0) 2016.06.03

댓글