DBDBDEEP
Tibero to Oracle DB Link 본문
Tibero에서 DB Link Object를 만들어 Oracle의 데이터를 가져오는 방법을 설명한다
DB Link를 통해 질의를 수행 시, DB Link 대상이 Tibero가 아닌 다른 DBMS 라면 각각의 DBMS를 위한 Gateway를 통해
DB Link를 생성하거나 수행할 수 있다.
Tibero to Oracle 구조도
Tibero 서버는 다른 DBMS에 필요한 질의를 해당 Gateway에 전달, 다른 DBMS에 접속하여 Tibero 서버로부터 전달 받은 질의를 수행한 후 결과를 Tibero 서버로 전송한다.
다른 DBMS의 DB Link 기능을 사용하려면 해당 (Oracle) DBMS 에 대한 바이너리와 환경설정 파일 필요.
1. Tibero 에서 Oracle 환경설정 (Tibero 서버에 모두 설정하고 Oracle 에서는 수정 없음)
https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
ㄴ-> 위 링크에서 Oracle Instance Client 를 다운받아 설치한다.
Oracle서버에서 버전을 확인하여 동일한 버전의 'InstantClient' 를 다운받는다.
Oracle InstantClient의 압축을 푼다. '$TB_HOME' 이 /home/tibero/tibero6 이므로 /home/tibero 경로에 압축을 해제한다.
되도록 Tibero 엔진 밖으로 설치해준다.
구성하려고 하는 구성도이다.
Tibero 서버에서 게이트웨이 기동에 필요한 디렉토리를 생성한다.
mkdir -p /home/tibero/tbgateway/oracle/config 로 생성
mkdir /home/tibero/tbgateway/oracle/log
vi /home/tibero/tbgateway/oracle/config/tbgw.cfg
2. TIBERO 환경설정
TIBERO Gateway DBLINK 구성
게이트웨이 파일을 복사한다. 게이트웨이 파일 경로는 $TB_HOME/client/bin 에 존재한다.
Oracle 서버 버전에 맞게 11g를 복사한다.
cp - r /home/tibero/tibero6/client/bin/gw4orcl_11g /home/tibero/tbgateway
Tibero가 설치된 계정에서 .bash_profile 에 아래와 환경설정을 해준다.
######## TIBERO TO ORACLE DBLINK #######
export TBGW_HOME=/home/tibero/tbgateway
export ORACLE_HOME=/home/tibero/instantclient_11_2
export ORACLE_SID=XE #ORACLE의 SID
export LIBPATH=$ORACLE_HOME:$LIBPATH
export LD_LIBRARY_PATH=$LIBPATH:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME:$PATH
export TNS_ADMIN=$ORACLE_HOME/network/admin
Tibero 서버에서 Oracle 서버로 접근하기 위해서 아래와 같이 tnsnames.ora 를 만든다.
$ORACLE_HOME/networt/admin/tnsnames.ora 의 내용이다.
oralink =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.29.136)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
## oralink = DBLINK 명(ex : select * from dual@oralink)
## HOST = Oracle 서버의 IP
## PORT = Oracle 서버의 Port
## SERVICE_NAME = 오라클 서버의 Service 명
$TB_HOME/client/config/tbdsn.tbr 추가할 내용
MOF = (
(GATEWAY =
(LISTENER = (HOST=192.168.41.142)(PORT=9998))
(TARGET=oralink)
(TX_MODE=GLOBAL)
)
)
## MOF = Oralce 서버로 접근되는 Alias 명
## HOST = TIBERO 서버의 IP, gw4orcl 이 기동되어야 하는 서버의 IP
## PORT = tbgw.cfg에 명시된 Port를 통해서 tnsnames.ora에 전달됨
## TARGET = DBLINK 이름, tnsnames.ora와 연결됨
gw4orcl 확인 (링크상태 확인)
[tibero@tibero admin]$ cd $TBGW_HOME
[tibero@tibero tbgateway]$ ps -ef|grep gw
tibero 12612 1 0 08:45 ? 00:00:00 ./gw4orcl_11g
tibero 13328 13089 0 09:44 pts/0 00:00:00 grep --color=auto gw
[tibero@tibero tbgateway]$ ldd gw4orcl_11g
linux-vdso.so.1 => (0x00007fff92da8000)
libclntsh.so.11.1 => /home/tibero/instantclient_11_2/libclntsh.so.11.1 (0x00007f5cd4eb1000)
libm.so.6 => /lib64/libm.so.6 (0x00007f5cd4baf000)
libnnz11.so => /home/tibero/instantclient_11_2/libnnz11.so (0x00007f5cd47e2000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f5cd45de000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f5cd43c2000)
libc.so.6 => /lib64/libc.so.6 (0x00007f5cd3ff4000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f5cd3dda000)
libaio.so.1 => /lib64/libaio.so.1 (0x00007f5cd3bd8000)
/lib64/ld-linux-x86-64.so.2 (0x00007f5cd7820000)
./gw4orcl_11g
게이트웨이 시작.
gw4orcl 게이트웨이 시작. Tibero와 별도로 실행되며 Tibero가 종료되도 실행된다.
3. DBLINK TEST
USER 생성
ㄴ-> SQL> create user kihwan identified by 'kihwan'
User 'KIHWAN' created.
권한 부여
SQL> grant connect, resource to kihwan;
Granted.
database link 생성 권한 부여
SQL> grant create database link to kihwan;
Granted.
SQL> conn kihwan/kihwan
database link 생성
SQL> create database link kihwan_link connect to scott identified by 'tiger' using 'MOF';
Database Link 'KIHWAN_LINK' created.
SQL> select * from users_db_links;
OWNER
--------------------------------------------------------------------------------
DB_LINK
--------------------------------------------------------------------------------
USERNAME
--------------------------------------------------------------------------------
HOST
--------------------------------------------------------------------------------
CREATED
----------------------------------------------------------------
KIHWAN
KIHWAN_LINK
SCOTT
MOF
2022/10/05
조회 방법 두가지!
1.
[tibero@tibero tbgateway]$ tbsql scott/tiger@MOF
tbSQL 6
TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Connected to ORACLE GATEWAY using MOF.
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
TEST
1 row selected.
SQL> select * from TEST;
N
----------
1
2
2 rows selected.
2. kihwan 으로 접속 후
SQL> select * from TEST@kihwan_link;
N
----------
1
2
2 rows selected.
*Trouble Shooting
1. TBR-130092:(ORA-12541) TNS:no listener
[tibero@tastac1 tbgateway]$ tbsql scott/tiger@MOF
tbSQL 6
TmaxData Corporation Copyright (c) 2008-. All rights reserved.
TBR-130092:(ORA-12541) TNS:no listener
Oracle lsnrctl status 로 상태를 확인한다. 리스너가 동작되지 않고 있어서 연결을 할 수 없었다.lsnrctl start 로 리스너 시작한다.
'Tibero' 카테고리의 다른 글
Tibero 기동 실패 (No space left on device / 장치에 남은 공간 없음) (0) | 2022.10.12 |
---|---|
Oracle to Tibero DB Link (0) | 2022.10.06 |
Tibero to Tibero DBLink (0) | 2022.10.04 |
Tibero DB_NAME (0) | 2022.09.29 |
IMS 사용방법 (0) | 2022.09.28 |