tibero to ms-sql dblink 가이드 - tmaxdata to mssql... · 2019-06-26 · 2) sql server의...
TRANSCRIPT
Tibero to MS-SQL DBLink 가이드 본 문서에서는 Tibero RDBMS 에서 제공하는 MS-SQL DBLink 를 위한 Gateway 설치 및 설정방법과 MS-SQL
DBLink 사용법을 소개한다.
1
Tibero to MS-SQL DBLink 가이드
© 2011 Tibero Co., Ltd. All Rights Reserved.
1. MS-SQL DBLink 개요 ................................................................................................................ 2
2. Java Gateway 설치 및 설정 ..................................................................................................... 3
2.1. Java Gateway 설치 ....................................................................................................................................... 3
2.2. tbnet_alias.tbr 설정 ...................................................................................................................................... 6
3. MS-SQL DBLink 생성 및 사용 ................................................................................................. 7
3.1. MS-SQL DBLink 생성 .................................................................................................................................. 7
3.2. DBLink를 이용한 데이터 조회 및 DML테스트 ............................................................................... 8
4. 부록 (Java gateway 사용 전 MS-SQL 서버접속테스트) ...................................................... 9
4.1. GW_TX_MODE=LOCAL일 경우 ............................................................................................................ 10
4.2. GW_TX_MODE=GLOBAL일 경우 ......................................................................................................... 11
4.3. Troubleshooting .......................................................................................................................................... 15
별첨 1 ................................................................................................................................................ 16
별첨 2 ................................................................................................................................................ 17
Contents
Update History
Date Worker Comments
2011.03.11 박근용 문서서식업데이트
2009.10.20 이정현 문서서식업데이트 및 내용보완
2009.03.31 백서현 최초작성
2
Tibero to MS-SQL DBLink 가이드
© 2011 Tibero Co., Ltd. All Rights Reserved.
1. MS-SQL DBLink 개요
Tibero RDBMS에서 제공하는 DBLink기능은 원격 MS-SQL 서버의 Table 조회 및 입력, 수정,
삭제 등의 작업을 가능하게 한다. MS-SQL DBLink는 Java Gateway를 통해 연결되며 아래와
같은 루트를 거쳐 사용자가 요청한 쿼리결과를 출력한다.
[그림 1. MS-SQL DBLink]
3
Tibero to MS-SQL DBLink 가이드
© 2011 Tibero Co., Ltd. All Rights Reserved.
2. Java Gateway 설치 및 설정
2.1. Java Gateway 설치
Java Gateway 파일위치: $TB_HOME/client/bin/tbgateway.zip
1) Java Gateway 압축해제
Java Gateway를 원하는 디렉토리에 복사 후 압축을 해제한다.
압축해제 시, tbJavaGW 디렉토리가 생성되며 디렉토리 내 파일은 다음과 같다.
[tbJavaGW 디렉토리 구조]
tbJavaGW
+- lib : 라이브러리 디렉토리
+- log : 로그 디렉토리
+- tbgw : Java Gateway 실행파일
+- tbgw.cfg : Java Gateway 홖경파일
+- tbgwlog.properties : Java Gateway 사용 시, 로그설정파일
2) Sql Server의 JDBC관렦 jar 파일(sqljdbc.jar)을 tbJavaGW/lib경로 아래에 복사
3) tbgw파일 실행권한 부여
- 설치 디렉터리 아래의 tbgw파일에 대해서 실행권한을 부여한다.
- $ chmod +x ./tbgw
[tbgw.cfg 파일 내용]
# 대상 DB명
DATABASE=tbTest
# listener port
LISTENER_PORT=9093
# 초기 thread pool size
INIT_POOL_SIZE=10
# 최대 thread pool size
4
Tibero to MS-SQL DBLink 가이드
© 2011 Tibero Co., Ltd. All Rights Reserved.
MAX_POOL_SIZE=1000
# 게이트웨이 인코딩
# ASCII, EUC-KR, MSWIN949, UTF-8, UTF-16, SHIFT-JIS
ENCODING=MSWIN949
# max length for Types.LONGVARCHAR
MAX_LONGVARCHAR=4K
# max length for Types.LONGRAW
MAX_LONGRAW=4K
# 게이트웨이 로그 파일 경로
LOG_DIR=($TB_HOME)/client/bin/tbJavaGW/log
# 게이트웨이 로그레벨
LOG_LVL=2
# 최대 로그파일 크기 (0이면 무제한)
MAX_LOG_SIZE=0
# 최대 로그파일 개수
MAX_LOG_CNT=0
# 쿼리 시 한 번에 Fetch해오는 데이터의 크기(최대 64K)
FETCH_SIZE=32K
참고)
LOG에 관한 옵션은 Tibero RDBMS 4에서 새로 추가된 옵션이다.
5
Tibero to MS-SQL DBLink 가이드
© 2011 Tibero Co., Ltd. All Rights Reserved.
4) Java Gateway 실행
- ./tbgw 명령을 통해서 자바게이트웨이를 시작한다.
- 이 후 자바게이트웨이가 정상적으로 실행되었는지 확인한다.
$ ./tbgw
tbgw
$
-------------------------------
Name : TIBERO JAVA GATEWAY
Port : 9093
-------------------------------
$ ps -ef | grep tbgw
tibero 13707 1 1 10:31 pts/8 00:00:00 java -Xms128m -Xmx512m -
Dlog4j.configuration=tbgwlog.properties -classpath ./lib/commons-
pool.jar:./lib/commons-collections.jar:./lib/log4j-
1.2.15.jar:./lib/tbgateway.jar:./lib/sqljdbc.jar:.
com.tmax.tibero.gateway.main.GatewayMain CONFIG=./tbgw.cfg
tibero 13751 12033 0 10:31 pts/8 00:00:00 grep tbgw
참고)
자바게이트웨이 실행 시 log폴더가 함께 생성된다. 장애발생 시 자바게이트웨이 log
를 통해 장애 원인을 분석할 수 있다.
5) Java Gateway 설치완료
(참고: Java gateway 사용 젂, 부록에 첨부된 MSSQL서버 사젂접속테스트를 권장한다.)
6
Tibero to MS-SQL DBLink 가이드
© 2011 Tibero Co., Ltd. All Rights Reserved.
2.2. tbnet_alias.tbr 설정
DB Link를 생성하기 위한 MSSQL 접속정보를 tbnet_alias.tbr파일에 설정한다.
참고) Tibero 4 SP1 에서는 tbnet_alias.tbr 파일명이 tbdsn.tbr로 변경됨.
1) TB_HOME/client/config/tbnet_alias.tbr 파일을 열어 아래와 같이 내용 추가
#-------------------------------------------------
# /home/tbtest01/tibero4/client/config/tbnet_alias.tbr
# Network Configuration File.
# 기존 내용 (설치 홖경에 따라 정보가 다를 수 있습니다)
tibero=(
IP=localhost
PORT=8629
DB_NAME=tibero
)
# 추가 내용
msgate=(
IP=localhost
PORT=9093
# MSSQL접속정보 입력(IP:PORT:DB이름)
DB_NAME=192.168.30.129:1433:tbTest
GW=INET
GW_TX_MODE=LOCAL
)
[설정내용 설명]
(1) 자바게이트웨이의 IP, PORT, DB_NAME, GW_TX_MODE를 설정한다.
(2) DB_NAME의 경우, 실제 연결을 맺을 SQL server의 IP, PORT, DB명을 명시한다.
(3) GW_TX_MODE의 경우, LOCAL과 GLOBAL을 명시할 수 있으며, GLOBAL이 기본
값이다.
- GLOBAL일 경우, 2 Phase Commit형태
- LOCAL의 경우, Local Commit형태
(4) GW_TX_MODE 를 GLOBAL모드로 설정할 경우
- MSSQL서버의 DTC(분산 트랜잭션)서비스가 가능한지 우선 확인해야한다.
(부록 4.2참조)
7
Tibero to MS-SQL DBLink 가이드
© 2011 Tibero Co., Ltd. All Rights Reserved.
3. MS-SQL DBLink 생성 및 사용
3.1. MS-SQL DBLink 생성
1) Gateway를 통해 직접 MS-SQL로 접속되는지 확인
- Gateway가 준비 완료되면, DBLink 생성 젂 tbSQL을 통해 정상 실행여부가 확
인 가능하다.
- MS-SQL계정에 접속하여 select 등의 DML작업을 짂행할 수 있다.
$ tbsql tibero/tmax@msgate tbSQL 4 TmaxSoft, Co. Copyright(C) 2001-2009. All rights reserved. Connected to SQL SERVER GATEWAY using msgate. SQL> select * from t1; id ------------------------------------------------------ qwe 1 row selected. SQL>
[참고]
위와 같이 실행이 되지 않을 경우 MS-SQL 설치 머싞의 방화벽 및 TCP/IP 인터페
이스 홗성화 여부 등 홖경에 문제가 없는지 확인하도록 한다.
2) DBLink 생성작업
$ tbsql tibero/tmax <=====DBLink를사용하려는 계정으로 접속
SQL>CREATE DATABASE LINK mslink
CONNECT TO mssql IDENTIFIED BY 'mssql' USING 'msgate';
Database link 'MSLINK' created.
8
Tibero to MS-SQL DBLink 가이드
© 2011 Tibero Co., Ltd. All Rights Reserved.
3.2. DBLink를 이용한 데이터 조회 및 DML테스트
1) MS-SQL DBLink를 이용한 데이터 조회 및 DML 테스트
SQL> select * from t1@mslink; id ------------------------------------------------------- qwe 1 row selected. SQL>
SQL> insert into t1@mslink values ('100'); 1 row inserted. SQL> select * from t1@mslink; id ------------------------------------------------------- qwe 100 2 rows selected. SQL>
9
Tibero to MS-SQL DBLink 가이드
© 2011 Tibero Co., Ltd. All Rights Reserved.
4. 부록 (Java gateway 사용 전 MS-SQL 서버접속테스트)
TIBERO to MS-SQL DBLink 작업 젂, Java로 된 단위프로그램을 이용하여 Java Gateway가
설치된 서버에서 MS-SQL서버에 정상적으로 접속 되는지 테스트를 짂행한다. 접속 테스트
프로그램은 tbnet_alias.tbr에 설정한 GW_TX_MODE property에 설정할 값에 따라 선택한다.
테스트가 잘 되지 않을 경우 MS-SQL 설치 머싞의 방화벽 및 TCP/IP 인터페이스 홗성화
여부 등 외적인 홖경에 문제가 없는지 확인하도록 한다. Java를 통해 MS-SQL서버에 접속
되지 않는다면 Java Gateway도 사용할 수 없다.
MS-SQL 서버 접속 테스트 성공 시 MS-SQL DBLink 설정 작업을 짂행한다
부록 4.1 GW_TX_MODE = LOCAL일 경우
부록 4.2 GW_TX_MODE = GLOBAL일 경우
부록 4.3 Troubleshooting
10
Tibero to MS-SQL DBLink 가이드
© 2011 Tibero Co., Ltd. All Rights Reserved.
4.1. GW_TX_MODE=LOCAL일 경우
Java로 된 단위프로그램으로 Java Gateway가 설치된 서버에서 MS-SQL서버에 정상적으로
접속 되는지 테스트를 짂행한다.
(소스 내 접속 URL 및 select 할 schema(uid, pwd)변경 후 실행할 것)
[파일명: defaultStmt.java]
import java.util.*; import java.sql.*; import com.microsoft.sqlserver.jdbc.*; public class defaultStmt { Connection tb_conn = null; private final String testquery = "select c1 from t1"; PreparedStatement pstmt = null; String url="jdbc:sqlserver://192.168.14.239:1433;databasename=tmax"; String uid="test"; String pwd="tmax123"; ResultSet rset = null; public defaultStmt() { init(); } public void init() { try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); } catch(Exception e) { e.printStackTrace(); } execCall(); } public void execCall() { try { tb_conn = DriverManager.getConnection(url, uid, pwd); pstmt = tb_conn.prepareStatement(testquery); rset = pstmt.executeQuery(); while(rset.next()){ System.out.println( rset.getInt(1) ); } pstmt.close(); tb_conn.close(); }catch(Exception e) { e.printStackTrace(); }finally{ try { pstmt.close(); tb_conn.close(); } catch(Exception ex) { ex.printStackTrace(); } } } public static void main(String[] args) { new defaultStmt(); } }
11
Tibero to MS-SQL DBLink 가이드
© 2011 Tibero Co., Ltd. All Rights Reserved.
4.2. GW_TX_MODE=GLOBAL일 경우
Java로 된 단위프로그램(2 Phase Commit)으로 Java Gateway가 설치된 서버에서 MS-SQL서
버에 정상적으로 접속 되는지 테스트를 짂행한다. XA 테스트를 위해서는 우선 MS-SQL서버
의 DTC(분산 트랜잭션)서비스가 가능한지 확인해야 하며, 설정방법은 다음과 같다.
[MSSQL서버의 DTC(분산 트랜잭션)서비스 설정방법]
1. sqljdbc_xa.dll 파일을 SQL Server의 Binn 디렉토리에 복사 (해당파일은 Microsoft SQL Server 2005 JDBC Driver 1.2의 sqljdbc_1.2\kor\xa에 플랫폼별
로 있음)
2. 첨부한 (xa_install.sql)을 DB 에 관리자 계정으로 로그인 후 실행. (설치여부 확인 sp_help xp_sqljdbc_xa_init )
3. XA Transaction을 사용하기 위한 권한 부여.
ex) use master go exec sp_grantdbaccess 'tibero','tmax' go exec sp_addrolemember [SqlJDBCXAUser], 'tibero' go
4. DTC Service 가능토록 설정(XA Transaction을 지원할 수 있도록 설정) - 제어판-관리도구-구성요소서비스-컴퓨터-내컴퓨터(속성: 오른쪽마우스 클릭) - MSDTC TAB에서 '보안구성' XA 트랜잭션 사용을 체크 후 MSDTC 및 MSSQL 재구동
12
Tibero to MS-SQL DBLink 가이드
© 2011 Tibero Co., Ltd. All Rights Reserved.
MSSQL 서버 접속테스트를 위해 단위프로그램(XA)은 다음과 같다.
[파일명: testXA.java]
import java.net.Inet4Address; import java.sql.*; import java.util.Random; import javax.transaction.xa.*; import javax.sql.*; import com.microsoft.sqlserver.jdbc.*; public class testXA { public static void main(String[] args) throws Exception { // Create a variable for the connection string. String url="jdbc:sqlserver://192.168.14.239:1433;databasename=tmax"; String uid="test"; String pwd="tmax123"; try { // Establish the connection. Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Connection con = DriverManager.getConnection(url, uid, pwd); // Create a test table. Statement stmt = con.createStatement(); try {stmt.executeUpdate("DROP TABLE t1"); }catch (Exception e) {} stmt.executeUpdate("CREATE TABLE t1 (c1 int)"); stmt.close(); con.close(); // Create the XA data source and XA ready connection. SQLServerXADataSource ds = new SQLServerXADataSource(); ds.setUser("hslim"); ds.setPassword("tmax123"); ds.setServerName("192.168.14.239"); ds.setPortNumber(1433); ds.setDatabaseName("tmax"); XAConnection xaCon = ds.getXAConnection(); con = xaCon.getConnection(); // Get a unique Xid object for testing. XAResource xaRes = null; Xid xid = null; xid = XidImpl.getUniqueXid(1); // Get the XAResource object and set the timeout value. xaRes = xaCon.getXAResource(); xaRes.setTransactionTimeout(0); // Perform the XA transaction. System.out.println("Write -> xid = " + xid.toString()); xaRes.start(xid,XAResource.TMNOFLAGS); PreparedStatement pstmt =
13
Tibero to MS-SQL DBLink 가이드
© 2011 Tibero Co., Ltd. All Rights Reserved.
con.prepareStatement("INSERT INTO t1 (c1) VALUES (?)"); pstmt.setInt(1,1); pstmt.executeUpdate(); // Commit the transaction. xaRes.end(xid,XAResource.TMSUCCESS); xaRes.commit(xid,true); // Cleanup. pstmt.close(); con.close(); xaCon.close(); // Open a new connection and read back the record to verify that it worked. con = DriverManager.getConnection(url, uid, pwd); ResultSet rs = con.createStatement().executeQuery("SELECT * FROM t1"); rs.next(); System.out.println("Read -> 1 rows = " + rs.getInt(1)); rs.close(); con.close(); } // Handle any errors that may have occurred. catch (Exception e) { e.printStackTrace(); } } } class XidImpl implements Xid { public int formatId; public byte[] gtrid; public byte[] bqual; public byte[] getGlobalTransactionId() {return gtrid;} public byte[] getBranchQualifier() {return bqual;} public int getFormatId() {return formatId;} XidImpl(int formatId, byte[] gtrid, byte[] bqual) { this.formatId = formatId; this.gtrid = gtrid; this.bqual = bqual; } public String toString() { int hexVal; StringBuffer sb = new StringBuffer(512); sb.append("formatId=" + formatId); sb.append(" gtrid(" + gtrid.length + ")={0x"); for (int i=0; i<gtrid.length; i++) { hexVal = gtrid[i]&0xFF; if ( hexVal < 0x10 ) sb.append("0" + Integer.toHexString(gtrid[i]&0xFF)); else sb.append(Integer.toHexString(gtrid[i]&0xFF));
14
Tibero to MS-SQL DBLink 가이드
© 2011 Tibero Co., Ltd. All Rights Reserved.
} sb.append("} bqual(" + bqual.length + ")={0x"); for (int i=0; i<bqual.length; i++) { hexVal = bqual[i]&0xFF; if ( hexVal < 0x10 ) sb.append("0" + Integer.toHexString(bqual[i]&0xFF)); else sb.append(Integer.toHexString(bqual[i]&0xFF)); } sb.append("}"); return sb.toString(); } // Returns a globally unique transaction id. static byte [] localIP = null; static int txnUniqueID = 0; static Xid getUniqueXid(int tid) { Random rnd = new Random(System.currentTimeMillis()); txnUniqueID++; int txnUID = txnUniqueID; int tidID = tid; int randID = rnd.nextInt(); byte[] gtrid = new byte[64]; byte[] bqual = new byte[64]; if ( null == localIP) { try { localIP = Inet4Address.getLocalHost().getAddress(); } catch ( Exception ex ) { localIP = new byte[] { 0x01,0x02,0x03,0x04 }; } } System.arraycopy(localIP,0,gtrid,0,4); System.arraycopy(localIP,0,bqual,0,4); // Bytes 4 -> 7 - unique transaction id. // Bytes 8 ->11 - thread id. // Bytes 12->15 - random number generated by using seed from current time in milliseconds. for (int i=0; i<=3; i++) { gtrid[i+4] = (byte)(txnUID%0x100); bqual[i+4] = (byte)(txnUID%0x100); txnUID >>= 8; gtrid[i+8] = (byte)(tidID%0x100); bqual[i+8] = (byte)(tidID%0x100); tidID >>= 8; gtrid[i+12] = (byte)(randID%0x100); bqual[i+12] = (byte)(randID%0x100); randID >>= 8; } return new XidImpl(0x1234, gtrid, bqual); } }
15
Tibero to MS-SQL DBLink 가이드
© 2011 Tibero Co., Ltd. All Rights Reserved.
4.3. Troubleshooting
장애유형1. GW_TX_MODE = LOCAL 설정 후, 접속테스트프로그램 실행 시
[에러현상]
com.microsoft.sqlserver.jdbc.SQLServerException: 호스트 에 대한 TCP/IP 연결에 실패했습니다.
java.net.ConnectException: Connection refused
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.loginWithoutFailover(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at defaultStmt.execCall(defaultStmt.java:37)
at defaultStmt.init(defaultStmt.java:30)
at defaultStmt.<init>(defaultStmt.java:22)
at defaultStmt.main(defaultStmt.java:52)
java.lang.NullPointerException
at defaultStmt.execCall(defaultStmt.java:48)
at defaultStmt.init(defaultStmt.java:30)
at defaultStmt.<init>(defaultStmt.java:22)
원인: MS-SQL 서버가 설치된 OS 방화벽문제이거나 MS-SQL이 기동되지 않은 상태임. 조치: 방화벽을 내리거나 MS-SQL을 기동한 후 재 테스트 해볼 것.
장애유형2. GW_TX_MODE = GLOBAL 설정 후, 접속테스트프로그램 실행 시
[에러현상]
Write -> xid = formatId=4660
gtrid(64)={0x7f00000101000000010000000d5390f1000000000000000000000000
0000000000000000000
00000000000000000000000000000000000000000000000000000}
bqual(64)={0x7f00000101000000010000000d5390f1000000000000000000000000
0000000000000000000
00000000000000000000000000000000000000000000000000000}
javax.transaction.xa.XAException: java.sql.SQLException: XA 컨트롤 연결을 만들지 못했습니다.
오류: xp_sqljdbc_xa_init failure, status:0 msg:***
SQLJDBC_XA DTC_ERROR Context: xa_init, state=1, StatusCode:0
(0x00000000) ***.
at com.microsoft.sqlserver.jdbc
원인: 1) 운영체제 windows XP SP2버그 2) MSSQL서버의 DTC(분산 트랜잭션)서비스 비홗성화
조치: 1) 우선 운영체제가 windows XP SP2일 경우 hotfix 확인 후 windows xp com+ hotfix rollup package14 다운로드 받아 적용할 것. (http://support.microsoft.com/kb/922668)
2) DTC서비스 홗성화 방법은 본 문서 12pate 참조하여 세팅 할 것. 참고: http://msdn.microsoft.com/ko-kr/library/ms378931(SQL.90).aspx (로컬, 분산 트랜잭션의 이해)
16
Tibero to MS-SQL DBLink 가이드
© 2011 Tibero Co., Ltd. All Rights Reserved.
별첨 1
1) DBLink 생성구문
CREATE DATABASE LINK 링크명
CONNECT TO 유저명 ID IDENTIFIED BY '패스워드' USING 'tns_alias명';
2) DBLink 사용방법
SELECT * FROM 테이블명@링크명;
INSERT INTO 테이블명@링크명 VALUES (col1, col2);
DELETE FROM 테이블명@링크명;
UPDATE 테이블명@링크명 SET col1=1;
**PROCEDURE, TRIGGER안에서도 DBLink 사용가능.
17
Tibero to MS-SQL DBLink 가이드
© 2011 Tibero Co., Ltd. All Rights Reserved.
별첨 2
Tibero to MS-SQL의 DBLink 쿼리 수행 시 함수에 관한 제약사항
함수명 사용가능여부 비 고
ABS ○
ACOS ○
ADD_MONTH ○
ASCII ○
ASIN ○
ATAN ○
ATAN2 ○
CEIL ○
CHR ○
COALESCE ○
CONCAT ○
COS ○
COSH X
decode ○
EXP ○
FLOOR ○
INSTR △ 인자 4개는 사용할 수 없음
LENGTH △ character type only, 동일한 언어, 인코딩
LN ○
LOG ○
LOWER ○
LPAD △ 인자 2개만 가능
LTRIM △ 인자 1개만 가능
MOD ○
MONTHS_BETWEEN ○
NULLIF ○
NVL ○
NVL2 ○
POWER ○
18
Tibero to MS-SQL DBLink 가이드
© 2011 Tibero Co., Ltd. All Rights Reserved.
REPLACE ○
ROUND(NUMBER) ○
RPAD △ 인자 2개만 가능
RTRIM △ 인자 1개만 가능
SIGN ○
SIN ○
SINH X
SQRT ○
SUBSTR ○
TANH X
TO_CHAR(DATETIME) △ 인자 1개 버젂만 가능
TO_CHAR(NUMBER) △ 인자 1개 버젂만 가능
TO_DATE △ 인자 1개 버젂만 가능
TO_NUMBER △ 인자 1개 버젂만 가능
TRANSLATE X
TRIM △ 인자 1개만 가능
TRUNC(NUMBER) ○
UPPER △ 동일한 언어, 인코딩일 경우 가능
AVG ○
COUNT ○
MAX ○
MIN ○
STDDEV ○
STDDEV_POP ○
STDDEV_SAMP ○
SUM ○
VAR_POP ○
VAR_SAMP ○
VARIANCE ○
19
Tibero to MS-SQL DBLink 가이드
© 2011 Tibero Co., Ltd. All Rights Reserved.
Information Intelligence, Tibero
Click to sub Title