본문 바로가기
Oracle/이관

Oracle 리스너를 활용한 Tibero -> Oracle DBLINK

by 취미툰 2020. 12. 29.
반응형

전 포스팅에서는 Oracle Gateway를 이용하여  Oracle DB에서 Tibero DB로 DBLINK를 생성하는 글을 포스팅 했습니다.

 

이전 포스팅 : bae9086.tistory.com/187 

 

Oracle Gateway를 활용한 Oracle -> Tibero DB LINK

해당방법은 Oracle에서 Non-Oracle로 DBLINK를 생성할 수 있는 방법입니다. Source DB와 Target DB는 동일 서버에 설치된 Oracle과 Tibero를 기준으로 테스트 후 작성하였습니다. 방법은 티베로가 가동중인 유저

bae9086.tistory.com

이번에는 반대로 Tibero DB에서 Oracle DB로 DB LINK를 생성하는 테스트방법을 정리하도록 하겠습니다.

 

제가 테스트 했던 환경은 전과 동일하게 Oracle DB와 TiberoDB가 같은 서버에 존재합니다. 

사전에 설치했던 Oracle Gateway를 활용하므로 티베로 서버에 설치가 필요합니다. 설치가 안되어 있으면 이전 포스팅을 참고하여 Oracle Gateway를 먼저 설치하고 진행해주시길 바랍니다.

 

#########################

Source DB 정보

IP : 192.68.56.58

TIBERO SID : tibero

 

Target DB 정보

IP : 192.168.56.58

Oracle SID : XE

#########################

 

 

1.티베로서버의 TBGW_HOME 디렉토리 생성

 

TBGW를 사용하기 위한 설정을 합니다.

 

$cd /home/tibero/tibero6/client/bin

 

$ mkdir -p oracle/config
$ mkdir -p oracle/log

 

$vi /home/tibero/tibero6/client/bin/oracle/config/tbgw.cfg

 

LISTENER_PORT=2020

LOG_DIR = /home/tibero/tibero6/client/bin/oracle/log

LOG_LVL = 2

 

2.티베로서버의 gw4orcl_11g 파일이 /home/tibero/tibero6/client/bin(TBGW_HOME) 에 있는지 확인합니다. 없으면 해당 위치로 복사 해당 위치가 TBGW_HOME이 될 예정이기 때문에 있으면 넘어가도 됩니다.

 

 

3.티베로 서버의 bash_profile 을 설정합니다.

export TBGW_HOME=/home/tibero/tibero6/client/bin
export LIBPATH=$ORACLE_HOME:$LIBPATH
export LD_LIBRARY_PATH=$LIBPATH:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME:$PATH
export ORACLE_HOME=/home/tibero/oracle/app ## ORACLE_HOME은 gateway 설치시에 설정했으면 작성하지 않아도 됩니다

 

4. 티베로서버의 tnsnames.ora 파일 생성 및 설정

/*

Alias (이부분을 tbdsn.tbr의 설정 문법중 Taget에 동일한 이름으로 설정) =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = Orac;e Target 서버의 IP)(PORT = Oracle 서버 Port))

(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = Oracle Target 서버의 SID)

)

)

*/

 

$vi /home/tibero/oracle/app/network/admin/tnsnames.ora

 

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.58)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME =  XE)
    )
  )

 

5. 티베로서버의 tbdsn.tbr 파일 설정

/*

DB Link에서 사용할 Alias=((GATEWAY=

(LISTENER=(HOST=tbgw4orcl 게이트웨이를 기동할 서버의 IP)(PORT=tbgw.cfg에 지정한 port))

(TARGET= oracle 클라이언트의 tnsnames.ora에 등록한 alias)

(TX_MODE=GLOBAL)

))

*/

 

 

$vi /home/tibero/tibero6/client/config/tbdsn.tbr

 

XE=((GATEWAY=
        (LISTENER=(HOST=192.168.56.58)(PORT=2020))
        (TARGET=XE)
        (TX_MODE=GLOBAL)
))

 

 

6.gw4orcl_11g 프로그램 실행

$ ./gw4orcl_11g

 

$ ps -ef |grep gw
oracle    4442     1  0 Dec21 ?        00:00:22 xe_lgwr_XE
tibero   19054     1  0 23:39 ?        00:00:00 ./gw4orcl_11g
tibero   19145 29943  0 23:39 pts/0    00:00:00 grep --color=auto gw

 

7.tbsql로 Oracle접속 테스트

 

$ tbsql test/test@XE

tbSQL 6

TmaxData Corporation Copyright (c) 2008-. All rights reserved.

Connected to ORACLE GATEWAY using XE.

 

8.DB LINK 생성 및 테스트

 

SQL> CREATE PUBLIC DATABASE LINK XE CONNECT TO test IDENTIFIED BY 'test' USING 'XE';

Database Link 'XE' created.

SQL> select * From dual@XE;

DUMMY
-----
X

1 row selected.

끝.

 

**트러블 슈팅

 

TBR-15103

TBR-15103:(ORA-01017) invalid username/password; logon denied 

원인 : Create DATABASE 생성구문이 잘못되었을 가능성이 있습니다. 특히 패스워드 입력하는 부분에 쌍따음표("") 따음표('') 따음표 없이 생성함에 따라 에러가 발생하기도 하고 정상작동 하기도 하였습니다.

 

해결 : 저의 경우에는 따음표('')를 추가해서 해결하였습니다. 다른 블로그에서는 쌍 따음표("")로 해결한 경우도 있으므로 버전 및 케이스에 따라 다른것 같습니다. 확인 후 사용하시길 바랍니다.

 

--쌍따음표로 생성시 에러발생

SQL> CREATE PUBLIC DATABASE LINK XE CONNECT TO test IDENTIFIED BY "test" USING 'XE';

Database Link 'XE' created.

SQL> select * From dual@XE;
TBR-12130: Unable to connect to remote database(link_name=XE).

TBR-15103:(ORA-01017) invalid username/password; logon denied

--따음표없이 생성시 에러발생
SQL> drop public database link XE;

Database Link 'XE' dropped.

SQL> CREATE PUBLIC DATABASE LINK XE CONNECT TO test IDENTIFIED BY test USING 'XE';

Database Link 'XE' created.

SQL> select * From dual@XE;
TBR-12130: Unable to connect to remote database(link_name=XE).

TBR-15103:(ORA-01017) invalid username/password; logon denied

--따음표로 생성시 정상작동
SQL> drop public database link XE;

Database Link 'XE' dropped.

SQL>  CREATE PUBLIC DATABASE LINK XE CONNECT TO test IDENTIFIED BY 'test' USING 'XE';

Database Link 'XE' created.

SQL> select * From dual@XE;

DUMMY
-----
X

1 row selected.

 

 

TBR-130084

TBR-130084:(ORA-02082) a loopback database link must have a connection qualifier

 

원인 : tbsql로 Oracle 접속 테스트 후에 DBLINK 생성 시도해서 나는 에러

해결 : tbsql을 나간 후 tbsql 재접속

 

 

 

 

반응형

댓글