문서유형ㅣ기술정보
분야ㅣ유틸리티
적용제품버전ㅣ7FS02PS
문서번호ㅣTUTTI025
개요
기본적으로 ESQL 프로그램은 TB_SID 환경 변수와 Tibero Client의 tbdsn.tbr 파일을 참조하여 데이터베이스에 접속합니다.
tbdsn.tbr 파일에 두 가지 이상의 접속 정보가 명시되어 있는 경우, TB_SID 환경 변수를 통해 접속하고자 하는 데이터베이스를 선택할 수 있습니다.
tbdsn.tbr 파일은 클라이언트가 데이터베이스에 접속하기 위해 필요한 정보를 포함하고 있는 환경 설정 파일입니다.
[tbdsn.tbr 파일]
#-------------------------------------------------
# /home/tibero/hooyoung/ps04/tibero7/client/config/tbdsn.tbr
# Network Configuration File.
# Generated by gen_tip.sh at Wed Nov 5 04:25:33 PM KST 2025
tibero7ps04=(
(INSTANCE=(HOST=localhost)
(PORT=1234)
(DB_NAME=tibero7ps04)
)
)
remote=(
(INSTANCE=(HOST=192.168.139.14)
(PORT=8629)
(DB_NAME=remote)
)
)
ESQL 접속 테스트 수행을 위해 tbdsn.tbr 파일에 2대의 데이터베이스 접속 정보를 기입하였으며, 사용한 소스는 실행 시점에 설정된 TB_SID 환경 변수를 읽어 접속 대상 데이터베이스를 선택할 수 있도록 작성하였습니다.
방법
테스트내용
1)접속 유저가 없는 로컬 DB로 접속
[tibero@localhost tibero7]$ echo $TB_SID
tibero7ps04
[tibero@localhost tibero7]$ tbsql sys/tibero
tbSQL 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Connected to Tibero.
SQL> drop user tibero;
User 'TIBERO' dropped.
SQL> q
Disconnected.
[tibero@localhost tbpc]$ ./test
Connection Fail ( SQLCODE : -17001 ) !!
=> Tibero 계정 drop으로 접속 실패 에러 발생.
- test : 접속 테스트 실행파일 (tibero 계정으로 접속 시도 후 에러 리턴, 상세 소스는 하단 참고)
2)정상적인 원격지 DB로 접속 테스트
[tibero@localhost tbpc]$ echo $TB_SID
remote
[tibero@localhost tbpc]$ ./test
Connected to Tibero as user tibero
[result] col3 : []
=> 1)의 테스트와 동일 서버에서 tbdsn.tbr의 remote DB로 접속 시 정상 접속 확인.
3)TB_SID 설정 변경을 통해 접속할 DB 설정하기
[tibero@localhost tbpc]$ TB_SID=tibero7ps04
[tibero@localhost tbpc]$ echo $TB_SID
tibero7ps04
[tibero@localhost tbpc]$ ./test
Connection Fail ( SQLCODE : -17001 ) !!
[tibero@localhost tbpc]$ TB_SID=remote
[tibero@localhost tbpc]$ echo $TB_SID
remote
[tibero@localhost tbpc]$ ./test
Connected to Tibero as user tibero
[result] col3 : []
위의 테스트와 같이 이미 test라는 실행 파일이 생성되어 있더라도, TB_SID 환경 변수를 변경하는 것만으로 원하는 데이터베이스로 접속할 수 있습니다.
주의
1. 원격지 DB의 방화벽 해제 확인
- 접속 실패
2) tbpc.cfg의 include path 확인
- tbpc를 통한 precompile시 Header file을 찾지 못하는 오류 발생
3)OS별 compile 옵션 확인
- 정상적인 실행 파일 생성 불가
4)TB_SID 원복
- remote TB_SID로 설정 시 로컬 DB 접속 불가
별첨 내용
1) test.tbc 소스
#include <stdio.h>
#include <sqlca.h>
#include <stdlib.h>
#include <string.h>
#define USERPASS "tibero/tmax"
int main()
{
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR userpass[20] = {strlen(USERPASS), USERPASS};
char col3_value[100];
EXEC SQL END DECLARE SECTION;
EXEC SQL CONNECT :userpass;
memset(col3_value, 0x00, sizeof(col3_value));
if ( sqlca.sqlcode != 0 ) {
printf(" Connection Fail ( SQLCODE : %d ) !! \n\n", sqlca.sqlcode );
}
else {
printf(" Connected to Tibero as user tibero \n\n");
EXEC SQL
select col3
into :col3_value
from esql_tmp1
where col1 = 1;
printf("[result] col3 : [%s]\n", col3_value);
}
EXEC SQL COMMIT WORK RELEASE;
return 0;
}
2) compile 방법
[compile 예시]
#!/bin/sh # program compile #main COMP_TARGET=$1; export COMP_TARGET make -f Makefile.tbc all
[Makefile.tbc 예시]
# Server tb*C makefile
TBLIBDIR = $(TB_HOME)/client/lib
TBLIB = -ltbxa -ltbertl -ltbcli -lclialloc
TARGET = $(COMP_TARGET)
APOBJS = $(TARGET).o
OBJS = $(APOBJS)
CFLAGS = -g -I$(TB_HOME)/client/include
#
.SUFFIXES : .c
.c.o:
$(CC) $(CFLAGS) -c $<
#
# server compile
#
all: $(TARGET)
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) -o $(TARGET) -L$(TBLIBDIR) $(TBLIB) $(OBJS)
rm -f $(OBJS)
$(APOBJS): $(TARGET).tbc
tbpc iname=$(TARGET) include=$(TB_HOME)/client/include
$(CC) $(CFLAGS) -c $(TARGET).c
clean:
-rm -f *.o core $(TARGET) $(TARGET).lis
[compile 방법]
[tibero@localhost tbpc]$ ./compile test
tbpc iname=test include=/home/tibero/hooyoung/ps04/tibero7/client/include
tbESQL Precompiler 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
test.tbc is precompiled successfully!
cc -g -I/home/tibero/hooyoung/ps04/tibero7/client/include -c test.c
cc -g -I/home/tibero/hooyoung/ps04/tibero7/client/include -o test -L/home/tibero/hooyoung/ps04/tibero7/client/lib -ltbxa -ltb
rm -f test.o
실행 파일 정상 수행 확인
[tibero@localhost tbpc]$ ./test
Connected to Tibero as user tibero
[result] col3 : []
3) tbpc.cfg
#------------------------------------------------------------------------------ # # /home/chef/workspace/Build_centos_8/tibero7/client/config/tbpc.cfg # # tbESQL Configuration file for Preprocessor # # Each command should be specified in a single line by itself terminated by # a newline. # Lines starting with a # character are comments which are ignored. # # Generated at Mon Oct 13 01:53:04 UTC 2025 # #------------------------------------------------------------------------------ INCLUDE=$TB_HOME/client/include INCLUDE=/usr/lib/gcc/x86_64-redhat-linux/11/include (OS 환경에 맞춰서 설정 필요) INCLUDE=/usr/include