OS 환경 : AIX 7.2 (64bit)
DB 환경 : Oracle Database 19.27.0.0
방법 : 오라클 19c to 티베로7 db 링크 설정 가이드 on AIX
본문에서는 AIX 환경의 오라클 19c to 티베로 7에 db 링크를 연결하는 방법을 설명함
참고로 오라클이 설치된 서버를 게이트웨이 서버로 사용함
그리고 아래는 간략하게 그린 Oracle to Tibero 호출 흐름 그림임
서버 정보 :
오라클 서버 : 192.168.137.50 / 19c
티베로 서버 : 192.168.137.51 / tibero7
대략적인 연결 방식은 아래와 같음

1. create database ~ using 문구를 수행
2. tnsnames.ora 파일의 alias명의 sid를 찾음
3. listener.ora 파일에서 sid를 찾아서 다음 단계를 수행함(리스너 파일에 program=dg4odbc를 넣어 dg4odbc를 사용함)
4. init{sid}.ora 파일의 설정 정보를 읽어옴
5. odbc.ini 파일에서 sid 정보를 찾음
6. tbdsn.tbr로 tibero 서버를 찾음
테스트
aix os 확인(오라클 서버에서 수행)
|
1
2
|
$ uname -a
AIX aixdb01 2 7 00FB75384C00
|
먼저 현재 서버에는 UnixODBC 패키지는 존재하지 않음(오라클 서버에서 수행)
|
1
2
|
# rpm -qa | grep UnixODBC
(없음)
|
Oracle Gateway 설치 여부 확인(dg4odbc 파일 확인)(오라클 서버에서 수행)
파일 사이즈가 0보다 크면 설치된 것이고 0으로 나온다면 설치가 되지 않은 것
|
1
2
|
$ ls -al $ORACLE_HOME/bin/dg4odbc
-rwxr-x--x 1 oracle dba 713899 Dec 11 01:19 /u01/single/oracle/product/19c/db1/bin/dg4odbc
|
Oracle Gateway 파일의 bit 확인(오라클 서버에서 수행)
OS 명령어인 file 명령어를 사용하여 32bit인지 64bit인지 확인
|
1
2
|
$ file $ORACLE_HOME/bin/dg4odbc
/u01/single/oracle/product/19c/db1/bin/dg4odbc: 64-bit XCOFF executable or object module not stripped
|
AIX 64bit임
티베로 리스너 포트 확인(티베로 서버에서 수행)
|
1
2
3
4
|
$ netstat -na|grep 8629
tcp 0 0 0.0.0.0:8629 0.0.0.0:* LISTEN
$ cat $TB_HOME/config/$TB_SID.tip | grep PORT
LISTENER_PORT=8629
|
포트는 8629임
티베로 클라이언트 파일 tar 해제(오라클 서버에서 수행)
|
1
2
3
4
5
6
7
|
$ mkdir -p /u01/oracle/tibero
$ cd /u01/oracle/tibero
$ gzip -d aix_tibero7_client.tar.gz
$ tar -xf aix_tibero7_client.tar
$ cd client/
$ ls
bin config epa include lib lib32 tbepa
|
profile 설정(오라클 서버에서 수행)
*OS에 맞게 환경변수 LD_LIBRARY_PATH(Linux), LIBPATH(AIX) 설정필요
|
1
2
3
4
5
6
7
|
$ vi .bash_profile
# Oracle To Tibero DB Link Setting
export TB_HOME=/u01/oracle/tibero
export LIBPATH=$TB_HOME/client/lib:$LIBPATH
export PATH=$TB_HOME/client/bin:$PATH
alias nadm='cd $ORACLE_HOME/network/admin'
alias hadm='cd $ORACLE_HOME/hs/admin'
|
tbdsn.tbr 설정(오라클 서버에서 수행)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
$ vi $TB_HOME/client/config/tbdsn.tbr
#예시
{Alias명}=( (INSTANCE=(HOST={Tibero 서버 IP})
(PORT={Tibero 서버 Port})
(DB_NAME={Tibero 서버 DB명})
)
)
#실제 사용
tibero_link=(
(INSTANCE=(HOST=192.168.137.51)
(PORT=8629)
(DB_NAME=tibero)
)
)
|
tibero 접속 테스트(오라클 서버에서 수행)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
$ tbsql sys/tibero@tibero_link
tbSQL 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Connected to Tibero using tibero_link.
SQL> select 1 from dual;
1
----------
1
1 row selected.
|
정상 접속됨
Listener 설정 및 기동(오라클 서버에서 수행)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
$ vi $ORACLE_HOME/network/admin/listener.ora
LTIBERO =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.137.50)(PORT = 1522))
)
)
SID_LIST_LTIBERO =
(SID_LIST =
(SID_DESC =
(ORACLE_HOME = /u01/single/oracle/product/19c/db1)
(SID_NAME = dg4_tibero)
(PROGRAM = dg4odbc)
)
)
|
리스너에 설정하는 SID_NAME은 tnsnames.ora에 설정할 SID명과 동일하게 해야함
티베로 연결용 리스너 기동(오라클 서버에서 수행)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
$ lsnrctl start LTIBERO
LSNRCTL for IBM/AIX RISC System/6000: Version 19.0.0.0.0 - Production on 16-DEC-2025 19:37:10
Copyright (c) 1991, 2025, Oracle. All rights reserved.
Starting /u01/single/oracle/product/19c/db1/bin/tnslsnr: please wait...
TNSLSNR for IBM/AIX RISC System/6000: Version 19.0.0.0.0 - Production
System parameter file is /u01/single/oracle/product/19c/db1/network/admin/listener.ora
Log messages written to /u01/single/oracle/base/diag/tnslsnr/aixdb01/ltibero/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.137.50)(PORT=1522)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.137.50)(PORT=1522)))
STATUS of the LISTENER
------------------------
Alias LTIBERO
Version TNSLSNR for IBM/AIX RISC System/6000: Version 19.0.0.0.0 - Production
Start Date 16-DEC-2025 19:37:11
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/single/oracle/product/19c/db1/network/admin/listener.ora
Listener Log File /u01/single/oracle/base/diag/tnslsnr/aixdb01/ltibero/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.137.50)(PORT=1522)))
Services Summary...
Service "dg4_tibero" has 1 instance(s).
Instance "dg4_tibero", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
|
포트는 1522로 잘 올라옴
|
1
2
|
$ netstat -na |grep 1522
tcp4 0 0 192.168.137.50:1522 *.* LISTEN
|
참고용 리스너 재기동 커맨드(오라클 서버에서 수행)
|
1
2
3
|
$
lsnrctl stop LTIBERO
lsnrctl start LTIBERO
|
tnsnames.ora 설정(오라클 서버에서 수행)
gateway를 별도로 설치하지 않아 오라클 서버를 gateway 서버로 보면됨, host에 오라클 서버 ip 입력
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
$ vi $ORACLE_HOME/network/admin/tnsnames.ora
#예시
{Alias명}=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = {Gateway 서버 IP})
(PORT = {Gateway 서버 Port}))
(CONNECT_DATA = (SID = {Gateway 서버 SID명}))
(HS = OK)
)
#실제 사용
tb7=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.137.50)(PORT = 1522))
(CONNECT_DATA = (SID = dg4_tibero))
(HS = OK)
)
|
tnsping 확인(오라클 서버에서 수행)
|
1
2
3
4
5
6
7
8
9
10
11
12
|
$ tnsping tb7
TNS Ping Utility for IBM/AIX RISC System/6000: Version 19.0.0.0.0 - Production on 16-DEC-2025 19:38:14
Copyright (c) 1997, 2025, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.137.50)(PORT = 1522)) (CONNECT_DATA = (SID = dg4_tibero)) (HS = OK))
OK (30 msec)
|
잘됨
Oracle Gateway 환경설정
sid_name이 dg4_tibero일 경우 initdg4_tibero.ora 파일을 생성하여 수정
initdg4_tibero.ora 파일 수정(오라클 서버에서 수행)
*HS_LANGUAGE는 oracle에서 사용하는 캐릭터셋을 넣어줘야함
|
1
2
3
4
5
6
|
$ cd $ORACLE_HOME/hs/admin
$ vi initdg4_tibero.ora
HS_FDS_CONNECT_INFO=dg4_tibero
HS_FDS_TRACE_LEVEL = DEBUG
HS_FDS_SHAREABLE_NAME=/u01/oracle/tibero/client/lib/libtbodbc.so
HS_LANGUAGE=AMERICAN_AMERICA.KO16MSWIN949
|
root 유저로 odbc.ini 파일 생성(오라클 서버에서 수행)
|
1
2
3
4
5
6
7
8
9
10
|
# cat /etc/odbc.ini
[ODBC Data Sources]
dg4_tibero = Tibero 7 ODBC driver
[ODBC]
[dg4_tibero]
Driver = /u01/oracle/tibero/client/lib/libtbodbc.so
Description = Tibero 7 ODBC Datasource for Oracle Gateway
SID = tibero_link
|
DB Link 생성 및 확인(오라클 서버에서 수행)
|
1
2
3
4
5
6
7
|
#예시
SQL> create database link {DB Link명} connect to {user명} identified by "password" using 'Network Alias명';
#실제 사용
SQL> create database link o2t_link connect to tibero identified by tmax using 'tb7';
Database link created.
|
Tibero 에서 test 테이블 생성(티베로 서버에서 수행)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
$ tbsql tibero/tmax
tbSQL 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Connected to Tibero.
SQL> create table test(c1 number);
Table 'TEST' created.
SQL> insert into test values(10);
1 row inserted.
SQL> commit;
Commit completed.
|
sqlplus 접속하여 Tibero의 test 테이블 조회 및 데이터 삽입(오라클 서버에서 수행)
|
1
2
3
4
5
6
|
$ sqlplus / as sysdba
SQL> select * from test@o2t_link;
C1
----------
10
|
정상적으로 보임
에러 발생시
|
1
2
3
4
5
|
SQL> select * from test@o2t_link;
select * from test@o2t_link
*
ERROR at line 1:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
|
디버그 로그 확인
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
$ cat /app/oracle/product/19c/hs/log/dg4_tibero_agt_3682567.trc
..
Entered hgocont at 2025/12/10-19:40:52
HS_FDS_CONNECT_INFO = "dg4_tibero"
RC=-1 from HOSGIP for "HS_FDS_CONNECT_STRING"
Entered hgopoer at 2025/12/10-19:40:52
hgopoer, line 240: got native error -2048 and sqlstate I; message follows...
Exiting hgopoer, rc=0 at 2025/12/10-19:40:52
hgocont, line 2918: calling SQLConnect got sqlstate I
Exiting hgocont, rc=28500 at 2025/12/10-19:40:52 with error ptr FILE:hgocont.c LINE:2938 ID:Something other than invalid authorization
Exiting hgolgon, rc=28500 at 2025/12/10-19:40:52 with error ptr FILE:hgolgon.c LINE:785 ID:Calling hgocont
HOA 12/10 19:40:52.620831000: (hotker_ExecuteRpcs) ncrorpi: status = 0
..
|
위 에러 발생시 initdg4_tibero.ora 파일에 HS_LANGUAGE 값을 넣어주면됨
|
1
|
HS_LANGUAGE=AMERICAN_AMERICA.KO16MSWIN949
|
결론 :
본문 설정 방식을 이용하면 oracle gateway 프로그램을 직접 설치하지 않아도 오라클 to 티베로 연결이 가능함
나의 경우 처음에 HS_LANGUAGE를 넣지 않아 에러가 발생했지만 다행히 문제를 빨리 찾아서 연결에 성공함
아래는 본문에서 실제로 사용한 파일명을 이용해 그린 Oracle to Tibero 호출 흐름 그림임

참조 :
https://positivemh.tistory.com/1315
https://docs.tibero.com/tibero/topics/administration/database-languages/dblink-guide
https://docs.tibero.com/tibero/topics/installation/database-installation-on-linux/for-client/installation
https://technet.tmax.co.kr/ko/front/support/qna/viewQna.do?cmProductCode=&find_key=all&find_value=%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8&board_type_cd=&paging.page=1&board_seq=CUST-20251201-000003
https://positivemh.tistory.com/626
https://bae9086.tistory.com/187
https://bae9086.tistory.com/200
https://fallenstar.notion.site/Oracle-Gateway-for-ODBC-5506c091e8704ce082df3a7bf5d924a5#0e4290dafee9434db2ba6e72f9fcf595
'ORACLE > Admin' 카테고리의 다른 글
| 오라클 19c 디스크 그룹 이름 변경 (0) | 2025.12.14 |
|---|---|
| 오라클 19c to 티베로 7 db 링크 설정 가이드 (0) | 2025.12.11 |
| Oracle AI Database 26ai 업그레이드 고려 사항 (0) | 2025.12.08 |
| 오라클 26ai 버전명 변경사항 (0) | 2025.12.08 |
| 오라클 19c SQL Plan Management(SPM) 및 Automatic SPM(19.22부터) 무료 (0) | 2025.12.06 |