Altibase API Manual

Size: px
Start display at page:

Download "Altibase API Manual"

Transcription

1 ALTIBASE HDB TM Application Development Application Program Interface User s Manual Release (April 19, 2016)

2 ALTIBASE Application Development Application Program Interface User s Manual Release Copyright c 2001~2015 ALTIBASE Corp. All Rights Reserved. 본문서의저작권은 알티베이스에있습니다. 이문서에대하여당사의동의없이무단으로복제또는전용할수없습니다. 알티베이스 서울시구로구구로동 대륭포스트타워 Ⅱ 10 층전화 : 팩스 : 고객서비스포털 : homepage:

3 목차 서문... 5 이매뉴얼에대하여 PHP Interface ALTIBASE HDB PHP 모듈참고사항 PHP 연동을위한 ODBC 매니저설치 ODBC 연결을위한 PHP 함수 PERL DBD DBI Perl DBD와 DBI 개요 Perl 패키지설치 ALTIBASE HDB DBD 설치 NET Data Provider NET Data Provider의개요 DTC와분산트랜잭션 NET Data Provider 사용방법 NET Data Provider 인터페이스 연결정보 NET Data Provider 예제 분산트랜잭션 Trouble Shooting XA Interface XA 개요 XA 인터페이스 XA 사용 XA 사용시제약사항 JDBC 분산트랜잭션 XA를사용한애플리케이션의문제해결 iloader API 목차 3

4 iloader API 개요 iloader API 사용 iloader API 데이타구조체 iloader API CheckServer API CheckServer API 개요 CheckServer API 사용 CheckServer API 데이타구조체 CheckServer API 찾아보기 API User s Manual

5 서문 서문 5

6 이매뉴얼에대하여 이매뉴얼은 API 사용법에대해설명한다. 대상사용자 이매뉴얼은다음과같은 ALTIBASE HDB 사용자를대상으로작성되었다. 데이타베이스관리자 성능관리자 데이타베이스사용자 응용프로그램개발자 기술지원부다음과같은배경지식을가지고이매뉴얼을읽는것이좋다. 컴퓨터, 운영체제및운영체제유틸리티운용에필요한기본지식 관계형데이타베이스사용경험또는데이타베이스개념에대한이해 컴퓨터프로그래밍경험 데이타베이스서버관리, 운영체제관리또는네트워크관리경험 소프트웨어환경 이매뉴얼은데이타베이스서버로 ALTIBASE HDB 버전 을 사용한다는가정하에작성되었다. 이매뉴얼의구성 이매뉴얼은다음과같이구성되어있다. 제 1 장 PHP Interface 이장은 PHP 에서 ODBC 함수를이용하여 ALTIBASE HDB 와연동하는방법을설명한다. 제 2 장 PERL DBD DBI 6 API User s Manual

7 이장은 PerL DBD (Database Driver) 와 DBI (Database Interface) 가무엇인지살펴보고, 이를사용하기위해 Perl 패키지설치및 ALTIBASE HDB DBD 설치를어떻게하는지, ALTIBASE HDB DBD 검증등은어떻게이뤄지는지에대해설명한다. 제 3 장.NET Data Provider 이장은마이크로소프트의 ADO.NET 인터페이스를 ALTIBASE HDB 와함께사용하기위한방법을설명한다. 제 4 장 XA Interface 이장은 XA 표준을소개하고, 분산트랜잭션의기본개념과 XA 인터페이스를설명한다. 그리고 ODBC, Embedded SQL, JDBC 프로그램에서글로벌트랜잭션을사용하여 ALTIBASE HDB 에접근하는방법에대해설명한다. 제 5 장 iloader API 이장은 ALTIBASE HDB 서버로부터데이타를다운로드또는서버로데이타를업로드하는응용프로그램을작성할수있는인터페이스인 ALTIBASE HDB iloader API 를소개한다. 제 6 장 CheckServer API 이장은 ALTIBASE HDB 서버가비정상종료했는지를감시하는응용프로그램을작성하기위해사용하는인터페이스인 ALTIBASE HDB CheckServer API 를소개한다. 문서화규칙 이절에서는이매뉴얼에서사용하는규칙에대해설명한다. 이규칙을이해하면이매뉴얼과설명서세트의다른매뉴얼에서정보를쉽게찾을수있다. 여기서설명하는규칙은다음과같다. 구문다이어그램 샘플코드규칙 구문다이어그램 이매뉴얼에서는다음구성요소로구축된다이어그램을사용하여, 명령문의구문을설명한다. 구성요소 예약어 의미 명령문이시작한다. 완전한명령문이아닌구문요소는 화살표로시작한다. 서문 7

8 명령문이다음라인에계속된다. 완전한명령문이아닌구문요소는이기호로종료한다. 명령문이이전라인으로부터계속된다. 완전한명령문이아닌구문요소는이기호로시작한다. ; 명령문이종료한다. SELECT 필수항목 선택적항목 NOT ADD 선택사항이있는필수항목. 한항목만제공해야한다. DROP 선택사항이있는선택적항목 ASC DESC ASC 선택적항목. 여러항목이허용된다. 각반복앞부분에 콤마가와야한다. DESC, 샘플코드규칙 코드예제는 SQL, Stored Procedure, isql 또는다른명령라인 구문들을예를들어설명한다. 아래테이블은코드예제에서사용된인쇄규칙에대해설명한다. 규칙 의미 예제 [ ] 선택항목을표시 VARCHAR [(size)] [[FIXED ] VARIABLE] 필수항목표시. 반드시하나이상을선택해야되는표시 ENABLE DISABLE COMPILE 선택또는필수항목표시의인자구분표시. 그이전인자의반복표시. 예제코드들의생략되는것을 ENABLE DISABLE COMPILE [ ENABLE DISABLE COMPILE ] SQL> SELECT ename FROM employee; 8 API User s Manual

9 . 표시 ENAME SWNO HJNO HSCHOI rows selected. 그밖에기호 위에서보여진기호이외에기호들 EXEC :p1 := 1; acc NUMBER(11,2); 기울임꼴 구문요소에서사용자가지정해야하는변수, 특수한값을 SELECT * FROM table_name; CONNECT userid/password; 제공해야만하는위치지정자 소문자 사용자가제공하는프로그램의 SELECT ename FROM employee; 요소들, 예를들어테이블이름, 칼럼이름, 파일이름등 대문자 시스템에서제공하는요소들또는구문에나타나는키워드 DESC SYSTEM_.SYS_INDICES_; 관련자료 자세한정보를위하여다음문서목록을참조하기바란다. Installation Guide Administrator s Manual Replication Manual CLI User's Manual Precompiler User s Manual ODBC User's Manual isql User s Manual Utilities Manual Error Message Reference 온라인매뉴얼 Altibase 고객서비스포털 ( 에서국문 서문 9

10 및영문매뉴얼 (PDF, HTML) 을받을수있다. Altibase 는여러분의의견을환영합니다. 이매뉴얼에대한여러분의의견을보내주시기바랍니다. 사용자의의견은다음버전의매뉴얼을작성하는데많은도움이됩니다. 보내실때에는아래내용과함께고객서비스포털 ( 로보내주시기바랍니다. 사용중인매뉴얼의이름과버전 매뉴얼에대한의견 사용자의성함, 주소, 전화번호이외에도 Altibase 기술지원설명서의오류와누락된부분및기타기술적인문제들에대해서이주소로보내주시면정성껏처리하겠습니다. 또한, 기술적인부분과관련하여즉각적인도움이필요한경우에도고객서비스포털을통해서비스를요청하시기바랍니다. 여러분의의견에항상감사드립니다. 10 API User s Manual

11 1. PHP Interface 이장에서는 PHP 에서 ODBC 함수를이용하여 ALTIBASE HDB 와 연동하는방법을설명한다. PHP Interface 11

12 ALTIBASE HDB PHP 모듈참고사항 PHP 에서지원하는데이타타입은다음과같다. resource, int, bool, double, float, string, array, HashTable ALTIBASE HDB 서버의포트번호와 ALTIBASE HDB 에서제공한샘플프로그램의 db.php 에서포트번호를맞춰야한다. 12 API User s Manual

13 PHP 연동을위한 ODBC 매니저설치 유닉스또는윈도우환경에서 PHP 로 ALTIBASE HDB 에연동을하기위해서는먼저 ODBC 매니저를설치해야한다. 이절에서는유닉스, 리눅스와윈도우에서 ODBC 매니저를설치하고사용환경을설정하는방법을설명한다. 유닉스와리눅스 리눅스또는유닉스환경에서다음절차대로 ODBC 매니저를 설치한다. 1. unixodbc 다운로드한다. unixodbc 홈페이지 ( 에서 다운로드할수있다. 2. unixodbc 설치한다. 다운로드한 unixodbc 소스파일을컴파일해야한다. 컴파일된라이브러리를특정위치에설치하려면, configure 할 때 prefix 옵션으로경로를입력한다../configure -prefix= 설치경로 -enable-gui=no - enabledrivers=no make make install 3. unixodbc 환경을설정한다. ODBCSYSINI 환경변수의값을 ALTIBASE HDB 설치계정의홈디렉터리경로로설정한다. export ODBCSYSINI=~ 4. unixodbc Driver Manager 가설치된경로를다음과같이 환경변수에추가한다. 라이브러리경로를설정하는환경변수는 플랫폼과운영체제의 bit 에따라서 LD_LIBRARY_PATH, LD_LIBRARY_PATH_64, SHLIB_PATH 중의하나일수있다. 다음은 unixodbc 를 /usr/local/odbcdrivermanager32 또는 /usr/local/odbcdrivermanager64 에설치한예이다. export LD_LIBRARY_PATH= /usr/local/odbcdrivermanager32/lib:$ld_library_path export LD_LIBRARY_PATH_64= /usr/local/odbcdrivermanager64/lib:$ld_library_path_64 PHP Interface 13

14 5. ODBCSYSINI 환경변수의경로에다음 2 개의파일을생성한다. odbc.ini odbcinst.ini 6. odbcinst.ini 는실제내용이없는 0 byte 파일이다. 7. odbc.ini 에는 DSN 이름및 ALTIBASE HDB ODBC 드라이버 파일의위치, 서버의 IP 주소, 접속포트번호를아래처럼 설정한다. [Altibase] Driver = /home/altibase/altibase_home/lib/libaltibase_odbc.so Server = Port = 윈도우 윈도우환경은 ODBC 매니저가기본으로설치되어있어, ALTIBASE HDB 를설치할때 ODBC 매니저에 ALTIBASE HDB ODBC 드라이버를자동으로등록한다. 14 API User s Manual

15 ODBC 연결을위한 PHP 함수 ALTIBASE HDB 는표준 ODBC 를지원함으로써 PHP 에서이 ODBC 함수들을사용하여 ALTIBASE HDB 서버와연동할수있다. PHP 에서사용하는 ODBC 함수들에대한자세한설명은아래의 PHP 공식매뉴얼사이트를참조한다 : Sample Test <? // SYSTEM DSN, USER_ID, USER_PASSWORD $conn = odbc_connect("altibase", "SYS", "MANAGER"); if ($conn) // direct-execution echo "now, i create table t1 (id integer, name char(20)<br>"; odbc_exec($conn, "drop table t1"); odbc_exec($conn, "create table t1 (id integer, name char(20))"); // prepare-execution echo "now, i insert into t1 value (100, Lee)<br>"; $stmt = odbc_prepare ($conn, "insert into t1 values (?,?)"); $Insert = array (100, "Lee"); if (!odbc_execute($stmt, &$Insert)) echo ("error"); // single-selection $res = odbc_do ($conn, "select id, name, sysdate from T1"); odbc_fetch_row ($res); $ID = odbc_result($res, 1); $NAME = odbc_result($res, 2); $DATE = odbc_result($res, 3); echo ("id = $ID, name = $NAME datetime = $DATE <br>"); odbc_close($conn);?> PHP Interface 15

16

17 2. PERL DBD DBI 이장에서는 PerL DBD (Database Driver) 와 DBI (Database Interface) 가무엇인지살펴보고, 이를사용하기위해 Perl 패키지설치및 ALTIBASE HDB DBD 설치를어떻게하는지, ALTIBASE HDB DBD 검증등은어떻게이뤄지는지에대해설명한다. PERL DBD DBI 17

18 Perl DBD 와 DBI 개요 DBI 는 Perl 을위한표준데이타베이스인터페이스모듈이다. 이는일련의메소드 (methods) 와속성 (attributes) 을정의한것으로, 실제사용하는데이타베이스에독립적인일관된인터페이스를제공한다. DBI 는애플리케이션에서동일한인터페이스를사용하여여러다른데이타베이스에서제공하는 DBD 에접근하는것을가능하게한다. 실제로데이타베이스와통신을하는것은 DBD 이다. ALTIBASE HDB 에서제공하는드라이버 (DBD) 를 DBD::altibase 라고부른다. 이들메소드와속성들은 database 메소드와속성, 그리고 statement 메소드와속성으로나뉘어져있다. DBI Altibase DBD Oracle DBD DB2 DBD mysql DBD Altibase Oracle DB2 mysql [ 그림 3-1] PERL DBD 와 DBI 구조도 18 API User s Manual

19 Perl 패키지설치 Perl 패키지설치절차 1. 사용하는장비의운영체제의버전에맞게 Perl 패키지를 다운로드받는다. 2. 임의의디렉터리에서패키지 (ex. perl tar.gz) 의압축을 푼다. gzip -cd perl tar.gz tar xvf 3. Perl 패키지의압축을푼디렉터리에서 configure 를수행한다../configure 4. Perl 패키지의압축을푼디렉터리에서 make 를수행한다. make 5. Perl 패키지의압축을푼디렉터리에서 root 계정으로 컴파일한모듈을설치한다. make install 6. Event 모듈설치를위해서 event 패키지 (ex. Event-1.00.tar.gz) 를다운로드받는다. 7. 임의의디렉터리에서 Event-1.00.tar.gz 의압축을푼다. gzip -cd Event-1.00.tar.gz tar xvf 8. Event 패키지의압축을푼디렉터리에서 configure 를 수행한다../configure 9. Event 패키지의압축을푼디렉터리에서 make 를수행한다. make 10. Event 패키지의압축을푼디렉터리에서 root 계정으로 컴파일한모듈을설치한다. make install PERL DBD DBI 19

20 ALTIBASE HDB DBD 설치 ALTIBASE HDB PERL DBD 설치절차 1. perl V 를실행하여 dlext 설정이올바른지확인한다. 이때 HP 는 sl, 다른플랫폼은 so 이어야한다. 이값이 잘못되었으면다시 Perl 을설치한다. 2. Perl DBI 설치 Perl DBD 컴파일하기위한선행절차로 Perl DBI 패키지를 설치한다. 방법 1) root 계정으로 # perl -MCPAN -e shell prompt> install DBI 방법 2) 상기방법으로안될경우, 아래 ftp 사이트에서 DBI 패키지를다운받아컴파일한후에설치한다. ftp://ftp.nuri.net/pub/cpan/modules/by-module/dbi 2-1) perl Makefile.PL 2-2) make 2-3) make install 3. 아래위치에서 ALTIBASE HDB Perl DBD 를다운로드하고설치한다. ALTIBASE HDB Perl DBD 는 32bit 이기때문에 ALTIBASE HDB 32bit 클라이언트패키지또는 32bit 서버패키지가이미설치되어있어야하고, ALTIBASE_HOME 환경변수도올바르게설정되어있어야한다. ERL-DBD/altibase-perlDBD.tar.gz gzip cd altibase-perldbd.tar.gz tar xvf - 4. 다운로드한패키지내의 install.mk 를사용해서 ALTIBASE HDB DBD 를생성하는데필요한 Makefile 을생성한다. make -f install.mk 5. 컴파일한다. make ALTIBASE HDB Perl DBD 는 shared library 형태로생성된다. HP 플랫폼에서는 altibase.sl 의이름으로생성된다. HP 이외의플랫폼에서는 altibase.so 의이름으로생성되며, 생성되는위치는 blib/arch/auto/dbd/altibase 이다. 20 API User s Manual

21 6. root 계정으로 make install 을실행한다. ALTIBASE HDB Perl DBD 가 Perl 에설치된다. 이예제에서는 ALTIBASE HDB DBD 는아래위치에설치된다. /opt/perl_5.8.8/bin/lib/site_perl/5.8.8/ia64.arch REV_0/auto/DBD/altibase 7. LD_PRELOAD 환경변수를설정한다. HP 또는일부플랫폼은이단계를수행해야한다. 이작업을 수행하지않을경우오류메시지가나타난다. 8. perl test.pl 을수행해서테스트한다. ALTIBASE HDB 서버를구동한후, test.pl 파일의소스코드를 아래와같이수정한후에 perl test.pl 을수행한다. my $dbh = DBI- >connect("dbi:altibase:dsn= ;uid=sys;pwd =MANAGER;CONNTYPE=1;NLS_USE=US7ASCII;PORT_NO=209 99", "", "", 'RaiseError' => 1); PERL DBD DBI 21

22

23 3..NET Data Provider 이장에서는마이크로소프트의 ADO.NET 인터페이스를 ALTIBASE HDB 와함께사용하기위한방법을설명한다..NET Data Provider 23

24 .NET Data Provider 의개요 개요 ALTIBASE HDB.NET Data Provider 는마이크로소프트의 ADO.NET 인터페이스를 ALTIBASE HDB 에서사용하기위해구현한것이다. 즉, 닷넷프레임워크 (.NET Framework) 기반의애플리케이션에서 ALTIBASE HDB 를사용하기위해서는 ALTIBASE HDB.NET Data Provider 를사용해야한다. ADO.NET 인터페이스는닷넷프레임워크를사용하여 DBMS 와같은데이타소스에접근한다. 닷넷프레임워크는 ODBC 와 OLEDB 인터페이스를지원하며, SQLServer 와 ORACLE 에접근하는방법을기본으로제공한다. 닷넷프레임워크에기반한 Data Provider 의역할은데이타소스에접근하여명령어를수행하고결과값을추출해오는것이다. 이렇게가져온결과값을 ADO.NET DataSet 클래스를이용하여개발자가가공하고다시데이타소스에반영하게된다. 하지만데이터베이스에접속하기까지상당한시간이소용되기때문에연결풀링 (Connection Pooling) 을지원하여연결시간을절약할수있다. 연결풀링은연결이생성되면풀러에서연결을할당하고, 연결이닫히면풀러로반환하여재사용할수있다. 또한 ALTIBASE HDB.NET Data Provider 는 MSDTC(Microsoft Distributed Transaction Coordinator, 이하 DTC) 를기반으로다수의리소스매니저 (Resource Manager, 이하 RM) 들간에분산트랜잭션을지원한다. DTC 로초기화된분산트랜잭션에 XA 인터페이스를이용하여 XA 트랜잭션으로연동시켜 XA RM 으로참여한다. DTC 는마이크로소프트윈도우즈운영체제에서시스템서비스로제공하는미들웨어이며, ALTIBASE 뿐만아니라다른제품의 RM 간에도분산트랜잭션을수행할수있다. ADO.NET 인터페이스의가장큰장점은 ALTIBASE HDB 버전을업그레이드하더라도, 새로운 ALTIBASE HDB 와일치하도록 CLI 라이브러리만업그레이드하면 Data Provider 나애플리케이션을변경하지않고계속사용할수있다는것이다. 기타 ADO.NET 의자세한내용은마이크로소프트의홈페이지 ( 를참고한다. 24 API User s Manual

25 요구사항.NET Framework 알티베이스 HDB 패키지에포함된.NET Data Provider 는.NET Framework 2.0 이상, Entity FrameWork 는.NET Framework 3.5 SP1 이상에서사용하기를권장한다. ADO.NET 버전에따라서다른.NET Data Provide 라이브러리파일을제공하므로, 사용하려는 ADO.NET 버전에적합한라이브러리를사용해야한다. Altibase CLI 라이브러리 ALTIBASE HDB.NET Data Provider 는 Altibase CLI 라이브러리를이용하여데이타베이스서버에접속하므로 Altibase CLI 라이브러리를설치해야한다. 알티베이스 HDB ( 서버또는클라이언트 ) 패키지에기본으로제공된다. DTC 시스템서비스분산트랜잭션을수행하기위해서는 DTC 시스템서비스가설치되어있어야한다. 또한 ALTIBASE HDB.NET Data Provider 는 XA 트랜잭션과연동시켜분산트랜잭션을수행하기때문에 DTC 설정시 'XA 트랜잭션사용 ' 옵션을반드시활성화시켜야한다. 주의사항및제약사항.NET Data Provider 는 CLI 라이브러리를사용하므로해당시스템에맞는 odbccli_sl.dll 과함께사용해야한다..NET Framework 버전에따라일부구현이다르므로, 해당하는.NET Framework 버전을위해빌드된.NET Data Provider 를사용해야한다. ColumnName 속성은 DataReader, CommandBuilder 등에서대소문자를구별한다. 테이블을생성할때큰따옴표를이용해칼럼이름을감싸지않은경우, 컬럼이름은대문자로변환된다. 이경우대문자로된칼럼이름을사용해야올바른값을가져올수있다. NUMBER, NUMERIC, FLOAT, DECIMAL 타입컬럼으로부터 DataReader.GetValue() 를사용해서데이타를가져올때, 데이타손실이발생할수있다. 이는이함수가숫자데이타를.NET System.Decimal 타입으로변환하는데, 이때가져온데이타의범위가 System.Decimal 로표현할수있는범위를넘는경우이다..NET Data Provider 25

26 ALTIBASE HDB.NET Data Provider 는다중쿼리문의실행을지원하지않는다. 여러개의 SQL 문을한번에실행하려면저장프로시저를사용하도록한다. 연결풀링에대한제약사항은연결풀링의제약사항을참고하기바란다. 분산트랜잭션수행에대한제약사항은 DTC 와분산트랜잭션절의 DTC 제약사항을참고하길바란다. 26 API User s Manual

27 DTC 와분산트랜잭션 DTC Distributed Transaction Coordinator( 이하 DTC) 는분산트랜잭션을관리하기위하여마이크로소프트사가제공하는미들웨어이다. DTC 는 OLE 트랜잭션을기반으로분산트랜잭션을초기화및제어하고, 분산트랜잭션의 ACID 속성을보장한다. 이를위해 2 단계커밋프로토콜 (two phase commit protocol, 2PC protocol) 을사용한다. DTC 는 OLE 트랜잭션뿐만아니라 X/Open 에서 XA 트랜잭션, IBM LU 트랜잭션등으로도호환이가능하다. 알티베이스의분산트랜잭션 ALTIBASE HDB.NET Data Provider 는 OLE 트랜잭션과 XA 트랜잭션으로연동되기때문에 OLE 트랜잭션과호환되는다른제품의 RM 과분산트랜잭션을수행할수있다. ALTIBASE HDB.NET Data Provider 는 XA 인터페이스를 Onepipe connection 방식으로 DTC 와연동한다. 그리고 ALTIBASE HDB.NET Data Provider 는읽기전용최적화 (read-only optimization), 단일단계커밋 (single phase commit) 의 DTC 최적화기법을지원한다. DTC 는현재수행중인트랜잭션정보를저장하는로깅 (logging) 기능을제공한다. 이정보를이용해복구 (recovery) 를수행하거나현재수행중인분산트랜잭션의목록이나통계정보를조회할수있다. 뿐만아니라추적 (tracing data) 기능도제공하여이미수행했던트랜잭션정보도추적할수있다. DTC 에대한자세한내용은 Distributed Transaction Coordinator( 를참고한다..NET Data Provider 27

28 [ 그림 3-1] DTC 를이용한분산트랜잭션 ADO.NET 분산트랜잭션 ADO.NET 의분산트랜잭션은 DTC 시스템서비스에서초기화된 OLE 트랜잭션을객체화하여제어한다. ADO.NET 에서초기화한분산트랜잭션은 DTC 시스템서비스에의해관리되고, 완료명령시 2 단계커밋프로토콜 (2PC protocol) 을실행한다. DTC 시스템서비스에서제공하는복구 (revoery), 로깅 (logging), 추적 (tracing), 목록, 통계등모두그대로이용할수있다..NET 2.0 부터는 LTM(Lightweight Transaction Manager) 을지원하여최적화된트랜잭션관리자를제공한다. 만약단일리소스관리자 (RM) 가참여할때에는 DTC 에의해분산트랜잭션으로수행되는것이아니라,.NET 자체의트랜잭션관리자인 LTM 에의해로컬트랜잭션으로수행된다. 그리고둘이상의 RM 이참여할때에만분산트랜잭션으로수행된다. 첫번째리소스관리자의참여시 LTM 에의해로컬트랜잭션으로수행되다가두번째리소스관리자참여시첫번째참여자에게분산트랜잭션으로승격시키도록요청한다. 이를 ' 트랜잭션프로모션 (transaction 28 API User s Manual

29 promotion)' 이라한다. 첫번째리소스관리자는 DTC 시스템서비스로분산트랜잭션을초기화한후수행중인로컬트랜잭션을분산트랜잭션으로상승시킨다. 이를 ' 트랜잭션에스컬레이션 (transaction escalation)' 이라한다. 분산트랜잭션객체를두번째참여자에게전달하여분산트랜잭션에참여시키고그이후에도그분산트랜잭션에참여하게된다. ADO.NET 인터페이스.NET 2.0 에서 ADO.NET 의트랜잭션프로그래밍모델은크게명시적트랜잭션프로그래밍모델 (explicit transaction programming model) 과암묵적트랜잭션프로그래밍모델 (implicit transaction programming model) 이있다. 명시적트랜잭션프로그래밍모델에는 DbConnection.EnlistTransaction 메소드를이용해 DbConnection 객체를트랜잭션에참여시키는방식이다. ALTIBASE HDB.NET Data Provider 에서명시적으로트랜잭션에참여시키기위해서는연결문자열 (connection string) 에 'Enlist=false' 속성을설정해야한다. 암묵적트랜잭션프로그래밍모델은 DbConnection.Open 메소드호출시내부에서접속후앰비언트트랜잭션 1 (ambient transaction) 에참여시키는방식이다. ALTIBASE HDB.NET Data Provider에서 DbConnection.Open 메소드호출시암묵적으로트랜잭션에참여하기위해서는연결문자열에 'Enlist=true' 속성을설정하거나 Enlist 속성을설정하지않아야한다. 두가지모델모두로컬트랜잭션뿐만아니라분산트랜잭션도지원한다. ALTIBASE HDB.NET Data Provider 에서명시적트랜잭션프로그래밍모델로써명시적으로분산트랜잭션에참여하기위해추가적으로 AltibaseConnection.EnlistDistributedTransaction 메소드도지원한다. ADO.NET 에서분산트랜잭션을종료하기위해서 CommitableTransaction.Commit 메소드또는 1 앰비언트트랜잭션 (ambient transaction) 이란, Transaction.Current 프로퍼티로얻은트랜잭션객체를 말하며현재쓰레드에서실행중인트랜잭션객체이다..NET Data Provider 29

30 CommitableTransaction.Abort 메소드를호출할수있다. CommitableTransaction.Commit 메소드를호출하면 DTC 시스템서비스에서 2 단계커밋프로토콜 (2 PC protocol) 을실행한다. 준비단계 (prepare phase) 에서참여한모든리소스관리자 (RM) 에게커밋 (commit) 이가능한지여부를확인하여, DTC 시스템서비스가최종커밋 (commit) 을할것인지롤백 (rollback) 을할것인지결정하여로깅 (logging) 한후, 두번째인커밋단계 (commit phase) 를실행한다. 이때첫번째단계인준비단계 (prepare phase) 수행즉, 최종커밋 (commit) 여부가결정되면 CommitableTransaction.Commit 메소드에서반환되고두번째단계 (second phase) 는백그라운에서비동기적으로처리된다. CommitableTransaction.Commit 메소드가반환직후또다른트랜잭션에참여하려면이전트랜잭션이완료될때까지대기해야한다. CommitableTransaction.Abort 메소드를호출할경우에도롤백 (rollback) 명령이비동기적으로수행될수있다. 트랜잭션상태가활성화된 (active) 상태라면또다른트랜잭션에참여할수없음을주의해야한다. DTC 복구 DTC 는시스템실패 (system failure), 통신실패 (communication failure) 등을대비하여복구 (recovery) 기능을제공한다. 실패하는구성요소 (component) 에따라크게 hot recovery 와 cold recovery 로나뉜다. Hot recovery 는 RM 이실패한경우 RM 이재시작될때까지 DTC 가주기적으로검사하여복구기능을수행한다. cold recovery 는 DTC 가실패한경우 DTC 가재시작될때복구기능을수행한다. 이경우모두준비단계에서로깅 (logging) 된결정된명령, 커밋 (commit) 또는롤백 (rollback) 을기반으로복구시킨다. 응용프로그램이실패한경우에는 DTC 가이를감지하여바로복구기능을수행한다. ALTIBASE HDB.NET Provider 와같이 XA 트랜잭션으로연동하였다면, DTC 내부의 XA mapper 구성요소 (component) 에의해 XA 복구기능을수행한다. 다수의노드에걸쳐작업을수행하고분산트랜잭션을종료하기위해커밋 (commit) 명령을내리면 2 단계커밋프로토콜 (2 PC protocol) 을시작하는데, 준비단계 (prepare phase) 이후커밋단계 (commit phase) 에서리소스관리자 (RM) 에완료명령 (commit 명령또는 abort 명령 ) 이도착하지않으면해당리소스 30 API User s Manual

31 관리자 (RM) 는트랜잭션을커밋해야할지롤백해야할지모르는 indoubt 상태로지속될수있다. 이런트랜잭션을 in-doubt 트랜잭션이라한다. In-doubt 트랜잭션은커밋트리 (commit tree) 에서중간의통신회선실패, DTC 시스템서비스의로그초기화등으로발생할수있다. 따라서지속적인 In-doubt 상태를방지하려면, 수동으로해결할수있는방식을 DTC 시스템서비스에서제공하고 ALTIBASE HDB 에서도제공해야한다. DTC 시스템서비스에서는트랜잭션목록 GUI 에서수동으로해결 (heuristic completion) 할수있고, ALTIBASE HDB 에서는 XA_HEURISTIC_COMPLETE 시스템프로퍼티와 XA_INDOUBT_TX_TIMEOUT 시스템프로퍼티를설정하여해결할수있다. DTC 제약사항 기본적은제약사항은 ALTIBASE HDB.NET Data Provider 의분산트랜잭션은 OLE 트랜잭션과 XA 인터페이스를이용해 XA 트랜잭션으로연동시키기때문에 ALTIBASE HDB 에서제공하는 XA 트랜잭션의제약사항을포함한다. XA 트랜잭션의제약사항을제외한 ALTIBASE HDB.NET Data Provider 의제약사항은아래와같다. XA 트랜잭션의제약사항은 'XA 사용시제약사항 ' 을참조해주시길바란다. 다른트랜잭션에참여하거나접속을해제할경우대기상태가발생할수있다. 커밋명령을내리면 2 단계커밋프로토콜을실행하는데두번째인커밋단계는백그라운드에서비동기적으로처리되므로, 이를완료될때까지대기한다. 지속적인 indoubt 트랜잭션이될경우를대비하여 ALTIBASE HDB 의 XA_HEURISTIC_COMPLETE 시스템프로퍼티와 XA_INDOUBT_TX_TIMEOUT 시스템프로퍼티를설정하기를권장한다. 분산트랜잭션의완료명령 (commit 명령또는 abort 명령 ) 없이접속을해제할경우, XA 트랜잭션제약에따라트랜잭션을강제로롤백 (rollback) 시킨다. DTC 의제약사항으로써하나의분산트랜잭션에참여할수있는리소스관리자 (RM) 는최대 32 개이며, 동시에수행할수있는분산트랜잭션의수는 DTC 시스템서비스의로그파일크기에의존한다..NET Data Provider 31

32 .NET Data Provider 사용방법 ALTIBASE HDB 가설치된디렉터리 ( 환경변수 %ALTIBASE_HOME%) 내의 lib 디렉터리에.NET Data Provider 가존재한다. 파일의이름은다음과같다. %ALTIBASE_HOME%\lib\Altibase.Data.AltibaseClient.dll %ALTIBASE_HOME%\lib\Altibase.Data.Entity.dll.NET 응용프로그램컴파일 ALTIBASE HDB.NET Data Provider 를사용한애플리케이션은아래 2 가지방법으로컴파일할수있다. 커맨드라인에서컴파일하는방법 커맨드라인에서소스파일을컴파일을할때에는아래와같이 DLL 를참조합니다. csc /r:%altibase_home%\lib\altibase.data.altibaseclient.dll 프로그램명.cs IDE 환경에서컴파일하는방법 IDE (Integrated Development Environment) 환경에서.NET Data Provider 등록하는방법이다. ( 예 MS Viaual Studio) 1. 새프로젝트를연다. 32 API User s Manual

33 [ 그림 3-2] 새프로젝트열기 2..NET Data Provider 를등록하기위해, References 에마우스 오른쪽버튼을클릭하여 참조추가 메뉴를클릭한다. [ 그림 3-3] 프로젝트의참조추가설정 3. ALTIBASE HDB 설치디렉터리내의 lib 디렉터리에서 Altibase.Data.AltibaseClient.dll 를찾아등록한다. ALTIBASE.NET Data Provider 33

34 HDB 설치디렉터리는환경변수 %ALTIBASE_HOME% 으로 확인한다. [ 그림 3-4].NET Data Provider 를프로젝트에등록 4. 프로젝트를빌드하고생성된실행파일을실행한다. 배열바인딩 (Array Binding) ALTIBASE HDB.NET Data Provider 는배열바인딩을지원하는데, 즉배열형태의데이타에대하여파라미터바인딩이가능하다. 이는일반적인바인딩방법보다적은네트워크비용으로여러개의열을처리하므로속도향상을기대할수있다. 현재는입력 (Input) 파라미터로만배열바인딩을지원하며, 출력 (Output) 이나입출력공용파라미터의배열바인딩은지원하지않는다. 배열바인딩순서는다음과같다. 1. 바인드하려는변수들을모두배열로잡는다. 이때배열 크기는 AltibaseCommand 클래스의 ArrayBindCount 값보다 크거나같아야한다. 2. 배열변수들을파라미터에바인드한다. 만약바인드하려는 칼럼이 CHAR, VARCHAR, BLOB 타입인경우에는, 파라미터 34 API User s Manual

35 설정시 AltibaseParameter 클래스의 ArrayBindSize 를배열 요소중가장큰것과같은크기로설정해야한다. 3. AltibaseCommand 클래스의 ArrayBindCount 값을세팅한다. 예 : 한번에 100 개씩입력하는경우 ArrayBindCount = 100; 4. SQL 구문을실행한다. 주의사항 배열바인딩할때다음사항을주의해야한다. ArrayBindCount 의유효범위는 1 부터 까지이다. 배열크기를무조건크게잡는다고속도가빨라지는것은 아니므로적당한크기로바인딩한다. CHAR, VARCHAR, BLOB 타입의경우배열단일요소의 데이타길이가 ArrayBindSize 를넘을경우에러가발생한다. NCHAR, NVARCHAR 타입의경우, ArrayBindSize 값은 byte 가아닌문자수로세팅해야한다. BLOB 타입의경우, 소스프로그램에서배열타입으로 Object 를사용하고, 배열원소는 byte[] 를사용한다. 예 : byte[] var1; byte[] var2; Object[] var = new Object[2] var1, var2; CLOB, BYTE, NIBBLE, BIT, VARBIT, GEOMETRY 타입의 배열바인딩은지원하지않는다. 예제 using System; using System.Data; using Altibase.Data.AltibaseClient; class ArrayBind static void Main() AltibaseConnection con = new AltibaseConnection(); con.connectionstring = "DSN= ;UID=sys;PWD=manager;NLS_USE=KO16KSC5601"; con.open(); Console.WriteLine("Connected successfully"); // table: create table t1 (c1 int, c2 varchar(12)); // 3 records const int arraybindcount = 3; int[] c1 = new int[arraybindcount] 100, 200, 300; String[] c2 = new String[arrayBindCount] "APPLE", "ORANGE", "GRAPE" ;.NET Data Provider 35

36 AltibaseCommand cmd = new AltibaseCommand(); cmd.connection = con; //===================================================== // bind parameters //===================================================== cmd.commandtext = "insert into t1 values (?,?)"; AltibaseParameter prm1 = new AltibaseParameter("c1", DbType.Int32); prm1.direction = ParameterDirection.Input; prm1.value = c1; AltibaseParameter prm2 = new AltibaseParameter("c2", DbType.AnsiString); prm2.direction = ParameterDirection.Input; prm2.value = c2; prm2.arraybindsize = 12; // max element size in bytes cmd.parameters.add(prm1); cmd.parameters.add(prm2); //===================================================== // execute INSERT //===================================================== cmd.arraybindcount = arraybindcount; cmd.executenonquery(); //===================================================== // SELECT //===================================================== IDataReader sdatareader = null; cmd.parameters.clear(); cmd.commandtext = "select * from t1"; sdatareader = cmd.executereader(); while (sdatareader.read()) for (int i = 0; i < sdatareader.fieldcount; i++) Console.Write("[" + sdatareader.getvalue(i) + "] "); Console.WriteLine(); sdatareader.close(); con.close(); con.dispose(); ALTIBASE HDB.NET Data Provider 사용선언 ALTIBASE HDB.NET Data Provider 클래스들을사용려면, 먼저 36 API User s Manual

37 아래와같이선언하여야있다. using Altibase.Data.AltibaseClient; 트랜잭션처리 ADO.NET 에서제공하는트랜잭션처리인터페이스를이용하여 트랜잭션을처리할수있다. ADO.NET 인터페이스를이용한트랜잭션처리는 AltibaseTransaction 객체를사용하는방법과 CommittableTransaction 객체를사용하는방법이있다. AltibaseTransaction 객체를사용하는방법은아래의예제와같이 AltibaseConnection.BeginTransaction() 메소드를통해트랜잭션 객체를얻어사용하는방법이다. 이방법은로컬트랜잭션으로만 수행할수있다. AltibaseConnection sconn = new AltibaseConnection(sConnStr); sconn.open(); // 트랜잭션시작 AltibaseTransaction strans = sconn.begintransaction(); AltibaseCommand scmd = sconn.createcommand(); // 트랜잭션작업... // TODO // 트랜잭션끝 strans.commit(); CommitableTransaction 객체는트랜잭션에암시적또는명시적으로참여할수있다. ALTIBASE HDB.NET Data Provider 에서암시적인방식으로트랜잭션에참여하기위해서는접속문자열에 Enlist 속성을설정하지않거나 'Enlist=true' 라고설정한다. 명시적인참여는접속문자열에 'Enlist=false' 로설정한다. ALTIBASE HDB.NET Data Provider 는추가적으로 AltibaseConnection.EnlistDistributedTransaction 메소드를지원하여명시적으로분산트랜잭션에참여할수도있다..NET Data Provider 37

38 연결풀링 (Connection Pooling) 애플리케이션이데이터베이스서버에연결하는과정은여러단계를거치므로시간이많이걸리며, 동일한과정을여러번진행할수있다. ADO.NET 에서는연결하고닫히는횟수를최소화하기위해연결풀링을제공한다. 연결풀링은연결에필요한소유권을유지하고있다. 이를위해풀러는연결요청을받으면연결이가능한지확인하고연결을할당하거나새로운연결을풀러에생성하여할당한다. 연결이닫힐때에도연결을바로해제하지않고풀러에반환한다. 연결풀링은 Max Pool Size 의값에따라다르며, 기본적으로 100 개까지사용할수있다. 풀만들기 연결이되면연결문자열 (Connection String) 과정확하게일치하는알고리즘에따라연결풀이생성된다. 연결이될때마다연결문자열이연결풀과정확하게일치하지않을경우새로운풀이생성된다. 연결문자열의속성이나대소문자및공백수의차이가있어도다른풀로인식한다. 연결문자열에 MIN POOL SIZE 의값을설정하면해당값만큼연결풀이자동으로생성된다. 만약이값을설정하지않았다면기본값이 0 이므로자동생성되는연결은없다. 연결할당및추가연결을요청받으면연결문자열에해당하는풀을확인하여연결을할당하거나, 생성하여연결한다. 만약연결풀이없다면 Max Pool Size( 기본값 100 개 ) 속성값까지연결풀을생성할수있으며, 이값을초과할경우에는 Connection Life Time 값을초과하는연결풀이예외를발생할때까지대기한다예외가발생한연결풀은자동으로제거가되며, 명시적으로연결풀을닫으면연결이제거되는것이아니라풀러에회수된다. 연결제거 응용프로그램에서명시적으로연결풀을닫거나제거하지않으면연결풀러는정기적으로연결풀을검사하여연결을제거한다. 연결은 Connection Life Time 속성에설정한시간동안사용되지않을경우제거되며, Min Pool Size 의값만큼최소한의풀을남겨두고회수된다. 그리고예외가발생한연결풀도제거된다. 만약풀러에회수된 38 API User s Manual

39 연결풀을선택하여사용할경우정확하게일치되는지여부를 검사하고사용하는것이아니기때문에실제로연결할때예외가 발생할수있다. 풀지우기 AltibaseConnection 클래스에서풀을제거할수있는메소드는 ClearPool 및 ClearAllPools 이있다. ClearPool 메소드는지정된 연결풀을지우며, ClearAllPools 메소드는모든연결풀을지운다. 제약사항 연결풀은 Min Pool Size 속성값만큼자동으로생성되며, 서버에 접속할수있는개수이상은만들수없다. Pool Size 의값은 클라이언트에서연결할수있는풀의개수를설정한다. 스키마 ALTIBASE HDB 는 GetSchema() 메소드를사용해서 MetadataCollections, DataSourceInformation, DataTypes, Restrictions, ReservedWords 와같은공통스키마이외에도 ALTIBASE HDB 에서지원하는다음과같은메타정보스키마를조회해볼수있도록지원한다. 스키마메타테이블설명 Users Tables Views Sequences Synonyms Indexes Columns SYS_USERS_ SYS_TABLES_ SYS_VIEWS_ V$SEQ SYS_SYNONYMS_ SYS_INDICES_ SYS_COLUMNS_ 사용자관련정보를저장하는메타테이블테이블관련정보를저장하는메타테이블뷰관련정보를저장하는메타테이블시퀀스관련정보를저장하는성능뷰시노님관련정보를저장하는메타테이블인덱스정보를기록하고있는메타테이블칼럼관련정보를저장하는메타테이블.NET Data Provider 39

40 Constraints SYS_CONSTRAINTS_ 제약조건관련정보를저장하는메타테이블 Procedures SYS_PROCEDURES_ 저장프로시저및함수관련정보를저장하는메타테이블 저장프로시저및함수의 ProcedurePa SYS_PROC_PARAS_ 파라미터관련정보를 rameters 저장하는메타테이블 IndexColum ns SYS_INDEX_COLUM NS_ 인덱스칼럼관련정보를저장하는메타테이블 ConstraintC olumns SYS_CONSTRAINT_ COLUMNS_ 제약조건칼럼관련정보를저장하는메타테이블 Triggers SYS_TRIGGERS_ 트리거관련정보를저장하는메타테이블 [ 표 3-1] ALTIBASE에서지원하는메타정보스키마 ALTIBASE HDB 에서지원하는각각의스키마에대한자세한설명은 General Reference 의데이타딕셔너리를참조한다. ALTIBASE HDB.NET Data Provider 클래스 ALTIBASE HDB 의.NET Data Provider 는데이타베이스와의연결, 질의실행및결과검색을위한기능을제공한다. 이기능들은아래표에서보여주는 4 개의클래스에기반하고있다. 각클래스들의하위메소드기능은마이크로소프트의 ADO.NET 문서을참조한다. 클래스설명데이타베이스와의연결을설정하고 AltibaseConnection 트랜잭션을시작할수있다. 데이타베이스에서질의문을실행하고 AltibaseCommand 매개변수를표시할수있다. 데이타베이스에서명령수행에대한 AltibaseDataReader 결과를가져와출력할수있다. DataSet에데이타를채우고 AltibaseDataAdapter 데이타베이스로저장된데이타를갱신할수있다. [ 표 3-2] 연결및질의실행, 결과검색을위한 ALTIBASE HDB.NET Data Provider 클래스 40 API User s Manual

41 ALTIBASE HDB.Net Data Provider 는예외처리, 저장프로시저실행과트랜잭션처리등을위해다음클래스들을제공한다. 클래스설명데이타베이스오류나,.Net Framework을 AltibaseException 통해받은클라이언트오류를받아표시할수있다. SQL 명령및저장프로시저에대한 AltibaseParameter 입력, 출력파라미터를정의한다. 데이타베이스에서트랜잭션관련명령을 AltibaseTransaction 수행할수있도록한다. [ 표 3-3] 예외처리, 트랜잭션처리를위한 ALTIBASE HDB.NET Data Provider 클래스 ALTIBASE HDB.NET Data Provider 데이타타입 테이블칼럼이나파라미터의데이타타입을선언하기위해서 AltibaseDbType 클래스가사용된다. 아래표를통해 AltibaseDbType 클래스, ALTIBASE HDB 가 제공하는데이타타입과.NET Framework 의데이타타입간의 관계를확인할수있다. ALTIBASE HDB AltibaseDbType 데이타베이스칼럼.NET Framework 타입 BigInt BIGINT Int64 BitArray BIT BitArray[] Blob BLOB Byte[] Binary BYTE Byte[] Char CHAR String Clob CLOB String DateTime DATE DateTime Decimal DECIMAL Decimal Double DOUBLE Double Float FLOAT Decimal Geometry GEOMETRY Byte[] Integer INT Int32 NChar NCHAR String.NET Data Provider 41

42 NibbleArray NIBBLE NibbleArray Number NUMBER Decimal Numeric NUMERIC Decimal NVarChar NVARCHAR String Real REAL Float SmallInt SMALLINT Int16 VarBitArray VARBIT BitArray[] VarChar VARCHAR String [ 표 3-4] 데이타타입간의관계 SQL 구문내에내셔널캐릭터를포함하는상수문자열을 사용하려면, 해당문자열바로앞에 N 을붙이면된다. 주의사항 다음은알티베이스에서제공하는 Entity Provider 를사용할때의주의사항이다. 데이타베이스에 BIT 또는 VARBIT 데이타타입의컬럼을생성할때크기가반드시 1 이어야한다. 데이타베이스에 NUMERIC 또는 NUMBER 데이타타입의컬럼을생성할때 precision 은 1 에서 38 사이의크기이고 scale 은 0 에서 precision 사이의크기여야한다. NIBBLE, BLOB, CLOB 데이타타입을지원하지않는다. NIBBLE 과 BLOB 대신에 BYTE 데이타타입을, CLOB 대신에 VARCHAR 데이타타입을사용하도록한다. 42 API User s Manual

43 .NET Data Provider 인터페이스 지원하지않는인터페이스 아래표는알티베이스.NET Data Provider 가지원하지않는 인터페이스목록이다. 클래스 구분 구성요소 AltibaseConnection M ChangeDatabase P DataSource P ServerVsion AltibaseCommand M Cancel P CommandTimeout P CommandType AltibaseDataReader M GetData M GetDbDataReader M GetProviderSpecificFieldType M GetProviderSpecificValue M GetProviderSpecificValues P Depth P HasRows P VisibleFieldCount AltibaseDataAdapter M AddToBatch(IDbCommand command) M CrearBatch M ExecuteBatch M GetBatchedParameter M GetBatchedRecordsAffected(int commandidentifier, out int recordsaffected, out Exception error) M InitializeBatching M TerminateBatching AltibaseDataSourceEnumerator A AltibaseFactory M CreateDataSourceEnumerator.NET Data Provider 43

44 M CreatePermission AltibaseParameter M ResetDbType M Clone AltibaseParameterCollection M AddRange AltibasePermission A AltibasePermissionAttribute A M: Method P: Property A: 클래스전체 AltibaseDataReader.Depth 는언제나 0 을반환한다. 상속받는추상클래스에기본구현이있는메소드는해당하는기본메소드를사용한다. 기본구현을제공하는멤버는다음과같다. CreateCommandBuilder CreateConnectionStringBuilder CreateDataSourceEnumerator CreatePermission GetProviderSpecificFieldType GetProviderSpecificValue GetProviderSpecificValues VisibleFieldCount GetBatchedRecordsAffected(int commandidentifier, out int recordsaffected, out Exception error) 기본구현이없는멤버는모두 NotImplementedException 을발생시킨다. 44 API User s Manual

45 연결정보 이절에서는 ALTIBASE HDB 에접속할때사용가능한연결 속성들의정보를기술하고, 연결속성을설정하는방법에대해 설명한다. 연결문자열 (Connection String).NET 응용프로그램에서 ALTIBASE HDB 에접속하기위한연결 문자열은다음과같다. Server= ;PORT=20091;User=sys;Password=manage r 연결속성정보 ALTIBASE HDB 에접속할때사용가능한연결속성에대해기술한다. 각속성에대한기술에는다음의항목들이포함된다. 기본값 : 명시하지않을경우기본적으로사용되는값 값의범위 : 지정가능한값 필수여부 : 반드시지정해야하는지여부 설정범위 : 설정한속성이시스템전체에영향을미치는지또는해당세션에만영향을미치는지여부 설명 : 속성에대한설명 application name 기본값값의범위필수여부설정범위설명.NET Altibase Data Provider 임의의문자열 No N/A 접속된클라이언트의애플리케이션정보를나타낸다. V$SESSION의 CLIENT_APP_INFO 칼럼에출력되는값이다. connection life time 기본값 0.NET Data Provider 45

46 값의범위필수여부설정범위설명 Unsigned Integer 범위내의숫자값 [ ] No N/A 연결풀이이속성값만큼사용하지않을경우풀러에서제거된다. 단위는초 (sec) 이며, 이값이 0이면무한대를의미한다. connection timeout 기본값 15 값의범위 Unsigned Integer 범위내의숫자값 [ ] 필수여부 No 설정범위 N/A 설명연결풀에연결될때까지대기하는시간이며, 단위는초 (sec) 이다. 이값이 0이면무한대를의미한다. data source 기본값 값의범위 필수여부 설정범위 설명 No N/A 데이터소스의이름을나타내며아래의조건에따라사용되는값이달라진다. - server 값이존재하면, data source 값은무시됨. - server 값이존재하지않고, data source 값과동일한 ODBC 데이터원본이존재하면 dsn(data source name) 이사용. - server 값이존재하지않고, 동일한 ODBC 데이터원본이존재하지않으면서버의 IP 또는호스트이름을사용. encoding 기본값 값의범위 필수여부 No 46 API User s Manual

47 설정범위 N/A 설명클라이언트의문자집합을설정한다. enlist 기본값값의범위필수여부설정범위설명 true [true false] No N/A 해당쓰레드의트랜잭션컨텍스트 (Transaction.Current 프로퍼티 ). 즉현재코드가실행되고있는트랜잭션인앰비언트트랜잭션 (ambient transaction) 에암묵적인참여여부를나타낸다. max pool size 기본값 100 값의범위 Unsigned Integer 범위내의숫자값 [ ] 필수여부 No 설정범위 N/A 설명 생성할수있는최대한의연결풀개수를나타낸다. min pool size 기본값 0 값의범위 Unsigned Integer 범위내의숫자값 [ ] 필수여부 No 설정범위 N/A 설명연결풀이풀러에있는최소한의개수를나타낸다. 풀이생성되면이값만큼연결풀이자동생성되며, connection life time의기간동안사용되지않을경우풀러에서제거된다. 그러나연결풀이제거되더라도이속성에정한개수만큼유지되어야한다. nchar literal replace 기본값 false.net Data Provider 47

48 값의범위필수여부설정범위설명 [true false] No 세션 SQL문내에서내셔널캐릭터셋을가지는상수문자열의사용여부를결정한다. password 기본값 값의범위필수여부설정범위설명 데이터베이스사용자비밀번호 Yes N/A 접속을시도하는데이터베이스서버의사용자비밀번호를나타낸다. persist security info 기본값값의범위필수여부설정범위설명 false [true false] No N/A 연결정보에서문자열을가져올때비밀번호를포함할지여부를나타낸다. pooling 기본값 true 값의범위 [true false] 필수여부 No 설정범위 N/A 설명 연결풀링을사용할것인지를결정한다. port 기본값 값의범위 [0~65535] 필수여부 설정범위 설명 No N/A 접속을시도할 ALTIBASE HDB 서버의포트번호를지정한다. 48 API User s Manual

49 prefer ipv6 기본값값의범위필수여부설정범위설명 false [true false] No N/A IPv6 주소를 IPv4 주소보다우선사용할것인지를결정한다. false이면 IPv4 주소를사용하여데이터베이스서버에접속한다. server 기본값값의범위필수여부설정범위설명 localhost No N/A 접속을시도할 ALTIBASE HDB 서버의 IP 주소또는호스트이름이다. transaction timeout 기본값값의범위필수여부설정범위설명 서버의설정값 Unsinged Integer 범위의숫자값 [ ] No N/A UPDATE 수행시간이설정된값을초과하면자동으로종료한다. 단위는초 (sec) 이다. 이값이 0이면무한대를의미한다. user id 기본값 값의범위필수여부설정범위설명 데이터베이스사용자 ID Yes N/A 접속을시도하는데이터베이스서버의사용자 ID를나타낸다..NET Data Provider 49

50 .NET Data Provider 예제 DDL 과 DML 단순예제 AltibaseConnection 클래스를사용하여 ALTIBASE HDB 에 접근하여 test_goods 테이블을생성하고데이타를삽입한후 검색한다. using Altibase.Data.AltibaseClient; class ConnectionTest static void Main(string[] args) string sconnectionstring = "Server= ;PORT=20091;User=sys;Password=manager"; AltibaseConnection conn = new AltibaseConnection(sConnectionString); try conn.open(); // This connects to the database AltibaseCommand command = new AltibaseCommand("drop table test_goods", conn); query query try command.executenonquery(); // This executes a catch (Exception ex) command.commandtext = "create table test_goods ( gno char(10), gname char(20), location char(9), stock integer, price numeric(10, 2))"; command.executenonquery(); // This executes a command.commandtext = "insert into test_goods values ('A ','IM-300','AC0001',1000,78000)"; command.executenonquery();//this executes a query command.commandtext = "insert into test_goods values ('A ','IM-310','DD0001',100,98000)"; command.executenonquery();//this executes a query command.commandtext = "insert into test_goods values ('B ','NT-H5000','AC0002',780,35800)"; command.executenonquery();//this executes a query command.commandtext = "select * from test_goods"; AltibaseDataReader dr = command.executereader(); 50 API User s Manual

51 Console.WriteLine(" GNO GNAME LOCATION STOCK PRICE "); Console.WriteLine( "=========================================================== ========================"); while (dr.read()) for (int i = 0; i < dr.fieldcount; i++) Console.Write("\t0", dr[i]); // This outputs the retrieved data Console.WriteLine(); catch (Exception ex) Console.WriteLine(ex.ToString()); conn.close(); // This closes the connection to the database using Altibase.Data.AltibaseClient; class ConnectionTest static void Main(string[] args) string sconnectionstring = "DSN= ;PORT_NO=20091;UID=sys;PWD=manager;"; // This is the host IP address and port number of the database server used as the DSN AltibaseConnection conn = new AltibaseConnection(sConnectionString); try conn.open(); // This connects to the database AltibaseCommand command = new AltibaseCommand("drop table test_goods", conn); query query try command.executenonquery(); // This executes a catch (Exception ex) command.commandtext = "create table test_goods ( gno char(10), gname char(20), location char(9), stock integer, price numeric(10, 2))"; command.executenonquery(); // This executes a command.commandtext = "insert into test_goods values ('A ','IM-300','AC0001',1000,78000)"; command.executenonquery();//this executes a query command.commandtext = "insert into test_goods values ('A ','IM-310','DD0001',100,98000)";.NET Data Provider 51

52 command.executenonquery();//this executes a query command.commandtext = "insert into test_goods values ('B ','NT-H5000','AC0002',780,35800)"; command.executenonquery();//this executes a query command.commandtext = "select * from test_goods"; AltibaseDataReader dr = command.executereader(); Console.WriteLine(" GNO GNAME LOCATION STOCK PRICE "); Console.WriteLine( "=========================================================== ========================"); while (dr.read()) for (int i = 0; i < dr.fieldcount; i++) Console.Write("\t0", dr[i]); // This outputs the retrieved data Console.WriteLine(); catch (Exception ex) Console.WriteLine(ex.ToString()); conn.close(); // This closes the connection to the database 실행결과 GNO GNAME LOCATION STOCK PRICE ================================================== A IM-300 AC A IM-310 DD B NT-H5000 AC 벌크복사 AltibaseBulkCopy 를이용해서 bulkcopy_source 테이블에서 bulkcopy_destination 테이블로데이타를복사한다. using System; using System.Data; using Altibase.Data.AltibaseClient; class Program static void Main(string[] args) if (args.length!= 2) Console.WriteLine("\t[NOT PASSED]: Invalid argument"); return; 52 API User s Manual

53 string connectionstring = GetConnectionString(args); using (AltibaseConnection sourceconnection = new AltibaseConnection(connectionString)) sourceconnection.open(); // Perform an initial count on the destination table. AltibaseCommand commandrowcount = new AltibaseCommand( "SELECT COUNT(*) FROM BULKCOPY_DESTINATION;", sourceconnection); long countstart = System.Convert.ToInt32( commandrowcount.executescalar()); Console.WriteLine("Starting row count = 0", countstart); // Get data from the source table as a AltibaseDataReader. AltibaseCommand commandsourcedata = new AltibaseCommand( "SELECT A1, A2, A3, A4 FROM BULKCOPY_SOURCE;", sourceconnection); AltibaseDataReader reader = commandsourcedata.executereader(); // Open the destination connection. In the real world you would // not use AltibaseBulkCopy to move data from one table to the other // in the same database. This is for demonstration purposes only. using (AltibaseConnection destinationconnection = new AltibaseConnection(connectionString)) destinationconnection.open(); // Set up the bulk copy object. // Note that the column positions in the source // data reader match the column positions in // the destination table so there is no need to // map columns. using (AltibaseBulkCopy bulkcopy = new AltibaseBulkCopy(destinationConnection)) bulkcopy.destinationtablename = "BULKCOPY_DESTINATION"; destination. try // Write from the source to the bulkcopy.writetoserver(reader); catch (Exception ex) Console.WriteLine(ex.Message); finally.net Data Provider 53

54 // Close the AltibaseDataReader. The AltibaseBulkCopy // object is automatically closed at the end // of the using block. reader.close(); // Perform a final count on the destination // table to see how many rows were added. long countend = System.Convert.ToInt32( commandrowcount.executescalar()); Console.WriteLine("Ending row count = 0", countend); Console.WriteLine("0 rows were added.", countend - countstart); private static string GetConnectionString(string[] args) // To avoid storing the sourceconnection string in your code, // you can retrieve it from a configuration file. return "Server=" + args[0] + ";" + "PORT=" + args[1] + ";" + "User=sys;Password=manager"; 연결풀링예제 ADO.NET 에서연결풀링를사용하는예제는다음과같다. static void Main(string[] sargs) AltibaseConnection cn = new AltibaseConnection(); AltibaseConnection cn2 = new AltibaseConnection(); AltibaseCommand cmd = new AltibaseCommand(); string cnstr = "Server= ;Port=20300;User=user;Password=pwd;Pooli ng=true;min Pool Size=0;Max Pool Size=10"; cn.connectionstring = cnstr; cn.open(); Console.WriteLine("Successfully Connected."); cmd.connection = cn; cmd.commandtext = "SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH:MI:SS') FROM DUAL"; AltibaseDataReader dr = cmd.executereader(); while (dr.read()) Console.WriteLine(dr[0].ToString()); dr.close(); cn.close(); cn2.connectionstring = cnstr; 54 API User s Manual

55 cn2.open(); // Pooled Connection cn2.close(); 분산트랜잭션예제 ADO.NET 에서분산트랜잭션에참여하는방법은암묵적인방법과명시적인방법 2 가지가존재한다. 암묵적으로트랜잭션에참여하는방법은연결문자열에 'Enlist=true' 속성을설정하거나, 이속성을설정하지않고 DbConnection.Open 메소드를호출하면된다. 명시적으로트랜잭션에참여하는방법은 'Enlist=false' 속성을설정하고연결수립이후 DbConnection.EnlistTransaction 메소드또는 AltibaseConnection.EnlistDistributedTransaction 메소드를호출하면된다. 암묵적트랜잭션참여 분산트랜잭션에암묵적으로참여하여 commit 을수행하는예제이다. 만약 Rollback 을수행하려면, scope.complete() 메소드를호출하지않는다. var cn1_str = "Server= ;PORT=20300;User=root;Password=1234"; var cn2_str = "Server= ;PORT=20301;User=root;Password=1234;Enli st=true"; using (var scope = new TransactionScope()) using (var cn1 = new AltibaseConnection(cn1_str)) cn1.open(); //... using (var cn2 = new AltibaseConnection(cn2_str)) cn2.open(); //... scope.complete(); 명시적트랜잭션참여 분산트랜잭션에명시적으로참여하여 commit 을수행하는.NET Data Provider 55

56 예제이다. 명시적으로트랜잭션에참여하기위해서는참여하고자 하는트랜잭션객체를 AltibaseConnect.EnlistTransaction 메소드로호출한다. 만약 rollback 을수행하려면, tx.commit() 메소드대신 tx.rollback() 메소드를호출한다. var cn1_str = "Server= ;PORT=20300;User=root;Password=1234;Enli st=false"; var cn2_str = "Server= ;PORT=20301;User=root;Password=1234;Enli st=false"; var tx = new CommittableTransaction(); using (var cn1 = new AltibaseConnection(cn1_str)) cn1.open(); cn1.enlisttransaction(tx); //... using (var cn2 = new AltibaseConnection(cn2_str)) cn2.open(); cn2.enlisttransaction(tx); //... tx.commit(); 위예제는두번째접속 cn2 가참여하기전까지로컬트랜잭션으로수행되다가 cn2 가참여되는순간부터분산트랜잭션으로승격되어수행된다. 만약처음부터분산트랜잭션에참여하려면, 아래의예제처럼 AltibaseConnect.EnlistDistributedTransaction 메소드를사용하여참여한다. var cn1_str = "Server= ;PORT=20300;User=root;Password=1234;Enli st=false"; var cn2_str = "Server= ;PORT=20301;User=root;Password=1234;Enli st=false"; var tx = new CommittableTransaction(); var dtx = TransactionInterop.GetDtcTransaction(tx); // transaction escalation using (var cn1 = new AltibaseConnection(cn1_str)) cn1.open(); cn1.enlistdistributedtransaction((system.enterpriseservic es.itransaction)dtx); // API User s Manual

57 using (var cn2 = new AltibaseConnection(cn2_str)) cn2.open(); cn2.enlistdistributedtransaction((system.enterpriseservic es.itransaction)dtx); //... tx.commit();.net Data Provider 57

58 분산트랜잭션 Trouble Shooting 분산트랜잭션을수행시정상적으로동작하지않을때몇가지사항을확인하여해결할수있다. 질문 답변 ALTIBASE HDB.NET Data Provider 와함께분산트랜잭션이 동작하지않습니다. 분산트랜잭션이동작하지않을때다음사항들을우선확인하기바랍니다. DTC 시스템서비스가정상적인수행여부확인 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSD TC\XADLL 레지스트리위치에 'odbccli_sl.dll' 값이등록되었는지확인 ( 참고 : Wow64 인경우레지스트리위치는 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node \Microsoft\MSDTC\XADLL) DTC 시스템서비스에서 'XA 트랜잭션사용 ' 옵션의설정여부확인질문 분산트랜잭션을수행하였으나, 정상적으로동작하지않습니다. 답변 분산트랜잭션은다음의경우정상적으로동작하지않습니다. 트랜잭션타임아웃이초과할경우 하나의분산트랜잭션에 32 개이상의리소스관리자 (RM) 가참여를시도할경우 DTC 시스템서비스의로그파일크기를초과하도록다수의분산트랜잭션을수행할경우질문 커밋이후또다른트랜잭션에참여하거나접속을해제할때접속 58 API User s Manual

59 해제가완료될때까지장기간대기할수있다. 답변 커밋트리 (commit tree) 에서중간통신회선실패, DTC 시스템서비스의로그초기화등으로인해 2 단계커밋프로토콜 (2 PC protocol) 중두번째단계 (second phase) 의명령이전달받지못할경우가발생한다. 이를대비하여 ALTIBASE HDB 의 XA_HEURISTIC_COMPLETE 시스템프로퍼티와 XA_INDOUBT_TX_TIMEOUT 시스템프로퍼티를설정하기를권장한다. 질문 분산트랜잭션에참여시도시순간적으로실패할수도있다. 답변 DbConnection.EnlistTransaction 메소드또는 AltibaseConnection.EnlistDistributedTransaction 메소드를이용해분산트랜잭션에참여를시도할때실패할수있다. 참여과정에서 DTC 시스템서비스는 XA 복구 (recovery) 를위해 xa_open 함수로 RM 에접속을시도한다. 이때네트워크장애등일시적인현상으로접속이실패할수있으며, 이경우다시참여를시도할것을권장한다..NET Data Provider 59

60

61 4. XA Interface 이장은 XA 표준을소개하고, 분산트랜잭션의기본개념과 XA 인터페이스를설명한다. ODBC, Embedded SQL, JDBC 프로그램에서글로벌트랜잭션을사용하여 ALTIBASE HDB 에접근하는방법에대해설명한다. 또한 XA 의제약사항및애플리케이션에서발생할수있는문제를다루는법을살펴본다. XA Interface 61

62 XA 개요 XA 구조는 X/Open 에서정한분산트랜잭션 ( 또는글로벌트랜잭션 ) 처리를위한표준모델이다. 분산트랜잭션이란 2 개또는그이상의네트워크상에서의데이타베이스시스템간의트랜잭션으로서글로벌트랜잭션 (Global Transaction) 이라고도한다. 데이타베이스시스템은트랜잭션의자원역할을하고, 트랜잭션매니져 (Transaction Manager, TM) 는이러한자원에관련된모든동작에대하여트랜잭션을생성하고관리한다. 즉다수의데이타베이스서버들이제공하는자원을분산애플리케이션이공유할수있도록해주거나또는글로벌트랜잭션으로처리할수있도록한다. XA 는하나이상의데이타베이스에서트랜잭션을처리하는애플리케이션에유용한구조이다. XA 관련용어 Application (AP) 애플리케이션은필요한트랜잭션과트랜잭션으로구성된작업을정의한다. 애플리케이션은 Embedded SQL 또는 ODBC CLI 로작성할수있다. 글로벌트랜잭션 (Global Transaction) TM 에의해관리되는트랜잭션전체를의미하며, 분산트랜잭션이라고도한다. 휴리스틱완료 (Heuristic Completion) in-doubt 트랜잭션에서어떤원인으로커밋등의다음명령을받지못해서 RM 스스로커밋또는롤백을수행한경우휴리스틱커밋 (Heuristic Commit) 이나휴리스틱롤백 (Heuristic Rollback) 이라고한다. 이러한상태를휴리스틱완료 (Heuristic Completion) 가되었다고한다. 일반적으로네트워크실패또는트랜잭션타임아웃에의해발생한다. In-doubt 트랜잭션 RM 즉 DBMS 에 prepare 된후커밋또는롤백메시지를받기전까지의트랜잭션브랜치을의미한다. 또는 Pending 트랜잭션이라고도한다. 리소스매니저 (Resource Manager, RM) 리소스매니저는 XA 트랜잭션에의해접근되는자원을 62 API User s Manual

63 관리한다. 예를들어관계형데이타베이스, 트랜잭션큐, 또는파일시스템등이있을수있다. 트랜잭션브랜치 (Transaction Branch) 이는하위트랜잭션으로글로벌트랜잭션의일부이다. 이는글로벌트랜잭션에참여하는 RM 들중하나에서실행된다. 하나의트랜잭션브랜치는하나의 XID (XA 의트랜잭션아이디 ) 와일대일로대응한다. Transaction Manager (TM) 이는트랜잭션을정의하는 API 를제공한다. 트랜잭션의커밋과롤백을책임지고, 복구를수행한다. TM 은모든 RM 이서로일관성을가지도록 2 단계커밋엔진을가지고있다. Transaction Processing Monitor (TPM) 이는하나이상의 AP 가하나이상의 RM 으로요청하는트랜잭션의흐름을조정한다. RM 은이기종이가능하며네트워크를통해서분산될수있다. TPM 은커밋과롤백작업을조정함으로써분산트랜잭션을완료한다. TPM 에속하는 TM 부분은분산된커밋과롤백작업의타이밍을결정할책임이있다. 즉 TPM 은 2 단계커밋을제어할책임이있다. TM 은분산된커밋과롤백작업을관리하기때문에, 모든 RM 에대해알수있어야하며직접통신할수있어야한다. 이를위해 TM 은 XA 인터페이스를사용한다. ALTIBASE HDB 의경우, TM 은 ALTIBASE HDB 에서제공하는 XA 라이브러리를사용할수있다. TX 인터페이스 AP 는 TX 인터페이스를사용하여 TM 을통해서트랜잭션을제어한다. AP 가직접 XA 인터페이스를사용하지는않는다. AP 는개별트랜잭션브랜치의작업을알지못하고, 애플리케이션쓰레드가직접트랜잭션브랜치작업에참여하지도않는다. 글로벌트랜잭션의브랜치들은 AP 를대신하여 TM 에의해서관리된다. AP 는다만 TM 에게글로벌트랜잭션을커밋또는롤백할것을요청할뿐이다. XA 의구조 아래그림에서보는것처럼, 하나이상의 AP (Application Program), TM (Transaction Manager) 과하나이상의 RM (Resource Manager) 이분산트랜잭션에관여한다. XA Interface 63

64 [ 그림 5-1] XA 구조 AP 가 TX 인터페이스를사용하여 TM 에게분산트랜잭션이시작됐다고알리면, TM 은어떤 RM ( 데이타베이스시스템 ) 이분산트랜잭션의대상인지확인한다. TM 은내부적으로 RM 에서수행할트랜잭션브랜치를위한 XID 를생성하여 XA 인터페이스를호출하여 RM 에게 XID 를전달한다. 각각의 RM (DB 노드 ) 은전송된 XID 에대응하는트랜잭션브랜치를처리하기시작한다. 그리고 TM 으로부터그트랜잭션의종료요청이올때까지는 AP 로부터요청된작업을그 XID 에해당하는글로벌트랜잭션내의작업으로인지하고트랜잭션브랜치에서작업을진행한다. 트랜잭션을종료하려면, AP 는 TX 인터페이스를사용하여 TM 에게분산트랜잭션이종료됐다고알린다. 그러면 TM 은 XA 인터페이스를사용하여분산트랜잭션을진행한 RM 에게커밋또는롤백을명령한다. XA 와 2 단계커밋 ALTIBASE HDB XA Interface 는 2 단계커밋 (2-Phase Commit, 2PC) 을따른다. 2PC 는 Prepare 단계와 Commit 단계로구성된다. 1 단계인 Prepare 에서 TM 은분산트랜잭션에참여하는모든데이타베이스노드들즉 RM 에게커밋의가능성을확인한다. 64 API User s Manual

65 RM 은커밋이가능하다면 Prepare 상태를 TM 에게전달한다. 그러나가능하지않다면 RM 은이를롤백시키기위한상태값을반환한다. 2 단계인 Commit 에서 TM 은 Prepare 의상태를전달받을때까지대기한다. 그리고 Prepare 가정상적으로진행되었다면, 모든 RM 에게커밋명령을보낸다. 그러나하나의 RM 이라도 Prepare 가되지않았다면, 롤백명령을보낸다. xa_switch_t 구조체 XA 인터페이스를지원하는모든 RM 은 RM 에대한정보와각인터페이스의 entry point 를가지는 xa_switch_t 구조체를제공한다. ALTIBASE HDB 는 altibase_xa_switch 라는이름으로제공한다. struct xa_switch_t char name[rmnamesz]; manager */ long flags; specific options */ long version; /* name of resource /* resource manager int (*xa_open_entry)(/*_ char *, int, long _*/); /*xa_open fn pointer*/ int (*xa_close_entry)(/*_ char *, int, long _*/); /*xa_close fn pointer*/ int (*xa_start_entry)(/*_ XID *, int, long _*/); /*xa_start fn pointer*/ int (*xa_end_entry)(/*_ XID *, int, long _*/); /*xa_end fn pointer*/ int (*xa_rollback_entry)(/*_ XID *, int, long _*/); /*xa_rollback fn pointer*/ int (*xa_prepare_entry)(/*_ XID *, int, long _*/); /*xa_prepare fn pointer*/ int (*xa_commit_entry)(/*_ XID *, int, long _*/); /*xa_commit fn pointer*/ int (*xa_recover_entry)(/*_ XID *, long, int, long _*/); /*xa_recover fn pointer*/ int (*xa_forget_entry)(/*_ XID *, int, long _*/); /*xa_forget fn pointer*/ int (*xa_complete_entry)(/*_ int *, int *, int, long _*/); /*xa_complete fn pointer*/ ; XA 라이브러리 ALTIBASE HDB XA 인터페이스를사용하는애플리케이션을 XA Interface 65

66 연결하기위해서는별도의라이브러리가필요하지않다. ODBC 프로그램을위한 odbccli 라이브러리에포함되어제공하기때문에, 사용자가 XA 관련기능을사용하기위해서는 XA 를사용하는애플리케이션에 libodbccli.a 라이브러리만링크하면된다. 66 API User s Manual

67 XA 인터페이스 XA 인터페이스는 RM 과 TM 간의상호인터페이스이다. TM 은글로벌트랜잭션을수행하기위해 RM 을제어하는 XA 루틴과 RM 이동적으로 TM 에게요청하는 AX 루틴으로구성된다. Note: ALTIBASE HDB 는동적인등록을지원하지않기때문에, 트랜잭션을시작하기전에 TM 이 RM 으로 xa_start 를호출해야한다. XA 함수 ALTIBASE HDB 는 xa_switch_t 의 ALTIBASE HDB 구현인 altibase_xa_switch 구조체에 XA 관련함수들을제공한다. XA 인터페이스 설명 xa_open Resource Manager 에연결한다. xa_close Resource Manager로부터연결을해제한다. xa_start 새로운트랜잭션브랜치또는기존의트랜잭션브랜치를다시시작하고, 주어진트랜잭션식별자 (XID) 와연계시킨다. xa_end 트랜잭션브랜치로부터분리한다. xa_rollback 주어진 XID와연계된트랜잭션브랜치를롤백한다. xa_prepare 트랜잭션브랜치의커밋을준비한다. xa_commit 트랜잭션브랜치를커밋한다. xa_recover prepare, 휴리스틱커밋또는휴리스틱롤백된트랜잭션의 XID 리스트를보여준다. xa_forget 휴리스틱하게완료된트랜잭션브랜치에대한정보를 RM에서폐기하도록한다. [ 표 5-1] XA 인터페이스 xa_open RM 에접속한다. int xa_open(char *xa_info, int rmid, long flags); xa_info 는 null-terminated 문자열로, 서버정보를포함하며최대길이는 256byte 이다. SQLDriverConnect 의인자와동일한포맷을가지며, 추가적으로 XA_NAME, XA_LOG_DIR 필드가존재한다. XA Interface 67

68 다른필드에대한자세한설명한 CLI User's Manual 의 SQLDriverConnect 함수를참조하기바란다. NAME=value;NAME=value;NAME=value; 예 ) DSN= ;UID=SYS;PWD=MANAGER ;XA_NAME=conn1 XA 파라미터 XA_NAME XA_LOG_DIR 설명 ALTIBASE HDB Embedded SQL 프로그램에서연결의식별자로사용되는이름이다. ALTIBASE HDB Embedded SQL로애플리케이션을작성할때이값을생략하면, 기본연결을사용하게된다. 만약 XA_NAME 속성에이름을명시했다면, SQL문수행시 AT 절에이이름을사용하면된다. ALTIBASE HDB XA 라이브러리에서발생한에러정보를로깅하는디렉터리를명시한다. 기본값은 ALTIBASE_HOME 환경변수가설정되었을경우 $ALTIBASE_HOME/trc이고, 그렇지않다면현재디렉터리다. [ 표 5-2] XA 인터페이스에추가된필드 rmid 는접속할서버의 ID 를기록하며, 아무값이나쓸수있다. 플래그 (flags) 는다음의값을사용할수있다. TMNOFLAGS xa_close 지정된 RM 과연결을종료한다. int xa_close(char *xa_info, int rmid, long flags); xa_info 는서버에대한정보를기록하는문자열로, 최대길이는 256byte 이다. Note: 연결이이미종료된것에대해 xa_close 가수행되어도, XA_OK 값이반환된다. 플래그 (flags) 는다음의값을쓸수있다. TMNOFLAGS xa_start 트랜잭션브랜치를시작한다. xid 는글로벌트랜잭션에대한식별자이다. int xa_start(xid *xid, int rmid, long flags); 플래그 (flags) 는다음의값을쓸수있다. 68 API User s Manual

69 TMRESUME 이전에 suspend 된트랜잭션브랜치를계속한다. TMNOWAIT xa_start 가차단될경우, 기다리지않고 XA_RETRY 값을반환한다. TMASYNC 비동기모드로트랜잭션브랜치를시작한다 (ALTIBASE HDB 는지원하지않음 ). TMNOFLAGS 다른플래그를지정하지않을경우반드시이값을지정해야한다. TMJOIN 존재하는트랜잭션브랜치에연결한다. xa_end 트랜잭션브랜치를끝낸다. int xa_end(xid *xid, int rmid, long flags); 플래그 (flags) 는다음의값을쓸수있다. TMSUSPEND 해당트랜잭션브랜치를 suspend 상태로변경하고종료한다. 이트랜잭션브랜치는 xa_start 에의해서다시계속될수있다. TMSUCCESS 성공적으로종료했다는것을나타내는것으로 TMSUSPEND 또는 TMFAIL 과같이사용될수없다. TMFAIL 비정상적으로종료했다는것을나타낸다. 이트랜잭션브랜치의상태는 roll-back only 로지정된다. TMSUCCES 또는 TMSUSPEND 와같이사용될수없다. xa_rollback 지정된트랜잭션브랜치에대해서수행한연산을롤백한다. int xa_rollback(xid *xid, int rmid, long flags); 플래그 (flags) 는다음의값을쓸수있다. TMASYNC xa_rollback 이비동기모드로동작하도록한다 (ALTIBASE HDB 는지원하지않음 ). XA Interface 69

70 TMNOFLAGS 다른플래그를지정하지않을경우반드시이값을지정해야 한다. xa_prepare 2 단계커밋프로토콜에서트랜잭션을커밋하거나롤백하기이전에수행한다. int xa_prepare(xid *xid, int rmid, long flags); 플래그 (flags) 는다음의값을쓸수있다. TMASYNC (ALTIBASE HDB 는지원하지않음 ) TMNOFLAGS 다른플래그를지정하지않을경우반드시이값을지정해야한다. 다음의값이리턴될수있다. XA_RDONLY 트랜잭션이 RM (DBMS) 의어떤데이타도변경하지않았을경우에반환된다. RM 에서수행된트랜잭션은커밋이나롤백이필요하지않다. XA_OK 정상적으로수행되었을경우에이값을반환한다. xa_commit 특정트랜잭션브랜치를커밋한다. int xa_commit(xid *xid, int rmid, long flags); 플래그 (flags) 는다음의값을쓸수있다. TMONEPHASE one phase commit 을수행할경우설정한다. TMNOFLAGS 다른플래그를지정하지않을경우반드시이값을지정해야한다. xa_recover RM 에서 prepare 상태로있는트랜잭션브랜치에해당하는 xid 의 목록을얻는다. 70 API User s Manual

71 int xa_recover(xid *xids, long count, int rmid, long flags); 리턴값은 xids 에반환되는 xid 의갯수이다. count 매개변수에는 xids 의사이즈를지정한다. 플래그 (flags) 는다음의값을쓸수있다. TMSTARTRSCAN 자세한설명은 XA Specification 문서를참고한다. TMENDRSCAN 자세한설명은 XA Specification 문서를참고한다. TMNOFLAGS 현재커서위치에서시작하여 XID 목록을반환한다. xa_forget 휴리스틱하게 (heuristically) 완료된트랜잭션을 ALTIBASE HDB 서버가관리하지않도록한다. int xa_forget(xid * xid, int rmid, long flags); 플래그 (flags) 는다음의값을쓸수있다. TMNOFLAGS 항상이값을지정한다. xa_complete 비동기모드의연산을수행할때해당연산이종료될때까지 대기한다. ALTIBASE HDB 에서는지원하지않으며, 항상오류 메시지를리턴한다. XA Interface 71

72 XA 사용 이절에서는 XA 환경에서 ODBC, Embedded SQL, JDBC 등을 사용하기위한기본적인절차를살펴본다. ODBC/XA 수행순서 1. xa_open 지정한서버에접속한다. 2. SQLAllocHandle ODBC 에연결하기위해서 connection 과 environment 핸들을생성한다. 3. SQLSetConnectAttr XA connection 을 connection 핸들에연결한다. 4. SQLConnect 실제연결은 xa_open 으로연결되었으므로, 이호출에서새로운접속을수행하지는않는다. 다만 SQLConnect 는 ODBC 에서 connection 의내부상태값을변경한다. 이과정을생략하면 DML 연산을수행할수없다. 5. xa_start 특정 XID 에대응하는트랜잭션브랜치를시작한다. 6. SQL 구문실행 SQLPrepare, SQLExecute 등의연산을수행한다. 만일여기에서 commit 문을실행한다면서버는에러메시지를반환한다. 7. xa_end 트랜잭션브랜치를종료한다. 8. xa_prepare 커밋을위해 prepare 를수행한다. 9. xa_commit 트랜잭션을커밋한다. 72 API User s Manual

73 10. SQLDisconnect ODBC 에서 connection 의내부상태를연결되지않은상태로변경한다. 그러나실제 XA 에의해서생성된연결은그대로유지된다. 11. xa_close xa 의연결을종료한다. SQLSetConnectAttr ODBC 애플리케이션이분산트랜잭션을사용할수있도록, SQLSetConnectAttr 을호출하여 XA connection 을 ODBC connection 에연결시킨다. XA 연결하기위해서는 SQLSetConnectAttr 에다음과같은매개변수를준다. SQLRETURN SQLSetConnectAttr (SQLHDBC SQLINTEGER SQLPOINTER SQLINTEGER hdbc, fattr, vparam, slen); fattr = ALTIBASE_XA_RMID hdbc 로지정한연결을 XA 연결로써사용하도록한다. XA 연결에대한자세한정보는 vparam 에다음의구조체포인터를지정하여설정한다. vparam xa_open 으로연결할때사용한 rmid 값을갖는다. rmid 를지정하지않고서버에 XA 연결을하려면다음의매개변수를사용한다. fattr = SQL_ATTR_ENLIST_IN_XA 지정한 hdbc 연결을마지막 XA 연결과맺는다. Embedded SQL XA_NAME 설정에따른프로그램작성방법 XA 프로그램을작성할때, 커서는한트랜잭션내에서만유효하다. 즉트랜잭션이시작한후에커서를열어야하고, 트랜잭션이커밋또는롤백되기전에커서를닫아야한다. 기본연결을사용한프로그램작성방법 XA Interface 73

74 기본연결을사용려면다음과같이 xa_open 의연결정보를가지는 xa_info 인자에 XA_NAME 필드를지정하지않은문자열을사용해야한다. DSN= ;UID=SYS;PWD=MANAGER 그리고 SQL 구문에서는다음예제처럼 AT 절을사용하지않아도된다. EXEC SQL UPDATE emp SET empno = 5; 한개이상의연결을사용하기위해 XA_NAME 을사용한프로그 램작성방법 Embedded SQL 프로그램에서명시적으로연결의이름을 사용하려면, xa_open 의연결정보를가지는 xa_info 인자에 XA_NAME=conn1 필드가포함된문자열을사용해야한다. 기본연결과한개이상의이름이명시된연결이있는프로그램을 작성하려면, 다음과같이한다. 연결이름이 conn1, conn2 로존재한다면 TM 의환경설정에서 open_string 은다음과같이 XA_NAME 을사용해서연결이름을 명시한다. DSN= ;UID=SYS;PWD=MANAGER;XA_NAME=conn1 DSN= ;UID=SYS;PWD=MANAGER;XA_NAME=conn2 DSN= ;UID=SYS;PWD=MANAGER 애플리케이션서버의서비스함수프로그램에서는아래처럼 AT 절을포함한 Embedded SQL 구문을작성한다. EXEC SQL AT conn1 UPDATE emp SET empno = 5; EXEC SQL AT conn2 UPDATE emp SET empno = 5; EXEC SQL UPDATE emp SET empno = 5; JDBC/XA 수행순서 ALTIBASE HDB 의 JDBC 드라이버가정의하는 XA 관련클래스는다음과같다. Altibase.jdbc.driver.ABXADataSource Altibase.jdbc.driver.ABXAResource Altibase.jdbc.driver.XID 사용자가직접사용하는클래스는 ABXADataSource 이다. 나머지는 JTA 인터페이스클래스를구현한클래스로사용자가직접사용할필요는없다. 74 API User s Manual

75 1. ABXADataSource 객체생성 ABXADataSource xadatasource = new ABXADataSource(); xadatasource.seturl(args[0]); xadatasource.setuser("sys"); xadatasource.setpassword("manager"); 2. XAConnection 객체생성 XAConnection 을 XADataSource 클래스의 getxaconnection 매소드를호출하여생성한다. XAConnection xaconnection = xadatasource.getxaconnection( SYS, MANAGER: ); 3. XAResource 객체생성 XAResource 를 XAConnection 클래스의 getxaresource 매소드를호출하여생성한다. XAResource xaresource = xaconnection.getxaresource(); 4. Connection 객체생성 SQL 을수행할커넥션을 XAConnection 클래스의 getconnection 매소드를호출하여생성한다. Connection conn1 = xaconnection.getconnection(); 5. XAResource 객체를이용하여 XA 함수실행 xa_start, xa_end 등의 XA 함수들은 XAResource 클래스의매소드를사용하여실행된다. xaresource.start(xid, XAResource.TMNOFLAGS); 6. Connection 객체를이용하여 SQL 구문수행 Statement stmt = conn.createstatement(); int cnt = stmt.executeupdate("insert into t1 values (4321)"); XA 트랜잭션제어 ALTIBASE HDB XA 환경에서트랜잭션을제어하는방법에대해설명한다. XA 라이브러리를사용할때는 commit 이나 rollback 구문을사용하여트랜잭션을처리하면안된다. 대신에 AP 는아래표의 TX 인터페이스를사용하여 TM 이트랜잭션을시작하거나종료하도록해야한다.. XA Interface 75

76 TM 은일반적으로 XA 인터페이스를사용해서트랜잭션을제어한다. TX 인터페이스 설명 tx_open RM에 logon한다. tx_close RM에서 logout한다. tx_begin 새로운트랜잭션을시작한다. tx_commit 트랜잭션을커밋한다. tx_rollback 트랜잭션을롤백한다. [ 표 5-3] TX 인터페이스 TX 인터페이스와 XA 인터페이스의호출흐름을살펴보면, 다음 그림과같다. AP tx_open tx_begin TM XA Interface xa_open xa_start tx_commit tx_close xa_end xa_prepare xa_commit xa_close xa_recover xa_commit (xa_rollback, xa_forget) ALTIBASE Native Calls [ 그림 5-2] TX 인터페이스와 XA 인터페이스의호출흐름도 TPM 애플리케이션은애플리케이션클라이언트가애플리케이션서버에서제공하는서비스를요청하는 client/server 구조로되어있다. 서비스란논리적인일의단위로써, ALTIBASE HDB 를 RM 으로사용하는경우에는 SQL 구문의집합으로구성된다고볼수있다. 예제 다음예제들은애플리케이션서버가 TPM 시스템에이미로그온 되었다고가정한예제이다. 애플리케이션서버에서트랜잭션시작하기 76 API User s Manual

77 애플리케이션서버에의해서트랜잭션이시작되는예제이다. Client: tpm_service( SERVICE1 ); Server: SERVICE1() <get service specific data> tx_begin(); EXEC SQL UPDATE...; tpm_service( SERVICE2 ); tx_commit(); <return service status back to the client> 애플리케이션클라이언트에서트랜잭션시작하기 애플리케이션클라이언트에의해서트랜잭션이시작되는예제이다. Client: tx_begin(); tpm_service( SERVICE1 ); tmp_service( SERVICE2 ); tx_commit(); Server: SERVICE1() <get service specific data> EXEC SQL UPDATE...; <return service status back to the client> SERVICE2() <get service specific data> EXEC SQL UPDATE...; <return service status back to the client> 기존애플리케이션을 TPM 애플리케이션으로변경 기존에작성되어있던애플리케이션 (Precompiler 또는 ODBCCLI) 을 ALTIBASE HDB XA 라이브러리를이용한 TPM (Transaction Performance Monitoring) 애플리케이션으로변경하기위해서는다음의절차를따라야한다. 1. 애플리케이션을 서비스 라는프레임워크 (framework) 구조로전환한다. 여기서프레임워크란애플리케이션클라이언트가애플리케이션서버에게 서비스 를요청하는구조를의미한다. 어떤 TPM 은 tx_open, tx_close 함수를사용할것을요구하고, 어떤 TPM 은묵시적으로 logon, logoff 를하기도한다. 2. 일반적인 connect 구문을 TPM 호환성이있는형태로 XA Interface 77

78 변경한다. 예를들어, Embedded SQL 프로그램의경우에는 EXEC SQL CONNECT 구문을 tx_open() 으로변경하고, ODBCCLI 에서는 SQLDriverConnect 구문을 tx_open 과 SQLConnect 로변경한다. 실제연결은 tx_open 으로연결되었으나, ODBC 내부에서 XA 연결과맺어주는 SQLConnect 과정을생략하면 DML 연산을수행할수없다. 자세한설명은 ODBC/XA 수행순서를참조한다. 3. 일반적인 disconnect 구문을 TPM 호환성이있는형태로변경한다. Embedded SQL 프로그램의 EXEC SQL DISCONNECT 또는 ODBCCLI 의 SQLDisconnect 구문을 tx_close() 로변경한다. 4. Commit, rollback 구문을 TPM 호환성이있는형태로변경한다. 예를들어 EXEC SQL COMMIT/ROLLBACK (Embedded SQL 프로그램 ), SQLEndTran(ODBCCLI) 을 tx_commit/tx_rollback 으로변경하고, tx_begin() 을호출하여트랜잭션을시작하도록한다. 5. 애플리케이션은트랜잭션을종료 (end) 하기전에 fetch 상태를리셋해야한다. 커서를사용해서 fetch 를했으면트랜잭션을종료하기전에 CLOSE RELEASE 를사용해서커서를닫고자원을해제해야한다. ALTIBASE HDB 구문 CONNECT 암묵적인트랜잭션시작 SQL COMMIT ROLLBACK DISCONNECT SET TRANSACTION READ ONLY TPM 함수 tx_open tx_begin SERVICE에서 SQL구문수행 tx_commit tx_rollback tx_close 허용하지않음 78 API User s Manual

79 XA 사용시제약사항 XA 를사용할때다음과같은몇가지제약사항이존재한다. SQL 사용시제약사항 트랜잭션브랜치관련제약사항 연계이주비지원 비동기호출비지원 동적등록비지원 서버종료 SQL 사용시제약사항 롤백과커밋 TM 이글로벌트랜잭션을관리하기때문에 XA 애플리케이션에서는 COMMIT 또는 ROLLBACK 구문같은트랜잭션제어구문을사용해서글로벌트랜잭션을제어해서는안된다. 글로벌트랜잭션을종료하기위해서는 tx_commit 이나 tx_rollback 을사용해야한다. Precompiler 애플리케이션에서 EXEC SQL ROLLBACK 이나 EXEC SQL COMMIT 구문을사용할수없다. ODBCCLI 애플리케이션에서도 SQLEndTran 을사용해서커밋이나롤백을수행하면안된다. DDL 구문 AUTOCOMMIT 세션프로퍼티 DDL SQL 구문은 ALTIBASE HDB 서버내부적으로커밋을하기 때문에 ALTIBASE HDB XA 애플리케이션에서사용할수없다. 글로벌트랜잭션은 non-autocommit 모드에서수행되기때문에, ALTER SESSION SET AUTOCOMMIT = TRUE 구문을사용하여 AUTOCOMMIT 프로퍼티를변경할수없다. SET TRANSACTION XA 애플리케이션에서 SET TRANSACTION READ ONLY READ WRITE ISOLATION LEVEL... 구문을사용하면안된다. XA Interface 79

80 EXEC SQL 구문으로연결또는해제 Embedded SQL 프로그램에서연결또는연결해제를위해서 EXEC SQL CONNECT, EXEC SQL DISCONNECT 구문을 사용해서는안된다. 트랜잭션브랜치관련제약사항 하나의글로벌트랜잭션에는다수의애플리케이션쓰레드들이참여하는데, 이들쓰레드는서로 tightly-coupled 또는 looselycoupled 관계일수있다. Tightly-coupled 관계는자원을공유하는쓰레드의관계이다. 이들쓰레드들은하나의개체로처리된다. Tightly-coupled 쓰레드에서 RM 은트랜잭션브랜치가자원의데드락이발생하지않도록해야한다. 그러나 Loosely-coupled 관계에서는이런보장을하지않는다. RM 에서는 loosely-coupled 관계의트랜잭션브랜치를서로다른글로벌트랜잭션처럼다룬다. XID 와쓰레드의관계 TM 이 XID 의 branch qualifier 를새로운값으로생성하여 RM 에전달한다면, 이쓰레드는같은브랜치안의다른쓰레드들과 loosely-coupled 관계가된다. RM 은이쓰레드를별도의글로벌트랜잭션처럼처리한다. 그리고만약 TM 이 XID 의 branch qualifier 를재사용한다면, 이쓰레드는해당브랜치를공유하는다른쓰레드들과 tightly-coupled 한관계가된다. RM 은이러한 tightly-coupled 쓰레드들을하나의개체처럼다뤄야하고, 이들 tightly-coupled 쓰레드간에자원데드락이발생하지않도록보장해야한다. 연계이주비지원 ALTIBASE HDB 는연계이주 (Association Migration, TM 이 suspended 브랜치를다른브랜치에서연계하여다시시작하는것 ) 를지원하지않는다. 80 API User s Manual

81 비동기호출비지원 ALTIBASE HDB 는비동기 XA 호출을지원하지않는다. 동적인등록비지원 ALTIBASE HDB 서버는동적등록을지원하지않고, 정적등록만지원한다. 동적등록 (Dynamic Registration) 이란 RM 이글로벌트랜잭션을시작하기전에자신이 TM 에등록하는것을말한다. 정적등록에서는 TM 이 xa_start 를꼭호출하여트랜잭션시작을 RM 에알려야한다. 서버종료 Shutdown abort 를사용한 ALTIBASE HDB 종료또는비정상종료시 prepared 트랜잭션이존재하였다면, 종료후서버재구동시이들트랜잭션이 recovery 과정을거치게되므로구동후에 xa_recover 를통해서이들트랜잭션을처리할수있다. Shutdown immediate 또는 shutdown normal 로서버를종료할때 prepared 트랜잭션이존재하면, 정상종료를명령했더라도 ALTIBASE HDB 는 abort 로종료시킬때와같은방식으로서버를종료한다. 따라서재구동시 recovery 과정을거쳐이들트랜잭션이그대로유지되며 xa_recover 를통해서이들트랜잭션을처리할수있다. 그러나 prepared 트랜잭션이존재하지않을경우에는정상종료하며, 다음구동시 recovery 과정을거치지않게된다. XA Interface 81

82 JDBC 분산트랜잭션 분산트랜잭션을구현한 ALTIBASE HDB JDBC 는 JDBC 2.0 extension API 에서 Connection Pooling 기능과분산트랜잭션을위한 Open XA 표준을준수한다. XA 표준에부합하는분산트랜잭션기능을구현한모든클래스는 ALTIBASE HDB JDBC 드라이버패키지에기본으로포함되어제공된다. JTA(Java Transaction API) 와애플리케이션서버 분산트랜잭션에서애플리케이션이애플리케이션서버를통해서 트랜잭션을수행하는과정을그림과같이설명한다. Application Application Server Transaction Manager Resource Adapter [ 그림 5-3] 분산트랜잭션과정 애플리케이션서버는각각의자원들과연결될수있는 XAConnection 을지원한다. 애플리케이션은애플리케이션서버에접속해서 Connection 을얻어쿼리를수행한다. 그리고애플리케이션서버는 TM (Transaction Manager) 을통해트랜잭션을관리한다. 이때 TM 은 DBMS 벤더에서제공하는 Resource Adapter 를이용해서자원에접근할수있다. Resource 가 DBMS 일경우, Resource Adapter 는 JDBC 드라이버패키지가될수있다. Resource Adapter 는 ResourceFactory, Transactional Resource(XAConnection), Connection, XAResource 등 4 가지종류의클래스로구성된다. ResourceFactory 는 XAConnection 을생성하며, JDBC 스펙에서 XADataSource 가여기에해당한다. 애플리케이션서버는 XADataSource 에서가져온 XAConnection(DBMS 로연결 ) 을얻는다. 그리고 XAConnection 은애플리케이션에서사용할 connection(java.sql.connection) 인스턴스와 TM 에서사용할 XAResource 인스턴스를얻어온다. 82 API User s Manual

83 XA 컴포넌트 XADataSource Interface JDBC 2.0 Optional 패키지의표준 XA 인터페이스들과이를 구현한 ALTIBASE 클래스를설명한다. javax.sql.xadatasource 는 XA Connection 의 factory 기능을 갖는인터페이스이다. 이인터페이스의 getxaconnection 메소드가 XA Connection 인스턴스를반환한다. public interface XADataSource XAConnection getxaconnection() throws SQLException; XAConnection getxaconnection(string user, String password) throws SQLException;... Altibase.jdbc.driver.ABXADataSource 는 ALTIBASE HDB 에서제공한 JDBC 드라이버에존재하는 XADataSource 인터페이스를구현한클래스이다. 동시에 Altibase.jdbc.driver.ABConnectionPoolDataSource 를상속한클래스이다. ABConnectionPoolDataSource 클래스는 Altibase.jdbc.driver.DataSource 를상속한다. 따라서, ABXADataSource 클래스는 DataSource 와 ABConnectionPoolDataSource 의 connection properties 를모두포함한다. DataSource <Interface> XADataSource ABConnectionPoolDataSource ABXADataSource [ 그림 5-4] ABXADataSource 클래스 ABXADataSource 클래스의 getxaconnection 메소드는 XAConnection 타입의인스턴스를반환한다. 이인스턴스는실제로 ABPooledConnection 클래스의인스턴스로서 XA Interface 83

84 ABPooledConnection 클래스는 XAConnection 인터페이스를구현하고있다. XA data source 는 Java Naming Directory 와 Interface(JNDI) 에등록및사용할수있다. XAConnection Interface XAConnection 인터페이스는 PooledConnection 인터페이스의 하위인터페이스이다. getconnection, close, addconnectioneventlistener, removeconnectioneventlistener 메소드를포함한다. public interface XAConnection extends PooledConnection javax.jta.xa.xaresource getxaresource() throws SQLException; XAConnection 의인스턴스는데이타베이스와물리적으로연결하고있다. 또한 XAConnection 인스턴스를통해분산트랜잭션을관리하는데사용되는 XAResource 를얻을수있다. ALTIBASE HDB JDBC driver 에서는 Altibase.jdbc.driver.ABPooledConnection 클래스의인스턴스가실질적인 XAConnection 타입의인스턴스가된다. ABPooledConnection 클래스의 getxaresource 메소드는 ABXAResource 인스턴스를반환하고, getconnection 메소드는 ABConnection 인스턴스를반환한다. <Interface> PooledConnection <Interface> XAConnection ABPooled Connection [ 그림 5-5] ABPooledConnection 클래스 84 API User s Manual

85 getconnection 메소드를통해반환되는 ABConnection 인스턴스는데이타베이스와의물리적인연결에대한임시핸들이고, 이 Connection 은글로벌트랜잭션에참여되기까지는일반적인 Connection 처럼동작한다. 글로벌트랜잭션에참여되는순간에 auto-commit 상태는 false 가되며, 글로벌트랜잭션이끝난후에 auto-commit 상태는글로벌트랜잭션이시작되기이전상태로돌아간다. XAConnection 의 getconnection 메소드가호출될때마다새로운 Connection 인스턴스를반환하는데, 동일한 XAConnection 인스턴스에의해반환되어이전에존재하던 Connection 인스턴스는 close 된다. 그럼에도불구하고, 새로운 Connection 이오픈되기전에이전의 Connection 은명시적으로 close 하기를권장한다. XAConnection 인스턴스의 close 메소드가호출되면데이타베이스로의물리적인연결이끊어진다. XAResource Interface TM 은모든트랜잭션브랜치들을조정하기위해서 ABXAResource 인스턴스를사용한다. Altibse.jdbc.driver.ABXAResource 타입의인스턴스는 javax.transaction.xa.xaresource 인터페이스를구현하는클래스의인스턴스이다. <Interface> javax.transaction.xa.xaresource ABXAResource [ 그림 5-6] ABXAResource 클래스 Altibase JDBC driver 는 ABPooledConnection 클래스의 getxaresource 메소드를호출할때마다 ABXAResource 인스턴스를생성하여반환하고, Altibase JDBC driver ABXAResource 인스턴스와 connection 인스턴스를연결시킨다. 트랜잭션브랜치는이 connection 으로동작한다. ABXAResource 클래스는분산된트랜잭션의트랜잭션브랜치를조정하기위해몇개의메소드를갖고있다. XA Interface 85

86 TM 은애플리케이션서버와같은중간층의컴포넌트로부터 ABXAResource 인스턴스를받으며, 아래의메소드를갖고있다. void start(xid xid, int flags) void end(xid xid, int flags) int prepare(xid xid) void commit(xid xid, boolean onephase) void rollback(xid xid) public void forget(xid xid) public Xid[] recover(int flag) 자세한내용은 java API Spec. 의 javax.transaction.xa.xaresource 를참조하기바란다. Xid interface TM 은트랜잭션 ID 인스턴스를생성하고, 분산트랜잭션의브랜치를관리하는데이를사용한다. 각각의트랜잭션브랜치는유일한트랜잭션 ID 를부여받으며, 다음의정보를포함한다. Format identifier Global transaction identifier Branch qualifier Altibase 는 javax.transaction.xa.xid 인터페이스를구현한클래스가 Altibase.jdbc.driver 패키지에 XID 클래스로존재한다. Note: ABXAResource 호출에는 Altibase.jdbc.driver.XID 를반드시사용할필요는없다. 여기에는 javax.transaction.xa.xid 인터페이스를구현한어떤클래스도사용될수있다. 에러처리 XA 관련메소드는에러가발생할때, ABXAException 을 throw 한다. ABXAException 클래스는 javax.transaction.xa.xaexception 클래스의하위클래스이다. 애플리케이션서버에서 XA 설정 WebLogic 에서 XA 설정 1. 웹로직콘솔에서 Services -> JDBC -> Connection Pools 에서 Configure a new JDBC Connection Pool 을선택한후 JDBC 연결정보를입력한다. ([ 그림 6-6]JDBC 연결정보입력참조 ) 86 API User s Manual

87 구분 NON-XA XA URL jdbc:altibase://[ip]:[port]/dbnam e jdbc:altibase://[ip]:[port]/dbnam e Driver Classname Altibase.jdbc.driver.AltibaseDriv er Altibase.jdbc.driver.ABXADataS ource Properties User=[username] User=[username] [ 표 5-4] NON-XA와 XA의연결정보비교 [ 그림 5-7] JDBC 연결정보입력 2. 생성된 Connection Pool 을이용해서 DataSource 를만든다. Services->JDBC->Data Sources 에서 Configure a new JDBC Data Source 를선택한다. Name 과 JNDI Name 을입력하고 Honor Global Transactions 에체크한다. 다음페이지에서 PoolName 에앞서만든 Pool 의이름을입력한다. (weblogic 8.1) ([ 그림 6-7] 데이타소스생성참조 ) Note: weblogic8.1 이전버전에서는 Services->JDBC->XA Data Sources 에서새로운 DataSource 를생성한다. XA Interface 87

88 [ 그림 5-8] 데이타소스생성 Weblogic 애플리케이션예제 JEUS 에서 XA 설정 // step 1. JNDI Lookup and get UserTransaction Object Context ctx = null; Hashtable env = new Hashtable(); // Parameter for weblogic env.put(context.initial_context_factory, "weblogic.jndi.wlinitialcontextfactory"); env.put(context.provider_url,"t3://localhost:7001"); env.put(context.security_principal,"weblogic"); env.put(context.security_credentials,"weblogic"); ctx = new InitialContext(env); System.out.println("Context Created :"+ctx); // step 2. get User Transaction Object UserTransaction tx = (UserTransaction)ctx.lookup("javax.transaction.UserTransa ction"); // step 3 start Transaction System.out.println("Start Transaction :"+tx); tx.begin(); try // step 4. doing query // step 4-1. get Datasource DataSource xads1 = (DataSource)ctx.lookup("altiTXDS"); 제우스에서 JDBC 데이타소스를생성하기위한기본설정을한다. 88 API User s Manual

Altibase API Manual

Altibase API Manual ALTIBASE HDB Application Development Application Program Interface User s Manual Release 6.3.1 (April 16, 2015) ----------------------------------------------------------- ALTIBASE Application Development

More information

ALTIBASE 사용자가이드 Templete

ALTIBASE 사용자가이드 Templete Real Alternative DBMS ALTIBASE, Since 1999 WINDOWS ADO.NET 환경의 ALTIBASE 개발가이드 2010. 09 Copyright c 2000~2013 ALTBASE Corporation. All Rights Reserved. Document Control Change Record Date Author Change

More information

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,

More information

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE ALTIBASE HDB 6.3.1.10.1 Patch Notes 목차 BUG-45710 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG-45730 ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG-45760 ROLLUP/CUBE 절을포함하는질의는 SUBQUERY REMOVAL 변환을수행하지않도록수정합니다....

More information

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate ALTIBASE HDB 6.1.1.5.6 Patch Notes 목차 BUG-39240 offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG-41443 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate 한뒤, hash partition

More information

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 ALTIBASE HDB 6.5.1.5.10 Patch Notes 목차 BUG-46183 DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG-46249 [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 BUG-46266 [sm]

More information

Windows 8에서 BioStar 1 설치하기

Windows 8에서 BioStar 1 설치하기 / 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar

More information

untitled

untitled PowerBuilder 連 Microsoft SQL Server database PB10.0 PB9.0 若 Microsoft SQL Server 料 database Profile MSS 料 (Microsoft SQL Server database interface) 行了 PB10.0 了 Sybase 不 Microsoft 料 了 SQL Server 料 PB10.0

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

강의 개요

강의 개요 DDL TABLE 을만들자 웹데이터베이스 TABLE 자료가저장되는공간 문자자료의경우 DB 생성시지정한 Character Set 대로저장 Table 생성시 Table 의구조를결정짓는열속성지정 열 (Clumn, Attribute) 은이름과자료형을갖는다. 자료형 : http://dev.mysql.cm/dc/refman/5.1/en/data-types.html TABLE

More information

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밊 Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.

More information

Altibase Starting User's Manual

Altibase Starting User's Manual ALTIBASE HDB Tools & Utilities Altibase Hadoop Connector User's Manual Release 6 (April 17, 2015) ----------------------------------------------------------- ALTIBASE Tools & Utilities Altibase Hadoop

More information

ALTIBASE 사용자가이드 Templete

ALTIBASE 사용자가이드 Templete Real Alternative DBMS ALTIBASE, Since 1999 WINDOWS 환경의 ALTIBASE ODBC 개발가이드 2010. 09 Copyright c 2000~2013 ALTBASE Corporation. All Rights Reserved. Document Control Change Record Date Author Change Reference

More information

DBMS & SQL Server Installation Database Laboratory

DBMS & SQL Server Installation Database Laboratory DBMS & 조교 _ 최윤영 } 데이터베이스연구실 (1314 호 ) } 문의사항은 cyy@hallym.ac.kr } 과제제출은 dbcyy1@gmail.com } 수업공지사항및자료는모두홈페이지에서확인 } dblab.hallym.ac.kr } 홈페이지 ID: 학번 } 홈페이지 PW:s123 2 차례 } } 설치전점검사항 } 설치단계별설명 3 Hallym Univ.

More information

FileMaker 15 ODBC 및 JDBC 설명서

FileMaker 15 ODBC 및 JDBC 설명서 FileMaker 15 ODBC JDBC 2004-2016 FileMaker, Inc.. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker FileMaker Go FileMaker, Inc.. FileMaker WebDirect FileMaker, Inc... FileMaker.

More information

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O Orange for ORACLE V4.0 Installation Guide ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE...1 1....2 1.1...2 1.2...2 1.2.1...2 1.2.2 (Online Upgrade)...11 1.3 ORANGE CONFIGURATION ADMIN...12 1.3.1 Orange Configuration

More information

13주-14주proc.PDF

13주-14주proc.PDF 12 : Pro*C/C++ 1 2 Embeded SQL 3 PRO *C 31 C/C++ PRO *C NOT! NOT AND && AND OR OR EQUAL == = SQL,,, Embeded SQL SQL 32 Pro*C C SQL Pro*C C, C Pro*C, C C 321, C char : char[n] : n int, short, long : float

More information

Altibase Stored Procedure Manual

Altibase Stored Procedure Manual ALTIBASE HDB Application Development C/C++ External Procedures Manual Release 6.3.1 (April 16, 2015) ----------------------------------------------------------- ALTIBASE Application Development C/C++ External

More information

10.ppt

10.ppt : SQL. SQL Plus. JDBC. SQL >> SQL create table : CREATE TABLE ( ( ), ( ),.. ) SQL >> SQL create table : id username dept birth email id username dept birth email CREATE TABLE member ( id NUMBER NOT NULL

More information

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Boot/JDBC JdbcTemplate/CRUD 예제 Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.

More information

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET 135-080 679-4 13 02-3430-1200 1 2 11 2 12 2 2 8 21 Connection 8 22 UniSQLConnection 8 23 8 24 / / 9 3 UniSQL 11 31 OID 11 311 11 312 14 313 16 314 17 32 SET 19 321 20 322 23 323 24 33 GLO 26 331 GLO 26

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

ALTIBASE HDB Patch Notes

ALTIBASE HDB Patch Notes ALTIBASE HDB 6.5.1.5.6 Patch Notes 목차 BUG-45643 암호화컬럼의경우, 이중화환경에서 DDL 수행시 Replication HandShake 가실패하는문제가있어수정하였습니다... 4 BUG-45652 이중화에서 Active Server 와 Standby Server 의 List Partition 테이블의범위조건이다른경우에 Handshake

More information

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자 SQL Developer Connect to TimesTen 유니원아이앤씨 DB 팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 2010-07-28 작성자 김학준 최종수정일 2010-07-28 문서번호 20100728_01_khj 재개정이력 일자내용수정인버전

More information

Microsoft PowerPoint - 10Àå.ppt

Microsoft PowerPoint - 10Àå.ppt 10 장. DB 서버구축및운영 DBMS 의개념과용어를익힌다. 간단한 SQL 문법을학습한다. MySQL 서버를설치 / 운영한다. 관련용어 데이터 : 자료 테이블 : 데이터를표형식으로표현 레코드 : 테이블의행 필드또는컬럼 : 테이블의열 필드명 : 각필드의이름 데이터타입 : 각필드에입력할값의형식 학번이름주소연락처 관련용어 DB : 테이블의집합 DBMS : DB 들을관리하는소프트웨어

More information

윈도우시스템프로그래밍

윈도우시스템프로그래밍 데이터베이스및설계 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2012.05.10. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생

More information

FileMaker ODBC 및 JDBC 가이드

FileMaker ODBC 및 JDBC 가이드 FileMaker ODBC JDBC 2004-2019 FileMaker, Inc.. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker, FileMaker Cloud, FileMaker Go FileMaker, Inc.. FileMaker WebDirect FileMaker,

More information

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다. Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:

More information

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

@OneToOne(cascade = = addr_id) private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a 1 대 1 단방향, 주테이블에외래키실습 http://ojcedu.com, http://ojc.asia STS -> Spring Stater Project name : onetoone-1 SQL : JPA, MySQL 선택 http://ojc.asia/bbs/board.php?bo_table=lecspring&wr_id=524 ( 마리아 DB 설치는위 URL

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

Altibase Installation Manual

Altibase Installation Manual ALTIBASE HDB Application Development Windows ODBC Driver Installer User s Guide Release 6.3.1 (April 17, 2015) ----------------------------------------------------------- ALTIBASE Application Development

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse

More information

JDBC 소개및설치 Database Laboratory

JDBC 소개및설치 Database Laboratory JDBC 소개및설치 JDBC } What is the JDBC? } JAVA Database Connectivity 의약어 } 자바프로그램안에서 SQL 을실행하기위해데이터베이스를연결해주는응용프로그램인터페이스 } 연결된데이터베이스의종류와상관없이동일한방법으로자바가데이터베이스내에서발생하는트랜잭션을제어할수있도록하는환경을제공 2 JDBC Driver Manager }

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

untitled

untitled (shared) (integrated) (stored) (operational) (data) : (DBMS) :, (database) :DBMS File & Database - : - : ( : ) - : - : - :, - DB - - -DBMScatalog meta-data -DBMS -DBMS - -DBMS concurrency control E-R,

More information

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론 이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론 2. 관련연구 2.1 MQTT 프로토콜 Fig. 1. Topic-based Publish/Subscribe Communication Model. Table 1. Delivery and Guarantee by MQTT QoS Level 2.1 MQTT-SN 프로토콜 Fig. 2. MQTT-SN

More information

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins Project 1-3: Implementing DML Due: 2015/11/11 (Wed), 11:59 PM 이번프로젝트의목표는프로젝트 1-1 및프로젝트 1-2에서구현한프로그램에기능을추가하여간단한 DML을처리할수있도록하는것이다. 구현한프로그램은 3개의 DML 구문 (insert, delete, select) 을처리할수있어야한다. 테이블데이터는파일에저장되어프로그램이종료되어도사라지지않아야한다.

More information

슬라이드 제목 없음

슬라이드 제목 없음 MS SQL Server 마이크로소프트사가윈도우운영체제를기반으로개발한관계 DBMS 모바일장치에서엔터프라이즈데이터시스템에이르는다양한플랫폼에서운영되는통합데이터관리및분석솔루션 2 MS SQL Server 개요 3.1 MS SQL Server 개요 클라이언트-서버모델을기반으로하는관계 DBMS 로서윈도우계열의운영체제에서만동작함 오라클관계 DBMS 보다가격이매우저렴한편이고,

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드] - Socket Programming in Java - 목차 소켓소개 자바에서의 TCP 프로그램작성방법 주요클래스와메소드 HTTP 프로토콜을이용한예제 에코프로그램 Q/A 에코프로그램 - EchoServer 에코프로그램 - EchoClient TCP Programming 1 소켓소개 IP, Port, and Socket 포트 (Port): 전송계층에서통신을수행하는응용프로그램을찾기위한주소

More information

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D> 리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1

More information

슬라이드 1

슬라이드 1 Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치

More information

Microsoft Word - src.doc

Microsoft Word - src.doc IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...

More information

Microsoft PowerPoint - 03-TCP Programming.ppt

Microsoft PowerPoint - 03-TCP Programming.ppt Chapter 3. - Socket in Java - 목차 소켓소개 자바에서의 프로그램작성방법 주요클래스와메소드 HTTP 프로토콜을이용한예제 에코프로그램 에코프로그램 - EchoServer 에코프로그램 - EchoClient Q/A 1 1 소켓소개 IP,, and Socket 포트 (): 전송계층에서통신을수행하는응용프로그램을찾기위한주소 소켓 (Socket):

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

슬라이드 1

슬라이드 1 Tadpole for DB 1. 도구개요 2. 설치및실행 4. 활용예제 1. 도구개요 도구명 소개 Tadpole for DB Tools (sites.google.com/site/tadpolefordb/) 웹기반의데이터베이스를관리하는도구 Database 스키마및데이터관리 라이선스 LGPL (Lesser General Public License) 특징 주요기능

More information

JUNIT 실습및발표

JUNIT 실습및발표 JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

MVVM 패턴의 이해

MVVM 패턴의 이해 Seo Hero 요약 joshua227.tistory. 2014 년 5 월 13 일 이문서는 WPF 어플리케이션개발에필요한 MVVM 패턴에대한내용을담고있다. 1. Model-View-ViewModel 1.1 기본개념 MVVM 모델은 MVC(Model-View-Contorl) 패턴에서출발했다. MVC 패턴은전체 project 를 model, view 로나누어

More information

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 2012.11.23 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Document Distribution Copy Number Name(Role, Title) Date

More information

윈도우시스템프로그래밍

윈도우시스템프로그래밍 데이타베이스 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2013.05.15. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생

More information

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 ) 8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 ) - DDL(Data Definition Language) : show, create, drop

More information

Cloud Friendly System Architecture

Cloud Friendly System Architecture -Service Clients Administrator 1. -Service 구성도 : ( 좌측참고 ) LB(LoadBlancer) 2. -Service 개요 ucloud Virtual Router F/W Monitoring 개념 특징 적용가능분야 Server, WAS, DB 로구성되어 web service 를클라우드환경에서제공하기위한 service architecture

More information

게시판 스팸 실시간 차단 시스템

게시판 스팸 실시간 차단 시스템 오픈 API 2014. 11-1 - 목 차 1. 스팸지수측정요청프로토콜 3 1.1 스팸지수측정요청프로토콜개요 3 1.2 스팸지수측정요청방법 3 2. 게시판스팸차단도구오픈 API 활용 5 2.1 PHP 5 2.1.1 차단도구오픈 API 적용방법 5 2.1.2 차단도구오픈 API 스팸지수측정요청 5 2.1.3 차단도구오픈 API 스팸지수측정결과값 5 2.2 JSP

More information

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation 1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation Board(EVB B/D) 들과 TCP/IP Protocol로연결되며, 연결된 TCP/IP

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

문서 템플릿

문서 템플릿 HDSI 툴분석 [sql injection 기술명세서 ] Sql injection 기술명세서 Ver. 0.01 이문서는 sql injection 기술명세가범위입니다. Copyrights Copyright 2009 by CanvasTeam@SpeeDroot( 장경칩 ) All Rights Reserved. 장경칩의사전승인없이본내용의전부또는일부에대한복사, 전재,

More information

슬라이드 1

슬라이드 1 UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)

More information

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아 LG U+ SMS/MMS 통합클라이언트 LG U+ SMS/MMS Client Simple Install Manual LG U+ SMS/MMS 통합클라이언트 - 1 - 간단설치매뉴얼 1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml

More information

API 매뉴얼

API 매뉴얼 PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned

More information

Chap7.PDF

Chap7.PDF Chapter 7 The SUN Intranet Data Warehouse: Architecture and Tools All rights reserved 1 Intranet Data Warehouse : Distributed Networking Computing Peer-to-peer Peer-to-peer:,. C/S Microsoft ActiveX DCOM(Distributed

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

단계

단계 본문서에서는 Tibero RDBMS 에서제공하는 Oracle DB Link 를위한 gateway 설치및설정방법과 Oracle DB Link 사용법을소개한다. Contents 1. TIBERO TO ORACLE DB LINK 개요... 3 1.1. GATEWAY 란... 3 1.2. ORACLE GATEWAY... 3 1.3. GATEWAY 디렉터리구조...

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

JAVA PROGRAMMING 실습 09. 예외처리

JAVA PROGRAMMING 실습 09. 예외처리 2015 학년도 2 학기 예외? 프로그램실행중에발생하는예기치않은사건 예외가발생하는경우 정수를 0으로나누는경우 배열의크기보다큰인덱스로배열의원소를접근하는경우 파일의마지막부분에서데이터를읽으려고하는경우 예외처리 프로그램에문제를발생시키지않고프로그램을실행할수있게적절한조치를취하는것 자바는예외처리기를이용하여예외처리를할수있는기법제공 자바는예외를객체로취급!! 나뉨수를입력하시오

More information

untitled

untitled Push... 2 Push... 4 Push... 5 Push... 13 Push... 15 1 FORCS Co., LTD A Leader of Enterprise e-business Solution Push (Daemon ), Push Push Observer. Push., Observer. Session. Thread Thread. Observer ID.

More information

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10 (https://www.kisarbl.or.kr) < 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10 Ⅰ. 개요 실시간스팸차단리스트 (RBL) 는메일서버를운영하는누구나손쉽게효과적으로스팸수신을차단하는데이용할수있도록한국인터넷진흥원 (KISA)

More information

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터 Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터를사용자에게전송하게되며 Parsing 단계에서실행계획이생성된다. Bind 변수를사용하는 SQL

More information

Microsoft PowerPoint - 3장-MS SQL Server.ppt [호환 모드]

Microsoft PowerPoint - 3장-MS SQL Server.ppt [호환 모드] MS SQL Server 마이크로소프트사가윈도우운영체제를기반으로개발한관계 DBMS 모바일장치에서엔터프라이즈데이터시스템에이르는다양한플랫폼에서운영되는통합데이터관리및분석솔루션 2 MS SQL Server 개요 3.1 MS SQL Server 개요 클라이언트-서버모델을기반으로하는관계 DBMS로서윈도우계열의운영체제에서만동작함 오라클관계 DBMS보다가격이매우저렴한편이고,

More information

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

로거 자료실

로거 자료실 redirection 매뉴얼 ( 개발자용 ) V1.5 Copyright 2002-2014 BizSpring Inc. All Rights Reserved. 본문서에대한저작권은 비즈스프링 에있습니다. - 1 - 목차 01 HTTP 표준 redirect 사용... 3 1.1 HTTP 표준 redirect 예시... 3 1.2 redirect 현상이여러번일어날경우예시...

More information

adfasdfasfdasfasfadf

adfasdfasfdasfasfadf C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.

More information

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id=entitymanagerfactory class=org.springframework.orm.jpa.localentitymanagerfactorybean p:persistenceunitname= JPA 와 Hibernate - 스프링의 JDBC 대신에 JPA를이용한 DB 데이터검색작업 - JPA(Java Persistence API) 는자바의 O/R 매핑에대한표준지침이며, 이지침에따라설계된소프트웨어를 O/R 매핑프레임워크 라고한다. - O/R 매핑 : 객체지향개념인자바와관계개념인 DB 테이블간에상호대응을시켜준다. 즉, 객체지향언어의인스턴스와관계데이터베이스의레코드를상호대응시킨다.

More information

MySQL-.. 1

MySQL-.. 1 MySQL- 기초 1 Jinseog Kim Dongguk University jinseog.kim@gmail.com 2017-08-25 Jinseog Kim Dongguk University jinseog.kim@gmail.com MySQL-기초 1 2017-08-25 1 / 18 SQL의 기초 SQL은 아래의 용도로 구성됨 데이터정의 언어(Data definition

More information

ISP and CodeVisionAVR C Compiler.hwp

ISP and CodeVisionAVR C Compiler.hwp USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler

More information

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 개발환경구조및설치순서 JDK 설치 Eclipse 설치 안드로이드 SDK 설치 ADT(Androd Development Tools) 설치 AVD(Android Virtual Device) 생성 Hello Android! 2 Eclipse (IDE) JDK Android SDK with

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 인터넷프로토콜 5 장 데이터송수신 (3) 1 파일전송메시지구성예제 ( 고정크기메시지 ) 전송방식 : 고정크기 ( 바이너리전송 ) 필요한전송정보 파일이름 ( 최대 255 자 => 255byte 의메모리공간필요 ) 파일크기 (4byte 의경우최대 4GB 크기의파일처리가능 ) 파일내용 ( 가변길이, 0~4GB 크기 ) 메시지구성 FileName (255bytes)

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

표준프레임워크 Nexus 및 CI 환경구축가이드 Version 3.8 Page 1

표준프레임워크 Nexus 및 CI 환경구축가이드 Version 3.8 Page 1 표준프레임워크 Nexus 및 CI 환경구축가이드 Version 3.8 Page 1 Index 1. 표준프레임워크 EGOVCI 팩키지설치... 3 1.1 개요... 3 1.2 EGOVCI 압축풀기... 3 1.3 EGOVCI 시스템구성... 3 1.4 CI 시스템구동 (START/STOP)... 4 2. NEXUS 설정정보... 6 2.1 NEXUS 서버구동

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

DE1-SoC Board

DE1-SoC Board 실습 1 개발환경 DE1-SoC Board Design Tools - Installation Download & Install Quartus Prime Lite Edition http://www.altera.com/ Quartus Prime (includes Nios II EDS) Nios II Embedded Design Suite (EDS) is automatically

More information

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E > 웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 소켓 (Socket) (1/2) Socket 이란? 서버와클라이언트가서로특정한규약을사용하여데이터를전송하기위한방식 서버와클라이언트는소켓연결을기다렸다가소켓이연결되면서로데이터를전송 현재네트워크상에서의모든통신의근간은 Socket 이라할수있음 Page 2 1 소켓 (Socket) (2/2)

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

C++ Programming

C++ Programming C++ Programming 연산자다중정의 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 연산자다중정의 C++ 스타일의문자열 2 연산자다중정의 연산자다중정의 단항연산자다중정의 이항연산자다중정의 cin, cout 그리고 endl C++ 스타일의문자열 3 연산자다중정의 연산자다중정의 (Operator

More information

Interstage5 SOAP서비스 설정 가이드

Interstage5 SOAP서비스 설정 가이드 Interstage 5 Application Server ( Solaris ) SOAP Service Internet Sample Test SOAP Server Application SOAP Client Application CORBA/SOAP Server Gateway CORBA/SOAP Gateway Client INTERSTAGE SOAP Service

More information

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 학습내용 1. Java Development Kit(JDK) 2. Java API 3. 자바프로그래밍개발도구 (Eclipse) 4. 자바프로그래밍기초 2 자바를사용하려면무엇이필요한가? 자바프로그래밍개발도구 JDK (Java Development Kit) 다운로드위치 : http://www.oracle.com/technetwork/java/javas

More information

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용

More information

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2.

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2. 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2. 3Rabbitz Book 애플리케이션파일다운로드하여압축파일을풀고복사합니다. 3. 3Rabbitz Book 실행합니다.

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F > 10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절

More information