레이블이 db2인 게시물을 표시합니다. 모든 게시물 표시
레이블이 db2인 게시물을 표시합니다. 모든 게시물 표시

2012년 7월 27일 금요일

JDBC type 2 WAS Multiple Row Fetch 옵션 설정 - JDBC Tuning

http://www.ibm.com/developerworks/data/library/techarticle/dm-0909rowsetdb2zos/index.html

WAS에서 사용하는 DB어플리케이션은 JDBC를 사용한다. 그런데...

WAS의 Data source는 DB2 JDBC Driver에서 제공하는 클래스를 어플리케이션에게 return하지 않고, wrapping된 클래스를 return하므로  아니기 때문에 sample code처럼 data source에 직접 설정할 수 없다. 그렇다고 WAS에 보여지는 기본 data source property 에도 사용할 수 있는 property가 없다.

그러므로 WAS의 data source 사용자 정의 특성에 추가 별도로 추가 해 주어야 한다.

데이터 소스 > my data source > 사용자 정의 특성

새로작성

    이름 : enableRowsetSupport
        값 : 1
     유형 : java.lang.Integer


    이름 : fetchSize
        값 : 100
     유형 : java.lang.Integer

fetchSize는 해당 데이터 소스를 사용하는 모든 sql에 적용되므로 개별적으로 적용을 하고자 할 경우엔 프로그램에서 setFetchSize()를 사용해서 statement에 지정해야 한다. 

※ enableRowsetSupport 를 disable 할 경우엔 값을 2를 사용한다.

2009년 11월 19일 목요일

Windows에서 호스트 이름 변경 후 DB2 SQL1042C 에러 해결

참조 : http://www.thefillmoregroup.com/blog/?tag=hostname

  1. DB2 instance subdirectory (e.g. “c:\Program Files\IBM\SQLLIB\DB2″) 에 있는db2nodes.cfg 수정
  2. db2extsec -a {hostname}\DB2ADMNS -u {hostname}\DB2USERS

2009년 8월 28일 금요일

DB2에서 CODESET을 지정하여 새로운 DB만들기

db2 create db mywiki  USING CODESET UTF-8 TERRITORY KR

Windows에서 기본 설정으로 만들면 CODEPAGE와 CODESET이 1363으로 지정되어 JDBC 연결 사용시 UnsupportedEncodingException : Cp1363C 에러가 발생함.

리눅스에 DB2 설치하기

DB2 v9.5 필요 조건  

https://publib.boulder.ibm.com/infocenter/db2luw/v9r5/index.jsp?topic=/com.ibm.db2.luw.qb.server.doc/doc/r0008865.html

SLES에 대한 패키지 요구사항 패키지 이름 설명
libaio DB2 서버에 필요한 비동기 라이브러리를 포함합니다.
compat-libstdc++ libstdc++so.5를 포함합니다.

RHEL에 대한 패키지 요구사항
디렉토리 패키지 이름 설명
/시스템 환경/라이브러리 libaio DB2 서버에 필요한 비동기 라이브러리를 포함합니다.
/시스템 환경/라이브러리 compat-libstdc++ libstdc++so.5를 포함합니다.

DB2 v9 필요 조건

http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.ibm.db2.udb.uprun.doc/doc/r0008865.htm

DB2 BLOB 처리방법

저장 방법
ByteArrayOutputStream과 OjbectInputStream을 이용하여
저장하고자 하는 내용( 자바 객체 )를 byte array로 serialize한다. ( writeObject )사용
변환된 byte array를 DB2LobFactory를 이용하여 create 한다.

ByteArrayOutputStream bo = new ByteArrayOutputStream(2048);
ObjectOutputStream oo = new ObjectOutputStream(bo);
oo.writeObject(msg.getArgs());
stmt.setBlob(++index, DB2LobFactory.createBlob( bo.toByteArray() ));
oo.close();
bo.close();


조회 방법

동일한 sql문을 사용하여 조회 후 ResultSet의 getBlob을 이용하여 꺼낸다음.
ByteArrayInputStream과 ObjectInputStream을 이용하여 Object로 변환 후 원하는 객체로 캐스팅 한다.

Blob blob =  rset.getBlob(++index);
//System.out.println(rset.getInt(1)+"blob : "+blob );
if( blob != null ){
// System.out.println(blob.getBytes(1L,(int)blob.length()));
ByteArrayInputStream bin = new ByteArrayInputStream( blob.getBytes(1L,(int)blob.length()) );
ObjectInputStream oin = new ObjectInputStream( bin );
Object[] args = (Object[])oin.readObject();
for( int i=0; args!=null &&  i < args.length; i++ ){
if( args[i] == null ) continue;
out.println(args[i].getClass().getName()+":");out.println( args[i] ); out.println("<br>");
}
oin.close();
bin.close();
}