개요
Tibero에서 버전이 다른 두 Oracle instance DB LINK 생성 방법과 연결하는 방법을 안내합니다.
아래와 같이 2 NODE DBLINK 구성 방법을 안내합니다.
•
Tibero
•
(gateway 1) → Oracle node 1
•
(gateway 2) → Oracle node 2
방법
주의
Tibero 6 FS07 CS_2005 build 267039 버전 기준으로 작성되어있습니다.
Tibero 버전에 따라 설정 방법이 상이할 수 있습니다.
Gateway는 모두 Tibero 서버에서 기동하기 때문에 Oracle 서버에서 IP, Port, DB NAME, Service Name 확인이 필요합니다.
1. 각 Oracle 버전에 맞는 client 설치 구성
아래 예시는 11g, 12c 버전으로 진행한 내용입니다.
Oracle instant client 다운로드 후, Tibero 서버에 압축 해제합니다.
압축 해제 경로는 $ORACLE_HOME 경로로 사용됩니다.
2. 각 버전에 맞는 환경 변수 설정을 위한 profile 작성
각 버전의 TBGW_HOME, ORACLE_HOME, PATH 설정합니다.
•
Oracle 11g 버전 profile 작성 예시
vi ~/.11g_profile
export TB_HOME=/home/test/tibero6
export TBGW_HOME=/home/test/tibero_test/tbgateway_11g
export ORACLE_HOME=/home/test/tibero_test/instantclient_11_2
export LD_LIBRARY_PATH=.:$TB_HOME/lib:$TB_HOME/client/lib:$ORACLE_HOME:$LD_LIBRARY_PATH
export PATH=.:$TB_HOME/bin:$TB_HOME/client/bin:$ORACLE_HOME:$PATH
SQL
복사
•
Oracle 12c 버전 profile 작성 예시
vi ~/.12c_profile
export TB_HOME=/home/test/tibero6
export TBGW_HOME=/home/test/tibero_test/tbgateway_12c
export ORACLE_HOME=/home/test/tibero_test/instantclient_12_2
export LD_LIBRARY_PATH=.:$TB_HOME/lib:$TB_HOME/client/lib:$ORACLE_HOME:$LD_LIBRARY_PATH
export PATH=.:$TB_HOME/bin:$TB_HOME/client/bin:$ORACLE_HOME:$PATH
SQL
복사
3. TBGW_HOME 디렉토리 생성 및 gateway 기동
gateway 기동 시 포트가 충돌하지 않도록 주의하여 설정합니다.
gateway는 기동 시 config 기재된 LISTENER_PORT, LISTENER_PORT+1 포트를 사용합니다. (ex. LISTENER_PORT=8910 기재 시 8910, 8911 포트 사용)
gateway 기동은 각 버전에 맞는 profile 적용 후 진행합니다.
gateway 파일은 $TB_HOME/client/bin 디렉토리에 존재하며, 버전에 맞게 TBGW_HOME 경로로 COPY
ldd 명령어로 library가 정상적으로 잡혔는지 확인 후 기동합니다.
•
Oracle 11g 버전 설정
#. 11g profile 적용
source ~/.11g_profile
#. gateway 홈 디렉토리 설정 (profile에 기재한 TBGW_HOME)
mkdir -p /home/test/tibero_test/tbgateway_11g
#. gateway home으로 11g 버전의 gateway copy
cp $TB_HOME/client/bin/gw4orcl_11g $TBGW_HOME/
cd $TBGW_HOME
ldd gw4orcl_11g
=> not found 발생하지 않는지 확인
mkdir -p $TBGW_HOME/oracle/log
mkdir -p $TBGW_HOME/oracle/config
#. 11g gateway config 설정
vi $TBGW_HOME/oracle/config/tbgw.cfg
LISTENER_PORT=8910
LOG_DIR=/home/test/tibero_test/tbgateway_11g/oracle/log #. 로그 경로 절대 경로로 입력해야 gateway 기동 가능함
#. gateway 기동
./gw4orcl_11g
SQL
복사
•
Oracle 12c 버전 설정
#. 12c_profile 적용
source ~/.12c_profile
#. gateway 홈 디렉토리 설정 (profile에 기재한 TBGW_HOME)
mkdir -p /home/test/tibero_test/tbgateway_12c
#. gateway home으로 12c 버전의 gateway copy
cp $TB_HOME/client/bin/gw4orcl_12c $TBGW_HOME/
cd $TBGW_HOME
ldd gw4orcl_12c
=> not found 발생하지 않는지 확인
mkdir -p $TBGW_HOME/oracle/log
mkdir -p $TBGW_HOME/oracle/config
#. 12c gateway config 설정
vi $TBGW_HOME/oracle/config/tbgw.cfg
LISTENER_PORT=8900
LOG_DIR=/home/test/tibero_test/tbgateway_12c/oracle/log #. 로그 경로 절대 경로로 입력해야 gateway 기동 가능함
#. gateway 기동
./gw4orcl_12c
SQL
복사
4. tbdsn.tbr 파일 설정
이 예시에서 gateway는 Tibero 서버에서 기동하기 때문에 tbdsn.tbr에는 HOST를 localhost / PORT는 각 gateway config에서 설정한 LISTENER_PORT로 설정합니다.
vi $TB_HOME/client/config/tbdsn.tbr
oracle_11g=(
(GATEWAY=
(LISTENER=(HOST=localhost) (PORT=8910)) #. 각 버전의 gateway로 기재
(TARGET=ORCL)
(TX_MODE=GLOBAL)
)
)
oracle_12c=(
(GATEWAY=
(LISTENER=(HOST=localhost) (PORT=8900)) #. 각 버전의 gateway로 기재
(TARGET=ORCL)
(TX_MODE=GLOBAL)
)
)
SQL
복사
5. tnsname.ora 설정
$ORACLE_HOME/network/admin/tnsnames.ora 생성합니다.
위 파일에는 oracle 서버 ip 및 port, service name 기재가 필요합니다.
•
각 Oracle instance의 ip / port / service name 기재 예시
[DB NAME] =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = [ORACLE IP])(PORT = [LISTENER PORT]))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = [SERVICE_NAME])
)
)
SQL
복사
•
Oracle 11g 버전 설정
source ~/.11g_profile
vi $ORACLE_HOME/network/admin/tnsnames.ora
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.XX.XX)(PORT = xxxxx))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
SQL
복사
•
Oracle 12c 버전 설정
source ~/.12c_profile
vi $ORACLE_HOME/network/admin/tnsnames.ora
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.XX.XX)(PORT = xxxxx))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
SQL
복사
6. dblink 생성
$ tbsql tibero/tmax
SQL> create database link ora11 connect to [remote db user name] identified by '[user password]' using 'oracle_11g';
Database Link 'ORA11' created.
SQL> select * from dual@ora11;
DUMMY
-----
X
1 row selected.
SQL> create database link ora12 connect to [remote db user name] identified by '[user password]' using 'oracle_12c';
Database Link 'ORA12' created.
SQL> select * from dual@ora12;
DUMMY
-----
X
1 row selected.
SQL
복사