20
Tibero to MS-SQL DBLink 가이드 문서에서는 Tibero RDBMS 에서 제공하는 MS-SQL DBLink 위한 Gateway 설치 설정방법과 MS-SQL DBLink 사용법을 소개한다.

Tibero to MS-SQL DBLink 가이드 - TmaxData to MSSQL... · 2019-06-26 · 2) Sql Server의 JDBC관렦 jar 파일(sqljdbc.jar)을 tbJavaGW/lib경로 아래에 복사 3) tbgw파일

  • Upload
    others

  • View
    19

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Tibero to MS-SQL DBLink 가이드 - TmaxData to MSSQL... · 2019-06-26 · 2) Sql Server의 JDBC관렦 jar 파일(sqljdbc.jar)을 tbJavaGW/lib경로 아래에 복사 3) tbgw파일

Tibero to MS-SQL DBLink 가이드 본 문서에서는 Tibero RDBMS 에서 제공하는 MS-SQL DBLink 를 위한 Gateway 설치 및 설정방법과 MS-SQL

DBLink 사용법을 소개한다.

Page 2: Tibero to MS-SQL DBLink 가이드 - TmaxData to MSSQL... · 2019-06-26 · 2) Sql Server의 JDBC관렦 jar 파일(sqljdbc.jar)을 tbJavaGW/lib경로 아래에 복사 3) tbgw파일

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 백서현 최초작성

Page 3: Tibero to MS-SQL DBLink 가이드 - TmaxData to MSSQL... · 2019-06-26 · 2) Sql Server의 JDBC관렦 jar 파일(sqljdbc.jar)을 tbJavaGW/lib경로 아래에 복사 3) tbgw파일

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]

Page 4: Tibero to MS-SQL DBLink 가이드 - TmaxData to MSSQL... · 2019-06-26 · 2) Sql Server의 JDBC관렦 jar 파일(sqljdbc.jar)을 tbJavaGW/lib경로 아래에 복사 3) tbgw파일

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

Page 5: Tibero to MS-SQL DBLink 가이드 - TmaxData to MSSQL... · 2019-06-26 · 2) Sql Server의 JDBC관렦 jar 파일(sqljdbc.jar)을 tbJavaGW/lib경로 아래에 복사 3) tbgw파일

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에서 새로 추가된 옵션이다.

Page 6: Tibero to MS-SQL DBLink 가이드 - TmaxData to MSSQL... · 2019-06-26 · 2) Sql Server의 JDBC관렦 jar 파일(sqljdbc.jar)을 tbJavaGW/lib경로 아래에 복사 3) tbgw파일

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서버 사젂접속테스트를 권장한다.)

Page 7: Tibero to MS-SQL DBLink 가이드 - TmaxData to MSSQL... · 2019-06-26 · 2) Sql Server의 JDBC관렦 jar 파일(sqljdbc.jar)을 tbJavaGW/lib경로 아래에 복사 3) tbgw파일

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참조)

Page 8: Tibero to MS-SQL DBLink 가이드 - TmaxData to MSSQL... · 2019-06-26 · 2) Sql Server의 JDBC관렦 jar 파일(sqljdbc.jar)을 tbJavaGW/lib경로 아래에 복사 3) tbgw파일

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.

Page 9: Tibero to MS-SQL DBLink 가이드 - TmaxData to MSSQL... · 2019-06-26 · 2) Sql Server의 JDBC관렦 jar 파일(sqljdbc.jar)을 tbJavaGW/lib경로 아래에 복사 3) tbgw파일

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>

Page 10: Tibero to MS-SQL DBLink 가이드 - TmaxData to MSSQL... · 2019-06-26 · 2) Sql Server의 JDBC관렦 jar 파일(sqljdbc.jar)을 tbJavaGW/lib경로 아래에 복사 3) tbgw파일

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

Page 11: Tibero to MS-SQL DBLink 가이드 - TmaxData to MSSQL... · 2019-06-26 · 2) Sql Server의 JDBC관렦 jar 파일(sqljdbc.jar)을 tbJavaGW/lib경로 아래에 복사 3) tbgw파일

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(); } }

Page 12: Tibero to MS-SQL DBLink 가이드 - TmaxData to MSSQL... · 2019-06-26 · 2) Sql Server의 JDBC관렦 jar 파일(sqljdbc.jar)을 tbJavaGW/lib경로 아래에 복사 3) tbgw파일

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 재구동

Page 13: Tibero to MS-SQL DBLink 가이드 - TmaxData to MSSQL... · 2019-06-26 · 2) Sql Server의 JDBC관렦 jar 파일(sqljdbc.jar)을 tbJavaGW/lib경로 아래에 복사 3) tbgw파일

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 =

Page 14: Tibero to MS-SQL DBLink 가이드 - TmaxData to MSSQL... · 2019-06-26 · 2) Sql Server의 JDBC관렦 jar 파일(sqljdbc.jar)을 tbJavaGW/lib경로 아래에 복사 3) tbgw파일

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));

Page 15: Tibero to MS-SQL DBLink 가이드 - TmaxData to MSSQL... · 2019-06-26 · 2) Sql Server의 JDBC관렦 jar 파일(sqljdbc.jar)을 tbJavaGW/lib경로 아래에 복사 3) tbgw파일

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); } }

Page 16: Tibero to MS-SQL DBLink 가이드 - TmaxData to MSSQL... · 2019-06-26 · 2) Sql Server의 JDBC관렦 jar 파일(sqljdbc.jar)을 tbJavaGW/lib경로 아래에 복사 3) tbgw파일

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 (로컬, 분산 트랜잭션의 이해)

Page 17: Tibero to MS-SQL DBLink 가이드 - TmaxData to MSSQL... · 2019-06-26 · 2) Sql Server의 JDBC관렦 jar 파일(sqljdbc.jar)을 tbJavaGW/lib경로 아래에 복사 3) tbgw파일

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 사용가능.

Page 18: Tibero to MS-SQL DBLink 가이드 - TmaxData to MSSQL... · 2019-06-26 · 2) Sql Server의 JDBC관렦 jar 파일(sqljdbc.jar)을 tbJavaGW/lib경로 아래에 복사 3) tbgw파일

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 ○

Page 19: Tibero to MS-SQL DBLink 가이드 - TmaxData to MSSQL... · 2019-06-26 · 2) Sql Server의 JDBC관렦 jar 파일(sqljdbc.jar)을 tbJavaGW/lib경로 아래에 복사 3) tbgw파일

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 ○

Page 20: Tibero to MS-SQL DBLink 가이드 - TmaxData to MSSQL... · 2019-06-26 · 2) Sql Server의 JDBC관렦 jar 파일(sqljdbc.jar)을 tbJavaGW/lib경로 아래에 복사 3) tbgw파일

19

Tibero to MS-SQL DBLink 가이드

© 2011 Tibero Co., Ltd. All Rights Reserved.

Information Intelligence, Tibero

Click to sub Title