Altibase Installation Manual
|
|
- 미영 묘
- 5 years ago
- Views:
Transcription
1 Altibase Application Development Database Link User s Manual Release 7.1 (August 28, 2018)
2 Altibase Application Development Database Link User s Manual Release 7.1 Copyright c 2001~2018 Altibase Corp. All Rights Reserved. 본문서의저작권은 알티베이스에있습니다. 이문서에대하여당사의동의없이무단으로복제또는전용할수없습니다. 알티베이스 서울시구로구디지털로 306 대륭포스트타워 Ⅱ 10 층전화 : 팩스 : 고객서비스포털 : homepage:
3 목차 서문... 5 이매뉴얼에대하여 데이터베이스링크소개 관련전문용어 데이터베이스링크정의 Altibase 데이터베이스링크구성요소 지원되는객체, SQL문및데이터타입 데이터베이스링크와 SQL문 접근가능한원격스키마객체 DB Link 지원데이터타입 데이터베이스링크환경설정 DB Link 동작방식 환경설정 데이터베이스링크사용법 CREATE DATABASE LINK DROP DATABASE LINK ALTER DATABASE LINKER ALTER SESSION SELECT REMOTE_EXECUTE_IMMEDIATE 바인딩지원 REMOTE 함수 일괄처리 (Batch) 지원 REMOTE 함수 COMMIT FORCE DATABASE LINK ROLLBACK FORCE DATABASE LINK A. 부록 : 프로퍼티및데이터딕셔너리 목차 3
4 DB Link 관련데이터딕셔너리 프로퍼티파일 AltiLinker 프로퍼티 찾아보기 Database Link User s Manual
5 서문 서문 5
6 이매뉴얼에대하여 이매뉴얼은데이터베이스링크 (Database Link) 의개념및사용 방법에대해서설명한다. 대상사용자 이매뉴얼은다음과같은 Altibase 사용자를대상으로작성되었다. 데이터베이스사용자 데이터베이스관리자 응용프로그램개발자 성능관리자 기술지원부이매뉴얼을읽고이해하기위해다음과같은배경지식이도움이될것이다. 컴퓨터, 운영체제및운영체제유틸리티운용에필요한기본지식 관계형데이터베이스사용경험또는데이터베이스개념에대한이해 컴퓨터프로그래밍과관련된경험또는지식 데이터베이스서버관리, 운영체제관리또는네트워크관리경험 분산환경에서의데이터의저장, 관리및처리와관련된지식 소프트웨어환경 이매뉴얼은데이터베이스서버로 Altibase 버전 7.1 을사용한다는가정하에작성되었다. 이전버전의경우해당버전과일치하는데이터베이스링크매뉴얼을참고하도록한다. 이매뉴얼의구성 이매뉴얼은다음과같이구성되어있다. 제 1 장데이터베이스링크소개이장에서는데이터베이스링크의개념과 Altibase 의 6 Database Link User s Manual
7 데이터베이스링크구성요소를설명한다. 제 2 장지원되는 SQL 문, 스키마객체및데이터타입이장은데이터베이스링크사용을위해 Altibase 가제공하는 SQL 구문과데이터베이스링크를통해서접근할수있는원격데이터베이스의스키마객체, 그리고데이터베이스링크와함께사용가능한데이터타입에대해설명한다. 제 3 장데이터베이스링크환경설정이장은 Altibase 의데이터베이스링크를사용하기위해필요한환경설정에대해설명한다. 제 4 장데이터베이스링크사용법이장에서는데이터베이스링크제어를위해제공되는 SQL 구문과 REMOTE 함수와함께데이터베이스링크를사용하는방법에대해상세히설명한다. A. 부록 : 데이터딕셔너리및프로퍼티이부록은데이터베이스링크와관련하여사용되는각종프로퍼티및데이터딕셔너리를기술한다. 문서화규칙 이절에서는이매뉴얼에서사용하는규칙에대해설명한다. 이규칙을이해하면이매뉴얼과설명서세트의다른매뉴얼에서정보를쉽게찾을수있다. 여기서설명하는규칙은다음과같다. 구문다이어그램 샘플코드규칙 구문다이어그램 이매뉴얼에서는다음구성요소로구축된다이어그램을사용하여, 명령문의구문을설명한다. 구성요소 예약어 의미명령문이시작한다. 완전한명령문이아닌구문요소는화살표로시작한다. 명령문이다음라인에계속된다. 완전한명령문이아닌구문요소는이기호로종료한다. 명령문이이전라인으로부터계속된다. 완전한명령문이아닌구문요소는이기호로시작한다. ; 명령문이종료한다. 서문 7
8 SELECT 필수항목 선택적항목 NOT ADD 선택사항이있는필수항목. 한항목만제공해야한다. DROP 선택사항이있는선택적항목. ASC DESC ASC 선택적항목. 여러항목이허용된다. 각반복앞부분에 콤마가와야한다. DESC, 샘플코드규칙 코드예제는 SQL, 저장프로시저, isql 또는다른명령라인 구문들을예를들어설명한다. 아래테이블은코드예제에서사용된인쇄규칙에대해설명한다. 규칙 의미 예제 [ ] 선택항목을표시 VARCHAR [(size)] [[FIXED ] VARIABLE] { } 필수항목표시. 반드시하나이상을선택해야되는표시 { ENABLE DISABLE COMPILE } 선택또는필수항목표시의인자구분표시. 그이전인자의반복표시. 예제코드들의생략되는것을. 표시 { ENABLE DISABLE COMPILE } [ ENABLE DISABLE COMPILE ] SQL> SELECT ename FROM employee; ENAME SWNO HJNO HSCHOI. 8 Database Link User s Manual
9 그밖에기호기울임꼴소문자대문자 위에서보여진기호이외에기호들구문요소에서사용자가지정해야하는변수, 특수한값을제공해야만하는위치표시자사용자가제공하는프로그램의요소들, 예를들어테이블이름, 칼럼이름, 파일이름등시스템에서제공하는요소들또는구문에나타나는키워드.. 20 rows selected. EXEC :p1 := 1; acc NUMBER(11,2); SELECT * FROM table_name; CONNECT userid/password; SELECT ename FROM employee; DESC SYSTEM_.SYS_INDICES_; 관련자료 자세한정보를위하여다음문서목록을참조하기바란다. Getting Started Guide Installation Guide Administrator s Manual Replication Manual General Reference SQL Reference Stored Procedures Manual isql User s Manual Error Message Reference 온라인매뉴얼 Altibase 고객서비스포털 ( 에서국문및 영문매뉴얼 (PDF, HTML) 을받을수있다. Altibase 는여러분의의견을환영합니다. 이매뉴얼에대한여러분의의견을보내주시기바랍니다. 사용자의 의견은다음버전의매뉴얼을작성하는데많은도움이됩니다. 서문 9
10 보내실때에는아래내용과함께고객서비스포털 ( 로보내주시기바랍니다. 사용중인매뉴얼의이름과버전 매뉴얼에대한의견 사용자의성함, 주소, 전화번호이외에도 Altibase 기술지원설명서의오류와누락된부분및기타기술적인문제들에대해서위주소로보내주시면정성껏처리하겠습니다. 또한, 기술적인부분과관련하여즉각적인도움이필요한경우에도고객서비스포털을통해서비스를요청하시기바랍니다. 여러분의의견에항상감사드립니다. 10 Database Link User s Manual
11 1. 데이터베이스링크소개 이장에서는데이터베이스링크의개념과 Altibase 의데이터베이스 링크구성요소를설명한다. 데이터베이스링크소개 11
12 관련전문용어 이절은 Altibase 데이터베이스링크를사용하기위해알아야하는용어를소개한다. Altibase 분산데이터베이스시스템 (Altibase Distributed Database System) Altibase 서버노드가최소한한개이상포함된두개이상의데이터베이스서버노드들로구성된시스템을말한다. 원격노드 (Remote Node) 데이터베이스링크로연결된대상서버또는시스템을의미한다. Altibase 서버혹은이기종의데이터베이스시스템을원격노드로사용할수있다. 이때데이터베이스링크로연결되는대상서버또는시스템이반드시물리적으로떨어져있는장비에존재해야할필요는없다. 즉, 하나의장비에로컬서버와대상데이터베이스서버가모두존재할경우에도대상데이터베이스서버를원격노드라고한다. 원격서버 (Remote Server) 원격노드와원격서버의의미를구분하여사용한다. 원격노드는데이터베이스링크로연결된대상데이터베이스서버만을의미하는데반해, 원격서버는데이터베이스링크연결과는상관없이논리적으로구분되는데이터베이스서버를일컫는다. 연결 (Link) 데이터베이스링크를통한서버간의연결을가리킨다. 링크객체 (Link Object) 대상데이터베이스서버에연결하기위해로컬데이터베이스에생성하는데이터베이스링크객체를말한다. 지역서버 (Local Server) 데이터베이스링크의주체가되는 Altibase 서버로써, 데이터베이스링크객체를생성하고사용한다. 링커프로세스 (Linker Process) 이기종 DBMS 들로구성된분산데이터베이스시스템을구축할경우에지역서버와원격서버간의통신을담당한다. 이프로세스는지역서버에서구동되며, AltiLinker 라고도표현한다. 링커세션 (Linker Session) Altibase 서버와 AltiLinker 프로세스간에생성되는 1:1 세션을의미한다. 링커세션은링커제어세션 (Linker Control Session) 과링커데이터세션 (Linker Data Session) 으로구분된다. 12 Database Link User s Manual
13 위치표시자 (Location Descriptor) SQL 구문에데이터베이스링크를표현하기위해사용되는기호이다. 객체명과데이터베이스링크이름사이에 기호로위치표시자를쓸수있다. 글로벌트랜잭션 (Global Transaction) 지역서버에서수행되는 SQL 구문과원격노드에서수행되는 SQL 구문으로구성되는트랜잭션이다. 로컬트랜잭션 (Local Transaction) 지역서버에서수행되고완료되는구문들로구성된트랜잭션을의미한다. 원격트랜잭션 (Remote Transaction) 원격노드에서데이터베이스링크로수행중인모든트랜잭션을의미한다. 글로벌커밋노드 (Global Commit Node) 글로벌트랜잭션을 commit 또는 rollback 하는노드이다. 주로사용자가데이터베이스링크를생성하여글로벌트랜잭션을시작하는노드이다. REMOTE 함수 Altibase 데이터베이스링크기능을수행하는 pass-through 스타일의저장함수혹은저장프로시저를의미한다. 원격구문 (Remote Statement) 데이터베이스링크를통해전달되어원격서버에서수행되는 SQL 구문을의미한다. 참여자 (Participant) 데이터베이스시스템간수행되는글로벌트랜잭션에서데이터베이스시스템을의미한다.. 데이터베이스링크소개 13
14 데이터베이스링크정의 이절은데이터베이스링크의개념과처리방식을소개하고, Altibase 분산데이터베이스시스템에대하여기술한다. 데이터베이스링크의개념 Altibase 의데이터베이스링크란각각독립적으로동작하는둘이상의데이터베이스서버가네트워크로연결되어있으며주어진권한내에서지역서버가원격서버에논리적으로관계가있는데이터를요청하고결과를받아오는기술요소이다. 독립적으로동작한다는것은각데이터베이스시스템이자신의데이터저장영역을갖고있으며, 사용자의요청을독립적으로처리할수있음을의미한다. 네트워크로연결된다는것은논리적으로구분된두시스템혹은서버가서로접근이가능하다는것을의미한다. 또한논리적으로관계가있다는것은개별노드에분산된데이터사이에상관관계가존재함을의미한다. 처리방식 Altibase 데이터베이스링크의처리방식을개략적으로설명하면다음과같다. 링크객체를생성한서버에질의를입력하면, 데이터베이스링크프로세스를거쳐원격서버에서필요한데이터를가져온후, 최종적인질의결과를사용자에게반환한다. 이과정에서최종사용자는논리적으로하나의서버가동작하는것으로인식하게된다. Altibase 데이터베이스링크는크게아래의네가지요소로구성되며, 아래그림에서짙은색으로표시되어있다. DK 모듈과 AltiLinker 프로세스는다음절에서상세히설명한다. DK 모듈 (DB-Link Module) AltiLinker: 자바로구현된링커프로세스 ADLP: Altibase 데이터베이스링크프로토콜 dblink.conf: 데이터베이스링크용프로퍼티파일 14 Database Link User s Manual
15 Altibase HDB Server Process AltiLinker Process Heterogeneous DBMSs DK Module ADLP JDBC Drivers... dblink.conf [ 그림 1-1] 데이터베이스링크처리방식 (Heterogeneous Link) Altibase 분산데이터베이스시스템개념 Altibase 분산데이터베이스시스템은논리적으로떨어져있는두개이상의데이터베이스서버들로구성되며, 최소한하나는 Altibase 서버이어야한다. 이때데이터베이스링크를생성하고사용하는데이터베이스는반드시 Altibase 이어야한다. 연결대상서버는 Altibase 서버일수도있고타사의이기종데이터베이스시스템일수도있다. 로컬서버의 Altibase 가데이터베이스링크로연결하는원격서버가동일한버전의 Altibase 서버인지아닌지에따라 Homogeneous Link 또는 Heterogeneous Link 로구분된다. 각각의링크는아래의메커니즘을갖는다. Heterogeneous Link Heterogeneous Link 는 Altibase 서버와이기종데이터베이스서버와의연결을의미한다. 원격서버의데이터베이스가 Altibase 이더라도지역서버의 Altibase 와버전이다르면 Heterogeneous Link 로연결된다. 동일한버전의 Altibase 서버간에도 Heterogeneous Link 가가능하다. Homogeneous Link Homogeneous Link 는동일한버전의프로토콜을사용하는 Altibase 서버간의연결을의미한다. Homogeneous Link 는링크프로세스 (AltiLinker) 를거치지않고서버간에직접연결한다. 따라서 Heterogeneous Link 에비해성능이좋으며, 특히원격노드에접근이빈번할수록성능격차가더커진다. 데이터베이스링크소개 15
16 Altibase 버전 이상은 Homogeneous Link 를지원하지않는다. 아래표는이문서에서사용하는간략한용어에대한정식명칭과그 의미를나타낸다. Notation Full Name Meaning DB-Link Altibase Database Link Altibase 데이터베이스링크 Heterogeneous- Link Homogeneous- Link Heterogeneous DBMS Heterogeneous Database Link Homogeneous Database Link Heterogeneous database management system Altibase 서버와이기종데이터베이스시스템간의데이터베이스링크동일한버전의 Altibase 서버간의데이터베이스링크이질적인데이터베이스관리시스템으로, 지역서버의 Altibase와버전이다른 Altibase 서버도포함 16 Database Link User s Manual
17 Altibase 데이터베이스링크구성요소 이절은 Altibase DB Link 를구성하는요소들중데이터베이스링크 모듈과 AltiLinker 프로세스에대해상세히설명한다. 데이터베이스링크모듈 데이터베이스링크모듈 ( 이하 DK 모듈로표기 ) 은 Altibase 서버내에서데이터베이스링크를구현한모듈이다. 이모듈은분산데이터베이스시스템환경에서원격서버와의연결을위한세션관리, 원격서버와의연결을의미하는데이터베이스링크객체들의관리, 데이터베이스링크를거쳐수행되는트랜잭션들의관리, 각종성능뷰에제공할정보관리, 원격질의의수행결과로얻은레코드집합관리등을수행한다. 각각에대해서아래의절에상세히설명한다. 링크객체관리 링커세션관리 성능뷰의정보관리 글로벌트랜잭션관리 분산트랜잭션복구 결과집합데이터관리링크객체관리 Altibase 에서링크객체는스키마객체에해당된다. 링크객체의생성과삭제는 SQL 문을사용해서가능하며, 각 SQL 문에대해서는 "4 장데이터베이스링크사용법 " 에서자세히설명한다. Altibase 는링크객체에대해아래의두가지권한을제공한다. 종류허용된사용자설명 PRIVATE Database Link PUBLIC Database Link 링크객체를생성한사용자와 SYS 사용자모든사용자 PRIVATE 링크객체는 SYS 사용자또는해당링크객체를생성한사용자만이사용하거나삭제할수있다. PUBLIC 링크객체는모든사용자가사용할수있다. 단, 삭제는 SYS 사용자또는해당객체를생성한사용자만이할수있다. 링커세션관리 Altibase DK 모듈은 AltiLinker 프로세스에연결하기위해링커 데이터베이스링크소개 17
18 세션을생성하고, 사용자세션이데이터베이스링크를참조할때마다이링커세션의연결상태를감시한다. 아래그림은클라이언트가데이터베이스링크를사용하는 SQL 구문을실행할때, 이를처리하기위해 DK 모듈및 AltiLinker 프로세스에생성되는세션들을나타낸다. DK Module AltiLinker Process Session Manager Linker Control Session Control Op. AltiLinker Session Linker Data Session List Linker Data Session Data Op. AltiLinker Session Linker Data Session Data Op. AltiLinker Session Remote Server Linker Data Session Data Op. AltiLinker Session Remote Server Linker Data Session Data Op. AltiLinker Session Remote Server [ 그림 1-2] DK 모듈과 AltiLinker 프로세스내의링커세션 성능뷰의정보관리 사용자는성능뷰를조회하여데이터베이스링크관련정보를확인할수있다. Altibase 가데이터베이스링크를위해관리하는성능뷰의정보는아래와같다. 데이터베이스링크객체정보데이터베이스에생성된데이터베이스링크객체에대한정보를의미하며, 이정보는 V$DBLINK_DATABASE_LINK_INFO 성능뷰로사용자에게제공된다. 링커세션정보 18 Database Link User s Manual
19 DK 모듈에서생성된링커세션에관련된정보를의미하며, 이정보는 V$DBLINK_LINKER_SESSION_INFO 성능뷰로사용자에게제공된다. 링커세션은링커제어세션과링커데이터세션으로구분된다. 링커제어세션은 AltiLinker 프로세스가종료되기전까지 Altibase 서버와 AltiLinker 프로세스사이에유일하게생성되어존재하고, 링커데이터세션은데이터베이스링크를사용하는사용자세션별로하나씩생성된다. 링커제어세션정보 : 링커제어세션의상태정보를의미하며, 이데이터는 V$DBLINK_LINKER_CONTROL_SESSION_INFO 성능뷰로사용자에게제공된다. 링커제어세션은 AltiLinker 프로세스의종료와상태정보의요청및설정변경등을수행한다. 링커데이터세션정보 : 링커데이터세션과관련된정보를의미하며, 이정보는 V$DBLINK_LINKER_DATA_SESSION_INFO 성능뷰로사용자에게제공된다. 트랜잭션정보 글로벌트랜잭션정보 : 글로벌트랜잭션에대한상태정보를의미하며, 이정보는 V$DBLINK_GLOBAL_TRANSACTION_INFO 성능뷰로사용자에게제공된다. 원격트랜잭션정보 : 데이터베이스링크를통해원격노드에서수행중인모든원격트랜잭션에대한상태정보를의미하며, 이정보는 V$DBLINK_REMOTE_TRANSACTION_INFO 성능뷰로사용자에게제공된다. 원격구문 (Remote Statement)) 정보 : 데이터베이스링크를통해원격노드에서수행중인모든구문 (statement) 에대한정보를의미하며, 이데이터는 V$DBLINK_REMOTE_STATEMENT_INFO 성능뷰로사용자에게제공된다. AltiLinker 프로세스의상태정보 AltiLinker 프로세스의동적인상태정보를의미하며, 이정보는 V$DBLINK_ALTILINKER_STATUS 성능뷰로사용자에게제공된다. 이정보에는연결상태뿐만아니라 AltiLinker 프로세스가현재사용중인 JVM 메모리에관련된정보도포함된다. 데이터베이스링크소개 19
20 글로벌트랜잭션관리 Altibase 데이베이스링크에서트랜잭션의개념은글로벌트랜잭션과원격트랜잭션으로구분된다. 글로벌트랜잭션이란지역서버에존재하는데이터베이스링크를통해원격서버에서수행되는원격트랜잭션을하나이상포함하는트랜잭션을의미한다. Altibase 데이터베이스링크는글로벌트랜잭션을처리하기위하여 ADLP 라는 Altibase 데이터베이스링크용프로토콜을구현하였다. 원격트랜잭션은데이터베이스링크를통해원격서버에서수행되는구문들로구성된트랜잭션으로글로벌트랜잭션을구성한다. ADLP (Altibase Database Link Protocol) ADLP 는 Altibase 서버와 AltiLinker 프로세스사이에데이터교환방식과처리방식을정의한것으로, 다음의내용을포함한다. 링커세션제어 원격트랜잭션제어 원격구문수행 AltiLinker 프로세스제어글로벌트랜잭션완료는글로벌트랜잭션에참여하고있는모든서버 ( 로컬및원격 ) 에서트랜잭션을한꺼번에완료 ( 커밋혹은롤백 ) 해야한다. 따라서어느한서버에문제가발생하면데이터의일관성을유지하지못할수있다. 이러한문제의대처방안으로 Altibase 데이터베이스링크는지역서버와원격서버간의프로토콜공유정도에따라세가지레벨의글로벌트랜잭션수행메커니즘을제공한다. 원격구문실행레벨 (Remote Statement Execution Level) 원격구문실행레벨은글로벌트랜잭션의전역적인일관성을보장하지않는다. 단지데이터베이스링크를통해원격노드에서구문을수행하는것만을보장한다. 즉, 이레벨에서는하나의글로벌트랜잭션내에서로컬서버에서수행되는구문과데이터베이스링크를통해원격서버에서수행되는구문은별개의트랜잭션으로동작한다. DBLINK_GLOBAL_TRANSACTION_LEVEL 프로퍼티를이레벨로설정하면, AltiLinker 가원격서버로연결하는세션은기본적으로 autocommit 모드가 ON 으로설정된다. 단순트랜잭션커밋레벨 (Simple Transaction Commit Level): Altibase 데이터베이스링크중 Heterogeneous Link 는 20 Database Link User s Manual
21 Altibase 와이기종의데이터베이스시스템간에수행되는글로벌트랜잭션의원자성을보장하기위하여단순트랜잭션커밋의메커니즘을구현한다. 이레벨은 2 단계커밋의동작방식과유사하다. 그러나, 2 단계커밋프로토콜이커밋준비를위해서버간에메시지를주고받는것과는달리, 단순트랜잭션커밋의경우에는서버간에메시지교환없이단지커밋이나롤백명령을원격노드로전달할수있는지만을검사한다. 단순트랜잭션커밋레벨이동작하기위해서는원격노드를구성하는데이터베이스시스템이 auto-commit 모드를 OFF 로설정할수있는시스템이어야한다. DBLINK_GLOBAL_TRANSACTION_LEVEL 프로퍼티를이레벨로설정하면, AltiLinker 가원격서버로연결하는세션은기본적으로 autocommit 모드가 OFF 로설정된다. 2 단계커밋레벨 (Two-Phase Commit Level): 알티베이스서버와이기종데이터베이스시스템간의글로벌트랜잭션정합성을보장하는 2PC 프로토콜을제공한다. DBLINK_GLOBAL_TRANSACTION_LEVEL 프로퍼티를 2(Two- Phase Commit Level) 로설정한후에사용할수있다. 아래그림은 2PC Commit Level 의동작을설명한다. 데이터베이스링크소개 21
22 Altibase Altilinker Participant1 Participant2 COMMIT Write prepare log REQ PREPARE Prepare Phase Call prepare RESULT Call prepare RESULT PREPARE ACK Write commit log REQ COMMIT Commit Phase Call commit Call commit COMMIT ACK Write end log [ 그림 1-3] 2 단계커밋레벨 (2-PC Commit Level) 준비단계 (Prepare Phase): 사용자가커밋을수행하면알티베이스는준비로그 (prepare log) 를기록하고준비요청메시지를 AltiLinker 에게보낸다. 메시지를받은 AltiLinker 는글로벌트랜잭션에속한모든참여자에게준비요청메시지를보낸다. 그리고참여자가준비를마치면 AltiLinker 는알티베이스에게준비완료메시지를보내고모든참여자에게결과를받은알티베이스는다음단계를진행한다. 커밋단계 (Commit Phase): 알티베이스는커밋로그 (commit log) 를기록하고커밋요청메시지를 AltiLinker 에게보낸다. AltiLinker 는모든참여자에커밋을수행하며모든참여자가커밋에성공할때까지커밋메시지를보낸다. 참여자전원이커밋에성공하면알티베이스에게성공메시지를보낸다. 알티베이스가성공메시지를받으면해당트랜잭션이종료되었다는것을의미하므로종료로그 (end log) 를남기고결과를반영한다. 즉, 종료로그가기록된트랜잭션은장애복구를할수없다. Altibase 는글로벌트랜잭션및원격트랜잭션에대한정보및트랜잭션의처리상태에관한정보를성능뷰로제공한다. 22 Database Link User s Manual
23 분산트랜잭션복구 (Recovery Of Distributed Transaction) 장애시점은 2PC 를기준으로하고, 장애대상은알티베이스와참여자 ( 원격데이터베이스시스템 ) 로한다. 알티베이스는참여자와메시지를주고받을때 ALTILINKER_RECEIVE_TIMEOUT 에설정한시간동안응답이없으면참여자에장애가발생했다고판단한다. 준비로그의기록이전알티베이스에장애가발생한경우, 분산트랜잭션의시작로그에는기록이남지만준비로그에는기록이남지않았다면참여하고있는모든원격트랜잭션를철회한다. 그리고알티베이스에서수행되고있는로컬트랜잭션도철회되며종료로그를기록한다. 준비로그의기록이후 - 커밋로그의기록이전알티베이스에장애가발생한경우, 분산트랜잭션의준비로그는기록되지만커밋로그및롤백로그는기록되지않는다. 커밋로그가기록되지않은상황에는정합성보장을위해수행하고있는모든원격트랜잭션을복구한다. 이때참여자에장애가발생하면원격트랜잭션의복구를보장하기위해참여자가롤백메시지를받을때까지알티베이스는메시지송신을시도하여복구를수행하고종료로그를기록한다. 참여자에장애가발생한경우, 알티베이스는참여자의트랜잭션이복구하도록메시지를보낸다. AltiLinker 에장애가발생한경우, 모든원격트랜잭션의상태를알수없으며모든트랜잭션에대한커밋로그가기록되지않았으므로롤백을수행하고종료로그를기록한다. 커밋로그의기록이후 - 종료로그의기록이전커밋단계에서장애가발생한경우에는분산트랜잭션에대한커밋및롤백로그가기록되지만종료로그는기록되지않는다. 알티베이스는참여자에게커밋메시지의응답을받지못한상태로참여자의트랜잭션이커밋또는롤백되도록지속적으로시도하고완료되면종료로그를기록한다. 결과집합데이터관리 Altibase DK 모듈은데이터베이스링크를통해로컬서버와원격서버간에주고받는데이터를처리하는기능을제공한다. DK 모듈은다음과같은데이터를처리한다. 제어데이터 (Control Data): ADLP 에정의되어있는각작업이요구하는데이터로, 내부적으로생성되어 DK 모듈과 데이터베이스링크소개 23
24 AltiLiker 프로세스간에주고받는데이터를의미한다. 사용자데이터 (User Data): 프로퍼티설정값, 원격서버에서수행할구문의문자열및바인딩변수의설정값등이해당된다. 원격데이터 (Remote Data): 원격서버에서수행된결과데이터로, DK 모듈이수신하는데이터를의미한다. 이러한데이터에대한처리는크게 Altibase 서버와 AltiLinker 프로세스사이에주고받는모든데이터의타입변환과원격서버에서수행한쿼리의결과로받는원격데이터의버퍼링으로구분된다. 타입변환은 ADLP 에정의된작업별데이터명세에따라변환이수행되며, 원격데이터의경우원격서버가수행한쿼리의결과집합내의각타입을거기에대응하는 Altibase 서버타입으로변환한다. 원격데이터의버퍼링은 DK 모듈내부적으로관리하는고정된크기의메모리버퍼 ( 이후 DK 버퍼로표현 ) 와디스크임시테이블을이용한다. 사용자는데이터베이스링크를위해사용할 DK 버퍼의크기를프로퍼티로조절할수있다. 한번설정된버퍼의크기는 Altibase 운영중에는변경할수없으므로, 메모리자원과성능을고려하여서버시작전에결정하도록한다. DK 버퍼는한개이상의데이터버퍼블록으로구성되며, 데이터버퍼블록의최소크기와개수는프로퍼티로조절할수있다. AltiLinker 프로세스 AltiLinker 는 Altibase 패키지내에포함되어배포되는자바응용프로그램이다. AltiLinker 프로세스는 Heterogeneous Link 용으로동작하며, 링크객체가존재하는 Altibase 서버와해당링크객체에의해연결되는이기종데이터베이스시스템혹은원격서버와의통신을담당한다. Altibase 데이터베이스링크에서 Heterogeneous Link 에대해제공하는 AltiLinker 는아래와같은몇가지특징이있다.. 데이터베이스링크로연결된이기종데이터베이스서버에서발생한오류가 Altibase 서버에영향을주지않는다. AltiLinker 는 JDBC 인터페이스로원격데이터베이스에접근하므로 JDBC 를지원하는모든데이터베이스시스템에 Altibase 데이터베이스링크로접근이가능하다. AltiLinker 프로세스를활성화하려면, 아래의두프로퍼티를설정해야한다. 24 Database Link User s Manual
25 프로퍼티 설정값 프로퍼티파일 DBLINK_ENABLE 1 (0이면 disable) altibase.properties ALTILINKER_ENABLE 1 (0이면 disable) dblink.conf AltiLinker 프로세스의역할을간략히정리하면아래와같다. JDBC 드라이버를통해이기종데이터베이스시스템에연결 ADLP 프로토콜을통해 Altibase 서버에서요청받은작업 수행 원격노드에서수행한쿼리의결과를 Altibase 서버로전달 주의사항 AltiLinker 프로세스는 JDBC 인터페이스를사용하여원격서버의데이터베이스에접근하므로해당데이터베이스벤더가제공하는 JDBC 드라이버가반드시필요하다. AltiLinker 프로세스는지역서버와동일한장비에서만동작한다. 데이터베이스링크소개 25
26
27 2. 지원되는객체, SQL 문및 데이터타입 이장은데이터베이스링크사용을위해 Altibase 가제공하는 SQL 구문과데이터베이스링크를통해서접근할수있는원격데이터베이스의스키마객체, 그리고데이터베이스링크와함께사용가능한데이터타입에대해설명한다. 지원되는객체, SQL 문및데이터타입 27
28 데이터베이스링크와 SQL 문 이절은데이터베이스링크와함께사용할수있는 SQL 구문에대해 설명한다. Altibase 데이터베이스링크는원격스키마객체접근을위해크게 두종류의방식을제공한다. 하나는이전까지의버전처럼위치 표시자 를사용해서원격서버의테이블이나뷰에접근하는 방식이고, 다른하나는 SQL 문전체를원격서버로직접전송하는 pass-through 방식 (style) 이다. Altibase 데이터베이스링크는 pass-through 방식을지원하기위해 REMOTE_TABLE 키워드와내장 (built-in) 된 REMOTE 프로시저와 함수들 ( 이하 REMOTE 함수로표기 ) 을제공한다. REMOTE_TABLE 키워드또는 REMOTE 함수들을사용하면 SQL 문자체가원격 서버로전송되어원격서버가직접해당 SQL 문을수행한다. REMOTE 함수들은 SQL 문내의파라미터마커에값을바인딩할수 있는함수와그렇지않은함수로구분된다. 아래는 SQL 구문종류별로 RETMOTE_TABLE 키워드와 REMOTE 함수들의사용가능여부를표로나타낸것이다. REMOTE_TABLE 키워드 REMOTE_EXECUTE_ IMMEDIATE 바인딩지원 REMOTE 함수들 DDL 문 X O O DCL 문 X O O DML 문 X O O (INSERT, UPDATE, DELETE) SELECT 문 O X O REMOTE_TABLE REMOTE_TABLE 은지역서버에서입력되는 SELECT 구문의 FROM 절에만사용할수있는키워드이다. REMOTE_TABLE 키워드뒤에는원격서버에서수행할 SELECT 구문만지정할수있다. 또한, REMOTE_TABLE 키워드는파라미터마커가포함된 SQL 문, 즉바인딩과함께사용할수없다. SQL 문에 REMOTE_TABLE 키워드를사용하는문법은 "4 장 28 Database Link User s Manual
29 데이터베이스링크사용법 " 에서기술한다. REMOTE_EXECUTE_IMMEDIATE REMOTE_EXECUTE_IMMEDIATE 입력한 SQL 문을데이터베이스링크를통해원격서버에서수행하는내장된저장프로시저다. 이프로시저는 SELECT 문을제외한 Altibase 데이터베이스링크에서지원하는모든 DML 문, DDL 문과 DCL 문을수행할수있다. 또한, 이프로시저로는파라미터마커가포함된 SQL 문의수행, 즉바인딩의사용이불가능하다. 이프로시저의문법은 "4 장데이터베이스링크사용법 " 을참고하기바란다. 바인딩지원 REMOTE 함수 데이터베이스링크를통해파라미터마커가포함된 SQL 문을실행할수있는 REMOTE 함수들에대해설명한다. 파라미터마커가포함된 SQL 문을실행하고각파라미터에값을바인딩하기위해서는아래의 REMOTE 함수들을사용하면된다. 단, 아래의 REMOTE 함수들은저장프로시저내에서만사용할수있고, 호출순서도지켜야한다. REMOTE_ALLOC_STATEMENT REMOTE_BIND_VARIABLE REMOTE_EXECUTE_STATEMENT REMOTE_NEXT_ROW REMOTE_GET_COLUMN_VALUE_type REMOTE_FREE_STATEMENT 아래는저장프로시저내에서파라미터마커가포함된 SELECT 문을수행하기위해 REMOTE 함수를호출하는순서이다. 1. REMOTE_ALLOC_STATEMENT 2. REMOTE_BIND_VARIABLE 3. REMOTE_EXECUTE_STATEMENT 4. REMOTE_NEXT_ROW 5. REMOTE_GET_COLUMN_VALUE_type 6. REMOTE_FREE_STATEMENT 아래는저장프로시저내에서 SELECT 문이외의파라미터마커가 지원되는객체, SQL 문및데이터타입 29
30 포함된 DML, DDL 문을수행하기위해 REMOTE 함수를호출하는순서이다. 7. REMOTE_ALLOC_STATEMENT 8. REMOTE_BIND_VARIABLE 9. REMOTE_EXECUTE_STATEMENT 10. REMOTE_FREE_STATEMENT 각 REMOTE 함수에대한문법과상세한설명은 "4 장데이터베이스링크사용법 " 을참고하기바란다. 30 Database Link User s Manual
31 접근가능한원격스키마객체 이절에서는데이터베이스링크로접근할수있는원격스키마 객체들을설명한다. 원격스키마객체 로접근가능한가? REMOTE 함수로접근가능한가? 테이블 O O 인덱스 X O 뷰 O O 저장프로시저 X O 시퀀스 X O 큐 X O 트리거 X O 시노님 X O 제약조건 X O [ 표 2-1] 데이터베이스링크로접근가능한원격스키마객체 위의표에서보듯이데이터베이스링크를위치표시자 (@) 와함께 사용해서원격서버에서접근할수있는객체는테이블과뷰뿐이다. 그러나, pass-through 방식의 REMOTE 함수를사용하면원격 노드의거의모든스키마객체에접근이가능하다. 주의 : 위치표시자 (@) 는이전버전과의호환성을위해지원되며, 위치표시자 (@) 를사용해서는이전버전에서와마찬가지로원격 서버에서 SELECT 구문만수행할수있다. 또한, 위치표시자가 포함된질의는서버에서쿼리최적화가수행되지않기때문에, REMOTE 함수를사용하는것이질의처리속도가더빠르다. 아래의절에서는 REMOTE 함수를사용해서원격스키마객체에 접근하는방법과 SQL 문예제를보여준다. 테이블 데이터베이스링크의핵심기능은데이터가서로다른데이터베이스에분산되어있는테이블간의상호운용 (Interoperation) 을제공하는것이다. Altibase 데이터베이스링크를사용해서원격테이블에 SELECT, INSERT, UPDATE, DELETE 및 DDL 문을수행할수있다. 지원되는객체, SQL 문및데이터타입 31
32 SELECT 질의의경우, 아래와같이 FROM 절에 REMOTE_TABLE 키워드를사용해서원격테이블을조회할수있다. SELECT * FROM REMOTE_TABLE( link1, 'select * from t1' ); 만약 WHERE 절에서원격객체를참조하려면아래예제와같이 부질의를사용하면된다. SELECT * FROM t1 WHERE t1.c1 = ( SELECT * FROM REMOTE_TABLE( link1, 'select c2 from t2' ) ); 원격서버에 DML 또는 DDL 문을수행하려면아래예제와같이 REMOTE_EXECUTE_IMMEDIATE 프로시저를사용하면된다. REMOTE_EXECUTE_IMMEDIATE( 'link1', 'insert into t1 values(1)' ); REMOTE_EXECUTE_IMMEDIATE( 'link1', 'create table t1(c1 integer primary key, c2 integer)' ); 파라미터마커가포함된 SELECT 문의경우위의 " 바인딩지원 REMOTE 함수 " 절에기술한순서로바인딩지원 REMOTE 함수들을 순서대로사용하면되고 DML 과 DDL 의경우도이와마찬가지이다. 아래는파라미터마커가포함된 INSERT 문을 REMOTE 함수를 사용해서수행하는저장프로시저예제이다. DECLARE statement_id result row_count BEGIN statement_id := REMOTE_ALLOC_STATEMENT( 'link1', 'insert into T1 values(?)' ); result := REMOTE_BIND_VARIABLE( 'link1', statement_id, 1, '20' ); row_count := REMOTE_EXECUTE_STATEMENT( 'link1', statement_id ); result := REMOTE_FREE_STATEMENT( 'link1', statement_id ); RETURN row_count; END; 아래는위치표시자 '@' 를사용해서원격서버의테이블을조회하는 예제이다. 위치표시자사용방식은기존버전과의호환성을 유지하기위해지원된다. SELECT * FROM t1@link1; 인덱스 Altibase 데이터베이스링크를사용해서원격서버에인덱스를 생성할수있다. REMOTE_EXECUTE_IMMEDIATE( 'link1', 'create index index1 on t1 (c1 asc, c2 desc)' ); 32 Database Link User s Manual
33 뷰 뷰에대해서도테이블과마찬가지로 SELECT, DML, DDL 문의수행을 지원하고사용법도테이블과동일하다. 아래는 REMOTE 함수를사용해서원격서버의뷰를조회하는 예제이다. SELECT * FROM REMOTE_TABLE( link1, 'select * from v1' ); 아래는 REMOTE 함수를사용해서원격서버에뷰를생성하는 예제이다. REMOTE_EXECUTE_IMMEDIATE( 'link1', 'create view v1 as select c1, c2, c3 from t1' ); 아래는위치표시자 '@' 를사용해서원격서버의뷰를조회하는 예제이다. SELECT * FROM v1@link1; 저장프로시저 Altibase 데이터베이스링크로원격서버의저장프로시저에접근할 수있다. 즉, 지역서버에서원격서버에저장프로시저를생성하고 원격서버에존재하는프로시저를호출할수있다. 지역서버의저장프로시저내에 REMOTE 함수를사용할경우, REMOTE 함수로접근가능한모든원격객체를참조할수있다. 아래는저장프로시저를호출하는 SELECT 문을 REMOTE_TABLE 키워드를사용해서원격서버에서수행하는예제이다. SELECT * FROM REMOTE_TABLE( link1, 'select remote_function1() from dual' ); SELECT * FROM t1 WHERE t1.c1 = ( SELECT * FROM REMOTE_TABLE( link1, 'select remote_function1() from dual' ) ); 아래는 REMOTE_EXECUTE_IMMEDIATE 프로시저를사용해서, 원격서버에저장프로시저를생성하고생성된프로시저를호출하는 예제이다. REMOTE_EXECUTE_IMMEDIATE( 'link1', 'create or replace procedure proc1 as i integer; begin i := 0; while i <> 1000 loop insert into t1 values(i); i := i + 1; end loop; end; /' ); REMOTE_EXECUTE_IMMEDIATE( 'link1', 'execute proc1' ); 지원되는객체, SQL 문및데이터타입 33
34 제약사항 지역서버의저장프로시저내에서원격서버의테이블에기반한 ROWTYPE 변수선언과커서선언은할수없다. 위치표시자 를사용하는경우이전버전과동일한제약사항을가진다. 다시말해위치표시자 를사용해서원격서버에존재하는저장프로시저에대한접근은불가능하나, 지역서버의저장프로시저내에서위치표시자 를사용해서원격서버의테이블또는뷰에접근하는것은가능하다. 시퀀스 Altibase 데이터베이스링크로원격서버의시퀀스에접근할수있다. 아래는시퀀스를참조하는 SELECT 문을 REMOTE_TABLE 키워드를 사용해서원격서버에수행하는예제이다. SELECT * FROM REMOTE_TABLE( link1, 'select seq1.currval, seq1.nextval from dual' ); 아래는시퀀스를참조하는 INSERT 문을 REMOTE_EXECUTE_IMMEDIATE 프로시저를사용해서원격서버에 수행하는예제이다. REMOTE_EXECUTE_IMMEDIATE( 'link1', 'insert into t1 values(seq1.nextval)' ); 아래는원격서버에시퀀스를생성하는예제이다. REMOTE_EXECUTE_IMMEDIATE( 'link1', 'create sequence seq1 start with 1 increment by 1' ); 큐 Altibase 데이터베이스링크로원격서버의큐에접근할수있다. 아래는 REMOTE_TABLE 키워드를사용해서원격서버의큐를 조회하는예제이다. SELECT * FROM REMOTE_TABLE( link1, 'select message from q1' ); 아래는 REMOTE_EXECUTE_IMMEDIATE 프로시저를사용해서원격 서버의큐에메시지를입력하는예제이다. REMOTE_EXECUTE_IMMEDIATE( 'link1', 'enqueue into q1(message) values(\'test message\')' ); 아래는원격서버에큐를생성하는예제이다. 34 Database Link User s Manual
35 REMOTE_EXECUTE_IMMEDIATE( 'link1', 'create queue q1(40) maxrows 1000' ); 트리거 Altibase 데이터베이스링크로원격서버의트리거에접근할수있다. 아래는원격서버에트리거를생성하는예제이다. REMOTE_EXECUTE_IMMEDIATE( 'link1', 'create trigger trigger1 after delete on orders referencing old row old_row for each row as begin insert into log1 values( old_row.c1, old_row.c2, old_row.c3, sysdate ); end; /' ); 시노님 Altibase 데이터베이스링크로원격서버의시노님에접근할수있다. 아래는 REMOTE_TABLE 키워드를사용해서원격서버의시노님을 조회하는예제이다. SELECT * FROM REMOTE_TABLE( link1, 'select * from synonym_table' ); SELECT * FROM REMOTE_TABLE( link1, 'select synonym_name from user_synonyms' ); 아래는원격서버의시노님에 DML 문을수행하는예제이다. REMOTE_EXECUTE_IMMEDIATE( 'link1', 'insert into synonym_table values( seq1.nextval )' ); 제약조건 Altibase 데이터베이스링크로원격서버의제약조건에접근할수 있다. 아래는원격서버의제약조건에 DML 문을수행하는예제이다. REMOTE_EXECUTE_IMMEDIATE( 'link1', 'set constraints all differed' ); 아래는원격서버의테이블에제약조건을추가하는 DDL 문을 수행하는예제이다. REMOTE_EXECUTE_IMMEDIATE( 'link1', 'alter table t1 add constraint const1 unique(c1)' ); 지원되는객체, SQL 문및데이터타입 35
36 DB Link 지원데이터타입 Altibase 데이터베이스링크는 JDBC 인터페이스를사용하므로, JDBC v3.0 에명세화된표준데이터타입을지원한다. 아래그림은지역서버인 Altibase 와 AltiLiker 사이의데이터타입변환과 AltiLinker 와각이기종데이터베이스의 JDBC 드라이버간의데이터타입변환이어떻게이루어지는지를보여준다. ALTIBASE HDB Server Altibase Data Type to Java Data Type AltiLinker Process Java Data Type to JDBC Data Type JDBC Drivers JDBC Drivers JDBC Drivers ALTIBASE HDB Oracle Java Data Type to Altibase Data Type JDBC Data Type to Java Data Type DB2 [ 그림 2-1] 데이터타입변환 아래의표는 Altibase 데이터타입들이어떤 JDBC 데이터타입및 표준 SQL 데이터타입과매핑되는지를보여준다. JDBC 데이터타입 Altibase SQL 데이터타입 표준 SQL 데이터타입 DB- Link 지원여부 비고 java.sql.types. CHAR CHAR CHAR O java.sql.types. VARCHAR VARCHAR VARCHAR O java.sql.types. LONGVARCH AR LONGVARC HAR X java.sql.types. NCHAR NCHAR NCHAR X JDBC v4.0 java.sql.types. NVARCHAR NVARCHA R NVARCHAR X JDBC v Database Link User s Manual
37 java.sql.types. LONGNVARC HAR java.sql.types. NUMERIC java.sql.types. DECIMAL java.sql.types. BIT java.sql.types. BOOLEAN java.sql.types. TINYINT java.sql.types. SMALLINT java.sql.types. INTEGER java.sql.types. BIGINT java.sql.types. REAL java.sql.types. FLOAT java.sql.types. DOUBLE java.sql.types. BINARY java.sql.types. VARBINARY LONGNVAR CHAR X NUMERIC NUMERIC O DECIMAL DECIMAL O SMALLINT BIT O BIT (bitset) X SMALLINT BOOLEAN O SMALLINT TINYINT O SMALLINT SMALLINT O INTEGER INTEGER O BIGINT BIGINT O REAL REAL O FLOAT FLOAT O DOUBLE DOUBLE O BINARY BINARY X VARBINARY X JDBC v4.0 Altibase의 BIT 타입은한비트만표현가능한표준 BIT 타입과다르므로 SMALLINT 타입으로맵핑된다. Altibase의 BIT 타입은비트집합을저장한다. Altibase는 BOOLEAN 타입을제공하지않으므로, SMALLINT 타입으로맵핑된다. 원격서버가 Altibase일경우이타입에는데이터 INSERT가불가능하다. Altibase는 TINYINT 타입을제공하지않으므로, SMALLINT 타입으로맵핑된다. 원격서버가 Altibase일경우이타입에는데이터 INSERT가불가능하다. 지원되는객체, SQL 문및데이터타입 37
38 java.sql.types. LONGVARBIN ARY java.sql.types. DATE java.sql.types. TIME java.sql.types. TIMESTAMP java.sql.types. CLOB java.sql.types. NCLOB java.sql.types. BLOB java.sql.types. ARRAY java.sql.types. DISTINCT java.sql.types. STRUCT java.sql.types. REF java.sql.types. DATALINK java.sql.types. JAVA_OBJECT java.sql.types. NUMERIC LONGVARBI NARY X DATE DATE O DATE TIME O DATE TIMESTAMP O CLOB CLOB X NCLOB X BLOB BLOB X X X X X X X NUMERIC NUMERIC O NIBBLE X 년도의값이 0보다작으면 ( 기원전 ), Altibase는 0으로처리한다. Oracle은 TIMESTAMP의최소표현단위가 nano초이나, Altibase는 micro초이므로, nano초가 micro초로변환된다. Oracle은 TIMESTAMP의최소표현단위가 nano초이나, Altibase는 micro초이므로, nano초가 micro초로변환된다. 또한, 년도의값이 0보다작으면 ( 기원전 ), Altibase는 0으로처리한다. JDBC v Database Link User s Manual
39 VARBIT X INTERVAL X [ 표 2-2] 데이터베이스링크지원데이터타입 지원되는객체, SQL 문및데이터타입 39
40
41 3. 데이터베이스링크환경 설정 이장은 Altibase 데이터베이스링크를사용하기위해필요한환경 설정에대해설명한다. 데이터베이스링크환경설정 41
42 DB Link 동작방식 환경설정에앞서데이터베이스링크가동작하는과정을간략히살펴보면다음과같다. 11. 사용자가원격서버에서수행될질의를포함한 SQL 문을지역서버에요청한다. 12. 지역서버의질의처리기가 SQL 문을파싱하여원격서버로보낼질의를준비한다. 13. 준비된질의를 AltiLinker 로전송한다. 14. AltiLinker 가질의를받아원격서버에질의수행을요청한다. 여기에 JDBC 인터페이스가사용된다. 15. 원격서버는요청받은질의를수행하고결과를 AltiLinker 로반환한다. 16. 원격서버로부터받은질의결과를 AltiLinker 가지역서버로전송한다. 지역서버는받은결과데이터를용도에맞게변환하여이용한다. 위에서 3 번과 6 번단계에서 Altibase 서버와 AltiLinker 간에는 TCP 통신만을지원하며, 데이터교환은 ADLP 프로토콜을따른다. 또한 AltiLinker 는 JDBC 인터페이스를사용하여원격서버의데이터베이스에접근한다. JDBC 관련설정은시스템환경과상황에따라다를수있는데, 이장에서는 Java SE 1.5 환경을기준으로설명한다. 42 Database Link User s Manual
43 환경설정 이절은 Altibase 데이터베이스링크사용을위한 JDBC 환경설정방법을아래와같이설명한다. JRE 설치 JDBC 드라이버설치 AltiLinker 프로퍼티파일설정 Altibase 프로퍼티파일설정 JRE 설치 AltiLinker 는 JRE 1.5 버전이상에서동작하는자바응용 프로그램이므로, AltiLinker 가동작할장비에 1.5 버전이상의 JRE 가 설치되어있어야한다. AltiLiker 가접속할원격데이터베이스의 JDBC 드라이버가 1.5 이상 버전의 JRE 에서동작한다면, 해당 JDBC 드라이버와호환되는버전의 JRE 를설치해야한다. JRE 설치후에는 JAVA_HOME 과 CLASSPATH 등의환경변수를 설정해야한다. 아래는유닉스계열 OS 에서 JRE 관련환경변수를 설정하는예제이다. $ export JAVA_HOME=JRE 가설치된경로 $ export CLASSPATH=${JAVA_HOME}/lib:${CLASSPATH} $ export PATH=${JAVA_HOME}/bin:${PATH} JDBC 드라이버설치 데이터베이스링크를사용하기위해 AltiLinker 가동작하는장비에 JDBC 드라이버를설치한다. 이때설치하는 JDBC 드라이버는데이터베이스링크로접속할원격데이터베이스에해당하는벤더가제공하는것이다. 예를들어원격데이터베이스가오라클이라면오라클홈페이지에서 Oracle 데이터베이스서버에일치하는버전의 JDBC 드라이버를다운로드하여설치한다. 2PC(Two-Phase Commit) 프로토콜을사용하는경우에는 XA 를지원하는 ODBC Driver 를사용해야한다. 데이터베이스링크환경설정 43
44 AltiLinker 프로퍼티파일설정 AltiLinker 프로퍼티파일에는 AltiLinker 동작에관련된프로퍼티와 원격서버에접속하는데필요한프로퍼티가설정된다. AltiLinker 프로퍼티파일은 $ALTIBASE_HOME/conf 아래에 dblink.conf 파일로존재한다. 이파일에는아래의프로퍼티등이 설정된다. ALTILINKER_ENABLE ALTILINKER_PORT_NO TARGETS AltiLinker 프로세스를활성화하기위해서는 ALTILINKER_ENABLE 프로퍼티의값을 1 로설정해야한다. ALTILINKER_PORT_NO 프로퍼티에는 AltiLinker 의 TCP 대기 (listen) 포트번호를지정한다. TARGETS 프로퍼티에는 AltiLinker 가원격데이터베이스서버에 접속하는데필요한연결정보가아래와같은하위프로퍼티로 설정된다. JDBC_DRIVER: JDBC 드라이버파일의절대경로 CONNECTION_URL: 접속할원격데이터베이스서버의연결 URL USER: 원격데이터베이스서버에접속할사용자이름 PASSWORD: 원격데이터베이스서버에접속할사용자의암호 XADATASOURCE_CLASS_NAME: XADataSource 클래스 이름, Altibase.jdbc.driver.AltibaseXADataSource 에위치 XADATASOURCE_CLASS_URL_SETTER_NAME: XADataSource 의 URL 을설정 (Set), seturl 로설정가능 위항목중첫번째와두번째항목은프로퍼티파일에반드시 명시되어야한다. 나머지항목은프로퍼티파일에명시하거나 데이터베이스링크객체를생성하는시점에입력할수있다. 프로퍼티파일보다데이터베이스링크객체생성시점에명시한 사용자이름과암호가우선적으로사용된다. TARGETS 프로퍼티는아래의형식으로설정할수있다. 이 프로퍼티에는복수개의원격서버를명시할수있다. TARGETS = ( ( NAME = "alti1" JDBC_DRIVER = "/home/user/altibase_home/lib/altibase.jar" CONNECTION_URL = "jdbc:altibase:// :20300/mydb" USER = "sys" 44 Database Link User s Manual
45 PASSWORD = "manager" XADATASOURCE_CLASS_NAME= "Altibase.jdbc.driver.AltibaseXADataSource" XADATASOURCE_URL_SETTER_NAME = "seturl" ), ( NAME =.. JDBC_DRIVER =.. CONNECTION_URL =.. ) ) 대한자세한내용은 "A. 부록 : 데이터딕셔너리및프로퍼티 " 를 참고하기바란다. Altibase 프로퍼티파일설정 Altibase 데이터베이스링크를사용하기위해서는먼저 altibase.properties 파일에서 DBLINK_ENABLE 프로퍼티를 1 로설정해야한다. 모든프로퍼티설정후 Altibase 서버를구동시키면, AltiLinker 프로세스가 Altibase 서버프로세스와함께시작된다. 데이터베이스링크와관련된프로퍼티에대한자세한내용은 General Reference 의데이터베이스링크관련프로퍼티를참고한다. 데이터베이스링크환경설정 45
46
47 4. 데이터베이스링크사용법 이장에서는데이터베이스링크제어를위해제공되는 SQL 구문과 REMOTE 함수와함께데이터베이스링크를사용하는방법에대해 상세히설명한다. 데이터베이스링크사용법 47
48 CREATE DATABASE LINK 구문 create_database_link ::= CREATE DATABASE LINK dblink_name PUBLIC PRIVATE CONNECT TO user_id IDENTIFIED BY password USING target_name ; 전제조건 SYS 사용자또는 CREATE DATABASE LINK 시스템권한을가진 사용자만이데이터베이스링크객체를생성할수있다. 설명 사용자는 CREATE DATABASE LINK 문으로데이터베이스링크 객체를생성할수있다. 데이터베이스링크객체는하나의원격 서버만을대상으로한다. PUBLIC PRIVATE 생성할데이터베이스링크객체의 PUBLIC PRIVATE 속성을지정한다. PUBLIC 으로지정하면생성된데이터베이스링크객체를모든사용자가사용할수있으며, PRIVATE 로지정하면데이터베이스링크객체를생성한사용자와 SYS 사용자만사용할수있다. 지정하지않을경우, PUBLIC 으로생성된다. dblink_name 생성할데이터베이스링크객체의이름을명시한다. 데이터베이스 링크의이름은 SQL Reference 1 장의 " 객체이름규칙 " 을따라야 한다. 48 Database Link User s Manual
49 user_id/password 연결하고자하는원격서버의데이터베이스사용자이름과암호를지정한다. 여기에지정된사용자는데이터베이스링크로접근하는원격서버의대상객체에대한접근권한을가지고있어야한다. 그렇지않을경우, 권한관련오류가발생할것이다. 사용자이름과암호는기본적으로대문자로저장되므로, 대소문자구분을하거나특수문자를사용하기위해서는쌍따옴표 (") 로묶어서사용한다. target_name AltiLinker 프로퍼티파일에 TARGETS 프로퍼티에명시한원격서버들중원하는서버의이름을지정한다. AltiLinker 프로퍼티파일에 TARGETS 프로퍼티를설정하는자세한방법은 3 장의 "AltiLinker 프로퍼티파일설정 " 을참조한다. 예제 < 질의 1> AltiLinker 프로퍼티파일에 Altibase 로명시된원격 데이터베이스서버에사용자이름과암호 applys/applys 로접속하는 데이터베이스링크를생성하려한다. 생성자자신만이사용할수 있는 link1 이라는이름의데이터베이스링크객체를생성하라. CREATE PRIVATE DATABASE LINK link1 CONNECT TO applys IDENTIFIED BY applys USING Altibase; < 질의 2> AltiLinker 프로퍼티파일에 Altibase 로명시된원격 데이터베이스서버에사용자이름과암호 applys/applys 로접속하는 데이터베이스링크를생성하려한다. 시스템의모든사용자가사용할 수있는 link2 라는이름의데이터베이스링크객체를생성하라. 단, 사용자이름과암호가소문자이다. CREATE PUBLIC DATABASE LINK link2 CONNECT TO "applys" IDENTIFIED by "applys" USING Altibase; 또는 CREATE DATABASE LINK link2 CONNECT TO "applys" IDENTIFIED by "applys" USING Altibase; 데이터베이스링크사용법 49
50 DROP DATABASE LINK 구문 drop_database_link ::= DROP DATABASE LINK dblink_name PUBLIC ; PRIVATE 전제조건 SYS 사용자이거나 DROP DATABASE LINK 시스템권한을가진 사용자만이데이터베이스링크객체를제거할수있다. 설명 데이터베이스링크객체를삭제한다. dblink_name 제거할데이터베이스링크객체의이름을명시한다. 주의사항 제거하고자하는데이터베이스링크객체가사용중이라면, 제거할수없다. 제거할데이터베이스링크객체로수행중인질의가없는상태에서만데이터베이스링크객체제거가가능하다. 데이터베이스링크객체에대해질의수행중인경우에는오류가발생할것이다. 예제 < 질의 1> dblink1 이라는이름의 PRIVATE 데이터베이스링크객체를 제거하라. 50 Database Link User s Manual
51 DROP PRIVATE DATABASE LINK dblink1; < 질의 2> dblink1 이라는이름의 PUBLIC 데이터베이스링크객체를 제거하라. DROP PUBLIC DATABASE LINK dblink1; 또는 DROP DATABASE LINK dblink1; 데이터베이스링크사용법 51
52 ALTER DATABASE LINKER 구문 alter_database_linker ::= START ALTER DATABASE LINKER STOP ; FORCE DUMP 전제조건 SYS 사용자가 sysdba 관리자모드로접속해서이구문을수행할수 있다. 설명 AltiLiker 를구동하거나종료한다. START AltiLinker 를시작한다. 단, 실행중인 AltiLinker 프로세스가 존재하지않아야한다. STOP AltiLinker 를종료한다. 단, AltiLinker 종료가성공하려면데이터베이스링크를사용하는트랜잭션이없어야한다. 데이터베이스링크를사용하는트랜잭션이존재하면, 이구문실행은실패한다. STOP FORCE 데이터베이스링크를사용하는트랜잭션이존재하더라도, AltiLinker 프로세스를강제로종료한다. DUMP 52 Database Link User s Manual
53 AltiLinker 프로세스실행중에이구문을수행하면 AltiLinker 프로세스내의쓰레드들이현재수행하고있는작업들이파일로출력된다. 출력파일은 $ALTIBASE_HOME/trc/altibase_lk_dump.log 로고정되어있으며, ALTER DATABASE LINKER DUMP 구문을수행할때마다이파일을덮어쓴다. 예제 isql(sysdba)> ALTER DATABASE LINKER START; Alter success. isql(sysdba)> ALTER DATABASE LINKER STOP; Alter success. isql(sysdba)> ALTER SESSION LINKER STOP FORCE; Alter success. isql(sysdba)> ALTER SESSION LINKER DUMP; Alter success. 데이터베이스링크사용법 53
54 ALTER SESSION 구문 close_database_link ::= ALTER SESSION CLOSE DATABASE LINK ALL dblink_name ; 전제조건 모든사용자가이구문을수행할수있다. 설명 Altibase 서버에서 AltiLinker 로연결하고있는링커세션을 종료한다. LINK ALL 모든링커세션을종료한다. LINK dblink_name 지정한이름의데이터베이스링크객체에연결된링커세션들만종료한다. 예제 ALTER SESSION CLOSE DATABASE LINK ALL; ALTER SESSION CLOSE DATABASE LINK link1; 54 Database Link User s Manual
55 SELECT Altibase 데이터베이스링크를사용해서원격데이터베이스의객체를조회 (SELECT) 하는방법은위치표시자 ) 를사용하거나 passthrough 방식을사용하는두가지가있다. Altibase 데이터베이스링크는 pass-through 스타일의 REMOTE_TABLE 키워드를사용할것을권장하고있으며, 위치표시자 ) 는이전버전과의호환성을위해지원한다. 두방식모두 FROM 절에서만데이터베이스링크를사용할수있다. SELECT 절에서사용하는문자열표기법에대한자세한설명은 General Reference 의 " 문자열표기 를참조한다. 위치표시자 위치표시자 '@' 를사용하는구문은이전버전과의호환성을 유지하기위해지원된다. 기호를 사용하여해당객체가원격서버에존재하는객체임을표시하는 것이다. SELECT * FROM t1@link1; 위치표시자가포함된질의는이전버전과마찬가지로원격서버에서 테이블의모든레코드를로컬서버로가져온다. 따라서, 질의의 성격에따라 REMOTE_TABLE 키워드를사용하는것이처리속도를 높일수있다. 예를들어, 아래과같이위치표시자를사용한질의는원격테이블의 모든레코드를로컬서버로가져오기때문에, 네트워크비용과로컬 서버의연산비용, 그리고경우에따라발생하는디스크 I/O 비용까지추가로수반된다. 그러나, REMOTE_TABLE 키워드를 사용하면, 원격서버에서질의를처리하고로컬서버는결과로 하나의레코드만가져오기때문에, 성능면에서 REMOTE_TABLE 키워드를사용하는것이더효과적이다. 테이블명 : T1 테이블스키마 : C1 VARCHAR(1024), C2 VARCHAR(1024), C3 VARCHAR(1024),... C50 INTEGER, 데이터베이스링크사용법 55
56 ... C100 VARCHAR(1024), 전체레코드수 : 1,000,000 (c50 컬럼값이 50 인레코드는 1 건 ) 17. 위치표시자사용 : SELECT c50, c100 FROM t1@link1 WHERE c50 = 50; 18. REMOTE_TABLE 키워드사용 : SELECT * FROM REMOTE_TABLE( link1, 'select c50, c100 from t1 where c50 = 50' ); 결론적으로, 데이터베이스링크를사용하여동일한결과를가져오는 질의의경우, 위치표시자보다 REMOTE_TABLE 키워드를사용할 것을권장한다. 예제 < 질의 1> 위치표시자를사용해서 link1 이가리키는원격서버에존재하는 t1 테이블전체를조회하라. SELECT * FROM t1@link1; < 질의 2> 위치표시자를사용해서원격테이블의 a1, a2 칼럼을조회하라. SELECT a1, a2 FROM ( SELECT * FROM t1@link1 ); REMOTE_TABLE pass-through 방식의 REMOTE_TABLE 키워드를사용해서원격서버에서 SELECT 문을수행할수있다. REMOTE_TABLE 키워드를사용하여원격서버에서질의를수행하면, 질의결과가메모리버퍼에저장된다. 저장된질의결과는질의처리기에전달된후삭제된다. 만약 JOIN 연산과같이삭제된결과에반복적으로접근해야하는질의가있다면, 원격서버에서질의를다시수행해야한다. REMOTE_TABLE 키워드를사용하는문법은아래와같다. REMOTE_TABLE ( dblink_name IN VARCHAR, statement_text IN VARCHAR ) dblink_name: 데이터베이스링크객체의이름 statement_text: 원격서버에서수행할 SELECT 문 56 Database Link User s Manual
57 예제 < 질의 1> REMOTE_TABLE 키워드를사용해서 link1 이가리키는 원격서버에존재하는 t1 테이블전체를조회하라. SELECT * FROM REMOTE_TABLE( link1, 'select * from t1' ); < 질의 2> REMOTE_TABLE 키워드를사용해서원격테이블의 a1, a2 칼럼을조회하라. SELECT * FROM REMOTE_TABLE( link1, 'select a1, a2 from t1' ); REMOTE_TABLE_STORE Altibase 는 REMOTE_TABLE 키워드로원격에서질의수행한결과를반복적으로접근할필요가있을때, 수행결과를디스크임시테이블에저장하여반복적으로접근할수있도록한다. WHERE 절 데이터베이스링크를이용하여원격서버에질의하는경우에도지역서버에서 SELECT 문으로질의할때와같은방법으로 WHERE 절을사용할수있다. 단, WHERE 절에는위치표시자또는 REMOTE_TABLE 키워드의사용이허용되지않으므로, FROM 절에별칭 (alias) 을명시하여 WHERE 절에서는이별칭을사용하도록한다. 예제 < 질의 1> link1 이가리키는원격서버의 t1 테이블에서칼럼 a1 의 값이 100 보다큰행을검색하라. SELECT * FROM REMOTE_TABLE( link1, 'select * from t1 where a1 > 100' ); 또는 SELECT * FROM REMOTE_TABLE( link1, 'select * from t1' ) t1_alias WHERE t1_alias.a1 > 100; 또는 SELECT * FROM t1@link1 WHERE a1 > 100; < 질의 2> link1 이가리키는원격서버의 emp2 테이블과지역 서버의 emp1 테이블에저장된모든사원중, rnd 부서에근무하는 사원의이름을검색하라. 데이터베이스링크사용법 57
58 SELECT emp_name FROM ( SELECT emp_no, emp_name FROM emp1 UNION ALL SELECT emp_no, emp_name FROM REMOTE_TABLE( link1, 'select emp_no, emp_name from emp2' ) ) v1, dept WHERE v1.emp_no = dept.emp_no AND dept.dept_name = 'rnd'; 또는 SELECT emp_name FROM ( SELECT emp_no, emp_name FROM emp1 UNION ALL SELECT emp_no, emp_name FROM emp2@link1 ) v1, dept WHERE v1.emp_no = dept.emp_no AND dept.dept_name = 'rnd'; 그외의 SELECT 기능 데이터베이스링크는 SELECT 구문에조인 (join), 부질의 (subquery), 집합연산자 (set operators), 집계함수 (aggregation functions) 의사용을지원한다. 또한 DDL 또는 DML 구문내에부질의형태로 SELECT 문이있는경우, 이부질의구문에도데이터베이스링크를사용할수있다. 예제 < 질의 1> link1 이가리키는원격서버의 t1 테이블의 a1 칼럼에서 중복을제거한값을검색하라. SELECT * FROM REMOTE_TABLE( link1, 'select distinct a1 from t1' ); 또는 SELECT DISTINCT a1 FROM t1@link1; < 질의 2> link1 이가리키는원격서버의 t_member 테이블과 t_dept 테이블을조인하여전체사원의부서를알아내고, 부서 ID 가 0 보다크거나같은값을갖는부서들을부서 ID 별로묶어각 부서의사원수, 평균나이를구하라. SELECT t1.dept_id, COUNT(*), AVG(age) FROM REMOTE_TABLE( link1, 'select * from t_member' ) t1, REMOTE_TABLE( link1, 'select * from t_dept' ) t2, WHERE t1.dept_id = t2.dept_id GROUP BY t1.dept_id HAVING t1.dept_id >= 0; 또는 SELECT t1.dept_id, COUNT(*), AVG(age) FROM t_member@link1 t1, t_dept@link1 t2 WHERE t1.dept_id = t2.dept_id GROUP BY t1.dept_id HAVING t1.dept_id >= 0; < 질의 3> link1 이가리키는원격서버의 t_member 와 t_dept 테이블을조인하여전체사원을알아내고, 이사원들중나이가 58 Database Link User s Manual
59 30 세보다작은사원중에서 ID 가큰순으로세명의사원을뽑아 이름, 나이, 전체사원의나이의합을구하라. SELECT t1.name, t1.age ( SELECT * FROM REMOTE_TABLE( link1, 'select sum(age) from t_member' ) ) sum FROM REMOTE_TABLE( link1, 'select dept_id, member_id, dept_name, age from t_member where age < 30' ) t1, REMOTE_TABLE( link1, 'select dept_id, dept_name, from t_dept' ) t2 WHERE t1.dept_id = t2.dept_id AND t1.age < 30 ORDER BY t1.member_id DESC LIMIT 3; 또는 SELECT t1.name, t1.age ( SELECT SUM(age) FROM t_member@link1 ) sum FROM t_member@link1 t1, ( SELECT dept_name, dept_id FROM t_dept@link1 ) t2 WHERE t1.dept_id = t2.dept_id AND t1.age < 30 ORDER BY t1.member_id DESC LIMIT 3; < 질의 4> link1 이가리키는원격서버의 t2 테이블에서이름과 나이를가져와서지역서버의 t1 테이블에삽입하라. INSERT INTO t1 SELECT * FROM REMOTE_TABLE( link1, 'select name, age from t2' ); 또는 INSERT INTO t1 SELECT name, age FROM t2@link1; 데이터베이스링크사용법 59
60 REMOTE_EXECUTE_IMMEDIATE REMOTE_EXECUTE_IMMEDIATE 프로시저는입력한 SQL 문을데이터베이스링크를통해원격서버에서수행한다. SELECT 를제외한 DML 문이나 DDL 문, DCL 문의수행이가능하다. 이프로시저로는파라미터마커가포함된 SQL 문을수행할수없다. 구문 REMOTE_EXECUTE_IMMEDIATE ( dblink_name IN VARCHAR, statement_text IN VARCHAR ); 파라미터 이름 입출력 데이터타입 설명 dblink_name IN VARCHAR 데이터베이스링크객체의이름 statement_text IN VARCHAR 원격서버에서수행할 SQL 구문 반환값 프로시저이므로반환값이없다. 예제 < 질의 1> link1 이가리키는원격서버에테이블 remote_t 를 생성하고, 레코드를삽입한후테이블을제거한다. exec REMOTE_EXECUTE_IMMEDIATE( 'link1', 'create table remote_t( c1 integer )' ); exec REMOTE_EXECUTE_IMMEDIATE( 'link1', 'insert into remote_t values (10)' ); exec REMOTE_EXECUTE_IMMEDIATE( 'link1', 'insert into remote_t values (20)' ); exec REMOTE_EXECUTE_IMMEDIATE( 'link1', 'insert into remote_t values (30)' ); exec REMOTE_EXECUTE_IMMEDIATE( 'link1', 'drop table remote_t' ); 60 Database Link User s Manual
61 바인딩지원 REMOTE 함수 이절은파라미터바인딩을지원하는 pass-through 방식의 REMOTE 함수를기술한다. REMOTE_ALLOC_STATEMENT 원격서버에서수행할 SQL 문을준비 (prepare) 한다. 이함수는저장프로시저또는저장함수내에서만사용할수있다. 구문 BIGINT REMOTE_ALLOC_STATEMENT ( dblink_name IN VARCHAR, statement_text IN VARCHAR ); 파라미터이름 입출력 데이터타입 설명 dblink_name IN VARCHAR 데이터베이스링크객체의이름 statement_text IN VARCHAR 원격서버에서수행할 SQL 구문 반환값 예제 함수수행에성공하면 statement ID 가반환되고, 그렇지않으면 음의정수가반환된다. < 질의 1> link1 이가리키는원격서버의 t1 테이블에 c1 칼럼의 값이 20 인레코드의 c2 칼럼값을구하는저장프로시저를생성하라. 단, c1 칼럼값의조건검색에파라미터바인딩을사용하라. CREATE OR REPLACE PROCEDURE proc1 AS statement_id BIGINT; row_cnt INTEGER; result INTEGER; col_value FLOAT(38); BEGIN statement_id := REMOTE_ALLOC_STATEMENT( 'link1', 'select c2 from t1 where c1 =?' ); result := REMOTE_BIND_VARIABLE( 'link1', statement_id, 1, '20' ); IF result > 0 THEN 데이터베이스링크사용법 61
62 result := REMOTE_EXECUTE_STATEMENT( 'link1', statement_id ); LOOP result := REMOTE_NEXT_ROW( 'link1', statement_id ); EXIT WHEN result < 0; col_value := REMOTE_GET_COLUMN_VALUE_FLOAT( 'link1', statement_id, 1, 38 ); END LOOP; result := REMOTE_FREE_STATEMENT( 'link1', statement_id ); END IF; END; / REMOTE_BIND_VARIABLE SQL 구문의파라미터마커에값을바인딩한다. 이함수는저장프로시저또는저장함수내에서만사용할수있다. 구문 파라미터 INTEGER REMOTE_BIND_VARIABLE ( dblink_name IN VARCHAR, statement_id IN BIGINT, parameter_number IN VARCHAR, value IN VARCHAR ); 이름입출력데이터타입설명 dblink_name IN VARCHAR 데이터베이스링크객체의이름 statement_id IN BIGINT Statement ID parameter_number IN INTEGER SQL 구문에서값을바인딩할 value IN VARCHAR 바인딩할값 반환값 파라미터의번호순서. 1 부터시작 예제 음수가반환되면실패를의미하고, 그렇지않으면성공을의미한다. REMOTE_ALLOC_STATEMENT 의예제를참고하라. 62 Database Link User s Manual
63 REMOTE_EXECUTE_STATEMENT 준비된 SQL 구문을원격서버에서수행한다. 이함수는저장프로시저또는저장함수내에서만사용할수있다. 구문 INTEGER REMOTE_EXECUTE_STATEMENT ( dblink_name IN VARCHAR, statement_id IN BIGINT ); 파라미터 이름 입출력 데이터타입 설명 dblink_name IN VARCHAR 데이터베이스링크객체의이름 statement_id IN BIGINT 수행할 Statement ID 반환값 음수가반환되면실패를의미한다. 음수가아닌값이반환되면 DML 문을수행한경우에는영향을받은행의개수를, DDL 문이나 SELECT 문의경우에는성공을의미한다. 예제 REMOTE_ALLOC_STATEMENT 의예제를참고하라. REMOTE_FREE_STATEMENT 수행이완료된구문을해제한다. 이함수는저장프로시저또는저장함수내에서만사용할수있다. 구문 INTEGER REMOTE_FREE_STATEMENT ( dblink_name IN VARCHAR, statement_id IN BIGINT ); 파라미터 이름 입출력 데이터타입 설명 dblink_name IN VARCHAR 데이터베이스링크객체의이름 데이터베이스링크사용법 63
64 statement_id IN BIGINT Statement ID 반환값 예제 음수가반환되면실패를, 음수가아닌값이반환되면성공을 의미한다. REMOTE_ALLOC_STATEMENT 의예제를참고하라. REMOTE_GET_COLUMN_VALUE_CHAR REMOTE_NEXT_ROW 함수로행의위치를정한다음, 행을구성하는칼럼들중 CHAR 타입의칼럼값을얻어오기위해사용된다. 이함수는저장프로시저또는저장함수내에서만사용할수있다. 구문 CHAR(char_size) REMOTE_GET_COLUMN_CHAR ( dblink_name IN VARCHAR, statement_id IN BIGINT, column_number IN INTEGER, char_size IN INTEGER ); 파라미터 이름 입출력 데이터타입 설명 dblink_name IN VARCHAR 데이터베이스링크객체의이름 statement_id IN BIGINT 수행할 Statement ID column_number IN INTEGER 행내에서칼럼의순서. 1부터시작. char_size IN INTEGER 반환받을 CHAR 타입의크기 반환값 지정한칼럼의값이반환된다. REMOTE_GET_COLUMN_VALUE_VARCHAR REMOTE_NEXT_ROW 함수로행의위치를정한다음, 행을 64 Database Link User s Manual
65 구성하는칼럼들중 VARCHAR 타입의칼럼값을얻어오기위해 사용된다. 이함수는저장프로시저또는저장함수내에서만사용할 수있다. 구문 VARCHAR(char_size) REMOTE_GET_COLUMN_VARCHAR ( dblink_name IN VARCHAR, statement_id IN BIGINT, column_number IN INTEGER, varchar_size IN INTEGER ); 파라미터 이름 입출력 데이터타입 설명 dblink_name IN VARCHAR 데이터베이스링크객체의이름 statement_id IN BIGINT 수행할 Statement ID column_number IN INTEGER 행내에서칼럼의순서. 1부터시작. varchar_size IN INTEGER 반환받을 VARCHAR 타입의크기 반환값 지정한칼럼의값이반환된다. REMOTE_GET_COLUMN_VALUE_FLOAT REMOTE_NEXT_ROW 함수로행의위치를정한다음, 행을구성하는칼럼들중 FLOAT 타입의칼럼값을얻어오기위해사용된다. 이함수는저장프로시저또는저장함수내에서만사용할수있다. 구문 FLOAT(precision) REMOTE_GET_COLUMN_FLOAT ( dblink_name IN VARCHAR, statement_id IN BIGINT, column_number IN INTEGER, precision IN INTEGER ); 파라미터 이름 입출력 데이터타입 설명 dblink_name IN VARCHAR 데이터베이스링크객체의이름 데이터베이스링크사용법 65
66 statement_id IN BIGINT 수행할 Statement ID column_number IN INTEGER 행내에서칼럼의순서. 1부터시작. precision IN INTEGER 반환받을 FLOAT 타입의 precision 반환값 예제 지정한칼럼의값이반환된다. REMOTE_ALLOC_STATEMENT 의예제를참고하라. REMOTE_GET_COLUMN_VALUE_SMALLINT REMOTE_NEXT_ROW 함수로행의위치를정한다음, 행을구성하는칼럼들중 SMALLILNT 타입의칼럼값을얻어오기위해사용된다. 이함수는저장프로시저또는저장함수내에서만사용할수있다. 구문 SMALLINT REMOTE_GET_COLUMN_SMALLINT ( dblink_name IN VARCHAR, statement_id IN BIGINT, column_number IN INTEGER ); 파라미터 이름 입출력 데이터타입 설명 dblink_name IN VARCHAR 데이터베이스링크객체의이름 statement_id IN BIGINT 수행할 Statement ID column_number IN INTEGER 행내에서칼럼의순서. 1부터시작. 반환값 지정한칼럼의값이반환된다. REMOTE_GET_COLUMN_VALUE_INTEGER REMOTE_NEXT_ROW 함수로행의위치를정한다음, 행을 66 Database Link User s Manual
67 구성하는칼럼들중 INTEGER 타입의칼럼값을얻어오기위해 사용된다. 이함수는저장프로시저또는저장함수내에서만사용할 수있다. 구문 INTEGER REMOTE_GET_COLUMN_INTEGER ( dblink_name IN VARCHAR, statement_id IN BIGINT, column_number IN INTEGER ); 파라미터 이름 입출력 데이터타입 설명 dblink_name IN VARCHAR 데이터베이스링크객체의이름 statement_id IN BIGINT 수행할 Statement ID column_number IN INTEGER 행내에서칼럼의순서. 1부터시작. 반환값 지정한칼럼의값이반환된다. REMOTE_GET_COLUMN_VALUE_BIGINT REMOTE_NEXT_ROW 함수로행의위치를정한다음, 행을구성하는칼럼들중 BIGINT 타입의칼럼값을얻어오기위해사용된다. 이함수는저장프로시저또는저장함수내에서만사용할수있다. 구문 BIGINT REMOTE_GET_COLUMN_BIGINT ( dblink_name IN VARCHAR, statement_id IN BIGINT, column_number IN INTEGER ); 파라미터 이름 입출력 데이터타입 설명 dblink_name IN VARCHAR 데이터베이스링크객체의이름 statement_id IN BIGINT 수행할 Statement ID column_number IN INTEGER 행내에서칼럼의순서. 1부터시작. 데이터베이스링크사용법 67
68 반환값 지정한칼럼의값이반환된다. REMOTE_GET_COLUMN_VALUE_REAL REMOTE_NEXT_ROW 함수로행의위치를정한다음, 행을구성하는칼럼들중 REAL 타입의칼럼값을얻어오기위해사용된다. 이함수는저장프로시저또는저장함수내에서만사용할수있다. 구문 REAL REMOTE_GET_COLUMN_REAL ( dblink_name IN VARCHAR, statement_id IN BIGINT, column_number IN INTEGER ); 파라미터 이름 입출력 데이터타입 설명 dblink_name IN VARCHAR 데이터베이스링크객체의이름 statement_id IN BIGINT 수행할 Statement ID column_number IN INTEGER 행내에서칼럼의순서. 1부터시작. 반환값 지정한칼럼의값이반환된다. REMOTE_GET_COLUMN_VALUE_DOUBLE REMOTE_NEXT_ROW 함수로행의위치를정한다음, 행을구성하는칼럼들중 DOUBLE 타입의칼럼값을얻어오기위해사용된다. 이함수는저장프로시저또는저장함수내에서만사용할수있다. 구문 DOUBLE REMOTE_GET_COLUMN_DOUBLE ( dblink_name IN VARCHAR, 68 Database Link User s Manual
69 statement_id IN BIGINT, column_number IN INTEGER ); 파라미터 이름 입출력 데이터타입 설명 dblink_name IN VARCHAR 데이터베이스링크객체의이름 statement_id IN BIGINT 수행할 Statement ID column_number IN INTEGER 행내에서칼럼의순서. 1부터시작. 반환값 지정한칼럼의값이반환된다. REMOTE_GET_COLUMN_VALUE_DATE REMOTE_NEXT_ROW 함수로행의위치를정한다음, 행을구성하는칼럼들중 DATE 타입의칼럼값을얻어오기위해사용된다. 이함수는저장프로시저또는저장함수내에서만사용할수있다. 구문 DATE REMOTE_GET_COLUMN_DATE ( dblink_name IN VARCHAR, statement_id IN BIGINT, column_number IN INTEGER ); 파라미터 이름 입출력 데이터타입 설명 dblink_name IN VARCHAR 데이터베이스링크객체의이름 statement_id IN BIGINT 수행할 Statement ID column_number IN INTEGER 행내에서칼럼의순서. 1부터시작. 반환값 지정한칼럼의값이반환된다. 데이터베이스링크사용법 69
70 REMOTE_NEXT_ROW REMOTE_EXECUTE_STATEMENT 함수로 SELECT 문을수행한경우, 결과집합에서행의위치를다음으로이동한다. 이함수는저장프로시저또는저장함수내에서만사용할수있다. 구문 INTEGER REMOTE_NEXT_ROW ( dblink_name IN VARCHAR, statement_id IN BIGINT ); 파라미터 이름 입출력 데이터타입 설명 dblink_name IN VARCHAR 데이터베이스링크객체의이름 statement_id IN BIGINT 수행할 Statement ID 반환값 예제 음수가반환되면실패를의미하고, 그렇지않으면성공을의미한다. REMOTE_ALLOC_STATEMENT 의예제를참고하라. REMOTE 함수 다음에추가 70 Database Link User s Manual
71 일괄처리 (Batch) 지원 REMOTE 함수 이절은알티베이스데이터베이스링크가일괄처리 (Batch) 할수있는 Remote 함수와관련함수를기술한다. 이함수는저장프로시저 내에서만사용할수있다. 일괄처리방법으로원격서버에쿼리를 수행할때는아래와같은순서대로사용할것을권장한다. 1. REMOTE_ALLOC_STATEMENT_BATCH 2. REMOTE_BIND_VARIABLE_BATCH 3. REMOTE_ADD_BATCH 4. REMOTE_EXECUTE_BATCH 5. REMOTE_GET_RESULT_COUNT_BATCH 6. REMOTE_GET_RESULT_BATCH 7. REMOTE_FREE_STATEMENT_BATCH IS_ARRAY_BOUND 배열타입의인자가바인드되었는지확인한다. 구문 파라미터 BOOLEAN variable: = IS_ARRAY_BOUND (); 없음 반환값 예제 배열타입의인자가바인드되면 TRUE 를반환하며, 그렇지않으면 FALSE 를반환한다. < 질의 > link1 이가리키는원격서버의 t1 테이블에값을삽입하는 저장프로시저를생성하라. 단, 데이터를삽입시파라미터바인딩을 사용하라. isql> CREATE OR REPLACE PROCEDURE PROC1( A1 IN INTEGER, A2 IN INTEGER ) 데이터베이스링크사용법 71
72 AS result INTEGER; i INTEGER; count INTEGER; sum INTEGER := 0; BEGIN PRINTLN(' '); IF IS_ARRAY_BOUND() = TRUE THEN PRINTLN(' '); /* First bound */ IF IS_FIRST_ARRAY_BOUND() = TRUE THEN pkg1.stmtid := REMOTE_ALLOC_STATEMENT_BATCH( 'link1', 'insert into t1 values(?,?)'); PRINTLN('ALLOC BATCH'); END IF; PRINTLN(' '); /* Main Task */ /* INSERT INTO T1 VALUES (A1, A2); */ result := REMOTE_BIND_VARIABLE_BATCH( 'link1', pkg1.stmtid, 1, A1 ); result := REMOTE_BIND_VARIABLE_BATCH( 'link1', pkg1.stmtid, 2, A2 ); result := REMOTE_ADD_BATCH( 'link1', pkg1.stmtid ); /* Last bound */ IF IS_LAST_ARRAY_BOUND() = TRUE THEN result := REMOTE_EXECUTE_BATCH( 'link1', pkg1.stmtid ); count := REMOTE_GET_RESULT_COUNT_BATCH( 'link1', pkg1.stmtid ); FOR i IN 1.. count LOOP result := REMOTE_GET_RESULT_BATCH( 'link1', pkg1.stmtid, i ); sum := sum + result; END LOOP; PRINTLN('SUM is' sum); result := REMOTE_FREE_STATEMENT_BATCH( 'link1', pkg1.stmtid ); PRINTLN('FREE BATCH'); END IF; PRINTLN(' '); ELSE PRINTLN('NORMAL?'); END IF; END; / IS_FIRST_ARRAY_BOUND 배열타입의변수가처음바인드되었는지확인한다. 구문 BOOLEAN variable: = IS_FIRST_ARRAY_BOUND (); 72 Database Link User s Manual
73 파라미터 없음 반환값 배열타입의변수가바인드되었고최초수행이면 TRUE 를반환하고, 그렇지않으면 FALSE 를반환한다. 예제 IS_ARRAY_BOUND 의예제를참고하라. IS_LAST_ARRAY_BOUND 배열타입의변수가마지막으로바인드되었는지확인한다. 구문 BOOLEAN variable: = IS_LAST_ARRAY_BOUND (); 파라미터 반환값 없음 예제 배열타입의변수가바인드되었고마지막수행이면 TRUE 를 반환하고, 그렇지않으면 FALSE 를반환한다. IS_ARRAY_BOUND 의예제를참고하라. REMOTE_ADD_BATCH 일괄처리방식으로수행할 SQL 문을추가한다. 구문 INTEGER REMOTE_ADD_BATCH ( dblink_name IN VARCHAR, statement_id IN BIGINT); 데이터베이스링크사용법 73
74 파라미터 이름 입출력 데이터타입 설명 dblink_name IN VARCHAR 데이터베이스링크객체의이름 statement_id IN BIGINT Statement ID 반환값 예제 음수를반환하면실패를의미하고, 그렇지않으면성공을의미한다. IS_ARRAY_BOUND 의예제를참고하라. REMOTE_ALLOC_STATEMENT_BATCH 일괄처리를위한함수이며, SQL 문을수행하기위해 원격구문 id(statement ID) 를가져오는함수이다. 구문 BIGINT REMOTE_ALLOC_STATEMENT_BATCH ( dblink_name IN VARCHAR, statement_text IN VARCHAR); 파라미터 이름 입출력 데이터타입 설명 dblink_name IN VARCHAR 데이터베이스링크객체의이름 statement_text IN VARCHAR 원격서버에서수행할 SQL 구문 반환값 예제 성공하면 statement ID 를반환하고, 그렇지않으면음수를반환하다. IS_ARRAY_BOUND 의예제를참고하라. REMOTE_BIND_VARIABLE_BATCH 일괄처리를위한함수이며, SQL 구문의파라미터마커에값을 74 Database Link User s Manual
75 바인딩한다. 구문 INTEGER REMOTE_BIND_VARIABLE_BATCH ( dblink_name IN VARCHAR, statement_id IN BIGINT, parameter_number IN VARCHAR, value IN VARCHAR); 파라미터 이름 입출력 데이터타입 설명 dblink_name IN VARCHAR 데이터베이스링크객체의이름 statement_id IN BIGINT Statement ID parameter_number IN VARCHAR SQL 구문에서값을바인딩할파라미터의번호순서. 1부터시작 Value IN VARCHAR 바인딩할값 반환값 예제 음수를반환하면실패를의미하고, 그렇지않으면성공을의미한다. IS_ARRAY_BOUND 의예제를참고하라. REMOTE_EXECUTE_BATCH REMOTE_ALLOC_STATEMENT_BATCH 함수로얻은 원격구문 id(statement ID) 를이함수의인자값으로사용하여 SQL 문을원격서버에일괄처리방식으로실제수행한다. 파라미터 INTEGER REMOTE_STATEMENT_BATCH ( dblink_name IN VARCHAR, statement_id IN BIGINT ); 파라미터 이름 입출력 데이터타입 설명 dblink_name IN VARCHAR 데이터베이스링크객체의이름 statement_id IN BIGINT Statement ID 데이터베이스링크사용법 75
76 반환값 음수를반환하면실패를의미하고, 그렇지않으면성공을의미한다. 예제 IS_ARRAY_BOUND 의예제를참고하라. REMOTE_FREE_STATEMENT_BATCH 일괄처리방식으로수행한구문을해제한다. 구문 INTEGER REMOTE_FREE_STATEMENT_BATCH ( dblink_name IN VARCHAR, statement_id IN BIGINT ); 파라미터 이름 입출력 데이터타입 설명 dblink_name IN VARCHAR 데이터베이스링크객체의이름 statement_id IN BIGINT Statement ID 반환값 예제 음수를반환하면실패를의미하고, 그렇지않으면성공을의미한다. IS_ARRAY_BOUND 의예제를참고하라. REMOTE_GET_RESULT_COUNT_BATCH REMOTE_EXECUTE_BATCH 함수를수행한후에일괄처리로수행된 SQL 구문의개수를확인한다. 구문 INTEGER REMOTE_GET_RESULT_COUNT_BATCH ( dblink_name IN VARCHAR, statement_id IN BIGINT); 76 Database Link User s Manual
77 파라미터 이름 입출력 데이터타입 설명 dblink_name IN VARCHAR 데이터베이스링크객체의이름 statement_id IN BIGINT Statement ID 반환값 예제 음수를반환하면실패를의미하고, 그렇지않으면성공을의미한다. IS_ARRAY_BOUND 의예제를참고하라. REMOTE_GET_RESULT_BATCH REMOTE_EXECUTE_BATCH 함수를수행한후에일괄처리로수행된 SQL 구문의갱신결과를확인한다 구문 INTEGER REMOTE_GET_RESULT_BATCH ( dblink_name IN VARCHAR, statement_id IN BIGINT, index IN INTEGER); 파라미터 이름 입출력 데이터타입 설명 dblink_name IN VARCHAR 데이터베이스링크객체의이름 statement_id IN BIGINT Statement ID index IN INTEGER 일괄처리로수행된 SQL 구문의순서번호 ( 인덱스 ) 반환값 예제 음수를반환하면실패를의미하고, 그렇지않으면입력파라미터인 인덱스가가리키는 SQL 구문의수행결과 (row count) 를반환한다. IS_ARRAY_BOUND 의예제를참고하라. 데이터베이스링크사용법 77
78 78 Database Link User s Manual
79 COMMIT FORCE DATABASE LINK 글로벌트랜잭션에서네트워크장애가발생하면, 원격서버의트랜잭션커밋이실패할수있다. 이때 COMMIT FORCE DATABASE LINK 구문을수행하면, 글로벌트랜잭션을커밋실패로처리하지않고커밋가능한서버에만트랜잭션을강제로커밋한다. DBLINK_GLOBAL_TRANSACTION_LEVEL 프로퍼티가 2(Two-Phase Commit) 로설정되어있을때이구문을수행하면 COMMIT 을 수행한것과동일하다. 구문 COMMIT FORCE DATABASE LINK; 예제 isql> COMMIT FORCE DATABASE LINK; 데이터베이스링크사용법 79
80 ROLLBACK FORCE DATABASE LINK 글로벌트랜잭션에서네트워크장애가발생하면, 원격서버의트랜잭션롤백이실패할수있다. 이때 ROLLBACK FORCE DATABASE LINK 구문을사용하면, 글로벌트랜잭션자체를롤백실패로처리하는대신, 롤백이가능한서버만이라도트랜잭션을강제로롤백한다. DBLINK_GLOBAL_TRANSACTION_LEVEL 프로퍼티가 2(Two-Phase Commit) 로설정되어있을때이구문을수행하면 ROLLBACK 을 수행한것과동일하다. 구문 ROLLBACK FORCE DATABASE LINK; 예제 isql> ROLLBACk FORCE DATABASE LINK; 80 Database Link User s Manual
81 A. 부록 : 프로퍼티및데이터 딕셔너리 이부록은데이터베이스링크와관련하여사용되는각종프로퍼티및 데이터딕셔너리를기술한다. 부록 A: 프로퍼티및데이터딕셔너리 81
82 DB Link 관련데이터딕셔너리 데이터베이스링크의현재상태를보여주는메타테이블과성능뷰는 다음과같다. 자세한설명은 General Reference 를참고한다. 메타테이블 SYS_DATABASE_LINKS_ 성능뷰 (Performance View) V$DBLINK_ALTILINKER_STATUS V$DBLINK_DATABASE_LINK_INFO V$DBLINK_GLOBAL_TRANSACTION_INFO V$DBLINK_LINKER_CONTROL_SESSION_INFO V$DBLINK_LINKER_DATA_SESSION_INFO V$DBLINK_LINKER_SESSION_INFO V$DBLINK_NOTIFIER_TRANSACTION_INFO V$DBLINK_REMOTE_STATEMENT_INFO V$DBLINK_REMOTE_TRANSACTION_INFO 82 Database Link User s Manual
83 프로퍼티파일 Altibase 데이터베이스링크를사용하기위해서는 Altibase 서버의프로퍼티파일인 altibase.properties 와 AltiLinker 의프로퍼티파일인 dblink.conf 를사용목적에맞게수정해야한다. altibase.properties 데이터베이스링크와관련된프로퍼티는다음과같으며, 프로퍼티에대한자세한설명은 General Reference 를참고한다. AUTO_REMOTE_EXEC DBLINK_ENABLE DBLINK_GLOBAL_TRANSACTION_LEVEL DBLINK_RECOVERY_MAX_LOGFILE DBLINK_REMOTE_STATEMENT_AUTOCOMMIT DBLINK_REMOTE_TABLE_BUFFER_SIZE DBLINK_DATA_BUFFER_BLOCK_SIZE DBLINK_DATA_BUFFER_BLOCK_COUNT DBLINK_DATA_BUFFER_ALLOC_RATIO DBLINK_ALTILINKER_CONNECT_TIMEOUT dblink.conf dblink.conf 파일은 AltiLinker 를위한프로퍼티파일이다. 이파일에설정가능한프로퍼티는아래와같다. ALTILINKER_ENABLE ALTILINKER_PORT_NO ALTILINKER_RECEIVE_TIMEOUT ALTILINKER_REMOTE_NODE_RECEIVE_TIMEOUT ALTILINKER_QUERY_TIMEOUT ALTILINKER_NON_QUERY_TIMEOUT ALTILINKER_THREAD_COUNT ALTILINKER_THREAD_SLEEP_TIME ALTILINKER_REMOTE_NODE_SESSION_COUNT ALTILINKER_TRACE_LOG_DIR ALTILINKER_TRACE_LOG_FILE_SIZE ALTILINKER_TRACE_LOGGING_LEVEL 부록 A: 프로퍼티및데이터딕셔너리 83
84 ALTILINKER_JVM_BIT_DATA_MODEL_VALUE ALTILINKER_JVM_MEMORY_POOL_INIT_SIZE ALTILINKER_JVM_MEMORY_POOL_MAX_SIZE TARGETS/NAME TARGETS/JDBC_DRIVER TARGETS/CONNECTION_URL TARGETS/USER TARGETS/PASSWORD TARGETS/XADATASOURCE_CLASS_NAME TARGETS/XADATASOURCE_URL_SETTER_NAME 다음은 dblink.conf 파일의예제이다. ALTILINKER_ENABLE = 1 ALTILINKER_PORT_NO = ALTILINKER_RECEIVE_TIMEOUT = 100 ALTILINKER_REMOTE_NODE_RECEIVE_TIMEOUT = 100 ALTILINKER_QUERY_TIMEOUT = 10 ALTILINKER_NON_QUERY_TIMEOUT = 20 ALTILINKER_THREAD_COUNT = 10 ALTILINKER_THREAD_SLEEP_TIME = 200 ALTILINKER_REMOTE_NODE_SESSION_COUNT = 100 ALTILINKER_TRACE_LOG_DIR = "?/trc" ALTILINKER_TRACE_LOG_FILE_SIZE = 30 ALTILINKER_TRACE_LOG_FILE_COUNT = 9 ALTILINKER_TRACE_LOGGING_LEVEL = 3 ALTILINKER_JVM_MEMORY_POOL_INIT_SIZE = 128 ALTILINKER_JVM_MEMORY_POOL_MAX_SIZE = 512 ALTILINKER_JVM_BIT_DATA_MODEL_VALUE = 1 TARGETS = ( ( NAME = "ora1" JDBC_DRIVER = "/home1/applys/work/natc/tc/server/dk/remoteserver/jdbc Drivers/ojdbc1 CONNECTION_URL = "jdbc:oracle:thin:@dbdm.altibase.in:1521:orcl" USER = "new_dblink" PASSWORD = "new_dblink" ), ( NAME = "alti2" JDBC_DRIVER = "/home/user/altibase_home/lib/altibase.jar" CONNECTION_URL = "jdbc:altibase:// :20600/mydb" XADATASOURCE_CLASS_NAME= "oracle.jdbc.xa.oraclexadatasource XADATASOURCE_URL_SETTER_NAME = "seturl" ) ) 각프로퍼티에대한상세한설명은다음절에서기술한다. 84 Database Link User s Manual
목차 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
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 informationALTIBASE 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목차 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 informationDBMS & 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 information13주-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 informationMicrosoft PowerPoint - 10Àå.ppt
10 장. DB 서버구축및운영 DBMS 의개념과용어를익힌다. 간단한 SQL 문법을학습한다. MySQL 서버를설치 / 운영한다. 관련용어 데이터 : 자료 테이블 : 데이터를표형식으로표현 레코드 : 테이블의행 필드또는컬럼 : 테이블의열 필드명 : 각필드의이름 데이터타입 : 각필드에입력할값의형식 학번이름주소연락처 관련용어 DB : 테이블의집합 DBMS : DB 들을관리하는소프트웨어
More informationAltibase 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 informationAltibase 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 informationALTIBASE HDB Patch Notes
ALTIBASE HDB 5.3.3.93 Patch Notes Table of Contents BUG-27950 ALL PRIVILEGES 권한을가진계정이다른계정의테이블에 Foreign Key 를 생성하지못한다. 3 BUG-38105 PASSWORD_LIFE_TIME 경과후유예기간 (PASSWORD_GRACE_TIME) 내에 접속을시도할경우알림메시지를발생해야한다.
More information문서 템플릿
HDSI 툴분석 [sql injection 기술명세서 ] Sql injection 기술명세서 Ver. 0.01 이문서는 sql injection 기술명세가범위입니다. Copyrights Copyright 2009 by CanvasTeam@SpeeDroot( 장경칩 ) All Rights Reserved. 장경칩의사전승인없이본내용의전부또는일부에대한복사, 전재,
More information쉽게 풀어쓴 C 프로그래밊
Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.
More informationJDBC 소개및설치 Database Laboratory
JDBC 소개및설치 JDBC } What is the JDBC? } JAVA Database Connectivity 의약어 } 자바프로그램안에서 SQL 을실행하기위해데이터베이스를연결해주는응용프로그램인터페이스 } 연결된데이터베이스의종류와상관없이동일한방법으로자바가데이터베이스내에서발생하는트랜잭션을제어할수있도록하는환경을제공 2 JDBC Driver Manager }
More informationInsertColumnNonNullableError(#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 informationWINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역
WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역시쉽게해결할수있다. 이번화이트페이퍼에서는 Window Function 중순위 RANK, ROW_NUMBER,
More information@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 informationMicrosoft 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 information10.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 information6장. SQL
학습목표 SQL이 무엇인지 개념을 설명 테이블을 생성, 변경, 제거할 할 수 있다. 수 있다. 데이터를 검색, 갱신, 삽입, 삭 제할 수 있다. 뷰, 시스템 카탈로그, 저장 프 로시저, 트리거에 대한 개념 을 설명할 수 있다. 2 목차 SECTION 01 SQL의 개요 11 SQL의 역사 12 SQL의 유형별 종류 SECTION 0 21 스키마 22 테이블
More informationchap 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 informationMicrosoft 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강의 개요
DDL TABLE 을만들자 웹데이터베이스 TABLE 자료가저장되는공간 문자자료의경우 DB 생성시지정한 Character Set 대로저장 Table 생성시 Table 의구조를결정짓는열속성지정 열 (Clumn, Attribute) 은이름과자료형을갖는다. 자료형 : http://dev.mysql.cm/dc/refman/5.1/en/data-types.html TABLE
More informationAltibase Installation Manual
ALTIBASE HDB Application Development Windows ODBC Driver Installer User s Guide Release 6.3.1 (April 17, 2015) ----------------------------------------------------------- ALTIBASE Application Development
More informationA Hierarchical Approach to Interactive Motion Editing for Human-like Figures
단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct
More informationSpring Boot/JDBC JdbcTemplate/CRUD 예제
Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.
More informationPowerPoint Presentation
6 장 SQL (section 4-6) 목차 SECTION 01 SQL 의개요 1-1 SQL의역사 1-2 SQL의유형별종류 SECTION 02 데이터정의어 (DDL) 2-1 스키마 2-2 테이블생성 (CREATE TABLE) 2-3 테이블변경 (ALTER TABLE) 2-4 테이블제거 (DROP TABLE) 2-5 제약조건 SECTION 03 데이터조작어 (DML)
More information슬라이드 제목 없음
MS SQL Server 마이크로소프트사가윈도우운영체제를기반으로개발한관계 DBMS 모바일장치에서엔터프라이즈데이터시스템에이르는다양한플랫폼에서운영되는통합데이터관리및분석솔루션 2 MS SQL Server 개요 3.1 MS SQL Server 개요 클라이언트-서버모델을기반으로하는관계 DBMS 로서윈도우계열의운영체제에서만동작함 오라클관계 DBMS 보다가격이매우저렴한편이고,
More informationMicrosoft PowerPoint - 3장-MS SQL Server.ppt [호환 모드]
MS SQL Server 마이크로소프트사가윈도우운영체제를기반으로개발한관계 DBMS 모바일장치에서엔터프라이즈데이터시스템에이르는다양한플랫폼에서운영되는통합데이터관리및분석솔루션 2 MS SQL Server 개요 3.1 MS SQL Server 개요 클라이언트-서버모델을기반으로하는관계 DBMS로서윈도우계열의운영체제에서만동작함 오라클관계 DBMS보다가격이매우저렴한편이고,
More informationMySQL-.. 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 informationORANGE 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 informationC++ 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 informationuntitled
(shared) (integrated) (stored) (operational) (data) : (DBMS) :, (database) :DBMS File & Database - : - : ( : ) - : - : - :, - DB - - -DBMScatalog meta-data -DBMS -DBMS - -DBMS concurrency control E-R,
More information슬라이드 1
Tadpole for DB 1. 도구개요 2. 설치및실행 4. 활용예제 1. 도구개요 도구명 소개 Tadpole for DB Tools (sites.google.com/site/tadpolefordb/) 웹기반의데이터베이스를관리하는도구 Database 스키마및데이터관리 라이선스 LGPL (Lesser General Public License) 특징 주요기능
More informationTITLE
CSED421 Database Systems Lab MySQL Basic Syntax SQL DML & DDL Data Manipulation Language SELECT UPDATE DELETE INSERT INTO Data Definition Language CREATE DATABASE ALTER DATABASE CREATE TABLE ALTER TABLE
More information- 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 informationCloud 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 informationPowerPoint 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 informationI T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r
I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r -------------------------------------------------------------------- -- 1. : ts_cre_bonsa.sql -- 2. :
More information슬라이드 제목 없음
4.2 SQL 개요 SQL 개요 SQL은현재 DBMS 시장에서관계 DBMS가압도적인우위를차지하는데중요한요인의하나 SQL은 IBM 연구소에서 1974년에 System R이라는관계 DBMS 시제품을연구할때관계대수와관계해석을기반으로, 집단함수, 그룹화, 갱신연산등을추가하여개발된언어 1986년에 ANSI( 미국표준기구 ) 에서 SQL 표준을채택함으로써 SQL이널리사용되는데기여
More informationWindows 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 informationSQL 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 informationTablespace On-Offline 테이블스페이스 온라인/오프라인
2018/11/10 12:06 1/2 Tablespace On-Offline 테이블스페이스온라인 / 오프라인 목차 Tablespace On-Offline 테이블스페이스온라인 / 오프라인... 1 일반테이블스페이스 (TABLESPACE)... 1 일반테이블스페이스생성하기... 1 테이블스페이스조회하기... 1 테이블스페이스에데이터파일 (DATA FILE) 추가
More information다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
다양한예제로쉽게배우는 오라클 SQL 과 PL/SQL 서진수저 9 장인덱스를배웁니다 1 1. 인덱스란무엇인가? 2 - ROWID ( 주소 ) 조회하기 SCOTT>SELECT ROWID, empno, ename 2 FROM emp 3 WHERE empno=7902 ; ROWID EMPNO ENAME --------------------------------- ----------
More informationuntitled
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 informationResult Cache 동작원리및활용방안 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 ORACLE DBMS 를사용하는시스템에서 QUERY 성능은무엇보다중요한요소중하나이며그 성능과직접적인관련이있는것이 I/O 이다. 많은건수를 ACCESS 해야만원하는결과값을얻을수있는 QUER
Result Cache 동작원리및활용방안 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 ORACLE DBMS 를사용하는시스템에서 QUERY 성능은무엇보다중요한요소중하나이며그 성능과직접적인관련이있는것이 I/O 이다. 많은건수를 ACCESS 해야만원하는결과값을얻을수있는 QUERY 을실행하게된다면 BLOCK I/O 가많이발생하게된다. 이런이유로 QUERY 의성능은좋지못할것이다.
More information슬라이드 제목 없음
뷰와시스템카탈로그 관계데이터베이스시스템의뷰 (view) 는다른릴레이션으로부터유도된릴레이션 (derived relation) 으로서 ANSI/SPARC 3단계아키텍처의외부뷰와다름 뷰는관계데이터베이스시스템에서데이터베이스의보안메카니즘으로서, 복잡한질의를간단하게표현하는수단으로서, 데이터독립성을높이기위해서사용됨 시스템카탈로그는시스템내의객체 ( 기본릴레이션, 뷰, 인덱스,
More information슬라이드 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[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi
2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,
More informationCommit_Wait / Commit_Logging 두파라미터를통해 Log File Sync 대기시간을감소시킬수있다는것은놀라움과의아함을동시에느낄수있다. 단지파라미터의수정을통해당연히대기해야하는시간을감축한다는것은분명성능을개선해야하는입장에서는놀라운일이될것이다. 반면, 그에따
Commit Wait Class 대기시간감소방안 엑셈컨설팅본부 /DB 컨설팅팀박준연 개요 Wait Class 중 Commit 카테고리에해당하는 Wait Event 에의한대기현상으로 DB 시스템의성능저하현상이발생하는것은종종경험할수있다. 그중대표적인 Wait Event 는 Log File Sync 이다. 실제로대부분의 DB 시스템의 Top 5 Wait Event
More information슬라이드 1
17.1 데이터베이스트리거 17.2 DML 트리거 17.3 DML 트리거작성 17.4 DML 트리거관리 17.5 INSTEAD OF 트리거 17.6 NON-DML 트리거 17.1 데이터베이스트리거 데이터베이스트리거 (database trigger) 테이블에어떤조작이가해졌을때에미리지정해놓은처리를자동으로실행시키는블록 PL/SQL 블록으로작성, 오라클데이터베이스에저장
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
More informationPowerPoint 프레젠테이션
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 informationFileMaker 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 informationMicrosoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt
변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short
More information5장 SQL 언어 Part II
5 장 SQL 언어 Part II 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 5 장 SQL 언어 Part II 1 / 26 데이터조작문 데이터검색 : SELECT 문데이터추가 : INSERT 문데이터수정 : UPDATE 문데이터삭제 : DELETE 문 박창이 ( 서울시립대학교통계학과 ) 5 장 SQL 언어 Part II 2 / 26 SELECT
More informationMicrosoft 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 informationALTIBASE 사용자가이드 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 informationC# 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<C1A62038B0AD20B0ADC0C7B3EBC6AE2E687770>
제 8강 SQL: 관계데이터베이스언어 강의목표 관계데이타베이스언어로서상용 DBMS에서가장널리사용되는 SQL의동작원리에관하여학습하고, 이를이용하여다양한질의문을작성하는방법을습득한다 기대효과 SQL의데이터정의기능을이해한다 SQL의데이터조작기능중질의기능을이해한다 SQL의데이터조작기능중데이터갱신기능을이해한다 SQL의데이터조작기능중뷰및인덱스관련기능을이해한다 SQL 의개요
More information단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL 결과에대해서 Oracle, SQL Server 순서로적으시오 TAB1 COL1 CHAR(10) COL2 CHAR(10) INSERT INTO TAB1 VALUES ('1',''); INSERT INT
Study Room Doc.03 : SQLD 예상문제 ( 단답형 ) 네이버 Cafe : 데이터베이스전문가포럼 Study Room http://cafe.naver.com/sqlpd SQLD 26,25,24,21 회기출문제를바탕으로작성 작성자 : 월야루 도움 : 빙수민외카페댓글 2017-11-30 단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL
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 informationMicrosoft 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이도경, 최덕재 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 informationBind 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슬라이드 1
CHAP 6: 큐 yicho@gachon.ac.kr 1 큐 (QUEUE) 큐 : 먼저들어온데이터가먼저나가는자료구조 선입선출 (FIFO: First-In First-Out) ( 예 ) 매표소의대기열 Ticket Box 전단 () 후단 () 2 큐 ADT 삽입과삭제는 FIFO 순서를따른다. 삽입은큐의후단에서, 삭제는전단에서이루어진다. 객체 : n 개의 element
More information歯sql_tuning2
SQL Tuning (2) SQL SQL SQL Tuning ROW(1) ROW(2) ROW(n) update ROW(2) at time 1 & Uncommitted update ROW(2) at time 2 SQLDBA> @ UTLLOCKT WAITING_SESSION TYPE MODE_REQUESTED MODE_HELD LOCK_ID1
More informationPowerPoint 프레젠테이션
실습문제 Chapter 05 데이터베이스시스템... 오라클로배우는데이터베이스개론과실습 1. 실습문제 1 (5 장심화문제 : 각 3 점 ) 6. [ 마당서점데이터베이스 ] 다음프로그램을 PL/SQL 저장프로시져로작성하고실행해 보시오. (1) ~ (2) 7. [ 마당서점데이터베이스 ] 다음프로그램을 PL/SQL 저장프로시져로작성하고실행해 보시오. (1) ~ (5)
More information1. 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 informationMicrosoft Word - FunctionCall
Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack
More information[ 목차 ] 5.1 데이터베이스프로그래밍개념 5.2 T-SQL T-SQL 문법 5.3 JAVA 프로그래밍 2
5 장 SQL 응용 데이터베이스실험실 1 [ 목차 ] 5.1 데이터베이스프로그래밍개념 5.2 T-SQL 5.2.1 T-SQL 문법 5.3 JAVA 프로그래밍 2 5.1 데이터베이스프로그래밍개념 프로그래밍 이라고하면프로그램소스를설계하고, 작성하고, 디버깅하는과정을말한다. 프로그램 혹은소프트웨어는컴퓨터에서주어진작업을하는명령어나열을말한다. 데이터베이스프로그래밍은명확한정의는없지만데이터베이스에데이터를정의하고,
More information17장 클래스와 메소드
17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는
More informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More informationMicrosoft 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 information8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )
8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 ) - DDL(Data Definition Language) : show, create, drop
More information다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
다양핚예제로쉽게배우는 오라클 SQL 과 PL/SQL 서진수저 10 장 view 를배웁니다 1 - View 란가상의테이블이다! 2 1. 단순 View (Simple View) SCOTT>CONN / AS SYSDBA; SYS>GRANT CREATE VIEW TO scott ; CREATE [OR REPLACE] [ FORCE NOFORCE] VIEW view
More information목차 목차 시스템요구사항... 3 하드웨어최저사양... 4 운영체제및플랫폼 릴리스정보 의새로운기능 변경사항 패키지 다운로드... 14
6.5.1 Release Notes (2015/05) 목차 목차... 2 1. 시스템요구사항... 3 하드웨어최저사양... 4 운영체제및플랫폼... 4 2. 릴리스정보... 5 2.1 6.5.1의새로운기능... 6 2.2 변경사항... 11 2.3 패키지... 13 2.4 다운로드... 14 1. 시스템요구사항 하드웨어최저사양 1GB RAM ( 권장 : 2GB)
More informationJVM 메모리구조
조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.
More informationALTIBASE HDB Patch Notes
ALTIBASE HDB 6.3.1.10.6 Patch Notes 목차 BUG-45060 offline replication start 와 replication drop 을동시에수행하는경우, replication start 가완료되지않았으면 replication drop 을수행하지못하도록수정하였습니다... 4 BUG-46193 메모리테이블의이중화병렬 sync
More information[Brochure] KOR_TunA
LG CNS LG CNS APM (TunA) LG CNS APM (TunA) 어플리케이션의 성능 개선을 위한 직관적이고 심플한 APM 솔루션 APM 이란? Application Performance Management 란? 사용자 관점 그리고 비즈니스 관점에서 실제 서비스되고 있는 어플리케이션의 성능 관리 체계입니다. 이를 위해서는 신속한 장애 지점 파악 /
More informationFileMaker 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 informationPowerPoint 프레젠테이션
Spider For MySQL 실전사용기 피망플러스유닛최윤묵 Spider For MySQL Data Sharding By Spider Storage Engine http://spiderformysql.com/ 성능 8 만 / 분 X 4 대 32 만 / 분 많은 DB 중에왜 spider 를? Source: 클라우드컴퓨팅구 선택의기로 Consistency RDBMS
More informationConnection 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 informationSKINFOSEC-CHR-028-ASP Mssql Cookie Sql Injection Tool 분석 보고서.doc
Asp Mssql Sql Injection Tool 분석보고서 이재곤 (x0saver@gmail.com) SK Infosec Co., Inc MSS 사업본부 / 침해대응센터모의해킹파트 Table of Contents 1. 개요... 3 2. 구성... 3 3. 분석... 4 3.1. 기능분석... 4 4. 공격원리...14 4.1 기본공격원리...14 4.2
More informationALTIBASE XDB Release Note APRIL 22, 2014
6.1.3 Release Note APRIL 22, 2014 목차 목차... 2 1. 시스템요구사항... 3 2. 릴리스정보... 4 2.1 6.1.3의주요기능... 4 2.2 변경사항... 8 데이터베이스버전... 8 호환성... 8 프로퍼티... 8 성능뷰... 8 에러메시지... 8 2.3 패키지... 9 2.4 다운로드... 10 위치... 10 설치...
More informationPowerPoint Template
JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것
More information학습목차 2.1 다차원배열이란 차원배열의주소와값의참조
- Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]
More informationPowerPoint 프레젠테이션
MySQL - 명령어 1. 데이터베이스관련명령 2. 데이터베이스테이블관련명령 3. SQL 명령의일괄실행 4. 레코드관련명령 5. 데이터베이스백업및복원명령 1. 데이터베이스관련명령 데이터베이스접속명령 데이터베이스접속명령 mysql -u계정 -p비밀번호데이터베이스명 C: > mysql -ukdhong p1234 kdhong_db 데이터베이스생성명령 데이터베이스생성명령
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배치프로그램에서튜닝대상 SQL 추출하기 엑셈컨설팅본부 /DB 컨설팅팀박성호 배치프로그램의성능문제를진단하기위해트레이스를사용할수없고, 개별 SQL 에대한성 능점검은비효율적인경우에어떻게배치프로그램의성능문제를제대로파악하고개선안을도 출할것인가? 복잡한로직을가지고있는프로그램 (
배치프로그램에서튜닝대상 SQL 추출하기 엑셈컨설팅본부 /DB 컨설팅팀박성호 배치프로그램의성능문제를진단하기위해트레이스를사용할수없고, 개별 SQL 에대한성 능점검은비효율적인경우에어떻게배치프로그램의성능문제를제대로파악하고개선안을도 출할것인가? 복잡한로직을가지고있는프로그램 ( 이후배치프로그램 ) 에대한성능문제를파악하기위해수행되는모든 SQL 에대한개별수행내역을정확히판단할수있어야한다.
More informationPowerPoint Presentation
객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean
More informationSpring Data JPA Many To Many 양방향 관계 예제
Spring Data JPA Many To Many 양방향관계예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) 엔티티매핑 (Entity Mapping) M : N 연관관계 사원 (Sawon), 취미 (Hobby) 는다 : 다관계이다. 사원은여러취미를가질수있고, 하나의취미역시여러사원에할당될수있기때문이다. 보통관계형 DB 에서는다 : 다관계는 1
More information설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,
More informationuntitled
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 informationMicrosoft Word - 05_SUBPROGRAM.doc
ORACLE SUBPROGRAM INTRODUCTION PLSQL 은오라클에서제공하는프로그래밍언어이다. 이는데이터베이스언어인 SQL 과함께효과적으로데이터베이스에접근할수있는방법을제공하고있다. Procedural LanguageSQL 의약자에서볼수있듯이절차적인기능을기본적으로가지는프로그래밍언어이다. PLSQL 은기본적으로블록 (BLOCK) 구조를가지고있다. 블록의기본적인구성은선언부
More information슬라이드 1
알티베이스의 DBMS 를바라보다! Session1. 오라클의눈으로알티베이스를보다 Session2. ALTIBASE HDB ZETA 소개 (New Feature & Utility) ALTIBASE 교육센터소개 Altibase Corp. 교육컨설팅팀성원준 AGENDA 1. Altibase 교육센터소개 2. Altibase 교육과정소개 Altibase 교육센터소개
More informationMicrosoft PowerPoint - QVIZMVUMWURI.pptx
데이타베이스시스템 2011.03 충북대학교경영정보학과조완섭 (wscho@chungbuk.ac.kr) Chap. 4 SQL 질의어 C4 2 목차 - SQL2에서데이터정의, 제약조건및스키마변경 - SQL에서의기본질의 - 더복잡한 SQL 질의들 - SQL에서삽입, 삭제, 갱신구문 - SQL 뷰 - 주장으로추가적인제약조건명시 - SQL의부가적인기능들 Ch4 3 SQL
More informationPowerPoint Presentation
6 장 SQL 목차 SECTION 01 SQL 의개요 1-1 SQL의역사 1-2 SQL의유형별종류 SECTION 02 데이터정의어 (DDL) 2-1 스키마 2-2 테이블생성 (CREATE TABLE) 2-3 테이블변경 (ALTER TABLE) 2-4 테이블제거 (DROP TABLE) SECTION 03 데이터조작어 (DML) 3-1 데이터검색 (SELECT)
More information쉽게 풀어쓴 C 프로그래밍
제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace
More informationiii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.
Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:
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