--
참고함
https://www.tmaxtibero.com/img/service/pdf/Tibero%20to%20Oracle%20DB%20Link%20Guide.pdf
--
select *
from table(dbms_xplan.display_cursor);
======================================================
📍tbgw.cfg
LOG_LVL=2
LISTENER_PORT=8999
LOG_DIR=/home/tibero/gateway/oracle/log
MAX_LOG_SIZE=10M
MAX_LOG_BACKUP_SIZE=100M
FETCH_SIZE=64k
ORACLE_FETCH_SIZE=1M
MAX_POOL_SIZE=500
CHARACTER_SET=UTF8
📍tnsnames.ora
orcl1 = (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT=1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME =orcl1)
)
)
📍tbdsn.tbr --tibero instance
orcl1=(
(GATEWAY=(LISTENER=(HOST=localhost)(PORT=8999))
(TARGET=orcl1)
(TX_MODE=LOCAL)
)
)
======================================================
★★★
Tibero to Oracle
0) [Oracle 서버]
$lsnrctl status 확인
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))
--안떠있다면
$lsnrctl start
1) [Tibero 서버]
Oracle client 설치
--Oracle Server 에서 정보 가져와.
orcl1 = (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT=1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME =orcl1)
)
)
-- bash_profile 환경변수 설정 [세가지 필수]
2가지 완료 후ㅜ!!!! tbsql 에서의 접속 여부 확인
tbsql orcl1/oracle@orcl1
2)
추가 환경변수 설정
GW는 기본적으로 TBGW_HOME 변수를 통해 설정파일을 읽고 로그파일을 기록한다.
mkdir /home/tibero/gateway/log -GW 관련 로그 파일이 생성되는 위치
mkdir /home/tibero/gateway/config
vi /home/tibero/gateway/config/tbgw.cfg
LOG_LVL=2
LISTENER_PORT=8999
LOG_DIR=/home/tibero/gateway/oracle/log
MAX_LOG_SIZE=10M
MAX_LOG_BACKUP_SIZE=100M
FETCH_SIZE=64k
ORACLE_FETCH_SIZE=1M
MAX_POOL_SIZE=500
CHARACTER_SET=UTF8
cp $TB_HOME/client/bin/gw4orcl_11g $TBGW_HOME/gw4orcl --oracle 11인지 12인지 확인
ldd gw4orcl
$cd $ORACLE_HOME --여기에서 실행..
tbsql orcl1/oracle@orcl1
3)
create database link orlink1 connect to orcl1 identified by 'oracle' using 'orcl1'
select *
from dual@orcl1
select *
from user_db_links;
======================================================
#GW는 기본적으로 TBGW_HOME 변수를 통해 설정파일을 읽고 로그파일을 기록한다.
LOCAL 방식 환경변수를 통해서 기동됨, 변수 설정에 변동이 생긴 후엔 T 서버 재기동 필수
LISTENER 방식 -- GW 리스너 포트와 연결
tbboot 를 보고 인스턴스가 동작한다.
이때 인스턴스는 시작할 때의 파라미터 파일의 내용만을 기억하기 때문에 시작한 후에 수정된 파라미터 파일 내용은 반영이 안됨
변경된 사항이 있디면 재부트 해야하는 이유??
-- 완료!!!!

1) [oracle 서버] tibero client 설치
환경변수 설정
Tibero 서버 정보 추가 Alias (IP주소, DB_NAME, PORT)
vi $TB_HOME/client/config/tbdsn.tbr
eun1=(
(INSTANCE=(HOST=localhost)
(PORT=8629)
(DB_NAME=eun1)
)
)
tbsql sys/tibero@eun1
============GW에 붙기 위한 Oracle 내부 설정============
2)
$ ORACLE_HOME/network/admin/tnsnames.ora
tbsv = (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.188 )(PORT = 1515))
(CONNECT_DATA = (SID = tbsv))
(HS = OK)
)
[EX]
eun1 = (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost )(PORT = 1515))
(CONNECT_DATA = (SID = eun1))
(HS = OK)
)
IP, PORT, SID >> GW 서버 정보
3)
$ORACLE_HOME/network/admin/listener.ora
tbsv =
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.188 ) (PORT=1515))
)
SID_LIST_tbsv =
(SID_LIST=
(SID_DESC=
(SID_NAME=tbsv)
(ORACLE_HOME=/ora11/product/11g)
(PROGRAM=dg4odbc)
)
)
[EX]
eun1 =
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost ) (PORT=1515))
)
SID_LIST_eun1 =
(SID_LIST=
(SID_DESC=
(SID_NAME=eun1)
(ORACLE_HOME=/ora11/product/11g)
(PROGRAM=dg4odbc)
)
)
[버전별 상이]
#dg4odbc oracle11g
#hsodbc oracle 10g
4) tnsnames.ora, listener.ora 설정 후 Listener 기동
$ lsnrctl stop (NAME)
$ lsnrctl start (NAME)
$ lsnrctl status (NAME)
$ tnsping (NAME) >> oracle에서 Cli에서 SV로 접속할 때 리스너가 올라와 있는지, 통신은 되는지 등등 확인 가능
5) ORACLE GW 환경설정
cp $ ORACLE_HOME/hs/admin/initsodbc.ora $ ORACLE_HOME/hs/admin/init(NAME).ora
SID_NAME 따라 파일 생성> init(NAME).ora
HS_FDS_CONNECT_INFO=(NAME)
HS_FDS_SHAREABLE_NAME= $TB_HOME/client/lib/libtbodbc.so #windows 에서는 불필요
[오류내용] ORA-28500: Oracle 이외 시스템으로 ORACLE을 접속하는데 이 메시지가 리턴되었습니다
$ORACLE_HOME/hs/admin/inithsodbc.ora 파일에서
HS_LANGUAGE=AMERICAN_AMERICA.KO16MSWIN949 #미설정일 때 Listener를 기동하면 NLS_LANG 환경변수를 따른다.
위 구문 주석 뗐더니 실행됨 ..... why........... TB_NLS_LANG=UTF8 이거!?!?!?
§참고§
[Oracle을 AL32UTF8로 생성한 상태에서 Oracle generic ODBC Gateway를 이용해 다른 데이터베이스와 DB Link 구성을
하여 접속할 경우 SQLDriverConnectW로 주는 인자가 wchar_t 형태(UTF-16형태)가 아니라 UTF-8 형태로 들어온다.]
7) DB link 생성 및 확인
create database link tbsv1 connect to "USER명" identified by 'PW' using 'tbsv' ;
-- create database link tblink1 connect to sys identified by 'tibero' using 'eun1';
따옴표 이슈
select *
from dual@tbsv1 ;
select *
from all_db_links ;
DB link 제거 구문
drop public database link (LINKNAME);