상세검색
'link'에 대한 검색결과 총 383 건
AID (Altibase Information Directory)
-
- ERR-51043 ( 331843) Communication link failure. Server closed the connection.ㅣ 2016-02-02
- 개요 ALTIBASE HDB 클라이언트에서 발생하는 Communication link failure 에러 중 아래 세 가지 조건을 모두 만족하는 경우에 대한 설명입니다. 에러 메시지 : Communication link failure. Server closed the connection.SQLSTATE
- [FAQ(한국어)]
-
- ERR-5104F Communication link failure.ㅣ 2014-10-28
- Version All versions Explanation Unable to connect to database. Cause This error means the session is disconnected from the query execution process. This is generally because the connection is lost due to a timeout policy. It can sometimes occur due to networ
- [FAQ(English)]
QnA
-
- 알티베이스 와 오라클의 DB link 방법 문의 ㅣ 2017-02-28
- 안녕하세요. ALTIBASE 입니다. 문의주신 내역에 대한 답변 드립니다. 동기화 작업이라면 DML이 수행될 것으로 보이는데 운영중이신 서버가 Altibase 5.5.1 버전이 맞으시다면 DB Link를 통해서 DML을 수행 하
-
미리보기
안녕하세요. ALTIBASE 입니다. 문의주신 내역에 대한 답변 드립니다. 동기화 작업이라면 DML이 수행될 것으로 보이는데 운영중이신 서버가 Altibase 5.5.1 버전이 맞으시다면 DB Link를 통해서 DML을 수행 하
-
- Visual Studio 상위 버전 MFC ODBC Library 요청 ㅣ 2023-06-29
- 안녕하세요 아래 내용을 헤더에 추가하였는데도 동일하게 에러가 발생하고 있습니다. Visual Studio 2015 버전부터 stdin, stderr, stdout의 정의가 변경되었다. 따라서 이전 버전의 lib 파일을 사용할 때 Link
-
미리보기
안녕하세요 아래 내용을 헤더에 추가하였는데도 동일하게 에러가 발생하고 있습니다. Visual Studio 2015 버전부터 stdin, stderr, stdout의 정의가 변경되었다. 따라서 이전 버전의 lib 파일을 사용할 때 Link
매뉴얼
-
- [Altibase 7.1] DB Link User's Manual ㅣ 2017-07-06
- Altibase® Application Development Database Link User’s Manual Release 7.1 (August 28, 2018) ----------------------------------------------------------- Altibase Application Development Database Link User’s Manual Release 7.1 Copyright ⓒ
-
미리보기
Altibase® Application Development Database Link User’s Manual Release 7.1 (August 28, 2018) ----------------------------------------------------------- Altibase Application Development Database Link User’s Manual Release 7.1 Copyright ⓒ 2001~2018 Altibase Corp. All Rights Reserved. 본 문서의 저작권은 ㈜알티베이스에 있습니다. 이 문서에 대하여 당사의 동의 없이 무단으로 복제 또는 전용할 수 없습니다. ㈜알티베이스 08378 서울시 구로구 디지털로 306 대륭포스트타워Ⅱ 10층 전화: 02-2082-1114 팩스: 02-2082-1099 고객서비스포털: http://support.altibase.com homepage: http://www.altibase.com ----------------------------------------------------------- 목차 3 목 차 서문 ............................................................................................................................ 5 이 매뉴얼에 대하여 ............................................................................................................................ 6 1. 데이터베이스 링크 소개 ............................................................................... 11 관련 전문 용어 ................................................................................................................................... 12 데이터베이스 링크 정의 ................................................................................................................. 14 Altibase 데이터베이스 링크 구성 요소 .................................................................................. 17 2. 지원되는 객체, SQL문 및 데이터 타입 ....................................................... 27 데이터베이스 링크와 SQL문 ......................................................................................................... 28 접근 가능한 원격 스키마 객체 ................................................................................................... 31 DB Link 지원 데이터 타입 ............................................................................................................ 36 3. 데이터베이스 링크 환경 설정 ...................................................................... 41 DB Link 동작 방식 ............................................................................................................................. 42 환경 설정 ............................................................................................................................................... 43 4. 데이터베이스 링크 사용법 ............................................................................ 47 CREATE DATABASE LINK ................................................................................................................ 48 DROP DATABASE LINK .................................................................................................................... 50 ALTER DATABASE LINKER .............................................................................................................. 52 ALTER SESSION ................................................................................................................................... 54 SELECT ..................................................................................................................................................... 55 REMOTE_EXECUTE_IMMEDIATE ................................................................................................... 60 바인딩 지원 REMOTE 함수 ........................................................................................................... 61 일괄처리(Batch) 지원 REMOTE 함수 ........................................................................................ 71 COMMIT FORCE DATABASE LINK .............................................................................................. 79 ROLLBACK FORCE DATABASE LINK .......................................................................................... 80 A. 부록: 프로퍼티 및 데이터 딕셔너리 ........................................................... 81 4 Database Link User’s Manual DB Link 관련 데이터 딕셔너리 ................................................................................................... 82 프로퍼티 파일 ..................................................................................................................................... 83 AltiLinker 프로퍼티 ........................................................................................................................... 85 찾아보기 .................................................................................................................. 95 서문 5 서문 6 Database Link User’s Manual 이 매뉴얼에 대하여 이 매뉴얼은 데이터베이스 링크(Database Link)의 개념 및 사용 방법에 대해서 설명한다. 대상 사용자 이 매뉴얼은 다음과 같은 Altibase 사용자를 대상으로 작성되었다. 데이터베이스 사용자 데이터베이스 관리자 응용 프로그램 개발자 성능 관리자 기술 지원부 이 매뉴얼을 읽고 이해하기 위해 다음과 같은 배경 지식이 도움이 될 것이다. 컴퓨터, 운영 체제 및 운영 체제 유틸리티 운용에 필요한 기본 지식 관계형 데이터베이스 사용 경험 또는 데이터베이스 개념에 대한 이해 컴퓨터 프로그래밍과 관련된 경험 또는 지식 데이터베이스 서버 관리, 운영 체제 관리 또는 네트워크 관리 경험 분산 환경에서의 데이터의 저장, 관리 및 처리와 관련된 지식 소프트웨어 환경 이 매뉴얼은 데이터베이스 서버로 Altibase 버전 7.1을 사용한다는 가정 하에 작성되었다. 이전 버전의 경우 해당 버전과 일치하는 데이터베이스 링크 매뉴얼을 참고하도록 한다. 이 매뉴얼의 구성 이 매뉴얼은 다음과 같이 구성되어 있다. 제 1장 데이터베이스 링크 소개 이 장에서는 데이터베이스 링크의 개념과 Altibase의 서문 7 데이터베이스 링크 구성 요소를 설명한다. 제 2장 지원되는 SQL문, 스키마 객체 및 데이터 타입 이 장은 데이터베이스 링크 사용을 위해 Altibase가 제공하는 SQL 구문과 데이터베이스 링크를 통해서 접근할 수 있는 원격 데이터베이스의 스키마 객체, 그리고 데이터베이스 링크와 함께 사용 가능한 데이터 타입에 대해 설명한다. 제 3장 데이터베이스 링크 환경설정 이 장은 Altibase의 데이터베이스 링크를 사용하기 위해 필요한 환경 설정에 대해 설명한다. 제 4장 데이터베이스 링크 사용법 이 장에서는 데이터베이스 링크 제어를 위해 제공되는 SQL구문과 REMOTE 함수와 함께 데이터베이스 링크를 사용하는 방법에 대해 상세히 설명한다. A. 부록: 데이터 딕셔너리 및 프로퍼티 이 부록은 데이터베이스 링크와 관련하여 사용되는 각종 프로퍼티 및 데이터 딕셔너리를 기술한다. 문서화 규칙 이 절에서는 이 매뉴얼에서 사용하는 규칙에 대해 설명한다. 이 규칙을 이해하면 이 매뉴얼과 설명서 세트의 다른 매뉴얼에서 정보를 쉽게 찾을 수 있다. 여기서 설명하는 규칙은 다음과 같다. 구문 다이어그램 샘플 코드 규칙 구문 다이어그램 이 매뉴얼에서는 다음 구성 요소로 구축된 다이어그램을 사용하여, 명령문의 구문을 설명한다. 구성 요소 의미 예약어 명령문이 시작한다. 완전한 명령문이 아닌 구문 요소는 화살표로 시작한다. 명령문이 다음 라인에 계속된다. 완전한 명령문이 아닌 구문 요소는 이 기호로 종료한다. 명령문이 이전 라인으로부터 계속된다. 완전한 명령문이 아닌 구문 요소는 이 기호로 시작한다. ; 명령문이 종료한다. 8 Database Link User’s Manual 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 . 서문 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 고객서비스포털(http://support.altibase.com)에서 국문 및 영문 매뉴얼(PDF, HTML)을 받을 수 있다. Altibase는 여러분의 의견을 환영합니다. 이 매뉴얼에 대한 여러분의 의견을 보내주시기 바랍니다. 사용자의 의견은 다음 버전의 매뉴얼을 작성하는데 많은 도움이 됩니다. 10 Database Link User’s Manual 보내실 때에는 아래 내용과 함께 고객서비스포털(http://support.altibase.com/kr/)로 보내주시기 바랍니다. 사용 중인 매뉴얼의 이름과 버전 매뉴얼에 대한 의견 사용자의 성함, 주소, 전화번호 이 외에도 Altibase 기술지원 설명서의 오류와 누락된 부분 및 기타 기술적인 문제들에 대해서 위 주소로 보내주시면 정성껏 처리하겠습니다. 또한, 기술적인 부분과 관련하여 즉각적인 도움이 필요한 경우에도 고객서비스포털을 통해 서비스를 요청하시기 바랍니다. 여러분의 의견에 항상 감사드립니다. 데이터베이스 링크 소개 11 1. 데이터베이스 링크 소개 이 장에서는 데이터베이스 링크의 개념과 Altibase의 데이터베이스 링크 구성 요소를 설명한다. 12 Database Link User’s Manual 관련 전문 용어 이 절은 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)으로 구분된다. 데이터베이스 링크 소개 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) 데이터베이스 시스템간 수행되는 글로벌 트랜잭션에서 데이터베이스 시스템을 의미한다. . 14 Database Link User’s Manual 데이터베이스 링크 정의 이 절은 데이터베이스 링크의 개념과 처리 방식을 소개하고, Altibase 분산 데이터베이스 시스템에 대하여 기술한다. 데이터베이스 링크의 개념 Altibase의 데이터베이스 링크란 각각 독립적으로 동작하는 둘 이상의 데이터베이스 서버가 네트워크로 연결되어 있으며 주어진 권한 내에서 지역 서버가 원격 서버에 논리적으로 관계가 있는 데이터를 요청하고 결과를 받아오는 기술 요소이다. 독립적으로 동작한다는 것은 각 데이터베이스 시스템이 자신의 데이터 저장 영역을 갖고 있으며, 사용자의 요청을 독립적으로 처리할 수 있음을 의미한다. 네트워크로 연결된다는 것은 논리적으로 구분된 두 시스템 혹은 서버가 서로 접근이 가능하다는 것을 의미한다. 또한 논리적으로 관계가 있다는 것은 개별 노드에 분산된 데이터 사이에 상관 관계가 존재함을 의미한다. 처리 방식 Altibase 데이터베이스 링크의 처리 방식을 개략적으로 설명하면 다음과 같다. 링크 객체를 생성한 서버에 질의를 입력하면, 데이터베이스 링크 프로세스를 거쳐 원격 서버에서 필요한 데이터를 가져온 후, 최종적인 질의 결과를 사용자에게 반환한다. 이 과정에서 최종 사용자는 논리적으로 하나의 서버가 동작하는 것으로 인식하게 된다. Altibase 데이터베이스 링크는 크게 아래의 네 가지 요소로 구성되며, 아래 그림에서 짙은 색으로 표시되어 있다. DK 모듈과 AltiLinker 프로세스는 다음 절에서 상세히 설명한다. DK 모듈 (DB-Link Module) AltiLinker: 자바로 구현된 링커 프로세스 ADLP: Altibase 데이터베이스 링크 프로토콜 dblink.conf: 데이터베이스 링크용 프로퍼티 파일 데이터베이스 링크 소개 15 Altibase HDB Server Process DK Module dblink.conf AltiLinker Process JDBC DriversADLP Heterogeneous DBMSs ... [그림 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에 비해 성능이 좋으며, 특히 원격 노드에 접근이 빈번할수록 성능 격차가 더 커진다. 16 Database Link User’s Manual Altibase 버전 6.5.1 이상은 Homogeneous Link를 지원하지 않는다. 아래 표는 이 문서에서 사용하는 간략한 용어에 대한 정식 명칭과 그 의미를 나타낸다. Notation Full Name Meaning DB-Link Altibase Database Link Altibase 데이터베이스 링크 Heterogeneous- Link Heterogeneous Database Link Altibase 서버와 이기종 데이터베이스 시스템간의 데이터베이스 링크 Homogeneous- Link Homogeneous Database Link 동일한 버전의 Altibase 서버간의 데이터베이스 링크 Heterogeneous DBMS Heterogeneous database management system 이질적인 데이터베이스 관리 시스템으로, 지역 서버의 Altibase와 버전이 다른 Altibase 서버도 포함 데이터베이스 링크 소개 17 Altibase 데이터베이스 링크 구성 요소 이 절은 Altibase DB Link를 구성하는 요소들 중 데이터베이스 링크 모듈과 AltiLinker 프로세스에 대해 상세히 설명한다. 데이터베이스 링크 모듈 데이터베이스 링크 모듈(이하 DK 모듈로 표기)은 Altibase 서버 내에서 데이터베이스 링크를 구현한 모듈이다. 이 모듈은 분산 데이터베이스 시스템 환경에서 원격 서버와의 연결을 위한 세션 관리, 원격 서버와의 연결을 의미하는 데이터베이스 링크 객체들의 관리, 데이터베이스 링크를 거쳐 수행되는 트랜잭션들의 관리, 각종 성능 뷰에 제공할 정보 관리, 원격 질의의 수행 결과로 얻은 레코드 집합 관리 등을 수행한다. 각각에 대해서 아래의 절에 상세히 설명한다. 링크 객체 관리 링커 세션 관리 성능 뷰의 정보 관리 글로벌 트랜잭션 관리 분산 트랜잭션 복구 결과 집합 데이터 관리 링크 객체 관리 Altibase에서 링크 객체는 스키마 객체에 해당된다. 링크 객체의 생성과 삭제는 SQL문을 사용해서 가능하며, 각 SQL문에 대해서는 "4장 데이터베이스 링크 사용법"에서 자세히 설명한다. Altibase는 링크 객체에 대해 아래의 두 가지 권한을 제공한다. 종류 허용된 사용자 설명 PRIVATE Database Link 링크 객체를 생성한 사용자와 SYS 사용자 PRIVATE 링크 객체는 SYS 사용자 또는 해당 링크 객체를 생성한 사용자만이 사용하거나 삭제할 수 있다. PUBLIC Database Link 모든 사용자 PUBLIC 링크 객체는 모든 사용자가 사용할 수 있다. 단, 삭제는 SYS 사용자 또는 해당 객체를 생성한 사용자만이 할 수 있다. 링커 세션 관리 Altibase DK 모듈은 AltiLinker 프로세스에 연결하기 위해 링커 18 Database Link User’s Manual 세션을 생성하고, 사용자 세션이 데이터베이스 링크를 참조할 때마다 이 링커 세션의 연결 상태를 감시한다. 아래 그림은 클라이언트가 데이터베이스 링크를 사용하는 SQL구문을 실행할 때, 이를 처리하기 위해 DK 모듈 및 AltiLinker 프로세스에 생성되는 세션들을 나타낸다. DK Module Session Manager Linker Control Session Linker Data Session List Linker Data Session Linker Data Session Linker Data Session Linker Data Session AltiLinker Process AltiLinker Session AltiLinker Session AltiLinker Session AltiLinker Session AltiLinker Session Remote Server Remote Server Remote Server Data Op. Data Op. Data Op. Data Op. Control Op. [그림 1-2] DK 모듈과 AltiLinker 프로세스 내의 링커 세션 성능 뷰의 정보 관리 사용자는 성능 뷰를 조회하여 데이터베이스 링크 관련 정보를 확인할 수 있다. Altibase가 데이터베이스 링크를 위해 관리하는 성능 뷰의 정보는 아래와 같다. 데이터베이스 링크 객체 정보 데이터베이스에 생성된 데이터베이스 링크 객체에 대한 정보를 의미하며, 이 정보는 V$DBLINK_DATABASE_LINK_INFO 성능 뷰로 사용자에게 제공된다. 링커 세션 정보 데이터베이스 링크 소개 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 메모리에 관련된 정보도 포함된다. 20 Database Link User’s Manual 글로벌 트랜잭션 관리 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는 데이터베이스 링크 소개 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의 동작을 설명한다. 22 Database Link User’s Manual AltibaseAltilinkerParticipant1Participant2 COMMIT REQ PREPARE Write prepare log Call prepare RESULT Call prepare RESULT PREPARE ACK Write commit log REQ COMMIT Call commit Call commit COMMIT ACK Write end log Prepare Phase Commit Phase [그림 1-3] 2단계 커밋 레벨(2-PC Commit Level) 준비 단계(Prepare Phase): 사용자가 커밋을 수행하면 알티베이스는 준비 로그(prepare log)를 기록하고 준비요청 메시지를 AltiLinker에게 보낸다. 메시지를 받은 AltiLinker는 글로벌 트랜잭션에 속한 모든 참여자에게 준비요청 메시지를 보낸다. 그리고 참여자가 준비를 마치면 AltiLinker는 알티베이스에게 준비완료 메시지를 보내고 모든 참여자에게 결과를 받은 알티베이스는 다음 단계를 진행한다. 커밋 단계(Commit Phase): 알티베이스는 커밋로그(commit log)를 기록하고 커밋요청 메시지를 AltiLinker에게 보낸다. AltiLinker는 모든 참여자에 커밋을 수행하며 모든 참여자가 커밋에 성공할 때까지 커밋 메시지를 보낸다. 참여자 전원이 커밋에 성공하면 알티베이스에게 성공 메시지를 보낸다. 알티베이스가 성공 메시지를 받으면 해당 트랜잭션이 종료되었다는 것을 의미하므로 종료 로그(end log)를 남기고 결과를 반영한다. 즉, 종료 로그가 기록된 트랜잭션은 장애 복구를 할 수 없다. Altibase는 글로벌 트랜잭션 및 원격 트랜잭션에 대한 정보 및 트랜잭션의 처리 상태에 관한 정보를 성능 뷰로 제공한다. 데이터베이스 링크 소개 23 분산 트랜잭션 복구 (Recovery Of Distributed Transaction) 장애 시점은 2PC를 기준으로 하고, 장애 대상은 알티베이스와 참여자(원격 데이터베이스 시스템)로 한다. 알티베이스는 참여자와 메시지를 주고 받을 때 ALTILINKER_RECEIVE_TIMEOUT에 설정한 시간 동안 응답이 없으면 참여자에 장애가 발생했다고 판단한다. 준비 로그의 기록 이전 알티베이스에 장애가 발생한 경우, 분산 트랜잭션의 시작 로그에는 기록이 남지만 준비 로그에는 기록이 남지 않았다면 참여하고 있는 모든 원격 트랜잭션를 철회한다. 그리고 알티베이스에서 수행되고 있는 로컬 트랜잭션도 철회되며 종료 로그를 기록한다. 준비 로그의 기록 이후 - 커밋 로그의 기록 이전 알티베이스에 장애가 발생한 경우, 분산 트랜잭션의 준비 로그는 기록되지만 커밋 로그 및 롤백 로그는 기록되지 않는다. 커밋 로그가 기록되지 않은 상황에는 정합성 보장을 위해 수행하고 있는 모든 원격 트랜잭션을 복구한다. 이 때 참여자에 장애가 발생하면 원격 트랜잭션의 복구를 보장하기 위해 참여자가 롤백 메시지를 받을 때까지 알티베이스는 메시지 송신을 시도하여 복구를 수행하고 종료 로그를 기록한다. 참여자에 장애가 발생한 경우, 알티베이스는 참여자의 트랜잭션이 복구하도록 메시지를 보낸다. AltiLinker에 장애가 발생한 경우, 모든 원격 트랜잭션의 상태를 알 수 없으며 모든 트랜잭션에 대한 커밋 로그가 기록되지 않았으므로 롤백을 수행하고 종료 로그를 기록한다. 커밋 로그의 기록 이후 - 종료 로그의 기록 이전 커밋 단계에서 장애가 발생한 경우에는 분산 트랜잭션에 대한 커밋 및 롤백 로그가 기록되지만 종료 로그는 기록되지 않는다. 알티베이스는 참여자에게 커밋 메시지의 응답을 받지 못한 상태로 참여자의 트랜잭션이 커밋 또는 롤백 되도록 지속적으로 시도하고 완료되면 종료 로그를 기록한다. 결과 집합 데이터 관리 Altibase DK 모듈은 데이터베이스 링크를 통해 로컬 서버와 원격 서버간에 주고 받는 데이터를 처리하는 기능을 제공한다. DK 모듈은 다음과 같은 데이터를 처리한다. 제어 데이터 (Control Data): ADLP에 정의되어 있는 각 작업이 요구하는 데이터로, 내부적으로 생성되어 DK 모듈과 24 Database Link User’s Manual 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 프로세스를 활성화하려면, 아래의 두 프로퍼티를 설정해야 한다. 데이터베이스 링크 소개 25 프로퍼티 설정 값 프로퍼티 파일 DBLINK_ENABLE 1 (0이면 disable) altibase.properties ALTILINKER_ENABLE 1 (0이면 disable) dblink.conf AltiLinker 프로세스의 역할을 간략히 정리하면 아래와 같다. JDBC 드라이버를 통해 이기종 데이터베이스 시스템에 연결 ADLP 프로토콜을 통해 Altibase 서버에서 요청 받은 작업 수행 원격 노드에서 수행한 쿼리의 결과를 Altibase 서버로 전달 주의사항 AltiLinker 프로세스는 JDBC 인터페이스를 사용하여 원격 서버의 데이터베이스에 접근하므로 해당 데이터베이스 벤더가 제공하는 JDBC 드라이버가 반드시 필요하다. AltiLinker 프로세스는 지역 서버와 동일한 장비에서만 동작한다. 지원되는 객체, SQL문 및 데이터 타입 27 2. 지원되는 객체, SQL문 및 데이터 타입 이 장은 데이터베이스 링크 사용을 위해 Altibase가 제공하는 SQL 구문과 데이터베이스 링크를 통해서 접근할 수 있는 원격 데이터베이스의 스키마 객체, 그리고 데이터베이스 링크와 함께 사용 가능한 데이터 타입에 대해 설명한다. 28 Database Link User’s Manual 데이터베이스 링크와 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 문 (INSERT, UPDATE, DELETE) X O O SELECT 문 O X O REMOTE_TABLE REMOTE_TABLE은 지역 서버에서 입력되는 SELECT구문의 FROM 절에만 사용할 수 있는 키워드이다. REMOTE_TABLE 키워드 뒤에는 원격 서버에서 수행할 SELECT 구문만 지정할 수 있다. 또한, REMOTE_TABLE 키워드는 파라미터 마커가 포함된 SQL문, 즉 바인딩과 함께 사용할 수 없다. SQL문에 REMOTE_TABLE 키워드를 사용하는 문법은 "4장 지원되는 객체, SQL문 및 데이터 타입 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 문 이외의 파라미터 마커가 30 Database Link User’s Manual 포함된 DML, DDL 문을 수행하기 위해 REMOTE 함수를 호출하는 순서이다. 7. REMOTE_ALLOC_STATEMENT 8. REMOTE_BIND_VARIABLE 9. REMOTE_EXECUTE_STATEMENT 10. REMOTE_FREE_STATEMENT 각 REMOTE 함수에 대한 문법과 상세한 설명은 "4장 데이터베이스 링크 사용법"을 참고하기 바란다. 지원되는 객체, SQL문 및 데이터 타입 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문 예제를 보여준다. 테이블 데이터베이스 링크의 핵심 기능은 데이터가 서로 다른 데이터베이스에 분산되어 있는 테이블 간의 상호 운용(Inter- operation)을 제공하는 것이다. Altibase 데이터베이스 링크를 사용해서 원격 테이블에 SELECT, INSERT, UPDATE, DELETE 및 DDL문을 수행할 수 있다. 32 Database Link User’s Manual 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)' ); 지원되는 객체, SQL문 및 데이터 타입 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' ); 34 Database Link User’s Manual 제약사항 지역 서버의 저장 프로시저 내에서 원격 서버의 테이블에 기반한 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\')' ); 아래는 원격 서버에 큐를 생성하는 예제이다. 지원되는 객체, SQL문 및 데이터 타입 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)' ); 36 Database Link User’s Manual DB Link 지원 데이터 타입 Altibase 데이터베이스 링크는 JDBC 인터페이스를 사용하므로, JDBC v3.0에 명세화된 표준 데이터 타입을 지원한다. 아래 그림은 지역 서버인 Altibase와 AltiLiker 사이의 데이터 타입 변환과 AltiLinker와 각 이기종 데이터베이스의 JDBC 드라이버간의 데이터 타입 변환이 어떻게 이루어지는지를 보여준다. Oracle DB2 ALTIBASE HDB Server AltiLinker Process ALTIBASE HDB JDBC Drivers JDBC Drivers JDBC Drivers Altibase Data Type to Java Data Type Java Data Type to Altibase Data Type Java Data Type to JDBC Data Type JDBC Data Type to Java Data Type [그림 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 v4.0 지원되는 객체, SQL문 및 데이터 타입 37 java.sql.Types. LONGNVARC HAR LONGNVAR CHAR X JDBC v4.0 java.sql.Types. NUMERIC NUMERIC NUMERIC O java.sql.Types. DECIMAL DECIMAL DECIMAL O java.sql.Types. BIT SMALLINT BIT O Altibase의 BIT 타입은 한 비트만 표현 가능한 표준 BIT 타입과 다르므로 SMALLINT 타입으로 맵핑된다. BIT (bitset) X Altibase의 BIT 타입은 비트 집합을 저장한다. java.sql.Types. BOOLEAN SMALLINT BOOLEAN O Altibase는 BOOLEAN 타입을 제공하지 않으므로, SMALLINT 타입으로 맵핑된다. 원격 서버가 Altibase일 경우 이 타입에는 데이터 INSERT가 불가능하다. java.sql.Types. TINYINT SMALLINT TINYINT O Altibase는 TINYINT 타입을 제공하지 않으므로, SMALLINT 타입으로 맵핑된다. java.sql.Types. SMALLINT SMALLINT SMALLINT O java.sql.Types. INTEGER INTEGER INTEGER O java.sql.Types. BIGINT BIGINT BIGINT O java.sql.Types. REAL REAL REAL O java.sql.Types. FLOAT FLOAT FLOAT O java.sql.Types. DOUBLE DOUBLE DOUBLE O java.sql.Types. BINARY BINARY BINARY X 원격 서버가 Altibase일 경우 이 타입에는 데이터 INSERT가 불가능하다. java.sql.Types. VARBINARY VARBINARY X 38 Database Link User’s Manual java.sql.Types. LONGVARBIN ARY LONGVARBI NARY X java.sql.Types. DATE DATE DATE O 년도의 값이 0보다 작으면(기원전), Altibase는 0으로 처리한다. java.sql.Types. TIME DATE TIME O Oracle은 TIMESTAMP의 최소 표현 단위가 nano초이나, Altibase는 micro초이므로, nano초가 micro초로 변환된다. java.sql.Types. TIMESTAMP DATE TIMESTAMP O Oracle은 TIMESTAMP의 최소 표현 단위가 nano초이나, Altibase는 micro초이므로, nano초가 micro초로 변환된다. 또한, 년도의 값이 0보다 작으면(기원전), Altibase는 0으로 처리한다. java.sql.Types. CLOB CLOB CLOB X java.sql.Types. NCLOB NCLOB X JDBC v4.0 java.sql.Types. BLOB BLOB BLOB X java.sql.Types. ARRAY X java.sql.Types. DISTINCT X java.sql.Types. STRUCT X java.sql.Types. REF X java.sql.Types. DATALINK X java.sql.Types. JAVA_OBJECT X java.sql.Types. NUMERIC NUMERIC NUMERIC O NIBBLE X 지원되는 객체, SQL문 및 데이터 타입 39 VARBIT X INTERVAL X [표 2-2] 데이터베이스 링크 지원 데이터 타입 데이터베이스 링크 환경 설정 41 3. 데이터베이스 링크 환경 설정 이 장은 Altibase 데이터베이스 링크를 사용하기 위해 필요한 환경 설정에 대해 설명한다. 42 Database Link User’s Manual 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 환경을 기준으로 설명한다. 데이터베이스 링크 환경 설정 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를 사용해야 한다. 44 Database Link User’s Manual 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://127.0.0.1:20300/mydb" USER = "sys" 데이터베이스 링크 환경 설정 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의 데이터베이스 링크 관련 프로퍼티를 참고한다. 데이터베이스 링크 사용법 47 4. 데이터베이스 링크 사용법 이 장에서는 데이터베이스 링크 제어를 위해 제공되는 SQL구문과 REMOTE 함수와 함께 데이터베이스 링크를 사용하는 방법에 대해 상세히 설명한다. 48 Database Link User’s Manual CREATE DATABASE LINK 구문 create_database_link ::= CREATEDATABASEdblink_nameLINK PUBLIC PRIVATE USING CONNECTTO target_name user_id ; IDENTIFIEDBYpassword 전제조건 SYS 사용자 또는 CREATE DATABASE LINK 시스템 권한을 가진 사용자만이 데이터베이스 링크 객체를 생성할 수 있다. 설명 사용자는 CREATE DATABASE LINK 문으로 데이터베이스 링크 객체를 생성할 수 있다. 데이터베이스 링크 객체는 하나의 원격 서버만을 대상으로 한다. PUBLIC|PRIVATE 생성할 데이터베이스 링크 객체의 PUBLIC|PRIVATE 속성을 지정한다. PUBLIC으로 지정하면 생성된 데이터베이스 링크 객체를 모든 사용자가 사용할 수 있으며, PRIVATE로 지정하면 데이터베이스 링크 객체를 생성한 사용자와 SYS 사용자만 사용할 수 있다. 지정하지 않을 경우, PUBLIC으로 생성된다. dblink_name 생성할 데이터베이스 링크 객체의 이름을 명시한다. 데이터베이스 링크의 이름은 SQL Reference 1장의 "객체 이름 규칙"을 따라야 한다. 데이터베이스 링크 사용법 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; 50 Database Link User’s Manual DROP DATABASE LINK 구문 drop_database_link ::= DROPDATABASEdblink_nameLINK PUBLIC PRIVATE ; 전제조건 SYS 사용자이거나 DROP DATABASE LINK 시스템 권한을 가진 사용자만이 데이터베이스 링크 객체를 제거할 수 있다. 설명 데이터베이스 링크 객체를 삭제한다. dblink_name 제거할 데이터베이스 링크 객체의 이름을 명시한다. 주의사항 제거하고자 하는 데이터베이스 링크 객체가 사용 중이라면, 제거할 수 없다. 제거할 데이터베이스 링크 객체로 수행중인 질의가 없는 상태에서만 데이터베이스 링크 객체 제거가 가능하다. 데이터베이스 링크 객체에 대해 질의 수행 중인 경우에는 오류가 발생할 것이다. 예제 <질의 1> dblink1이라는 이름의 PRIVATE 데이터베이스 링크 객체를 제거하라. 데이터베이스 링크 사용법 51 DROP PRIVATE DATABASE LINK dblink1; <질의 2> dblink1이라는 이름의 PUBLIC 데이터베이스 링크 객체를 제거하라. DROP PUBLIC DATABASE LINK dblink1; 또는 DROP DATABASE LINK dblink1; 52 Database Link User’s Manual ALTER DATABASE LINKER 구문 alter_database_linker ::= ;DATABASELINKERALTER START STOP FORCE DUMP 전제조건 SYS 사용자가 sysdba 관리자 모드로 접속해서 이 구문을 수행할 수 있다. 설명 AltiLiker를 구동하거나 종료한다. START AltiLinker를 시작한다. 단, 실행 중인 AltiLinker 프로세스가 존재하지 않아야 한다. STOP AltiLinker를 종료한다. 단, AltiLinker 종료가 성공하려면 데이터베이스 링크를 사용하는 트랜잭션이 없어야 한다. 데이터베이스 링크를 사용하는 트랜잭션이 존재하면, 이 구문 실행은 실패한다. STOP FORCE 데이터베이스 링크를 사용하는 트랜잭션이 존재하더라도, AltiLinker 프로세스를 강제로 종료한다. DUMP 데이터베이스 링크 사용법 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. 54 Database Link User’s Manual ALTER SESSION 구문 close_database_link ::= ; ALTERSESSION CLOSEDATABASELINK ALL dblink_name 전제조건 모든 사용자가 이 구문을 수행할 수 있다. 설명 Altibase 서버에서 AltiLinker로 연결하고 있는 링커 세션을 종료한다. LINK ALL 모든 링커 세션을 종료한다. LINK dblink_name 지정한 이름의 데이터베이스 링크 객체에 연결된 링커 세션들만 종료한다. 예제 ALTER SESSION CLOSE DATABASE LINK ALL; ALTER SESSION CLOSE DATABASE LINK link1; 데이터베이스 링크 사용법 55 SELECT Altibase 데이터베이스 링크를 사용해서 원격 데이터베이스의 객체를 조회(SELECT)하는 방법은 위치 표시자(‘@’)를 사용하거나 pass- through 방식을 사용하는 두 가지가 있다. 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, 56 Database Link User’s Manual ... 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 문 데이터베이스 링크 사용법 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 부서에 근무하는 사원의 이름을 검색하라. 58 Database Link User’s Manual 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 테이블을 조인하여 전체 사원을 알아내고, 이 사원들 중 나이가 데이터베이스 링크 사용법 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; 60 Database Link User’s Manual 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' ); 데이터베이스 링크 사용법 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 62 Database Link User’s Manual 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 구문에서 값을 바인딩할 파라미터의 번호 순서. 1부터 시작 value IN VARCHAR 바인딩할 값 반환값 음수가 반환되면 실패를 의미하고, 그렇지 않으면 성공을 의미한다. 예제 REMOTE_ALLOC_STATEMENT의 예제를 참고하라. 데이터베이스 링크 사용법 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 데이터베이스 링크 객체의 이름 64 Database Link User’s Manual 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 함수로 행의 위치를 정한 다음, 행을 데이터베이스 링크 사용법 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 데이터베이스 링크 객체의 이름 66 Database Link User’s Manual 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 함수로 행의 위치를 정한 다음, 행을 데이터베이스 링크 사용법 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부터 시작. 68 Database Link User’s Manual 반환값 지정한 칼럼의 값이 반환된다. 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, 데이터베이스 링크 사용법 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부터 시작. 반환값 지정한 칼럼의 값이 반환된다. 70 Database Link User’s Manual 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 함수” 다음에 추가 데이터베이스 링크 사용법 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 ) 72 Database Link User’s Manual AS result INTEGER; i INTEGER; count INTEGER; sum INTEGER := 0; BEGIN PRINTLN('--- 0 ---'); IF IS_ARRAY_BOUND() = TRUE THEN PRINTLN('--- 1 ---'); /* 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('--- 2 ---'); /* 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('--- 3 ---'); ELSE PRINTLN('NORMAL?'); END IF; END; / IS_FIRST_ARRAY_BOUND 배열 타입의 변수가 처음 바인드 되었는지 확인한다. 구문 BOOLEAN variable: = IS_FIRST_ARRAY_BOUND (); 데이터베이스 링크 사용법 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); 74 Database Link User’s Manual 파라미터 이름 입출력 데이터 타입 설명 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구문의 파라미터 마커에 값을 데이터베이스 링크 사용법 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 76 Database Link User’s Manual 반환값 음수를 반환하면 실패를 의미하고, 그렇지 않으면 성공을 의미한다. 예제 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); 데이터베이스 링크 사용법 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의 예제를 참고하라. 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; 80 Database Link User’s Manual 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; 부록 A: 프로퍼티 및 데이터 딕셔너리 81 A. 부록: 프로퍼티 및 데이터 딕셔너리 이 부록은 데이터베이스 링크와 관련하여 사용되는 각종 프로퍼티 및 데이터 딕셔너리를 기술한다. 82 Database Link User’s Manual 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 부록 A: 프로퍼티 및 데이터 딕셔너리 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 84 Database Link User’s Manual 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 = 23238 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://127.0.0.1:20600/mydb" XADATASOURCE_CLASS_NAME= "oracle.jdbc.xa.OracleXADataSource XADATASOURCE_URL_SETTER_NAME = "setURL" ) ) 각 프로퍼티에 대한 상세한 설명은 다음 절에서 기술한다. 부록 A: 프로퍼티 및 데이터 딕셔너리 85 AltiLinker 프로퍼티 이 절은 dblink.conf에 설정하는 AltiLinker 프로퍼티에 대해 기술한다. ALTILINKER_ENABLE 기본값 0 값의 범위 [0, 1] 설명 AltiLinker 프로세스의 활성화 여부를 결정한다. 데이터베이스 링크를 사용하고자 할 때는 이 값을 1로 설정한다. 값이 0이면 AltiLinker 프로세스가 시작되지 않는다. ALTILINKER_JVM_BIT_DATA_MODEL_VALUE 기본값 1 값의 범위 [0, 1] 설명 JVM(Java Virtual Machine) 상에서 AltiLinker를 위해 JVM bit를 지정한다. 0: 32 bit 1: 64 bit 86 Database Link User’s Manual ALTILINKER_JVM_MEMORY_POOL_INIT_SIZE (단위: 바이트) 기본값 128 MBytes 값의 범위 [8MB, 512MB] 설명 JVM(Java Virtual Machine) 상에서 AltiLinker를 위해 할당하는 메모리 풀의 초기 크기를 지정한다. ALTILINKER_JVM_MEMORY_POOL_MAX_SIZE (단위: 바이트) 기본값 512 MBytes 값의 범위 [16MB, 512MB] 설명 JVM 상에서 AltiLinker를 위해 할당하는 메모리 풀의 최대 크기를 지정한다. ALTILINKER_NON_QUERY_TIMEOUT (단위 : 초) 기본값 60 값의 범위 [0, 232-1] 설명 원격 서버에서 SELECT를 제외한 DML문이나 DDL문 수행에 걸리는 부록 A: 프로퍼티 및 데이터 딕셔너리 87 시간이 이 프로퍼티에 설정한 시간(초)를 초과하면 그 구문의 실행은 취소된다. ALTILINKER_PORT_NO 기본값 0 값의 범위 [1024, 65535] 설명 AltiLinker의 TCP 대기(listen) 포트 번호를 지정한다. ALTILINKER_QUERY_TIMEOUT (단위: 초) 기본값 60 값의 범위 [0, 232-1] 설명 원격 서버에서 질의 수행 소요 시간이 이 프로퍼티에 설정한 시간(초)을 초과하면 그 구문의 실행은 취소된다. ALTILINKER_RECEIVE_TIMEOUT (단위: 초) 기본값 5 값의 범위 [0, 232-1] 88 Database Link User’s Manual 설명 Altibase 서버가 AltiLinker에 작업 요청 후 최대 응답 대기 시간을 지정한다. ALTILINKER_REMOTE_NODE_RECEIVE_TIMEOUT(단위: 초) 기본값 30 값의 범위 [0, 232-1] 설명 원격 서버에서 SELECT문과 DML, DDL문 수행 외의 prepare 수행, auto commit mode 설정, DCL문 수행에 대한 최대 대기 시간을 지정한다. ALTILINKER_REMOTE_NODE_SESSION_COUNT 기본값 64 값의 범위 [1, 128] 설명 AltiLinker 프로세스가 원격 서버에 접속할 때 생성하는 세션의 최대 개수를 지정한다. 링커 데이터 세션의 최대 개수는 이 프로퍼티 값- 1(링커 제어 세션의 개수)이다. ALTILINKER_THREAD_COUNT 기본값 부록 A: 프로퍼티 및 데이터 딕셔너리 89 16 값의 범위 [2, 231-1] 설명 AltiLinker에서 원격 서버에 SQL 구문을 수행할 쓰레드의 개수를 지정한다. ALTILINKER_THREAD_SLEEP_TIME (단위: 마이크로초) 기본값 200 값의 범위 [1, 232-1] 설명 AltiLinker 프로세스 내의 쓰레드가 처리할 작업이 없을 때 대기하는 시간을 지정한다. ALTILINKER_TRACE_LOG_DIR 기본값 $ALTIBASE_HOME/trc 값의 범위 없음 설명 AltiLinker 프로세스가 트레이스 로그를 기록할 로그 파일의 위치를 지정한다. 90 Database Link User’s Manual ALTILINKER_TRACE_LOG_FILE_COUNT 기본값 10 값의 범위 [1, 100] 설명 AltiLinker 프로세스가 트레이스 로그를 기록할 로그 파일의 최대 개수를 지정한다. ALTILINKER_TRACE_LOG_FILE_SIZE (단위: 바이트) 기본값 10 MBytes 값의 범위 [1MB, 232-1] 설명 AltiLinker 프로세스가 트레이스 로그를 기록할 로그 파일의 크기를 지정한다. ALTILINKER_TRACE_LOGGING_LEVEL 기본값 4 값의 범위 [0, 6] 설명 AltiLinker 프로세스가 트레이스 로그를 기록하는 수준을 지정한다. 부록 A: 프로퍼티 및 데이터 딕셔너리 91 아래의 값을 지정할 수 있다. 0: 로그를 기록하지 않음 1: FATAL 2: ERROR 3: WARNING 4: INFO 5: DEBUG 6: TRACE TARGETS/CONNECTION_URL 기본값 없음 값의 범위 없음 설명 원격 데이터베이스 서버의 연결 URL을 지정한다. TARGETS/JDBC_DRIVER 기본값 없음 값의 범위 없음 설명 원격 데이터베이스 서버를 위한 JDBC 드라이버 경로를 지정한다. 92 Database Link User’s Manual TARGETS/JDBC_DRIVER_CLASS_NAME 기본값 없음 값의 범위 없음 설명 원격 데이터베이스 서버를 위한 JDBC 드라이버의 CLASS NAME을 지정한다. 값이 지정되어 있지 않으면 java.sql.Driver 인터페이스를 구현한 클래스를 로딩한다. TARGETS/NAME 기본값 없음 값의 범위 없음 설명 원격 서버에 부여할 이름을 지정한다. TARGETS/PASSWORD 기본값 없음 값의 범위 없음 설명 원격 데이터베이스 서버에 접속할 사용자의 암호를 지정한다. 부록 A: 프로퍼티 및 데이터 딕셔너리 93 TARGETS/USER 기본값 없음 값의 범위 없음 설명 원격 데이터베이스 서버에 접속할 사용자 이름을 지정한다. TARGETS/ XADATASOURCE_CLASS_NAME 기본값 없음 값의 범위 없음 설명 XADataSource클래스 이름을 설정한다, TARGETS/XADATASOURCE_URL_SETTER_NAME 기본값 없음 값의 범위 없음 설명 XADataSource의 URL을 설정하는 함수이다. 찾아보기 95 찾아보기 2 2단계 커밋 레벨 .................................................. 21 A ADLP .......................................................................... 20 ALTER DATABASE LINKER ............................... 52 ALTER SESSION .................................................... 54 Altibase Database Link Protocol .................. 20 Altibase Distributed Database System ..... 12, 15 Altibase 분산 데이터베이스 시스템 .. 12, 15 altibase.properties ....................................... 45, 83 AltiLinker .................................................................. 12 AltiLinker 프로세스 ..................................... 19, 24 AltiLinker 프로퍼티 ............................................. 85 AltiLinker 프로퍼티 파일 ................................. 44 ALTILINKER_ENABLE ........................................... 85 ALTILINKER_JVM_BIT_DATA_MODEL_VALUE ................................................................................ 85 ALTILINKER_JVM_MEMORY_POOL_INIT_SIZ E .............................................................................. 86 ALTILINKER_JVM_MEMORY_POOL_MAX_SI ZE ........................................................................... 86 ALTILINKER_NON_QUERY_TIMEOUT .......... 86 ALTILINKER_PORT_NO ...................................... 87 ALTILINKER_QUERY_TIMEOUT ....................... 87 ALTILINKER_RECEIVE_TIMEOUT .................... 87 ALTILINKER_REMOTE_NODE_RECEIVE_TIME OUT ....................................................................... 88 ALTILINKER_REMOTE_NODE_SESSION_CO UNT ....................................................................... 88 ALTILINKER_THREAD_COUNT ........................ 88 ALTILINKER_THREAD_SLEEP_TIME ............... 89 ALTILINKER_TRACE_LOG_DIR ......................... 89 ALTILINKER_TRACE_LOG_FILE_COUNT ...... 90 ALTILINKER_TRACE_LOG_FILE_SIZE ............. 90 ALTILINKER_TRACE_LOGGING_LEVEL ........ 90 C CLASSPATH ............................................................ 43 COMMIT FORCE DATABASE LINK .............. 79 Control Data .......................................................... 23 CREATE DATABASE LINK ................................. 48 D DB Link ..................................................................... 14 DB Link 동작 방식 ............................................. 42 DB Link 삭제 ......................................................... 50 DB Link 생성 ......................................................... 48 dblink.conf ...................................................... 44, 83 DBLINK_GLOBAL_TRANSACTION_LEVEL .. 20 Distributed Transaction .................................... 23 DK 모듈 ........................................................... 17, 23 DK 버퍼 ................................................................... 24 DROP DATABASE LINK ..................................... 50 DUMP ....................................................................... 52 G Global Commit Node ........................................ 13 Global Transaction.............................................. 13 H Heterogeneous Link .......................................... 15 Homogeneous Link ............................................ 15 96 Database Link User’s Manual I IS_ARRAY_BOUND .............................................. 71 IS_FIRST_ARRAY_BOUND ................................. 72 IS_LAST_ARRAY_BOUND .................................. 73 J JAVA_HOME .......................................................... 43 JDBC 드라이버 ..................................................... 43 JRE .............................................................................. 43 L Link............................................................................. 12 Link Object ............................................................. 12 Linker Process ....................................................... 12 Linker Session ....................................................... 12 Local Server ........................................................... 12 Local Transaction ................................................ 13 P Participant............................................................... 13 pass-through 방식 ............................................. 28 pass-through 스타일 ........................................ 55 PRIVATE Database Link .................................... 17 PUBLIC Database Link ...................................... 17 R Remote Data ......................................................... 24 Remote Node ....................................................... 12 Remote Server ...................................................... 12 Remote Statement ......................................13, 19 Remote Statement Execution Level ........... 20 REMOTE 함수 ................................ 13, 28, 61, 71 REMOTE_ADD_BATCH ...................................... 73 REMOTE_ALLOC_STATEMENT ....................... 61 REMOTE_ALLOC_STATEMENT_BATCH ...... 74 REMOTE_BIND_VARIABLE ................................ 62 REMOTE_BIND_VARIABLE_BATCH ............... 74 REMOTE_EXECUTE_BATCH .............................. 75 REMOTE_EXECUTE_IMMEDIATE ............ 29, 60 REMOTE_EXECUTE_STATEMENT ................... 63 REMOTE_FREE_STATEMENT ........................... 63 REMOTE_FREE_STATEMENT_BATCH ........... 76 REMOTE_GET_COLUMN_VALUE_BIGINT .. 67 REMOTE_GET_COLUMN_VALUE_CHAR ..... 64 REMOTE_GET_COLUMN_VALUE_DATE ...... 69 REMOTE_GET_COLUMN_VALUE_DOUBLE 68 REMOTE_GET_COLUMN_VALUE_FLOAT ... 65 REMOTE_GET_COLUMN_VALUE_INTEGER ................................................................................ 66 REMOTE_GET_COLUMN_VALUE_REAL....... 68 REMOTE_GET_COLUMN_VALUE_SMALLINT ................................................................................ 66 REMOTE_GET_COLUMN_VALUE_VARCHAR ................................................................................ 64 REMOTE_GET_RESULT_BATCH ....................... 77 REMOTE_GET_RESULT_COUNT_BATCH ..... 76 REMOTE_NEXT_ROW ......................................... 70 REMOTE_TABL ....................................................... 28 REMOTE_TABLE ............................................ 28, 56 REMOTE_TABLE_STORE .................................... 57 ROLLBACK FORCE DATABASE LINK ........... 80 S SELECT ...................................................................... 55 Simple Transaction Commit Level............... 20 SQL문 ........................................................................ 28 START ........................................................................ 52 STOP .......................................................................... 52 STOP FORCE .......................................................... 52 T TARGETS 찾아보기 97 CONNECTION_URL ........................................ 91 JDBC_DRIVER ............................................ 91, 92 NAME ................................................................... 92 PASSWORD ....................................................... 92 USER ..................................................................... 93 TARGETS/ XADATASOURCE_CLASS_NAME ................................................................................ 93 TARGETS/XADATASOURCE_URL_SETTER_N AME ....................................................................... 93 Two-Phase Commit Level ................................ 21 U User Data ................................................................. 24 V V$DBLINK_ALTILINKER_STATUS ................... 19 V$DBLINK_DATABASE_LINK_INFO............... 18 V$DBLINK_GLOBAL_TRANSACTION_INFO ................................................................................ 19 V$DBLINK_LINKER_CONTROL_SESSION_IN FO........................................................................... 19 V$DBLINK_LINKER_DATA_SESSION_INFO 19 V$DBLINK_LINKER_SESSION_INFO.............. 19 V$DBLINK_REMOTE_STATEMENT_INFO ... 19 V$DBLINK_REMOTE_TRANSACTION_INFO ................................................................................ 19 ㄱ 글로벌 커밋 노드 ................................................ 13 글로벌 트랜잭션 .................................. 13, 19, 20 ㄷ 단순 트랜잭션 커밋 레벨 ................................ 20 데이터 타입 ............................................................ 36 데이터베이스 링크 .............................................. 14 데이터베이스 링크 모듈.................................. 17 데이터베이스 링크 방식.................................. 14 ㄹ 로컬 트랜잭션 ....................................................... 13 링커 데이터 세션 ................................................ 19 링커 세션 ................................................. 12, 17, 18 링커 제어 세션 ..
-
- [Altibase 5.3.3] DB Link User's Manual ㅣ 2012-12-10
- ALTIBASE Application Development Database Link Users’ Manual release 5.3.3 ALTIBASE Application Development Database Link User ’s Manual Release 5.3.3 Copyright 2001~2009 Altibase Corporation. All rights reserved. This manual contains proprietar
-
미리보기
ALTIBASE Application Development Database Link Users’ Manual release 5.3.3 ALTIBASE Application Development Database Link User ’s Manual Release 5.3.3 Copyright 2001~2009 Altibase Corporation. All rights reserved. This manual contains proprietary information of Altibase Corporation; it is provided under a license agreement containing restrictions on use and disclosure and is also protected by copyright patent and other intellectual property law. Reverse engineering of the soft- ware is prohibited. All trademarks, registered or otherwise, are the property of their respective owners Altibase Corporation 10F, Daerung PostTower II, 182-13, Guro-dong Guro-gu Seoul, 152-847, Korea Telephone: +82-2-2082-1000 Fax: 82-2-2082-1099 E-mail: support@altibase.com www: http://www.altibase.com Contents Preface ............................................................................................................................................................................. i About This Manual .................................................................................................................................................................................... ii 1. Introduction to Database Link .................................................................................................................................. 1 What is Database Link? ............................................................................................................................................................................2 Features of Database Link ......................................................................................................................................................................5 2. Objects, SQL Commands and Data Types for Database Link ................................................................................ 9 Objects for Database Link .................................................................................................................................................................... 10 SQL Commands for Database Link ................................................................................................................................................... 11 Data Types for Database Link ............................................................................................................................................................. 12 3. Configuration and Operation of Database Link .................................................................................................... 13 How to Run Database Link .................................................................................................................................................................. 14 Configuration ........................................................................................................................................................................................... 16 Procedure for Running Database Link ............................................................................................................................................ 18 4. How to Use Database Link ....................................................................................................................................... 19 CREATE DATABASE LINK ...................................................................................................................................................................... 20 DROP DATABASE LINK .......................................................................................................................................................................... 22 Extra Features of Database Link ........................................................................................................................................................ 23 SELECT Statements ................................................................................................................................................................................ 25 EXEC_REMOTE Hint ................................................................................................................................................................................ 27 AppendixA. Property and Data Dictionary ................................................................................................................ 29 Property related to Database Link .................................................................................................................................................... 29 Data Dictionary related to Database Link ...................................................................................................................................... 29 i Preface Preface About This Manual Database Link Users’ Manual ii About This Manual This manual contains information to help you understand the concepts of database link and use database link. Types of Users This manual is for ALTIBASE users as follows. Database Administrators Performance Managers D a t ab ase U s er s Application Program Developers Technical Assistance Team This manual assumes that you have the following background : A work ing k nowledge of your computer, your operating system, and the utilities that your operating system provides Some experience working with relational databases or exposure to database concepts Some experience with computer programming Some experience with database ser ver administration, operating system administration or network administration Software Dependencies This manual assumes that your database ser ver is ALTIBASE ser ver, Version 5.3.1. How This Manual is Structured This manual covers the following topics : Chapter 1, “Introduction to Database Link ” This chapter presents an introduction to, and over view of, database link such as what database link is. Chapter 2, “Objects, SQL Commands and Data Types for Database Link ” This chapter covers objects, SQL commands and data types for database link. Chapter 3, “Setting up Database Link Environment and Star ting up Database Link ” This chapter discusses how to set up database link environment and how to star t up database link. About This Manual iii Preface Chapter 4, “ Working with Database Link ” This chapter lists all kinds of features that database link provides, and describes how to create and drop database link. Appendix A, Proper ty and Data Dictionar y This appendix lists all kinds of proper ties and data dictionaries related to database link. Documentation Conventions This section offers documentation conventions as follows. They make it easier to gather information from Altibase manuals. Command-Line Conventions Typographical Conventions Command-Line Conventions This section defines and illustrates the format of commands that are available in Altibase products. These commands have their own conventions, which might include alternative forms of a com- mand, required and optional par ts of the command, and so for th. Element Description The command star ts. The syntax element which is not a com- plete command star ts with an arrow. The command continues in the next line. The syntax element which is not a complete command terminates with this sym- bol. The command continues from the previous line. The syntax element which is not a complete command star ts with this symbol. End of a statement. Mandatory Reserved word ; SELECT About This Manual Database Link Users’ Manual iv Typographical Convetions This manual uses the following standard set of conventions to introduce new terms, illustrate screen displays, describe command syntax, and so for th. Optional Mandator y field with optional items Only one field must be provided.. Optional field with optional item Optional Multiple fields are allowed. The comma must be in front of ever y repetition. Element Description NOT ADD DROP ASC DESC , ASC DESC Convention Meaning Example [ ] Displays the optional fields. VARCHAR [(size)] [[FIXED |] VA R I A B L E ] { } Displays the mandatory fields. Specifies a field that requires selection of more than one item. { ENABLE | DISABLE | COMPILE } | Argument indicating optional or manda- tor y fields { ENABLE | DISABLE | COMPILE }[ ENABLE | DISABLE | COMPILE ] About This Manual v Preface Related Reading For additional technical information, consult the following manuals. ALTIBASE Administration Star ting User ’s Manual ALTIBASE Administration Administrator ’s Manual ALTIBASE Administration Replication User ’s Manual ALTIBASE Application Development SQL User ’s Manual ALTIBASE Application Development ODBC User ’s Manual ALTIBASE Application Development Spatial SQL User ’s Manual ALTIBASE Application Development Application Program Inter face User ’s Manual ALTIBASE Tools iSQL User ’s Manual ALTIBASE Message Error Message Reference On-Line Manuals ... Repetition of the previous argument- Specifies the omission of the example codes. SQL> SELEC T ename FROM employee; ENAME ----------------------- SWNO HJNO HSCHOI . . . 20 rows selected. Other symbols Other Symbols EXEC :p1 := 1; acc NUMBER(11,2); Italics Within text, new terms and emphasized words appear in italics. Within syntax, dia- grams, values that you are to specify appear in italics. ELEC T * FROM table_name; CONNEC T userID/password; Lower Case Let- ters Program elements provided by the user such as table names, column names, file names, etc. SELEC T ename FROM employee; Upper Case Let- ters All elements provided by the system or keywords appear in uppercase letter. DESC SYSTEM_.SYS_INDICES_; Convention Meaning Example About This Manual Database Link Users’ Manual vi Manuals (PDF and HTML) in Korean and English are available at Altibase Technical Center (http:// atc.altibase.com/). Altibase Welcomes Your Comments Please let us know what you like or dislike about our manuals. To help us with future versions of our manuals, please tell us about any corrections or classifications that you would find useful. Include the following information : The name and version of the manual that you are using Any comments that you have about the manual Your name, address, and phone number Write to us at the following electronic mail address : support@altibase.com When you need an immediate assistance regarding technical issues, please contact Altibase Techni- cal Center. Thank you. We appreciate your feedback and suggestions. 1 Introduction to Database Link 1Introduction to Database Link This chapter describes database link concepts such as what it is, and also lists features that database link provides. What is Database Link? Database Link Users’ Manual 2 What is Database Link? Co n ce p t s A database link can be a pointer that defines a one -way communication path from an Altibase ser ver to another database ser ver when you want to access data on a remote database. These database ser vers should meet the following conditions. Database ser vers should have mutually logical relationship. Database ser vers should be connected to computer communication network. Database ser vers should be separated locally. Their logical relationship means that there is a correlation of data between ser vers, and you should be given the privileges you need to per form your operations and can also centralize data segregated to different databases. Database servers connected to computer communication network means that they are linked each other via hardware and sof tware. These hardware and soft ware cover from intranet or subnet to WAN or internet. Database ser vers can be on the same subnet. Database ser vers separated locally means that they as data ser vice provider are designed to run independently and cover from shor t-range hardware platforms to individual sites. Terminologies Local Server A da t a base is the subjec t tha t cr ea t e s and uses da ta ba se link . Local ser ver sends queries to remote ser ver for execution. Remote ser ver executes them and send their results back to local ser ver. Only ALTIBASE as a local ser ver is available to run database link. Remote Ser ver A database is the destination where local ser ver sends queries for execution. Remote ser ver executes them sent from a local ser ver such as ALTIBASE, and send their results back to a local ser ver such as ALTIBASE. You can also use ALTIBASE or relational databases as a remote ser ver. Relational database should be connected to local ser ver with using ODBC. AltiLinker AltiLinker is the process that sends/receives data to/from remote ser ver when you use data- base link. If database link is active, AltiLinker does the same as remote ser ver. For example, when remote ser ver is star ted up, AltiLinker star ts running and when ser ver is What is Database Link? 3 Introduction to Database Link shut down, AltiLinker stops running. However, you can manually terminate or restart up AltiLinker with ALTER DATABASE LINKER statement. Location Descriptor Location descriptor should be used in queries to set database link, and is specified as @ between names of object and link. Location descriptor is used only in FROM clause. SELEC T * FROM emp@link1; How to Implement Database Link A database link is a connection between two physical database ser vers that allow a client to access them as one logical database. Figure 1-1 How to Implement Database Link [Figure 1-1] illustrates how to implement database link in outline. If you execute queries, local ser ver sends queries to remote ser ver after check ing if remote ser ver has their destination table. And then remote ser ver sends their results back to local ser ver. SELECT * FR OM ta ble 1@ dblink 1 Database Link TABL E 1 Server2 : 222.112.1.236 table 1@ dblin k 1 table 1@ 222.112 . 1.236 What is Database Link? Database Link Users’ Manual 4 Syste m E nv iro n ment Segregated servers should provide independent operating environment to implement database link. In other words, queries should be per fectly suitable for each ser vers to execute them. For example, if Site1 stores information about the manufacturing process or a product, local ser ver should be designed to execute transaction without undergoing a process of other systems when transaction related to product information occurs. The following figure roughly illustrates operating environment of database link. Multiple sites or ser vers provide independent operating environment and are interconnected with computer com- munication network. Each of them has its own database. Queries can be sent to other sites and ser v- ers for execution through computer communication network. Figure 1-2 Operating Environment of Database Link Computer Network Features of Database Link 5 Introduction to Database Link Features of Database Link Database link has following features. Convenience Efficienc y Scalability High Availability Co nve n i e n c e Database link can provide transparenc y in location of remote ser vers. In other words, user applica- tion does not need to know the location of data used for last result. Figure 1-3 Application’s Access to Each Remote Servers For example, assume that product information is stored in Site1 and manufacturing information is stored in Site2 respectively as [Figure 1-4]. If you want to know manufacturing information on cer- tain product, user application gets product information in Site1 and manufacturing information in Site2 respectively and then joins data in Site1 and Site2. You can get required information. A ppli c a ti on P r odu c t I n f or m a t i onManufacturing Information Features of Database Link Database Link Users’ Manual 6 Figure 1-4 Application’s Access with Database Link However, if executing queries in local ser ver of system using database link, local ser ver displays final results sent by remote ser ver. In other words, even though data are distributed in multiple ser vers or sites physically, you can use them as if they are stored in one ser ver logically. Efficienc y If mass data are centralized, QoS can’t be guaranteed because multiple transactions can interrupt each other when they occur. Figure 1-5 The Environment of Single Server A ppli c a t i on C u s tom e r I n f or m a t i on of ‘A ’ C ompa n yC u s t om e r I n f or m a t i on of A’ s C oope r a t i on P a r tn e r DB Link 고객정보 Customer Infor mati on Sales Fi gur es Materi al M anagement Features of Database Link 7 Introduction to Database Link However, if you distribute data that are seldom joined logically to multiple ser vers, table workloads are also provisioned across them. You can join data in each table with using database link. In other words, transactions interrupt each other less and less. So you can use system resource such as CPU, memor y and IO because transaction can occur in each ser ver independently. Figure 1-6 Data Distribution Environment Scalability Database link has more flexible scalability than centralized system because if using database link, you can install more ser vers even though running system reaches the limits of its process. High Availability Even though failure occurs in some of all systems running database link, the others can continue to per form work. [Figure 1-7] illustrates database link system where Site1 stores product information, Site2 contains manufacturing information and Site3 has shipping information. Master DB Customer Information AP1 AP2 AP3 Remote D B1 Remote D B2 Sales Fi gu r e s Material M anagement Features of Database Link Database Link Users’ Manual 8 Figure 1-7 Available Service even with Failure in some Servers A ppli c a t i on Mas ter Server S it e 1. P rodu c t I n f orm ation S ite 2. M anu f ac tu ring I nf orm ation S ite 3 . S h ippin g I n f orm at ion of P rodu c t 9Objects, SQL Commands and Data Types for Database 2Objects, SQL Commands and Data Types for Database Link Objects for Database Link Database Link Users’ Manual 10 Objec ts for Database Link This section covers what objects are existed in ALTIBASE to suppor t database link. Schema Objects The following table displays what shema objects are existed to suppor t database link. Table 2-1 Schema Objects for Database Link Table A table is most basic schema object organized in database and stores records physically. Database links are a foundation for inter operability between separated tables. Vi e w View can join and simplify multiple tables into a single vir tual table. Views can be joined to create new one and made up of base tables using database link. So view is also object using database link because a view is a vir tual table defined on base tables. Stored Procedure Stored procedure is a database procedure executing several SQL statements at once with input, out- put and input/output arguements depending on condition specified in body. Database link is used in a stored procedure except ROW T YPE variable declaration and cursor. Schema Object Supported Ta b l e O Index X View O Stored Procedure ? Sequence X Queue X Trigger X Synonym X Constraint X SQL Commands for Database Link 11 Objects, SQL Commands and Data Types for Data- SQL Commands for Database Link DDL Local ser ver can’t execute DDL(Data Definition Language) in remote ser ver by using database link. DCL Local ser ver can’t execute DCL(Data Control Language) in remote ser ver by using database link. DML ALTIBASE doesn’t suppor t operations such as INSERT, UPDATE and DELETE, but SELEC T operation for using database link. A SELEC T statement can contain all clauses such as selection, join, subquer y, aggregation, set and view. You can use database link with a SELEC T query nested inside DDL/DML statement. Commands Suppor ted DDL X DCL X SELEC T O DML X Data Types for Database Link Database Link Users’ Manual 12 Data Types for Database Link Only standard data types in ODBC are suppor ted because you can access database via ODBC inter- face when using database link. The following table shows suppor ted or unsuppor ted data types defined by ALTIABSE. Table 2-2 Data Types for Database Link ALTIBASE Data Types ODBC Data Types Suppor ted CHAR SQL_CHAR O VARCHAR SQL_VARCHAR O NCHAR SQL_WCHAR O NVARCHAR SQL_WCHAR O BIGINT SQL_BIGINT O DECIMAL SQL_DECIMAL O DOUBLE SQL_DOUBLE O FLOAT SQL_FLOAT O INTEGER SQL_INTEGER O NUMBER SQL_NUMERIC O NUMERIC SQL_NUMERIC O REAL SQL_REAL O SMALLINT SQL_TINYINT O DATE SQ L_ DATE O BLOB/CLOB X BY T E X NIBBLE X BIT X GEOMETRY X 13 Configuration and Operation of Database Link 3Configuration and Opera- tion of Database Link Database link suppor ted by ALTIBASE uses ODBC to access from local ser ver to remote ser ver. This chapter assumes that you already configure unixODBC as an open source product because ODBC driver manager can be differently installed depending on situation and configuration in the system. How to Run Database Link Database Link Users’ Manual 14 How to Run Database Link Database Link Procedure Figure 3-1 Procedure of Running Database Link 1. You should send queries containing locator to local ser ver. 2. Quer y processor parses these queries and analyzes locator in local ser ver. And then quer y pro- cessor regenerates queries to send to remote ser ver as a result of analyzing locator and plans. 3. If quer y processor asks storage manager to use a table scan according to the plans, storage manager sends a request of a table scan in remote ser ver to AltiLinker and waits the result. At this time, native connections are built for communication between storage manager and AltiL- inker. 4. AltiLinker passes the quer y from storage manager to remote ser ver for execution. With ODBC, AltiLinker can access and interact with remote ser ver. Therefore, ODBC driver manager should be installed in local ser ver and ODBC driver should be installed in remote ser ver respectively. 5. Remote ser ver executes queries as requested from AltiLinker and then passes the quer y result via ODBC. Data size of result can be different depending on the format of queries regenerated by quer y processor. 6. The quer y result is returned to AltiLinker from remote ser ver and then AltiLinker sends each re co rd of t h e qu e r y res u lt to l oc al s er ve r. Lo ca l s e r ver co nver t s t he d at a f rom O D BC for m at i nto A ppli c a t i on ALTIBASE DB M S QP SM DB M S Re m ote D BMS OD BC D rive r AltiL inke r O D BC D rive r Ma n a g e r Mas ter Server Remote Server ① ②③ ④⑤ Na tiv e ConnectionOD BC Sending DB Link Queries for Execution How to Run Database Link 15 Configuration and Operation of Database Link a format expected by local ser ver and passes them from storage manager to quer y processor. 7. Quer y processor returns data after pulling together and filtering data sent from storage man- ager. Data should be suited for the result of queries executed by you. Database Link Communication 2.> and 5.> above this section discuss the communication between local ser ver and AltiLinker. You can choose the type of native connections depending on LINKER_LINK_T YPE. If LINKER_LINK_T YPE is set to 0, TCP is used. If LINKER_LINK_T YPE is specified as 1, Unix domain is used. If LINKTER_LINK_T YPE is set to 2, IPC is used. Only ODBC is suppor ted currently for communication in 3.> and 4.>. For details, see ‘Configuration’ Configuration Database Link Users’ Manual 16 Configuration ODBC Driver Manager Installation A database link is a connection between local and remote ser vers that allow a client to access them with ODBC. Altibase ODBC driver should be added to package. To use this, ODBC driver manager should be additionally installed in the system because ALTIBASE doesn’t provide ODBC driver man- ager. UnixODBC driver manager is suppor ted as an open source product on Unix and Linux. You can find the release at http://www.unixodbc.org. Other ODBC driver managers are Data Direct, Eye Soft and so on. Windows has its own driver. ODBC provides a common inter face for applications to access data from database management sys- tems. Access to database is managed by ODBC driver manager. So the driver manager probably can var y depending on specific database. ALTIBASE adds librar y path of ODBC driver manager installed in ALTIBASE to librar y environment variable of account operated in ALTIBASE and creates odbc.ini in home directory for ALTIBASE account or etc director y where ODBC driver manager is installed. How to Configure odbc.ini You should add DSN when creating odbc.ini. and can set several DSNs in odbc.ini. as follows. [ODBC Data Sources] altibase_odbc = Altibase ODBC Driver [altibase_odbc] Driver = /home/altibase/altibase_home/lib/libaltibase_odbc-64bit-ul32.so ServerType = Altibase Server = 192.168.3.62 Port = 20300 NLS_USE = US7ASCII Database = mydb FetchBufferSize = 64 ReadOnly = no If you create altibase_odbc as DSN, information of destination ser ver with using database link are also specified. At this time, you can choose libaltibase_odbc-64bit-ul32.so or libaltibase_odbc-64bit- ul64.so in $ALTIBASE_HOME/lib/ as a driver if using ALTIBASE as a remote database. Because sizes of SQLLEN and SQLULEN var y depending on types of 64bit ODBC managers. ALTIBASE version 5.1.5.28 or later suppor ts ALTIABSE 64bit unixODBC driver with both SQLLEN 32bit and 64bit. 64bit ser ver/client packages contain 2 drivers as follows. Yo u c a n s e l e c t a d r i v e r depending on ODBC manager as the following table. Altibase 64 bit unix odbc driver libaltibase_odbc-64bit-ul64.so(SQLLEN is 64bit) libaltibase_odbc-64bit-ul32.so(SQLLEN is 32bit) Configuration 17 Configuration and Operation of Database Link Table 3-1 ODBC Manager 64 bit odbc manager SQLLEN unix-odbc 64bit(~2.2.12) 32bit unix-odbc 64bit (~2.2.12) DBUILD_REAL_64_BIT_MODE 64bit unix-odbc 64bit(2.2.13~ ) 64bit unix-odbc 64bit (2.2.13~ ) BUILD_LEGACY_64_BIT_MODE 32bit iodbc 64bit 64bit Window 64bit 64bit Procedure for Running Database Link Database Link Users’ Manual 18 Procedure for Running Database Link Linker Ac tivation AltiLinker should be activated to use Altibase database link. To achieve this, you should set the val- ues of database link proper ties in $ALTIBASE_HOME/conf/altibase.proper ties. First, you should star t to specify DBLINK_ENABLE as 1 to activate linker and then specify LINKER_PORT_NO as por t number used when databases send or receive data. At this time, if LINKER_LINK_T YPE is TCP, you should set LINKER_PORT_NO. If you star t up ALTIBASE after specifying proper ties, Linker runs with ALTIBASE together. For details about properties related to database link, see proper ties related to database link section in Star ting User ’s Manual. 19 How to Use Database Link 4How to Use Database Link Database link creation, its drop and extra features are covered in this chapter. CREATE DATABASE LINK Database Link Users’ Manual 20 CREATE DATABASE LINK You can create database link with CREATE DATABASE LINK statement for only one remote ser ver. Synta x CREATE [PUBLIC|PRIVATE] DATABASE LINK dblink_name WITH ODBC dsn CONNECT TO user_id IDENTIFIED BY password; Description To create a database link, you must have the CREATE DATABASE LINK system privilege and user ’s SYS privilege. PUBLIC|PRIVATE You should specify database link to create as PUBLIC or PRIVATE. You can specify PUBLIC to create a public database link available to all users. If you omit this clause, the database link is private and is available only to you. dblink_name This sets the name of database link to be created. dsn ODBC driver should be installed in the ser ver because database link enables you to access to remote ser ver with ODBC. And DSN for remote ser ver should be also specified in ODBC environment file. For details, see ‘How to Configure odbc.ini.’ user_id/password This sets user id and its password required to access data on a database in remote ser ver. However, if odbc.ini has information of user and password, this setting has a higher priority than that specified by this statement. Therefore, ODBC setting is not recommended when you use CREATE DATABASE LINK statement. However, the user should be granted to access destination objects when connecting to ser ver with using database link. O ther wise, errors occur related to privileges. Example user1 is specified as both user id and its password for database link in remote database whose DSN is altibase_odbc. At this time, user should create database link whose name is link1 used only for him. iSQL> CREATE PRIVATE DATABASE LINK link1 WITH ODBC altibase_odbc CONNECT TO user1 IDENTIFIED BY user1; CREATE DATABASE LINK 21 How to Use Database Link user1 is specified as both user id and its password for database link in remote database whose DSN is altibase_odbc. At this time, you should create database link whose name is link2 used for all users in the system. iSQL> CREATE PUBLIC DATABASE LINK link2 WITH ODBC altibase_odbc CONNECT TO user1 IDENTIFIED BY user1; DROP DATABASE LINK Database Link Users’ Manual 22 DROP DATABASE LINK You can drop database link with DROP DATABASE LINK statement. Synta x DROP [PUBLIC|PRIVATE] DATABASE LINK dblink_name; Description You should be SYS user and have the DROP DATABASE LINK system privilege to drop database link. dblink_name This sets the name of database link to be dropped. Restric tion You can’t drop database link while using it. You can drop database link only if you don’t execute que - ries for it. If you drop database link while executing queries, errors occur. Example user1 should drop database link specified as PRIVATE. The name of database link is dblink1. iSQL> DROP DATABASE LINK dblink1; user1 should drop database link specified as PUBLIC. The name of database link is dblink1. iSQL> DROP PUBLIC DATABASE LINK dblink1; Extra Features of Database Link 23 How to Use Database Link Ex tra Features of Database Link Synta x ALTER DATABASE LINKER START; ALTER DATABASE LINKER STOP; ALTER SESSION CLOSE DATABASE LINK; Prerequisite You can use extra features of database link in sysdba mode with user ’s SYS privilege. Description LINKER START This star ts to run AltiLinker. However, there shouldn’t be the existing AltiLinker. LINKER STOP This stops to run AltiLinker. However, no transaction should exist using database link when terminat- ing database link. O ther wise, you fail to execute this statement. SESSION CLOSE You can close only database link with this statement. When you connect to ser ver, session is created there. If you run database in this session, session allocated for you creates other session for database link to connect to AltiLinker. And when session is closed, session for database link is also closed together. If you access a database link in a session, then the link remains open until you close the session. At this time, you can close a database link session with ALTER SESSION CLOSE DATABASE LINK state - ment. In other words, you can’t end entire session allocated for you with SESSION CLOSE statement but close session for database link. Extra Features of Database Link Database Link Users’ Manual 24 Example $ isql -u sys -p manager -sysdba ------------------------------------------------------- Altibase Client Query utility. Copyright 2000, ALTIBASE Corporation or its subsidiaries. All Rights Reserved. ------------------------------------------------------- ISQL_CONNECTION = UNIX, SERVER = 127.0.0.1, PORT_NO = 20300 iSQL(sysdba)> ALTER DATABASE LINKER STOP; Alter success. iSQL(sysdba)> ALTER DATABASE LINKER START; Alter success. iSQL(sysdba)> ALTER SESSION CLOSE DATABASE LINK; Alter success. SELECT Statements 25 How to Use Database Link SELEC T Statements ALTIBASE doesn’t suppor t INSERT, UPDATE and DELETE operations currently, but grants only SELEC T operation when you use database link. This section discusses operations and features using SELEC T statements. FROM Clause You should set location descriptor in FROM clause of SELEC T statements to use database link. Loca- tion descriptor is comprised of @ and link name. Object name of location descriptor should exist in remote ser ver. Object can contain user name. You can use table and view as destination objects suppor ting data- base link in ALTIBASE. Example SELECT * FROM emp@link1; WHERE Clause You should use WHERE clause when setting condition for object in remote ser ver to use database link. When using WHERE clause, you shouldn’t set location descriptor in WHERE clause. You should give alias to destination object in FROM clause and use alias in WHERE clause. Example Local server searches for rows whose value is greater than 100 in I1 on T1 table of remote ser ver that link1 indicates. SELECT * FROM T1@link1 WHERE I1 > 100; Local ser ver searches for names of employees that work in rnd department. They should be saved in both emp1 of local ser ver and emp2 of remote ser ver that link1 indicates. 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'; Others You can use options such as selection, join, subquer y, aggregation, set and view in SELEC T state - ment. You can also use subselect statements to run database link. SELECT Statements Database Link Users’ Manual 26 Example Local ser ver searches for i1 columns in T1 of local ser ver that link1 indicates without repeating same columns. SELECT DISTINCT i1 FROM T1@link1; You can get result containing depar tments of all employees in local ser ver when join- ing t_member with t_dept in remote ser ver that link1 indicates. If the value of depar tment ID is 0 or greater, local ser ver estimates the number of employees and their average age in each department. SELECT t1.dept_id, COUNT(*), AVG(age), SUM(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; You can get result containing all employees in local ser ver when joining t_member with t_dept in remote ser ver that link1 indicates. If employees are more than 30 years old, local ser ver choose 3 employees. The value of their ID should be biggest in descending numeric order. Last result in local ser ver is expressed in their names, age and the total sum of age of all employees. 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 AND 10 > (SELECT count(*) FROM t_dept@link1) ORDER BY t1.member_id DESC LIMIT 3; Local ser ver searches for name and age in t2 of remote ser ver that link1 indicates, and inputs them in t1 of local ser ver. INSERT INTO t1 SELECT name, age FROM t2@link1; EXEC_REMOTE Hint 27 How to Use Database Link EXEC_REMOTE Hint Using EXEC_REMOTE hint enables local ser ver to send and execute queries to remote ser ver. If you use EXEC_REMOTE hint, local ser ver can work JOIN in remote ser ver with database link and receive only result set with columns from different tables. And this is also possible for queries if you specify AUTO_REMOTE_EXEC as 1. Restric tions You can use EXEC_REMOTE hint if target objects exist in same remote ser ver when executing que - ries. However, you can’t use EXEC_REMOTE hint considering the following. Subqueries contain objects of local ser ver. Database link names of objects are different. Subqueries contain a stored procedure or sequence. Host variable is used in subqueries. Subqueries reference ex ternal column. Even though subqueries meet one of criterions above, EXEC_REMOTE hint is ignored. If outer and inner queries use EXEC_REMOTE hint, EXEC_REMOTE hint works in outer quer y and is ignored in inner quer y. In other words, if outer quer y doesn’t use EXEC_REMOTE hint, EXEC_REMOTE hint can work in inner quer y. Example Local ser ver searches for the name on employee table in remote ser ver that link1 indi- cates, and then executes entire queries. Only result is returned in local ser ver. SELECT /*+EXEC_REMOTE*/ DISTINCT name FROM employee@link1; If the sum total of values of I2 in rows whose value is 3 in I1 on T2 table of remote ser ver that link1 indicates are greater than 5, local ser ver searches for rows on T1 table in remote ser ver. SELECT /*+EXEC_REMOTE*/ * FROM T1@link1 WHERE 5 < ( SELECT /*+EXEC_REMOTE*/ SUM(I2) FROM T2@link1 WHERE I1=3 ); This example has same queries as except hint. Subqueries judge truth or false of conditional clause with results returned by remote ser ver that executes entire queries. And then local ser ver searches for data in T1 by using last results in remote ser ver again. SELECT * FROM T1@link1 WHERE 5 < ( SELECT /*+EXEC_REMOTE*/ SUM(I2) FROM T2@link1 WHERE I1=3 ); EXEC_REMOTE Hint Database Link Users’ Manual 28 Property related to Database Link 29 Property and Data Dictionary Appendix A. Property and Data Dictionary Proper ty related to Database Link You should modify ALTIBASE property files to have the per fect ones for using database link. Proper- ties related to database link are as follows. For more details, see Star ting User ’s Manual. AUTO_REMOTE_EXEC DBLINK_ENABLE DBLINK_QUERY_TIMEOUT LINKER_CONNEC T_TIMEOUT LINKER_LINK_T YPE LINKER_PORT_NO LINKER_RECEIVE_TIMEOUT LINKER_THREAD_COUNT LINKER_THREAD_SLEEP_TIME MAX_DBLINK_COUNT R
릴리즈노트
-
- ALTIBASE HDB (ver 6.3.1.0.0) Release Notes (English) ㅣ 2013-11-06
- Link Feature C/C++ External Procedures and Functions - This feature enables functions written in C/C++ to be called in SQL statements of ALTIBASE HDB. - Since the external C/C++ procedure execution and the HDB server process are separated, the ...
-
미리보기
ALTIBASE HDB 6.3.1 Release Notes (2013/11/05) ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB Table of Contents Table of Contents ................................................................................................. 2 1. System Requirements ................................................................................. 3 2. Release Information ..................................................................................... 4 2.1 What’s New in ALTIBASE HDB 6.3.1 ............................................. 4 2.2 Changes ......................................................................................... 7 Versions of Database Components .............................................. 7 Compatibility ................................................................................. 7 Properties ...................................................................................... 8 Performance Views ..................................................................... 10 Error Messages (HDB 6.1.1 to HDB 6.3.1) .................................. 11 2.3 Packages ................................................................................... 14 2.4 Downloads ................................................................................... 15 Location ...................................................................................... 15 Installation ................................................................................... 15 ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB 1. System Requirements Minimum Hardware Requirements 1GB RAM (Recommended: 2GB) 1 CPU (Recommended: 2 CPUs) 4GB hard disk space (Recommended: 12GB) Supported Operating Systems and Platforms ALTIBASE HDB 6.3.1 can be run on the operating systems and platforms listed in the table below. OS CPU Version Bit (Server) Bit (Client) AIX PowerPC 5.3 tl1 and higher 64-bit 64-bit, 32-bit HP-UX PA-RISC 11.11 and higher 64-bit 64-bit, 32-bit IA64 11.23 and higher SUN SPARC 2.8 and higher 64-bit 64-bit, 32-bit i86PC 2.10 and higher Windows x86, x86-64 Windows 2003 and higher 64-bit, 32-bit 64-bit, 32-bit LINUX x86, x86-64 (GNU glibc 2.3.4 and higher) ES40, ES50, ES60 64-bit, 32-bit 64-bit, 32-bit Java version: ALTIBASE HDB 6.3.1 is compatible with JDK 1.4 and higher. ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB 2. Release Information 2.1 What’s New in ALTIBASE HDB 6.3.1 2.1.1 Improved Functionality - SQL Extensions and OLAP Functions RETURNING Clause in DML Statements (SQL Extension) - The RETURNING clause can be used in INSERT, UPDATE and DELETE statements to both update and search data in one call. Also, the BULK COLLECT clause can be used in PSM to simultaneously return multiple rows as collection variables. Foreign Keys with Set NULL Value on Delete (SQL Extension) - When a row in the parent table is deleted, the corresponding foreign key column values in the child table are set to NULL for the purpose of referential integrity. UPDATE and DELETE on JOIN Results (SQL Extension) - As for regular tables, INSERT, UPDATE and DELETE statements can change the data of views and joined views. Further Support for Hierarchical Queries (SQL Extension) Aliases for Subqueries (SQL Extension) Merge DML (SQL Extension) - The MERGE statement can either update or insert data into the target table, depending on the given condition. Multiple Table Insert (SQL Extension) - The MULTIPLE TABLE INSERT clause can insert result sets generated from subqueries into multiple tables. Instead of Trigger (SQL Extension) - The INSTEAD OF TRIGGER fires only the trigger, and not the triggering DML statement. Analytic Functions (Window Functions) (OLAP) Aggregate Window Functions AVG, COUNT, MAX, MIN, STDDEV, SUM, VARIANCE, GROUP_CONCAT Ranking Window Functions RANK, DENSE_RANK, ROW_NUMBER, LAG, LEAD Row Ranking-Related Window Functions FIRST_VALUE, LAST_VALUE, NTH_VALUE, FIRST_VALUE_IGNORE_NULLS, LAST_VALUE_IGNORE_NULLS, NTH_VALUE_IGNORE_NULLS Support for Grouping Set(ROLLUP, CUBE) (OLAP) - The use of ROLLUP and CUBE extensions in the GROUP BY clause is supported for calculations of group sums of aggregate results. ROLLUP Returns detailed information of grouped result sets. ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB CUBE Executes groupings of all possible combinations on specified grouping columns. CUBE creates groupings on 2n combinations, where n is the number of grouping columns. String Conversion Functions - The HEX_ENCODE and HEX_DECODE functions have been added for string conversion. HEX_ENCODE Converts a string of ASCII characters into a hexadecimal string HEX_DECODE Converts a hexadecimal string into a string of ASCII characters 2.1.2 Improved Functionality - Application Programming Interfaces Compatibility with JDBC 3.0 - The ALTIBASE JDBC driver conforms to the JDBC 3.0 specification. PHP Extension - The PHP interface enables the access of web pages written in PHP to ALTIBASE HDB. Improvement of the ODBC Feature - The ALTIBASE ODBC driver interface and its efficiency have been improved with the addition of functions. SQLCancel Cancels the statement under process SQLBulkOperation Performs bulk insertions or updates, deletes, and fetches bookmarked rows SQLSetPos Specifies the cursor position in a row set. Addition of cursor types and cursor behaviors - Apart from the previously supported forward-only and static cursor types, the keyset- driven cursor type and scrollable, updatable cursor behaviors are now available for use. Improvement of the OLE DB Interface - An interface related to scrollable and updatable cursors for rowset objects has been added. - Calls to stored procedures can be made with the OLE DB interface. LOB SUPPORT - LOB parameters, internal variables and return values can be used in stored procedures and triggers. Improvement of the ADO.NET Provider Interface - The addition of the AltibaseBulkCopy class supports the copying of bulk data. Improvement of the Database Link Feature C/C++ External Procedures and Functions - This feature enables functions written in C/C++ to be called in SQL statements of ALTIBASE HDB. - Since the external C/C++ procedure execution and the HDB server process are separated, the database is not affected - even if there is an error in the external C/C++ procedure written by the user. ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB 2.1.3 Improved Functionality- Database Objects Global Non-Partitioned Indexes - The use of global non-partitioned indexes on partitioned tables is supported. CHECK Constraints - By specifying CHECK constraints, referential integrity rules can be enforced for given columns. Function-Based Indexes - Function-based indexes create indexes based on the calculated results of functions or expressions. Expressions can include internal SQL functions and user-defined functions. Stored Packages - A stored package is a grouped object of variables, subprograms, cursors and other objects associated with stored procedures. Stored packages enable the user to modularize objects associated with a given operation; thus, the writing of application programs is made easy and performance is enhanced. Temporary Tables - Temporary tables can be used to temporarily hold data for the duration of a session or transaction. Temporary tables are useful for temporarily holding result sets constructed from the execution of multiple DML statements in application programs, and can enhance the performance speed of complex queries. Materialized Views - Materialized Views improve query performance by physically storing the results of frequently-accessed views. 2.1.4 Improved Performance - Client Performance Enhancement Deferred Prepare - The DEFER_PREPARES property can be used with the SQLDriverConnect function to specify whether or not communication to the server is to be deferred when SQLPrepare is executed. LOB Cache and Interface - The LOB cache feature has been added to improve the performance of queries that return LOB data. 2.1.5 Efficiency Dedicated Thread Mode (Efficient CPU Usage) - When a multiple number of clients connect to the server and execute queries, the dedicated service thread mode creates one service thread for each client session to process the clients’ request. Subquery Unnesting (Query Optimization) - By unnesting nested subqueries, the performance of queries is improved. Improvement of Cost Estimation (Query Optimization) - The query optimizer has been improved to perform the most efficient cost estimation for the purpose of query optimization. ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB 2.1.6 Availability Incremental Backup - Apart from the full backup method, ALTIBASE HDB provides incremental backup and other forms of incremental backup. 2.1.7 HDB Server Management Auditing Statements, Objects, and Audit Logs - The database administrator can perform an audit on objects, statements and DDL commands for security management of data. Database Dump - The dumpdb utility analyzes checkpoint images stored on the disk and enables the user to check schemas created in the database, without running the server. 2.1.8 Security Reinforcement Reinforcement of Password Management Policies Triple encrypt - The Triple-DES encryption(3DES) algorithm supports the encryption and decryption of strings. 2.2 Changes The following section describes the added, updated and removed features for the benefit of database administrators and developers. Versions of Database Components Updated Versions of Database Components ALTIBASE HDB Version Database Binary Version Communicatio n Protocol Version Meta Version Replication Protocol Version 6.1.1 6.1.1 5.6.3 5.14.1 6.1.1 6.3.1 6.2.1 7.1.1 6.2.1 7.4.1 Compatibility Database Binary Version The database binary version indicates the compatibility between database image files and log files. Since the format of database image files and log files change, the existing database must be migrated when the database is upgraded. ALTIBASE HDB Version Database Binary Version 6.1.1 6.1.1 6.3.1 6.2.1 ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB Communication Protocol Version The communication protocol version indicates the compatibility of the communication protocol between the ALTIBASE HDB server and the client. All versions(Major, Minor, Patch) have been changed for ALTIBASE 6.3.1; it is incompatible with ALTIBASE HDB 6.1.1. Therefore, client application programs built for use with ALTIBASE HDB 6.1.1 must be recompiled and re-linked to the ALTIBASE 6.3.1 libraries. ALTIBASE HDB Version Communication Protocol Version 6.1.1 5.6.3 6.3.1 7.1.1 Meta Version The meta version indicates the compatibility of meta tables ALTIBASE HDB Version Meta Version 6.1.1 5.14.1 6.3.1 6.2.1 Replication Protocol Version The replication protocol version has changed for ALTIBASE HDB 6.3.1; replication between ALTIBASE HDB 6.1.1 and 6.3.1 is unsupported. ALTIBASE HDB Version Replication Protocol Version 6.1.1 6.1.1 6.3.1 7.4.1 Properties The following properties have been added. For further information on each property, please refer to the General Reference. New Properties for ALTIBASE HDB ARCHIVE_MULTIPLEX_COUNT ARCHIVE_MULTIPLEX_DIR AUDIT_LOG_DIR COLLECT_DUMP_INFO DBLINK_ALTILINKER_CONNECT_TIMEOUT DBLINK_DATA_BUFFER_ALLOC_RATIO ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB DBLINK_DATA_BUFFER_BLOCK_COUNT DBLINK_DATA_BUFFER_BLOCK_SIZE DBLINK_GLOBAL_TRANSACTION_LEVEL DBLINK_REMOTE_STATEMENT_AUTOCOMMIT DK_MSGLOG_COUNT DK_MSGLOG_FILE DK_MSGLOG_FLAG DK_MSGLOG_RESERVE_SIZE DK_MSGLOG_SIZELOB_OBJECT_BUFFER_SIZE DUMP_MSGLOG_COUNT DUMP_MSGLOG_FILE DUMP_MSGLOG_RESERVE_SIZE DUMP_MSGLOG_SIZE ERROR_MSGLOG_COUNT ERROR_MSGLOG_FILE ERROR_MSGLOG_RESERVE_SIZE ERROR_MSGLOG_SIZE EXTPROC_AGENT_CONNECT_TIMEOUT EXTPROC_AGENT_IDLE_TIMEOUT FAILED_LOGIN_ATTEMPTS GROUP_CONCAT_PRECISION HASH_AREA_SIZE LOB_CACHE_THRESHOLD LOG_MULTIPLEX_COUNT LOG_MULTIPLEX_DIR MM_MSGLOG_RESERVE_SIZE NLS_CURRENCY NLS_ISO_CURRENCY NLS_NUMERIC_CHARACTERS NLS_TERRITORY OPTIMIZER_FEATURE_ENABLE OPTIMIZER_UNNEST_AGGREGATE_SUBQUERY OPTIMIZER_UNNEST_COMPLEX_SUBQUERY OPTIMIZER_UNNEST_SUBQUERY PASSWORD_GRACE_TIME PASSWORD_LIFE_TIME PASSWORD_LOCK_TIME PASSWORD_REUSE_MAX PASSWORD_REUSE_TIME PASSWORD_VERIFY_FUNCTION PSM_IGNORE_NO_DATA_FOUND_ERROR ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB QP_MSGLOG_RESERVE_SIZE REPLICATION_BEFORE_IMAGE_LOG_ENABLE REPLICATION_EAGER_PARALLEL_FACTOR REPLICATION_EAGER_RECEIVER_MAX_ERROR_COUNT REPLICATION_FAILBACK_INCREMENTAL_SYNC REPLICATION_SENDER_COMPRESS_XLOG REPLICATION_TRANSACTION_POOL_SIZE RP_CONFLICT_MSGLOG_COUNT RP_CONFLICT_MSGLOG_DIR RP_CONFLICT_MSGLOG_ENABLE RP_CONFLICT_MSGLOG_FILE RP_CONFLICT_MSGLOG_FLAG RP_CONFLICT_MSGLOG_RESERVE_SIZE RP_CONFLICT_MSGLOG_SIZE RP_MSGLOG_RESERVE_SIZE SECONDARY_BUFFER_ENABLE SECONDARY_BUFFER_FILE_DIRECTORY SECONDARY_BUFFER_FLUSHER_CNT SECONDARY_BUFFER_SIZE SECONDARY_BUFFER_TYPE SERVER_MSGLOG_RESERVE_SIZE SM_MSGLOG_RESERVE_SIZE TABLE_LOCK_ENABLE TEMP_MAX_PAGE_COUNT TEMP_STATS_WATCH_TIME TIME_ZONE TOTAL_WA_SIZE XA_MSGLOG_RESERVE_SIZE Performance Views The following performance views have been added. For further information on each performance view, please refer to the General Reference. New Performance Views for ALTIBASE HDB V$BACKUP_INFO Information on the process of the incremental backup operation up to the current time point V$DBLINK_ALTILINKER_STATUS Information on the status of the AltiLinker process ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB V$DBLINK_DATABASE_LINK_INFO Information on database link objects V$DBLINK_GLOBAL_TRANSACTION_INFO Information on global transactions executing database links V$DBLINK_LINKER_CONTROL_SESSION_INFO Information on linker control sessions created between the server and the AltiLinker process V$DBLINK_LINKER_DATA_SESSION_INFO Information on linker data sessions created between the server and the AltiLinker process V$EXTPROC_AGENT Information on the agent process created for the execution of external procedures V$NLS_TERRITORY Stores the names of the territories available for specification V$OBSOLETE_BACKUP_INFO Backup information that is no longer required to be maintained V$PKGTEXT Source information of stored packages V$TIME_ZONE_NAMES Territories and UTC offsets that can be specified in the TIME_ZONE property. Error Messages (HDB 6.1.1 to HDB 6.3.1) Added error messages Please refer to the Error Message Reference New error messages Message Status Description 0x4103A (266298) Before mmERR_ABORT_INVALID_STATEMENT_STATE_ERROR Request to process invalid SQL statement # *Cause: A request was made to perform an operation on an SQL statement that was already freed. # *Action: Please verify the SQL statement from the client. After mmERR_ABORT_INVALID_STATEMENT_STATE_ERROR Invalid statement processing request # *Cause: The request was invalid for the current state of the statement. # *Action: Please check the client application. 0x311F9 (201209) Before qpERR_ABORT_TRIGGER_RECOMPILE The attempt to recompile the trigger <0%s> was aborted because the creation statement was invalid. # *Cause: # - The attempt to recompile the trigger failed because the creation statement was invalid. # *Action: # - Please check the trigger creation statement. After qpERR_ABORT_TRIGGER_RECOMPILE The attempt to recompile the trigger <0%s> was aborted because the creation statement was invalid. : <1%s> <2%s> # *Cause: # - The attempt to recompile the trigger failed because the creation ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB statement was invalid. # *Action: # - Please check the trigger creation statement. 0x311B8 (201144) Before qpERR_ABORT_QCI_INVALID_HOST_DATA_SIZE Invalid size of data to bind to a host variable [ NO. <0%d> : Data Size = <1%d> , Declared Size of Host Variable = <2%d> ] # *Cause: # - The size of the data and the size of the host variable differ from one another. # *Action: # - Please check the size of the data to be bound to host variables. After qpERR_ABORT_QCI_INVALID_HOST_DATA_SIZE Size of data to bind to host variable is invalid [ Param ID = <0%d>, Data Type = <1%u>, Data Size = <2%d>, Declared Size of Host Variable = <3%d> ] # *Cause: # - The size of the data and the size of the host variable differ from one another. # *Action: # - Please check the size of the data to be bound to host variables. 0x11166 (69990) Before smERR_ABORT_TRANSACTION_TABLE_SIZE_IS_NOT_POWER_OF_TWO TRANSACTION_TABLE_SIZE ['<0%d>'] is not powers of two. # *Cause: TRANSACTION_TABLE_SIZE is not 2^n. # *Action: Please check altibase.properties and set TRANSACTION_TABLE_SIZE to 2^n. After smERR_ABORT_TRANSACTION_TABLE_SIZE_IS_NOT_POWER_OF_TWO TRANSACTION_TABLE_SIZE ['<0%d>'] is not a power of two. # *Cause: The value of the TRANSACTION_TABLE_SIZE property is not a power of two(=2^n). # *Action: Please check the altibase.properties file and set the value of TRANSACTION_TABLE_SIZE to a power of two (2^n). 0x11168 (69992) Before smERR_ABORT_LOGFILE_TOO_BIG_WITH_DIRECT_IO The logfile is too big. ( <0%d> > <1%d> ) # *Cause: The size of the logfile exceeds the DIRECT I/O limitation. # *Action: Please make sure that the logfile is smaller than the DIRECT I/O limitation, or set the value of the LOG_IO_TYPE property to 0. After smERR_ABORT_LOG_FILE_MISSING Non-continuous log file numbers. ( <0%s> ). # *Cause: Either the server failed to remove an old log file, or a current log file has been lost for some unknown reason. # *Action: Please send a bug report to the vendor. 0x11169 (69993) Before smERR_ABORT_smiCantRestartRemoteTableCursor Unable to restart a remote table cursor # *Cause: An attempt was made to restart a remote table cursor. # *Action: Please do not attempt to restart a remote table cursor. After smERR_ABORT_FAILURE_DURABILITY_AT_STARTUP Restart recovery aborted to protect database durability. # *Cause: A log file has been lost. If restart recovery continues, DB durability and DB objects may be broken. # *Action: Please send a bug report to the vendor. Removed error messages - All OxBxxxx error messages have been removed due to the improvement of the DBLink feature. Message Status Description 0x3129C ( 201372) Removed qpERR_ABORT_QCMLINK_NOT_EXIST_DATABASE_LINK The database link object does not exist. : <0%s> # *Cause: # - The database link object does not exist. ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB # *Action: # - Please check the database link name. 0x3129D (201373) Removed qpERR_ABORT_QCMLINK_NOT_SUPPORTED_STATEMENT The database link does not support this statement yet. # *Cause: # - The database link does not support this statement yet. # *Action: # - No Action. 0x3129E (201374) Removed qpERR_ABORT_QMO_SQL_GENERATION_FAILED Internal server error. dblink module cannot generate SQL statement. # *Cause: # - Internal server error. The dblink module cannot generate an SQL statement. # *Action: # - Please send a bug report to the vendor. 0x3129F (201375) Removed qpERR_ABORT_QMN_REMOTE_META_CHANGED Failed to execute this statement because <0%s> table meta information was changed at the remote site. Retry this statement. # *Cause: # - Execution of this statement failed because the table meta information was changed at the remote site. # *Action: # - retry this statement. 0x1003F (65599) Removed smERR_FATAL_InvalidDiskLogRec The log record for a disk table is invalid. ( LSN {<0%d>,<1%d>} ) # *Cause: The log record for a disk table is invalid. # *Action: Please send a bug report to the vendor. 0x10088 (65672) Removed smERR_FATAL_INVALIDE_ROW_SCN Invalid row SCN # *Cause: Invalid row SCN # *Action: Please send a bug report to the vendor. ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB 2.3 Packages OS Version CPU Archive Name AIX 5.3 PowerPC altibase-HDB-server-6.3.1.0.0-AIX-POWERPC-64bit-release.run altibase-HDB-client-6.3.1.0.0-AIX-POWERPC-64bit-release.run altibase-HDB-client-6.3.1.0.0-AIX-POWERPC-32bit-release.run HP-UX 11.11 PA-RISC altibase-HDB-server-6.3.1.0.0-HPUX-PARISC-64bit-release.run altibase-HDB-client-6.3.1.0.0- HPUX-PA-RISC-64bit-release.run altibase-HDB-client-6.3.1.0.0-HPUX-PARISC-32bit-release.run 11.23 IA64 altibase-HDB-server-6.3.1.0.0-HPUX-IA64-64bit-release.run altibase-HDB-client -6.3.1.0.0-HPUX-IA64-64bit-release.run altibase-HDB-client -6.3.1.0.0-HPUX-IA64-32bit-release.run Solaris 2.8 SPARC altibase-HDB-server-6.3.1.0.0-SOLARIS-SPARC-64bit-release.run altibase-HDB-client-6.3.1.0.0-SOLARIS-SPARC-64bit-release.run altibase-HDB-client-6.3.1.0.0-SOLARIS-SPARC-32bit-release.run 2.10 X86 altibase-HDB-server-6.3.1.0.0-SOLARIS-X86-64bit-release.run altibase-HDB-client-6.3.1.0.0-SOLARIS-X86-64bit-release.run altibase-HDB-client-6.3.1.0.0-SOLARIS-X86-32bit-release.run LINUX Es40-x64 X86 altibase-HDB-server-6.3.1.0.0-LINUX-X86-64bit-release.run altibase-HDB-client-6.3.1.0.0-LINUX-X86-64bit-release.run altibase-HDB-server-6.3.1.0.0-LINUX-X86-32bit-release.run altibase-HDB-server-6.3.1.0.0-LINUX-X86-64bit-release.run Windows 2003 X86 altibase-HDB-server-6.3.1.0.0-WINDOWS-X86-64bit-release.exe altibase-HDB-client-6.3.1.0.0-WINDOWS-X86-64bit-release.exe altibase-HDB-server-6.3.1.0.0-WINDOWS-X86-32bit-release.exe altibase-HDB-client-6.3.1.0.0-WINDOWS-X86-32bit-release.exe ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB 2.4 Downloads Location Package http://support.altibase.com Manual http://support.altibase.com Installation Please refer to the ALTIBASE HDB Installation Guide.
-
- ALTIBASE HDB (ver 6.3.1.0.0) Release Notes (Korean) ㅣ 2013-11-01
- link)를 수행해야 한다. ALTIBASE HDB 버전 통신 프로토콜 버전 6.1.1 5.6.3 6.3.1 7.1.1 ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB 메타 버전 메타 테이블의 호환성을 의미한다. ALTIBASE HDB 버전 메타 ...
-
미리보기
ALTIBASE HDB 6.3.1 Release Notes (2013/11/05) ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB 목차 목차 ............................................................................................................................. 2 1. 시스템 요구사항 .............................................................................................. 3 2. 릴리스 정보 ...................................................................................................... 4 2.1 ALTIBASE HDB 6.3.1의 새로운 기능 ............................................. 4 2.2 변경 사항 ....................................................................................... 8 데이터베이스 버전 ......................................................................... 8 호환성 ............................................................................................ 8 프로퍼티 ......................................................................................... 9 성능 뷰 ........................................................................................ 12 에러 메시지 (HDB 6.1.1 to HDB 6.3.1) ..................................... 12 2.3 패키지 ........................................................................................ 16 2.4 다운로드 ....................................................................................... 17 위치 ............................................................................................. 17 설치 ............................................................................................. 17 ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB 1. 시스템 요구사항 하드웨어 최저 사양 1GB RAM (권장: 2GB) 1 CPU (권장: 2 CPUs) 4GB 하드 디스크 여유 공간 (권장: 12GB) 운영 체제 및 플랫폼 ALTIBASE HDB 6.3.1은 아래 표에 나열된 운영체제와 플랫폼 상에서 운영 가능하다. OS CPU Version Bit (Server) Bit (Client) AIX PowerPC 5.3 tl1 and higher 64-bit 64-bit, 32-bit HP-UX PA-RISC 11.11 and higher 64-bit 64-bit, 32-bit IA64 11.23 and higher SUN SPARC 2.8 and higher 64-bit 64-bit, 32-bit i86PC 2.10 and higher Windows x86, x86-64 Windows 2003 and higher 64-bit, 32-bit 64-bit, 32-bit LINUX x86, x86-64 (GNU glibc 2.3.4 이상) ES40 and higher 64-bit, 32-bit 64-bit, 32-bit Java 버전: ALTIBASE HDB 6.3.1은 JDK 1.4 이상에서 호환된다. ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB 2. 릴리스 정보 2.1 ALTIBASE HDB 6.3.1의 새로운 기능 2.1.1 기능 개선 - SQL 확장과 OLAP용 함수 DML에서 RETURNING절 사용 (SQL 확장) - INSERT, UPDATE, DELETE문에서 RETURNING절을 사용하여 한번의 호출로 데이터를 갱신하고, 조회할 수 있는 기능을 제공한다. 또한 PSM 내에서 BULK COLLECT 절을 사용해서 한꺼번에 여러 행을 collection 변수로 반환할 수 있다. 외래키 삭제시 NULL 값 설정 (SQL 확장) - 참조 무결성을 위해 부모 테이블의 행이 삭제되면, 이를 참조하는 자식 테이블의 외래키 칼럼의 값은 모두 NULL이 된다. JOIN 결과에 UPDATE, DELETE (SQL 확장) - 뷰(view)와 조인 뷰에 대하여 일반 테이블처럼 INSERT, UPDATE, DELETE 문으로 데이터를 변경할 수 있다. 계층형 질의(hierarchical query) 기능 확장 (SQL 확장) 부질의(subquery) 이름 부여 (SQL 확장) Merge DML (SQL 확장) - MERGE 구문을 사용하여 주어진 조건에 따라 대상 테이블에 데이터를 UPDATE하거나 INSERT 한다. 다중 테이블 삽입 (SQL 확장) - 다중 테이블 삽입절을 이용하여 서브 쿼리에서 생성된 결과 집합을 하나 이상의 다중 테이블에 삽입 할 수 있다. Instead of Trigger (SQL 확장) - 트리거를 유발한 DML 구문은 수행되지 않고 트리거만 동작한다. 분석 함수 (Analytic Functions, 윈도우 함수) (OLAP) 집계(Aggregate) 윈도우 함수 AVG, COUNT, MAX, MIN, STDDEV, SUM, VARIANCE, GROUP_CONCAT 순위(Ranking) 윈도우 함수 RANK, DENSE_RANK, ROW_NUMBER, LAG, LEAD 행 순위 관련 윈도우 함수 FIRST_VALUE, LAST_VALUE, NTH_VALUE, FIRST_VALUE_IGNORE_NULLS, ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB LAST_VALUE_IGNORE_NULLS, NTH_VALUE_IGNORE_NULLS Grouping Set(ROLLUP, CUBE) 지원 (OLAP) - 집계 결과의 그룹별 합계 작업을 수행하기 위해 GROUP BY절에서 ROLLUP, CUBE를 지원한다. ROLLUP 그룹 지어진 집합 결과에 대한 상세한 정보를 반환 CUBE 명시된 그룹화 칼럼들의 가능한 모든 조합으로 그룹화를 수행. 예를 들어 그룹화 칼럼의 개수가 n개일 때, CUBE는 2n개의 조합에 대해 그룹화를 수행한다. 문자열 변환 함수 - 문자열 변환을 위해 HEX_ENCODE와 HEX_DECODE 함수가 추가 HEX_ENCODE ASCII 문자열을 16진수 문자열로 변환 HEX_DECODE 16진수 문자열을 ASCII 문자열로 변환 2.1.2 기능 개선 - 응용 프로그램 개발 인터페이스 JDBC 3.0 호환성 - 알티베이스 JDBC 드라이버는 JDBC 3.0 표준 스펙을 지원한다. PHP Extension - PHP로 작성된 웹 페이지가 ALTIBASE HDB에 접근 시 사용 가능한 인터페이스이다. ODBC 기능 개선 - 알티베이스 ODBC 드라이버에 함수를 추가하여 인터페이스 및 효율성을 개선하였다. SQLCancel 수행중인 명령문 취소 SQLBulkOperation 대량의 데이터를 삽입하거나, 북마크로 지정한 열을 갱신, 삭제, 또는 페치(fetch) SQLSetPos 행집합 내에서 커서 위치를 지정 커서 유형 및 커서 동작 추가 - 기존의 forward-only와 static 커서 유형 외에 추가로 keyset-driven 커서 유형을 지원하며, scrollable, updatable한 커서 동작을 지원한다. OLE DB 인터페이스 보강 - Rowset 객체에 scrollable, updatable 커서 관련 인터페이스를 추가하였다. - OLE DB 인터페이스로 저장 프로시저 호출이 가능하게 되었다. ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB LOB SUPPORT - 저장 프로시저 또는 트리거에서 LOB 타입의 파라미터, 내부 변수, 반환값을 사용할 수 있다. ADO.NET Provider 인터페이스 보강 - AltibaseBulkCopy 클래스를 추가하여 대량의 데이터 복사를 지원한다 데이터베이스 링크 기능 개선 C/C++ 외부 프로시저 및 함수 - C/C++로 작성된 함수를 ALTIBASE HDB의 SQL문 내에서 호출하여 사용할 수 있는 기능을 제공한다. - C/C++ 외부 프로시저의 실행과 HDB 서버 프로세스가 분리되어 있기 때문에, 사용자가 작성한 C/C++ 외부 프로시저에 문제가 있어도 데이터베이스에 영향을 주지 않는다. 2.1.3 기능 개선 - 데이터베이스 객체 글로벌 논파티션드 인덱스 - 파티션드 테이블에 글로벌 논파티션드 인덱스를 생성할 수 있도록 지원한다. CHECK 제약조건 - CHECK 제약조건을 명시하여 특정 칼럼에 대한 무결성 규칙을 지정할 수 있다. 함수 기반 인덱스 - 함수 기반 인덱스는 함수 또는 수식의 계산된 결과를 기반으로 인덱스를 생성하는 것이다. 이 때 수식은 내장 SQL 함수 또는 사용자 정의 함수도 포함할 수 있다. 저장 패키지 - 저장 패키지란 저장 프로시저에서 관련성 있는 변수 및 서브 프로그램, 커서 등의 객체들을 그룹화한 하나의 객체이다. 저장 패키지의 사용으로 업무와 관련된 객체를 모듈화할 수 있어 응용 프로그램 작성이 용이하고, 성능을 향상시킬 수 있다. 임시 테이블 - 하나의 세션 또는 트랜잭션이 유지되는 동안에 데이터를 일시적으로 보관하기 위해 임시 테이블을 사용할 수 있다. 임시 테이블은 응용 프로그램에서 여러 개의 DML 작업을 실행하면서 생기는 결과 집합을 일시적으로 저장할 때 유용하며 복잡한 질의를 사용할 때 수행 속도를 높일 수 있다. Materialized View - 자주 사용되는 View의 결과를 물리적으로 저장해서 쿼리속도를 향상시키는 기능을 제공한다. 2.1.4 성능 향상 - 클라이언트 성능 향상 Deferred Prepare ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB - SQLDriverConnect에서 DEFFER_PREPARES 속성을 사용하여 SQLPrepare가 수행될 때 서버와 통신을 보류할지 여부를 지정할 수 있다. LOB 캐쉬 및 인터페이스 - LOB 데이터 조회 성능을 향상하기 위해 LOB 캐쉬 기능을 추가하였다. 2.1.5 효율성 전용 서비스 쓰레드 지원 (CPU 사용의 효율성) - 전용 서비스 쓰레드 모드란 다수의 클라이언트가 서버에 접속하여 질의를 수행할 때 서버가 클라이언트의 각 세션 별로 서비스 쓰레드를 생성하여 클라이언트의 요청을 처리하는 것을 말한다. 중첩된 부질의 풀기(Subquery Unnesting) (쿼리 최적화) - 중첩된 부질의를 풀어 쿼리의 성능을 향상시킨다. 비용 추산(cost estimation) 개선 (쿼리 최적화) - 쿼리 최적화를 위하여 비용 계산을 가장 효율적으로 수행하도록 쿼리 옵티마이저를 개선하였다. 2.1.6 가용성 증분 백업(Incremental Backup) - 알티베이스 HDB는 기존 전체 백업을 하던 방식과 더불어 증분 백업 및 이를 이용한 복구 기능을 제공한다. 2.1.7 HDB 서버 관리 구문 및 객체, 감사 로그 등의 감사(Auditing) - 데이터베이스 관리자가 객체, 구문 및 DDL 문에 대하여 감사(Audit)를 수행하여 데이터에 대한 보안 관리가 가능하다. 데이터베이스 덤프(Dump) - dumpdb는 디스크에 저장된 체크포인트 이미지를 분석하는 유틸리티 이다. dumpdb 유틸리티의 사용으로 서버를 구동하지 않아도 데이터베이스에 생성된 스키마를 확인할 수 있다. 2.1.8 보안 강화 암호관리 정책 강화 Triple encrypt - Triple-DES encryption(3DES) 알고리즘으로 문자열의 암호화/복호화를 지원한다. ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB 2.2 변경 사항 DBA와 개발자가 알아야 할 추가, 변경, 및 제거된 기능을 아래에서 설명한다. 데이터베이스 버전 데이터베이스 구성 요소 별 최신 버전 ALTIBASE HDB 버전 데이터베이스 바이너리 버전 통신 프로토콜 버전 메타 버전 이중화 프로토콜 버전 6.1.1 6.1.1 5.6.3 5.14.1 6.1.1 6.3.1 6.2.1 7.1.1 6.2.1 7.4.1 호환성 데이터베이스 바이너리 버전 데이터베이스 바이너리 버전은 데이터베이스 이미지 파일과 로그 파일의 호환성을 나타낸다. 데이터베이스 이미지 및 로그 파일의 형식이 변경되었으므로, 데이터베이스 업그레이드 시 기존 데이터베이스는 마이그레이션 되어야 한다. ALTIBASE HDB 버전 데이터베이스 바이너리 버전 6.1.1 6.1.1 6.3.1 6.2.1 통신 프로토콜 버전 ALTIBASE HDB 서버와 클라이언트간의 통신규약 호환성을 의미한다. ALTIBASE HDB 6.1.1 버전과 비교하여 ALTIBASE HDB 6.3.1 버전에서는 주요 버전(Major, Minor, Patch)이 모두 변경 되어 서로 호환되지 않는다. 따라서 ALTIBASE HDB 6.1.1에서 동작하도록 빌드 된 클라이언트 응용 프로그램은 ALTIBASE HDB 6.3.1 버전의 라이브러리로 다시 컴파일(compile) 및 링크(link)를 수행해야 한다. ALTIBASE HDB 버전 통신 프로토콜 버전 6.1.1 5.6.3 6.3.1 7.1.1 ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB 메타 버전 메타 테이블의 호환성을 의미한다. ALTIBASE HDB 버전 메타 버전 6.1.1 5.14.1 6.3.1 6.2.1 이중화 프로토콜 버전 ALTIBASE HDB 6.3.1에서 이중화 프로토콜 버전이 변경되었다. 따라서, ALTIBASE HDB 6.1.1과 6.3.1 간의 이중화는 불가능하다. ALTIBASE HDB 버전 이중화 프로토콜 버전 6.1.1 6.1.1 6.3.1 7.4.1 프로퍼티 아래의 프로퍼티들이 추가되었다. 각 프로퍼티에 대한 자세한 내용은 General Reference를 참고하기 바란다. ALTIBASE HDB의 새로운 프로퍼티 ARCHIVE_MULTIPLEX_COUNT ARCHIVE_MULTIPLEX_DIR AUDIT_LOG_DIR COLLECT_DUMP_INFO DBLINK_ALTILINKER_CONNECT_TIMEOUT DBLINK_DATA_BUFFER_ALLOC_RATIO DBLINK_DATA_BUFFER_BLOCK_COUNT DBLINK_DATA_BUFFER_BLOCK_SIZE DBLINK_GLOBAL_TRANSACTION_LEVEL DBLINK_REMOTE_STATEMENT_AUTOCOMMIT DK_MSGLOG_COUNT DK_MSGLOG_FILE DK_MSGLOG_FLAG DK_MSGLOG_RESERVE_SIZE ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB DK_MSGLOG_SIZELOB_OBJECT_BUFFER_SIZE DUMP_MSGLOG_COUNT DUMP_MSGLOG_FILE DUMP_MSGLOG_RESERVE_SIZE DUMP_MSGLOG_SIZE ERROR_MSGLOG_COUNT ERROR_MSGLOG_FILE ERROR_MSGLOG_RESERVE_SIZE ERROR_MSGLOG_SIZE EXTPROC_AGENT_CONNECT_TIMEOUT EXTPROC_AGENT_IDLE_TIMEOUT FAILED_LOGIN_ATTEMPTS GROUP_CONCAT_PRECISION HASH_AREA_SIZE LOB_CACHE_THRESHOLD LOG_MULTIPLEX_COUNT LOG_MULTIPLEX_DIR MM_MSGLOG_RESERVE_SIZE NLS_CURRENCY NLS_ISO_CURRENCY NLS_NUMERIC_CHARACTERS NLS_TERRITORY OPTIMIZER_FEATURE_ENABLE OPTIMIZER_UNNEST_AGGREGATE_SUBQUERY OPTIMIZER_UNNEST_COMPLEX_SUBQUERY OPTIMIZER_UNNEST_SUBQUERY PASSWORD_GRACE_TIME PASSWORD_LIFE_TIME PASSWORD_LOCK_TIME PASSWORD_REUSE_MAX PASSWORD_REUSE_TIME PASSWORD_VERIFY_FUNCTION PSM_IGNORE_NO_DATA_FOUND_ERROR QP_MSGLOG_RESERVE_SIZE REPLICATION_BEFORE_IMAGE_LOG_ENABLE ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB REPLICATION_EAGER_PARALLEL_FACTOR REPLICATION_EAGER_RECEIVER_MAX_ERROR_COUNT REPLICATION_FAILBACK_INCREMENTAL_SYNC REPLICATION_SENDER_COMPRESS_XLOG REPLICATION_TRANSACTION_POOL_SIZE RP_CONFLICT_MSGLOG_COUNT RP_CONFLICT_MSGLOG_DIR RP_CONFLICT_MSGLOG_ENABLE RP_CONFLICT_MSGLOG_FILE RP_CONFLICT_MSGLOG_FLAG RP_CONFLICT_MSGLOG_RESERVE_SIZE RP_CONFLICT_MSGLOG_SIZE RP_MSGLOG_RESERVE_SIZE SECONDARY_BUFFER_ENABLE SECONDARY_BUFFER_FILE_DIRECTORY SECONDARY_BUFFER_FLUSHER_CNT SECONDARY_BUFFER_SIZE SECONDARY_BUFFER_TYPE SERVER_MSGLOG_RESERVE_SIZE SM_MSGLOG_RESERVE_SIZE TABLE_LOCK_ENABLE TEMP_MAX_PAGE_COUNT TEMP_STATS_WATCH_TIME TIME_ZONE TOTAL_WA_SIZE XA_MSGLOG_RESERVE_SIZE ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB 성능 뷰 아래의 성능 뷰 들이 추가되었다. 각 성능 뷰에 대한 자세한 내용은 General Reference를 참고하기 바란다. ALTIBASE HDB의 새로운 성능 뷰 V$BACKUP_INFO 현재까지 수행된 증분 백업에 대한 정보 V$DBLINK_ALTILINKER_STATUS AltiLinker 프로세스의 상태 정보 V$DBLINK_DATABASE_LINK_INFO 데이터베이스 링크 객체 정보 V$DBLINK_GLOBAL_TRANSACTION_INFO DB 링크를 수행중인 글로벌 트랜잭션 정보 V$DBLINK_LINKER_CONTROL_SESSION_INFO 서버와 AltiLinker 프로세스 사이 생성되는 링커 제어 세션의 정보 V$DBLINK_LINKER_DATA_SESSION_INFO 서버와 AltiLinker 프로세스 사이 생성되는 링커 데이터 세션의 정보 V$EXTPROC_AGENT 외부 프로시저 실행을 위해 생성된 에이전트 프로세스의 정보 V$NLS_TERRITORY 설정 가능한 지역의 이름 저장 V$OBSOLETE_BACKUP_INFO 더 이상 유지할 필요가 없는 백업 정보 V$PKGTEXT 저장 패키지의 소스 정보 V$TIME_ZONE_NAMES TIME_ZONE 프로퍼티에 설정할 수 있는 지역과 UTC 오프셋 에러 메시지 (HDB 6.1.1 to HDB 6.3.1) 추가된 에러 메시지 Error Message Reference 참고 ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB 변경된 에러 메시지 Message Status Description 0x4103A (266298) Before mmERR_ABORT_INVALID_STATEMENT_STATE_ERROR Request to process invalid SQL statement # *Cause: A request was made to perform an operation on an SQL statement that was already freed. # *Action: Please verify the SQL statement from the client. After mmERR_ABORT_INVALID_STATEMENT_STATE_ERROR Invalid statement processing request # *Cause: The request was invalid for the current state of the statement. # *Action: Please check the client application. 0x311F9 (201209) Before qpERR_ABORT_TRIGGER_RECOMPILE The attempt to recompile the trigger <0%s> was aborted because the creation statement was invalid. # *Cause: # - The attempt to recompile the trigger failed because the creation statement was invalid. # *Action: # - Please check the trigger creation statement. After qpERR_ABORT_TRIGGER_RECOMPILE The attempt to recompile the trigger <0%s> was aborted because the creation statement was invalid. : <1%s> <2%s> # *Cause: # - The attempt to recompile the trigger failed because the creation statement was invalid. # *Action: # - Please check the trigger creation statement. 0x311B8 (201144) Before qpERR_ABORT_QCI_INVALID_HOST_DATA_SIZE Invalid size of data to bind to a host variable [ NO. <0%d> : Data Size = <1%d> , Declared Size of Host Variable = <2%d> ] # *Cause: # - The size of the data and the size of the host variable differ from one another. # *Action: # - Please check the size of the data to be bound to host variables. After qpERR_ABORT_QCI_INVALID_HOST_DATA_SIZE Size of data to bind to host variable is invalid [ Param ID = <0%d>, Data Type = <1%u>, Data Size = <2%d>, Declared Size of Host Variable = <3%d> ] # *Cause: # - The size of the data and the size of the host variable differ from one another. # *Action: # - Please check the size of the data to be bound to host variables. 0x11166 (69990) Before smERR_ABORT_TRANSACTION_TABLE_SIZE_IS_NOT_POWER_OF_TWO TRANSACTION_TABLE_SIZE ['<0%d>'] is not powers of two. # *Cause: TRANSACTION_TABLE_SIZE is not 2^n. # *Action: Please check altibase.properties and set ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB TRANSACTION_TABLE_SIZE to 2^n. After smERR_ABORT_TRANSACTION_TABLE_SIZE_IS_NOT_POWER_OF_TWO TRANSACTION_TABLE_SIZE ['<0%d>'] is not a power of two. # *Cause: The value of the TRANSACTION_TABLE_SIZE property is not a power of two(=2^n). # *Action: Please check the altibase.properties file and set the value of TRANSACTION_TABLE_SIZE to a power of two (2^n). 0x11168 (69992) Before smERR_ABORT_LOGFILE_TOO_BIG_WITH_DIRECT_IO The logfile is too big. ( <0%d> > <1%d> ) # *Cause: The size of the logfile exceeds the DIRECT I/O limitation. # *Action: Please make sure that the logfile is smaller than the DIRECT I/O limitation, or set the value of the LOG_IO_TYPE property to 0. After smERR_ABORT_LOG_FILE_MISSING Non-continuous log file numbers. ( <0%s> ). # *Cause: Either the server failed to remove an old log file, or a current log file has been lost for some unknown reason. # *Action: Please send a bug report to the vendor. 0x11169 (69993) Before smERR_ABORT_smiCantRestartRemoteTableCursor Unable to restart a remote table cursor # *Cause: An attempt was made to restart a remote table cursor. # *Action: Please do not attempt to restart a remote table cursor. After smERR_ABORT_FAILURE_DURABILITY_AT_STARTUP Restart recovery aborted to protect database durability. # *Cause: A log file has been lost. If restart recovery continues, DB durability and DB objects may be broken. # *Action: Please send a bug report to the vendor. 삭제된 에러 메시지 - DBLink 기능 개선에 따라 OxBxxxx 에러 메시지 전체 삭제 Message Status Description 0x3129C ( 201372) Removed qpERR_ABORT_QCMLINK_NOT_EXIST_DATABASE_LINK The database link object does not exist. : <0%s> # *Cause: # - The database link object does not exist. # *Action: # - Please check the database link name. 0x3129D (201373) Removed qpERR_ABORT_QCMLINK_NOT_SUPPORTED_STATEMENT The database link does not support this statement yet. # *Cause: # - The database link does not support this statement yet. # *Action: # - No Action. 0x3129E (201374) Removed qpERR_ABORT_QMO_SQL_GENERATION_FAILED Internal server error. dblink module cannot generate SQL statement. ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB # *Cause: # - Internal server error. The dblink module cannot generate an SQL statement. # *Action: # - Please send a bug report to the vendor. 0x3129F (201375) Removed qpERR_ABORT_QMN_REMOTE_META_CHANGED Failed to execute this statement because <0%s> table meta information was changed at the remote site. Retry this statement. # *Cause: # - Execution of this statement failed because the table meta information was changed at the remote site. # *Action: # - retry this statement. 0x1003F (65599) Removed smERR_FATAL_InvalidDiskLogRec The log record for a disk table is invalid. ( LSN {<0%d>,<1%d>} ) # *Cause: The log record for a disk table is invalid. # *Action: Please send a bug report to the vendor. 0x10088 (65672) Removed smERR_FATAL_INVALIDE_ROW_SCN Invalid row SCN # *Cause: Invalid row SCN # *Action: Please send a bug report to the vendor. ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB 2.3 패키지 OS Version CPU Archive Name AIX 5.3 PowerPC altibase-HDB-server-6.3.1.0.0-AIX-POWERPC-64bit-release.run altibase-HDB-client-6.3.1.0.0-AIX-POWERPC-64bit-release.run altibase-HDB-client-6.3.1.0.0-AIX-POWERPC-32bit-release.run HP-UX 11.11 PA-RISC altibase-HDB-server-6.3.1.0.0-HPUX-PARISC-64bit-release.run altibase-HDB-client-6.3.1.0.0- HPUX-PA-RISC-64bit-release.run altibase-HDB-client-6.3.1.0.0-HPUX-PARISC-32bit-release.run 11.23 IA64 altibase-HDB-server-6.3.1.0.0-HPUX-IA64-64bit-release.run altibase-HDB-client -6.3.1.0.0-HPUX-IA64-64bit-release.run altibase-HDB-client -6.3.1.0.0-HPUX-IA64-32bit-release.run Solaris 2.8 SPARC altibase-HDB-server-6.3.1.0.0-SOLARIS-SPARC-64bit-release.run altibase-HDB-client-6.3.1.0.0-SOLARIS-SPARC-64bit-release.run altibase-HDB-client-6.3.1.0.0-SOLARIS-SPARC-32bit-release.run 2.10 X86 altibase-HDB-server-6.3.1.0.0-SOLARIS-X86-64bit-release.run altibase-HDB-client-6.3.1.0.0-SOLARIS-X86-64bit-release.run altibase-HDB-client-6.3.1.0.0-SOLARIS-X86-32bit-release.run LINUX Es40-x64 X86 altibase-HDB-server-6.3.1.0.0-LINUX-X86-64bit-release.run altibase-HDB-client-6.3.1.0.0-LINUX-X86-64bit-release.run altibase-HDB-server-6.3.1.0.0-LINUX-X86-32bit-release.run altibase-HDB-server-6.3.1.0.0-LINUX-X86-64bit-release.run Windows 2003 X86 altibase-HDB-server-6.3.1.0.0-WINDOWS-X86-64bit-release.exe altibase-HDB-client-6.3.1.0.0-WINDOWS-X86-64bit-release.exe altibase-HDB-server-6.3.1.0.0-WINDOWS-X86-32bit-release.exe altibase-HDB-client-6.3.1.0.0-WINDOWS-X86-32bit-release.exe ALTIBASE HDB 6.3.1.0.0 Release Notes ALTIBASE HDB 2.4 다운로드 위치 Package http://support.altibase.com Manual http://support.altibase.com 설치 ALTIBASE HDB Installation Guide 참고.
패치노트
-
- ALTIBASE HDB v.6.5.1.8.9 Patch Notes (Korean) ㅣ 2021-12-30
- link error is suspected.' 에러 메시지가 발생합니다. .............. 7 BUG-49039 비활성화한 인덱스가 있는 경우 V$SEGMENT 조회 시 Altibase 서버가 비정상 종료합니다. ...................................................
-
미리보기
ALTIBASE HDB 6.5.1.8.9 Patch Notes ALTIBASE HDB Patch Notes 6.5.1.8.9 목차 BUG-47830 LOB 데이터 타입 바인드 시 SQLBindParameter 함수에서 매개변수 type 에 입/출력 변수(SQL_PARAM_INPUT_OUTPUT)를 사용한 경우 Altibase 서버가 비정상 종료합니다. ............................................................................................... 4 BUG-48650 메모리 인덱스 탐색 중 타임아웃 발생 시 인덱스가 정상임에도 트레이스 로그 altibasese_sm.log에 'A timeout occured during index fetch. Index [index name] link error is suspected.' 에러 메시지가 발생합니다. .............. 7 BUG-49039 비활성화한 인덱스가 있는 경우 V$SEGMENT 조회 시 Altibase 서버가 비정상 종료합니다. ............................................................................................................ 8 BUG-49242 aexport 객체 모드에서 큐(QUEUE) 객체를 추출할 수 있는 기능을 추가합니다. ......................................................................................................................... 9 BUG-49250 Direct-Execute 방식의 statement를 반복 수행 중 prepare 에러가 발생한 경우 이전에 수행한 statement가 다시 실행될 수 있습니다. ........................ 10 BUG-49274 altiComp에 사용자가 커밋 카운트를 조정하는 프로퍼티를 추가합니다. ........................................................................................................................................... 12 BUG-49279 QUEUE 테이블에 대한 객체 권한을 추출하는 기능을 추가합니다. ...... 14 BUG-49281 분석 함수 OVER절에 ORDER BY를 사용한 컬럼을 alias 사용하고 JOIN 의 ON절에 AND, OR 조건과 함께 사용한 경우 Altibase 서버가 비정상 종료하는 현상을 수정합니다. .......................................................................................... 15 BUG-49283 UNIQUE INSERT 수행 시 LOCK WAIT 상황에서 V$SESSION_WAIT에 no wait event가 발생합니다. wait event가 수집되지 않습니다. ............................ 17 BUG-49334 C/C++ External Procedures에서 메모리 참조 오류 발생 시 예외 처리 부족으로 Altibase 서버가 비정상 종료합니다. ............................................................. 19 2 / 24 ALTIBASE HDB Patch Notes 6.5.1.8.9 BUG-49384 REMOTE_BIND_VARIABLE 함수에서 널(NULL) 값 바인드 시 ERR- 21017 : The argument is not applicable. 에러가 발생합니다. ................................ 20 BUG-49417 디스크 인덱스 테이블스페이스 공간이 부족한 상황에서 디스크 테이블에 변경 트랜잭션 발생 시 Altibase 서버가 비정상 종료할 수 있습니다. ...... 21 BUG-49424 지역 서버와 원격 서버 간 이중화 대상 테이블의 컬럼 수가 다른 경우 원격 서버에서 복제 트랜잭션 수행 시 Altibase 서버가 비정상 종료할 수 있습니다. ........................................................................................................................................... 22 BUG-49433 트랜잭션 커밋 수행 시 statement 객체가 정리되지 않은 경우 Altibase 서버가 비정상 종료할 수 있습니다. ............................................................................... 23 BUG-49476 트랜잭션 커밋 수행 시 예외 처리 부족으로 Altibase 서버가 비정상 종료하는 현상을 분석하기 위해 디버그 로그를 추가합니다. ...................................... 24 3 / 24 ALTIBASE HDB Patch Notes 6.5.1.8.9 BUG-47830 LOB 데이터 타입 바인드 시 SQLBindParameter 함수에서 매개변수 type 에 입/출력 변수(SQL_PARAM_INPUT_OUTPUT)를 사용한 경우 Altibase 서버가 비정상 종료합니다. Module : qp-dml-ex ecute Category : Fatal 재현빈도 : Always 설명 : LOB 데이터 타입 바인드 시 SQLBindParamet er 함수에서 매개변수 type 에 입/출력 변수(SQL_PARAM_INPUT_OUTPUT)를 사용한 경우 Altibase 서버가 비정상 종료하는 현상을 수정합니다. Reproduci ng Conditi ons 재현 절차 CREATE TABLE bug47830 (i1 INTEGER, i2 CLOB ); INSERT INTO bug47830 VALUES(1, 'abc'); /* prepares an SQL string for execution */ rc = SQLPrepare(stmt, (SQLCHAR *)"INSERT INTO bug47830 VALUES(?, ?)", SQL_NTS); if (!SQL_SUCCEEDED(rc)) { PRINT_DIAGNOSTIC(SQL_HANDLE_STMT, stmt, "SQLPrepare"); goto EXIT_STMT; } /* binds a buffer to a parameter marker in an SQL statement */ rc = SQLBindParameter(stmt, 1, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, 0, 0, ULL); if (!SQL_SUCCEEDED(rc)) { PRINT_DIAGNOSTIC(SQL_HANDLE_STMT, stmt, "SQLBindParameter"); goto EXIT_STMT; } rc = SQLBindParameter(stmt, 2, SQL_PARAM_INPUT_OUTPUT, SQL_C_CLOB_LOCATOR, SQL_CLOB, 0, 0, if (!SQL_SUCCEEDED(rc)) ...중략... 4 / 24 ALTIBASE HDB Patch Notes 6.5.1.8.9 수행 결과 1. Altibase 클라이언트 측 어플리케이션에서 아래와 같은 에러 발생합니다. Diagnostic Record 1 SQLSTATE : 08S01 Message text : Communication link failure. Connection closed Message len : 45 Native error : 0x51043 2. Altibase 서버 측 Altibase 트레이스 로그 alt ibase_error.log 에 아래와 같은 콜스택을 출력합니다. BEGIN-STACK [CRASH] ============================= Caller[0] 0000000000418CE1 => mmmSignalHandler Caller[1] 0000003620C0F500 => not found Caller[2] 000000000042EB88 => mmtCopyBindParamDataCallback(qciBindParam*, unsigned char*, unsigned int*) Caller[3] 00000000004D2054 => qci::setBindParamData(qciStatement*, unsigned short, unsigned char*, IDE_RC (*)(qciBindParam*, unsigned char*, unsigned int*)) Caller[4] 0000000000430A78 => mmtServiceThread::paramDataInProtocol(cmiProtocolContext*, cmpProtocol*, void*, void*) Caller[5] 0000000000F94017 => cmiRecv(cmiProtocolContext*, void*, PDL_Time_Value*, void*) Caller[6] 000000000042AA7F => mmtServiceThread::executeTask_READY(mmcTask*, mmcTaskState*) Caller[7] 000000000042C5F5 => mmtServiceThread::executeTask() Caller[8] 000000000042CBC2 => mmtServiceThread::multiplexingAsShared() Caller[9] 000000000042D257 => mmtServiceThread::run() Caller[10] 0000000000FC9A72 => idtContainer::staticRunner(void*) Caller[11] 0000003620C07851 => not found Caller[12] 00000036204E767D => not found END-STACK ======================================= 예상 결과 Diagnostic Record 1 SQLSTATE : HY090 Message text : Invalid binding to host variables Message len : 33 Native error : 0x31126 Diagnostic Record 2 SQLSTATE : HY090 Message text : Invalid binding to host variables Message len : 33 Native error : 0x31126 Workar ound 변경 사항 Performance View Property 5 / 24 ALTIBASE HDB Patch Notes 6.5.1.8.9 Compile Option Error Code 6 / 24 ALTIBASE HDB Patch Notes 6.5.1.8.9 BUG-48650 메모리 인덱스 탐색 중 타임아웃 발생 시 인덱스가 정상임에도 트레이스 로그 altibasese_sm.log에 'A timeout occured during index fetch. Index [index name] link error is suspected.' 에러 메시지가 발생합니다. Module : sm-mem-index Categor y : Message Error 재현빈도 : Rare 설명 : 메모리 인덱스 탐색 중 타임아웃 발생 시 인덱스가 정상임에도 트레이스 로그 altibasese_sm.log에 'A timeout occured during index fetch. Index [ index name] link erro r is suspect ed.' 에러 메시지가 발생하는 현상을 수정합니다. Reproduci ng Conditi ons 재현 절차 수행 결과 예상 결과 Workar ound 변경 사항 Performance View Property Compile Option Error Code 7 / 24 ALTIBASE HDB Patch Notes 6.5.1.8.9 BUG-49039 비활성화한 인덱스가 있는 경우 V$SEGMENT 조회 시 Altibase 서버가 비정상 종료합니다. Module : sm Categor y : Fatal 재현빈도 : Always 설명 : 비활성화한 인덱스가 있는 경우 V$SEGMENT 조회 시 Altibase 서버가 비정상 종료하는 현상을 수정합니다. Reproduci ng Conditi ons 재현 절차 CREATE TABLE D1 ( I1 INTEGER, I2 CHAR(3000), I3 INTEGER ) TABLESPACE SYS_TBS_DISK_DATA; CREATE INDEX D1_I1_I2 ON D1(I1,I2); ALTER TABLE D1 ALL INDEX DISABLE; SELECT COUNT(*) FROM V$SEGMENT; 수행 결과 Altibase 서버 비정상 종료 예상 결과 SQL 문 정상 수행 Workar ound 변경 사항 Performance View Property Compile Option Error Code 8 / 24 ALTIBASE HDB Patch Notes 6.5.1.8.9 BUG-49242 aexport 객체 모드에서 큐(QUEUE) 객체를 추출할 수 있는 기능을 추가합니다. Module : ux-aexport Categor y : Functional Error 재현빈도 : Always 설명 : aexport 객체 모드(-object 옵션 사용)에서 큐(QUEUE) 객체를 추출할 수 있는 기능을 추가합니다. Reproduci ng Conditi ons 재현 절차 iSQL> CREATE QUEUE q1(10); Create success. 수행 결과 % aexport -s 127.0.0.1 -u sys -p manager -object sys.q1 The SYS.Q1 object not exist 예상 결과 % aexport -s 127.0.0.1 -u sys -p manager -object sys.q1 ##### QUEUE ##### ** "SYS"."Q1" create queue "Q1" (10); Workar ound 전체 DB 모드/사용자 모드로 aexport 수행 변경 사항 Performance View Property Compile Option Error Code 9 / 24 ALTIBASE HDB Patch Notes 6.5.1.8.9 BUG-49250 Direct-Execute 방식의 statement를 반복 수행 중 prepare 에러가 발생한 경우 이전에 수행한 statement가 다시 실행될 수 있습니다. Module : mm-jdbc Categor y : Functional Error 재현빈도 : Always 설명 : Direct-Execute 방식의 statement를 반복 수행 중 prepare 에러가 발생한 경우 이전에 수행한 stat ement가 다시 실행되는 현상을 수정하였습니다. Statement가 아래 조건을 만족하며 순차적으로 수행 시 발생할 수 있습니다. 1. direct execute #1 2. direct ex ecute #2 (prepare 에러 발생) 3. prepare execute #3 4. direct ex ecute #4 (#3의 statement가 실행) Reproduci ng Conditi ons 재현 절차 Statement sStmt; PreparedStatement sPstmt; try { sStmt.execute("ALTER SESSION SET LOB_CACHE_THRESHOLD = 1048576"); } catch ( Exception e ) { System.out.println( "ERROR MESSAGE : " + e.getMessage() ); } try { sStmt.execute("ALTER SESSION CLOSE DATABASE LINK"); } catch ( Exception e ) { System.out.println( "ERROR MESSAGE : " + e.getMessage() ); } try { sPstmt = mConn.prepareStatement("ALTER SESSION SET LOB_CACHE_THRESHOLD = 1048576"); sPstmt.execute(); } catch ( Exception e ) { System.out.println( "ERROR MESSAGE : " + e.getMessage() ); } try { sStmt.execute("ALTER system CHECKPOINT"); } catch ( Exception e ) { System.out.println( "ERROR MESSAGE : " + e.getMessage() ); } 10 / 24 ALTIBASE HDB Patch Notes 6.5.1.8.9 수행 결과 ALTER SESSION SET LOB_CACHE_THRESHOLD = 1048576 ------------------------ ERROR MESSAGE : Property value overflow [LOB_CACHE_THRESHOLD] ALTER SESSION CLOSE DATABASE LINK ------------------------ ERROR MESSAGE : SQL syntax error line 1: parse error ALTER SESSION CLOSE DATABASE LINK ^ prepare-execute : ALTER SESSION SET LOB_CACHE_THRESHOLD = 1048576 ------------------------ ERROR MESSAGE : Property value overflow [LOB_CACHE_THRESHOLD] ALTER system CHECKPOINT ------------------------ ERROR MESSAGE : Property value overflow [LOB_CACHE_THRESHOLD] 예상 결과 ALTER SESSION SET LOB_CACHE_THRESHOLD = 1048576 ------------------------ ERROR MESSAGE : Property value overflow [LOB_CACHE_THRESHOLD] ALTER SESSION CLOSE DATABASE LINK ------------------------ ERROR MESSAGE : SQL syntax error line 1: parse error ALTER SESSION CLOSE DATABASE LINK ^ prepare-execute : ALTER SESSION SET LOB_CACHE_THRESHOLD = 1048576 ------------------------ ERROR MESSAGE : Property value overflow [LOB_CACHE_THRESHOLD] ALTER system CHECKPOINT ------------------------ Workar ound 변경 사항 Performance View Property Compile Option Error Code 11 / 24 ALTIBASE HDB Patch Notes 6.5.1.8.9 BUG-49274 altiComp에 사용자가 커밋 카운트를 조정하는 프로퍼티를 추가합니다. Module : ux-audit(altiCo mp) Categor y : Funct ionality 재현빈도 : Always 설명 : altiComp에 사용자가 커밋(commit) 카운트를 설정할 수 있는 프로퍼티 COUNT_TO_COMMIT를 추가합니다. Reproduci ng Conditi ons 재현 절차 DB#1, DB#2 create table t1 (c1 int primary key, c2 char(16000), c3 char(16000)); DB#1 insert into t1 select level, 'niceguy_niceguy_'|| level, '209_char_char_char_char'|| level from dual connect by level <= 10000; DB#2 insert into t1 select level, 'altibase_altibase_'|| level, '208_char_char_char_char'|| level from dual connect by level <= 10000; DB#1에서 DB#2로 SYNC 수행 altiComp -x 100 -f altiComp.cfg cat altiComp.log 수행 결과 [ERROR:69912] [ERR-11118 : The update log size '10495719' is bigger than TRX_UPDATE_MAX_LOGSIZE '10485760'] From Slave -------------------------------------------- Operation Type MASTER SLAVE -------------------------------------------- INSERT Try 0 0 Fail 0 0 UPDATE Try 0 10000 Fail 0 9673 DELETE Try 0 0 Fail 0 0 -------------------------------------------- UPDATE Try 0 10000 Fail 0 9673 예상 결과 12 / 24 ALTIBASE HDB Patch Notes 6.5.1.8.9 -------------------------------------------- Operation Type MASTER SLAVE -------------------------------------------- INSERT Try 0 0 Fail 0 0 UPDATE Try 0 10000 Fail 0 0 DELETE Try 0 0 Fail 0 0 -------------------------------------------- UPDATE Try 0 10000 Fail 0 0 Workar ound 1. DB#2에서 ALTER SYSTEM SET TRX_UPDATE_MAX_LOGSIZE=0; 로 변경 후 altiCo mp 수행. 완료 후 원복 2. 에러가 나도 altiCo mp를 완료할 때까지 반복 수행(TRX_UPDATE_MAX_LOGSIZE 양 만큼의 레코드가 커밋됨) 변경 사항 Performance View Property Compile Option Error Code 13 / 24 ALTIBASE HDB Patch Notes 6.5.1.8.9 BUG-49279 QUEUE 테이블에 대한 객체 권한을 추출하는 기능을 추가합니다. Module : ux-aexport Categor y : Functional Error 재현빈도 : Always 설명 : QUEUE 테이블에 대한 객체 권한을 추출하는 기능을 추가합니다. Reproduci ng Conditi ons 재현 절차 수행 결과 예상 결과 Workar ound 변경 사항 Performance View Property Compile Option Error Code 14 / 24 ALTIBASE HDB Patch Notes 6.5.1.8.9 BUG-49281 분석 함수 OVER절에 ORDER BY를 사용한 컬럼을 alias 사용하고 JOIN 의 ON절에 AND, OR 조건과 함께 사용한 경우 Altibase 서버가 비정상 종료하는 현상을 수정합니다. Module : qp-select-execut e Categor y : Fatal 재현빈도 : Always 설명 : 분석 함수 OVER절에 ORDER BY를 사용한 컬럼을 alias 사용하고 JOIN 의 ON절에 AND, OR 조건과 함께 사용한 경우 Altibase 서버가 비정상 종료하는 현상을 수정합니다. Reproduci ng Conditi ons 재현 절차 CREATE TABLE bug49281_t1 ( i1 CHAR(3), i2 VARCHAR(16), i3 VARCHAR(12)); INSERT INTO bug49281_t1 SELECT LEVEL, LEVEL, LEVEL FROM DUAL CONNECT BY LEVEL < 10; CREATE TABLE bug49281_t2 ( i1 VARCHAR(17), i2 CHAR(2), i3 CHAR(3)); INSERT INTO bug49281_t2 SELECT LEVEL, LEVEL, LEVEL FROM DUAL CONNECT BY LEVEL < 10; SELECT B.i1 FROM (SELECT i1, i2, ROW_NUMBER() OVER (PARTITION BY i3 ORDER BY i1) AS RN FROM bug49281_t1 ) A RIGHT OUTER JOIN (SELECT i1, '00' AS PCD FROM bug49281_t2) B ON (A.RN 1 OR ( A.RN = 1 AND A.i2 = B.PCD)); 수행 결과 Altibase 서버 비정상 종료. 트레이스 로그 alt ibase_error.log 에 아래와 같은 콜스택이 남습니다. END-DUMP ======================================== BEGIN-STACK [CRASH] ============================= Caller[0] 0000000000418FA1 => mmmSignalHandler Caller[1] 00007FE8EFD845F0 => not found Caller[2] 0000000000A68A9A => mtdIsNull(mtcColumn const*, void const*) Caller[3] 0000000000ACB707 => mtfIsNullCalculate(mtcNode*, mtcStack*, int, void*, mtcTemplate*) Caller[4] 0000000000AF9944 => mtfOrCalculate(mtcNode*, mtcStack*, int, void*, mtcTemplate*) Caller[5] 0000000000767418 => qtc::calculate(qtcNode*, qcTemplate*) Caller[6] 0000000000767511 => qtc::judge(idBool*, qtcNode*, qcTemplate*) Caller[7] 0000000000897846 => qmnFILT::doItFirst(qcTemplate*, qmnPlan*, int*) Caller[8] 000000000089794F => qmnFILT::doIt(qcTemplate*, qmnPlan*, int*) Caller[9] 000000000089C519 => qmnHASH::storeAndHashing(qcTemplate*, qmncHASH*, qmndHASH*) Caller[10] 000000000089C81B => qmnHASH::init(qcTemplate*, qmnPlan*) Caller[11] 00000000008A7B07 => qmnLOJN::doItLeft(qcTemplate*, qmnPlan*, int*) Caller[12] 00000000008A7E4F => qmnLOJN::doIt(qcTemplate*, qmnPlan*, int*) Caller[13] 0000000000897824 => qmnFILT::doItFirst(qcTemplate*, qmnPlan*, int*) 15 / 24 ALTIBASE HDB Patch Notes 6.5.1.8.9 Caller[14] 000000000089794F => qmnFILT::doIt(qcTemplate*, qmnPlan*, int*) Caller[15] 0000000000899184 => qmnSORT::storeAndSort(qcTemplate*, qmncSORT*, qmndSORT*) Caller[16] 0000000000899389 => qmnSORT::init(qcTemplate*, qmnPlan*) Caller[17] 00000000006CC0C0 => qmnPROJ::init(qcTemplate*, qmnPlan*) Caller[18] 00000000006D4991 => qmx::executeSelect(qcStatement*) Caller[19] 00000000004DCA7F => qci::execute(qciStatement*, smiStatement*) Caller[20] 000000000047D527 => mmcStatement::executeDML(mmcStatement*, long*, long*) Caller[21] 00000000004743B6 => mmcStatement::execute(long*, long*) Caller[22] 000000000043BEDE => _ZL9doExecuteP20mmtCmsExecuteContext.constprop.46 Caller[23] 000000000043CA0E => _ZN16mmtServiceThread7executeEP18cmiProtocolContextP12mmcStatement6idBoolPS4_PjPlS7_.const prop.48 Caller[24] 000000000043E17F => mmtServiceThread::executeProtocol(cmiProtocolContext*, cmpProtocol*, void*, void*) Caller[25] 0000000000FA92D7 => cmiRecv(cmiProtocolContext*, void*, PDL_Time_Value*, void*) Caller[26] 000000000042ACFF => mmtServiceThread::executeTask_READY(mmcTask*, mmcTaskState*) Caller[27] 000000000042C875 => mmtServiceThread::executeTask() Caller[28] 000000000042CE42 => mmtServiceThread::multiplexingAsShared() Caller[29] 000000000042D4D7 => mmtServiceThread::run() Caller[30] 0000000000FDED42 => idtContainer::staticRunner(void*) Caller[31] 00007FE8EFD7CE65 => not found Caller[32] 00007FE8EEE4788D => not found END-STACK ======================================= 예상 결과 I1 --------------------- 1 2 3 4 5 6 7 8 9 9 rows selected. Workar ound ON 절의 쿼리를 변환하여 Altibase 서버 비정상 종료를 회피할 수 있습니다. ON (A.RN 1 OR ( A.RN = 1 AND A.i2 = B.PCD)) -> ON (A.RN 1 OR A.RN = 1 ) AND ( A.RN 1 OR A.i2 = B.PCD) 변경 사항 Performance View Property Compile Option Error Code 16 / 24 ALTIBASE HDB Patch Notes 6.5.1.8.9 BUG-49283 UNIQUE INSERT 수행 시 LOCK WAIT 상황에서 V$SESSION_WAIT에 no wait event가 발생합니다. wait event가 수집되지 않습니다. Module : sm Categor y : Functional Error 재현빈도 : Unknown 설명 : UNIQUE INSERT 수행 시 LOCK WAIT 상황에서 V$SESSION_WAIT 또는 V$STATEMEN T 에 wait event가 수집되지 않는 현상을 수정합니다. 이 버그는 디스크 테이블에만 해당합니다. 메모리 테이블 경우 대기 이벤트가 없어 같은 상황에서 no wait event 발생하는 것은 정상 상황입니다. Reproduci ng Conditi ons 재현 절차 A 세션 iSQL> CREATE TABLE bug49283 (c1 INTEGER PRIMARY KEY) TABLESPACE SYS_TBS_DISK_DATA; iSQL> ALTER SYSTEM SET TIMED_STATISTICS = 1; iSQL> AUTOCOMMIT OFF; iSQL> INSERT INTO bug49283 VALUES(1); B 세션 iSQL> AUTOCOMMIT OFF; iSQL> INSERT INTO bug49283 VALUES(1); A 세션 iSQL> SELECT * FROM V$LOCK_WAIT; iSQL> SELECT SID, EVENT FROM V$SESSION_WAIT WHERE SID SESSION_ID(); iSQL> SELECT TX_ID, SESSION_ID, EVENT, SUBSTR(QUERY, 1, 60) QRY FROM V$STATEMENT WHERE SESSION_ID SESSION_ID(); 수행 결과 iSQL> SELECT * FROM V$LOCK_WAIT; TRANS_ID WAIT_FOR_TRANS_ID --------------------------------------------- 1408 21633 1 row selected. iSQL> SELECT SID, EVENT FROM V$SESSION_WAIT WHERE SID SESSION_ID(); SID EVENT ------------------------------------------------------------------ 2 no wait event 1 row selected. iSQL> SELECT TX_ID, SESSION_ID, EVENT, SUBSTR(QUERY, 1, 60) QRY FROM V$STATEMENT WHERE SESSION_ID SESSION_ID(); TX_ID SESSION_ID EVENT QRY 17 / 24 ALTIBASE HDB Patch Notes 6.5.1.8.9 ------------------------------------------------------------------------------------------ -------------------------------- 1408 2 no wait event INSERT INTO bug49283_m VALUES(1) 1 row selected. 예상 결과 iSQL> SELECT * FROM V$LOCK_WAIT; TRANS_ID WAIT_FOR_TRANS_ID --------------------------------------------- 1408 21633 1 row selected. iSQL> SELECT SID, EVENT FROM V$SESSION_WAIT WHERE SID SESSION_ID(); SID EVENT ------------------------------------------------------------------ 2 enq: TX - row lock contention, data row 1 row selected. iSQL> SELECT TX_ID, SESSION_ID, EVENT, SUBSTR(QUERY, 1, 60) QRY FROM V$STATEMENT WHERE SESSION_ID SESSION_ID(); TX_ID SESSION_ID EVENT QRY ------------------------------------------------------------------------------------------ -------------------------------- 1408 2 enq: TX - row lock contention, data row INSERT INTO bug49283 VALUES(1) 1 row selected. Workar ound 변경 사항 Performance View Property Compile Option Error Code 18 / 24 ALTIBASE HDB Patch Notes 6.5.1.8.9 BUG-49334 C/C++ External Procedures에서 메모리 참조 오류 발생 시 예외 처리 부족으로 Altibase 서버가 비정상 종료합니다. Module : qp-psm-trigger-execute Categor y : Fatal 재현빈도 : Always 설명 : C/C++ External Procedures에서 메모리 참조 오류 발생 시 예외 처리 부족으로 A ltibase 서버가 비정상 종료하는 현상을 수정합니다. Reproduci ng Conditi ons 재현 절차 수행 결과 예상 결과 Workar ound 변경 사항 Performance View Property Compile Option Error Code 19 / 24 ALTIBASE HDB Patch Notes 6.5.1.8.9 BUG-49384 REMOTE_BIND_VARIABLE 함수에서 널(NULL) 값 바인드 시 ERR-21017 : The argument is not applicable. 에러가 발생합니다. Module : dblink Categor y : Funct ionality 재현빈도 : Always 설명 : 데이터베이스 링크(Database Link, DBLink)의 REMOTE_BIND_VARIA BLE 함수에서 널(NULL) 값 바인드 시 ERR-21017 : The argument is not applicable. 에러가 발생하는 현상을 수정하였습니다. Reproduci ng Conditi ons 재현 절차 REMOTE_BIND_VARIABLE( 'link1', STATEMENT_ID, 1, NULL); 수행 결과 [ERR-21017 : The argument is not applicable. In PROC1 0013 : RESULT := REMOTE_BIND_VARIABLE( 'link1', STATEMENT_ID, 1, NULL); ^ ^ ] 예상 결과 Workar ound 변경 사항 Performance View Property Compile Option Error Code 20 / 24 ALTIBASE HDB Patch Notes 6.5.1.8.9 BUG-49417 디스크 인덱스 테이블스페이스 공간이 부족한 상황에서 디스크 테이블에 변경 트랜잭션 발생 시 Altibase 서버가 비정상 종료할 수 있습니다. Module : sm-disk-index Categor y : Fatal 재현빈도 : Rare 설명 : 디스크 인덱스 테이블스페이스 공간이 부족한 상황에서 디스크 테이블에 변경 트랜잭션 발생 시 Altibase 서버가 비정상 종료하는 현상을 수정합니다. 본 버그로 인한 Alt ibase 서버 비정상 종료 발생 시 alt ibase_error.log 에 아래와 같은 로그가 남습니다. IDE_ASSERT( sSegMgmtOp->mAllocNewPage( aStatistics, aMtx, aIndex->mIndexTSID, SegmentDesc.mSegHandle), SDP_PA GE_INDEX_BTREE, (UChar **)aNewPage ) == IDE_SUCCESS ), [sdnbModule.cpp:23858], errno=[11] ERR-11123(errno=11) The tablespace does not have enough free space ( TBS Name : tablespace_name ). 디스크 인덱스 테이블스페이스에 여유 공간을 확보하여 Altibase 서버 비정상 종료 현상을 회피할 수 있습니다. Reproduci ng Conditi ons 재현 절차 수행 결과 예상 결과 Workar ound 변경 사항 Performance View Property Compile Option Error Code 21 / 24 ALTIBASE HDB Patch Notes 6.5.1.8.9 BUG-49424 지역 서버와 원격 서버 간 이중화 대상 테이블의 컬럼 수가 다른 경우 원격 서버에서 복제 트랜잭션 수행 시 Altibase 서버가 비정상 종료할 수 있습니다. Module : rp Categor y : Fatal 재현빈도 : Rare 설명 : 지역 서버와 원격 서버 간 이중화 대상 테이블의 컬럼 수가 다른 경우 원격 서버에서 복제 트랜잭션 수행 시 A ltibase 서버가 비정상 종료할 수 있습니다. 수신자(R eceiver)의 컬럼 분석 오류를 수정하였습니다. 이 버그는 "BUG-47458 SQL Apply에서 Lob을 지원 하지 않습니다. Lob을 지원하도록 수정해야 합니다." 를 반영한 버전에서 발생합니다. 이 버그에 노출된 버전은 아래와 같습니다. - Altibase 6.5.1 : 6.5.1.7.2 ~ 6.5.1.8.8 Reproduci ng Conditi ons 재현 절차 수행 결과 예상 결과 Workar ound 변경 사항 Performance View Property Compile Option Error Code 22 / 24 ALTIBASE HDB Patch Notes 6.5.1.8.9 BUG-49433 트랜잭션 커밋 수행 시 statement 객체가 정리되지 않은 경우 Altibase 서버가 비정상 종료할 수 있습니다. Module : sm Categor y : Fatal 재현빈도 : Always 설명 : 트랜잭션 커밋(commit) 수행 시 statement 객체가 정리되지 않은 경우 Altibase 서버가 비정상 종료하는 현상을 수정합니다. statement 객체를 강제 정리하고 문제 분석을 위한 콜스택을 Altibase 트레이스 로그에 기록합니다. Reproduci ng Conditi ons 재현 절차 수행 결과 예상 결과 Workar ound 변경 사항 Performance View Property Compile Option Error Code 23 / 24 ALTIBASE HDB Patch Notes 6.5.1.8.9 BUG-49476 트랜잭션 커밋 수행 시 예외 처리 부족으로 Altibase 서버가 비정상 종료하는 현상을 분석하기 위해 디버그 로그를 추가합니다. Module : sm Categor y : Other 재현빈도 : Unknown 설명 : 트랜잭션 커밋 수행 시 예외 처리 부족으로 A ltibase 서버가 비정상 종료하는 현상을 분석하기 위해 디버그 로그를 추가합니다. 트레이스 로그 alt ibase_error.log 에 콜스택과 트랜잭션 정보를 남깁니다. Reproduci ng Conditi ons 재현 절차 수행 결과 예상 결과 Workar ound 변경 사항 Performance View Property Compile Option Error Code 24 / 24
-
- ALTIBASE HDB v.6.3.1.4.1 Patch Notes (Korean) ㅣ 2015-05-21
- Link 기능에서 오동작할 수 있다. 6 BUG-41067 DB Link 기능을 사용 중에 네트워크 단절 등의 예외 상황이 발생할 때 서버가 종료한다. 6 BUG-41073 Grouping sets 사용 시에 틀린 에러 메시지가 출력될 ...
-
미리보기
ALTIBASE HDB 6.3.1.4.1 Patch Notes ALTIBASE HDB Patch Notes 6.3.1.4.1 2/7 Table of Contents BUG-40158 JDBC에서 데이터 사이즈가 32000 byte보다 크면, 데이터를 정상적으로 가져오지 못할 수 있다. 3 BUG-40916 defunct process 가 증가할 수 있다. 3 BUG-40939 APRE의 DECLARE CURSOR 에서 cursor이름이 SELECT_CUR일 경우 query string 값이 제대로 입력되지 되지 않는다. 3 BUG-40980 TABLESPACE를 생성(AUTOEXTEND OFF)하여 사용중 TABLESPACE의 MAX에 도달하면 에러메시지를 로그에 기록한다. 4 BUG-40992 FUNCTION(_PROWID)를 사용할 경우 서버가 비정상 종료할 수 있다. 5 BUG-41013 Windowing function과 _PROWID를 함께 사용할 수 없다. 5 BUG-41018 subquery unnesting 사용할 경우 결과가 틀릴 수 있다. 5 BUG-41025 IN 연산자를 사용할 때 서버가 비정상 종료할 수 있다. 6 BUG-41047 DISTINCT 사용시에 서버가 비정상 종료할 수 있다. 6 BUG-41063 Oracle NUMBER 타입은 DB Link 기능에서 오동작할 수 있다. 6 BUG-41067 DB Link 기능을 사용 중에 네트워크 단절 등의 예외 상황이 발생할 때 서버가 종료한다. 6 BUG-41073 Grouping sets 사용 시에 틀린 에러 메시지가 출력될 수 있다. 7 ALTIBASE HDB Patch Notes 6.3.1.4.1 3/7 BUG-40158 JDBC에서 데이터 사이즈가 32000 byte보다 크면, 데이터를 정상적으로 가져오지 못할 수 있다. - Module: mm-jdbc - Category: Functional Error - Reproducibility: Always - Reproducing Conditions: NONE - Symptoms: JDBC에서 데이터 사이즈가 32000 byte보다 크면, 데이터를 정상적으로 가져오지 못할 수 있다. - Changes: NONE - Workaround: NONE BUG-40916 defunct process 가 증가할 수 있다. - Module: qp-psm-trigger-execute - Category: Functional Error - Reproducibility: Frequence - Reproducing Conditions: NONE - Symptoms: defunct된 process 증가할 수 있다. - Changes: NONE - Workaround: NONE BUG-40939 APRE의 DECLARE CURSOR 에서 cursor이름이 SELECT_CUR일 경우 query string 값이 제대로 입력되지 되지 않는다. ALTIBASE HDB Patch Notes 6.3.1.4.1 4/7 - Module: mm-apre - Category: Usability - Reproducibility: Always - Reproducing Conditions: 재현 struct ulpSqlstmt ulpSqlstmt; memset( , 0, sizeof(ulpSqlstmt)); ulpSqlstmt.stmttype = 12; ulpSqlstmt.stmtname = NULL; ulpSqlstmt.curname = (char*) "SELECT_CUR"; ulpSqlstmt.ismt = 0; ulpSqlstmt.numofhostvar = 0; ulpSqlstmt.statusptr = NULL; ulpSqlstmt.errcodeptr = NULL; ulpSqlstmt.isatomic = 0; ulpSqlstmt.stmt = (char *)"SELECT_CUR CURSOR FOR SELECT * FROM DEPARTMENTS"; ulpSqlstmt.iters = 0; ulpSqlstmt.sqlinfo = 0; ulpSqlstmt.scrollcur = 0; ulpSqlstmt.cursorscrollable = 0; ulpSqlstmt.cursorsensitivity = 1; ulpSqlstmt.cursorwithhold = 0; ulpSqlstmt.esqlopts = _esqlopts; ulpSqlstmt.sqlcaerr = ulpSqlstmt.sqlcodeerr = ulpSqlstmt.sqlstateerr = ulpGetSqlstate(); ulpDoEmsql( NULL, , NULL ); 실제 결과 sqlcode : -1 SQLSTATE : 42000 sqlerrmc : Invalid statement processing request 예상 결과 not print error - - Symptoms: APRE의 DECLARE CURSOR 에서 cursor이름이 SELECT_CUR일 경우 query string 값이 제대로 입력되지 되지 않는다. - Changes: NONE - Workaround: DECLARE CURSOR 정의시에cursor이름에 “SELECT_CUR” 가 포함되지 않도록 한다. BUG-40980 TABLESPACE를 생성(AUTOEXTEND OFF)하여 사용중 TABLESPACE의 MAX에 도달하면 에러메시지를 로그에 기록한다. ALTIBASE HDB Patch Notes 6.3.1.4.1 5/7 - Module: sm - Category: Maintainability - Reproducibility: Always - Reproducing Conditions: NONE - Symptoms: 사용자가 AUTOEXTEND OFF 모드로 테이블스페이스를 사용할 때 테이블스페이스의 크기가 최대 크기에 도달하면, 에러메시지를 로그에 기록한다. "Unable to extend the tablespace(tbs_name) when AUTOEXTEND mode is OFF" - Changes: NONE - Workaround: NONE BUG-40992 FUNCTION(_PROWID)를 사용할 경우 서버가 비정상 종료할 수 있다. - Module: qp-select-pvo - Category: Fatal - Reproducibility: Always - Reproducing Conditions: NONE - Symptoms: function(_prowid)를 사용할 경우 서버가 비정상 종료할 수 있다. - Changes: NONE - Workaround: NONE BUG-41013 Windowing function과 _PROWID를 함께 사용할 수 없다. - Module: qp-select-pvo - Category: Fatal - Reproducibility: Always - Reproducing Conditions: NONE - Symptoms: Windowing function과 _PROWID를 함께 사용할 수 없다. - Changes: NONE - Workaround: NONE BUG-41018 subquery unnesting 사용할 경우 결과가 틀릴 수 있다. ALTIBASE HDB Patch Notes 6.3.1.4.1 6/7 - Module: qp - Category: Functional Error - Reproducibility: Always - Reproducing Conditions: NONE - Symptoms: subquery unnesting 사용할 경우 결과가 틀릴 수 있다. - Changes: NONE - Workaround: NONE BUG-41025 IN 연산자를 사용할 때 서버가 비정상 종료할 수 있다. - Module: qp - Category: Fatal - Reproducibility: Always - Reproducing Conditions: NONE - Symptoms: IN 연산자를 사용할 때 서버가 비정상 종료할 수 있다. - Changes: NONE - Workaround: NONE BUG-41047 DISTINCT 사용시에 서버가 비정상 종료할 수 있다. - Module: qp-select-pvo - Category: Fatal - Reproducibility: Always - Reproducing Conditions: NONE - Symptoms: DISTINCT 사용시에 서버가 비정상 종료할 수 있다. - Changes: NONE - Workaround: NONE BUG-41063 Oracle NUMBER 타입은 DB Link 기능에서 오동작할 수 있다. - Module: dblink - Category: Functional Error - Reproducibility: Always - Reproducing Conditions: NONE - Symptoms: Oracle NUMBER 타입은 DB Link 기능에서 오동작할 수 있다. - Changes: NONE - Workaround: NONE BUG-41067 DB Link 기능을 사용 중에 네트워크 단절 등의 예외 상황이 발생할 때 서버가 종료한다. ALTIBASE HDB Patch Notes 6.3.1.4.1 7/7 - Module: dblink - Category: Fatal - Reproducibility: Impossible - Reproducing Conditions: NONE - Symptoms: DB Link 기능을 사용 중에 네트워크 단절 등의 예외 상황이 발생할 때 서버가 종료한다. - Changes: NONE - Workaround: NONE BUG-41073 Grouping sets 사용 시에 틀린 에러 메시지가 출력될 수 있다. - Module: qx - Category: Message Error - Reproducibility: Always - Reproducing Conditions: 재현 create table t1 (i1 integer); select count(*) from t1 group by grouping sets(1), i1, grouping(i1); 실제 결과 [ERR-31385 : _PROWID is not supported.] 예상 결과 not print error - Symptoms: Grouping sets 사용 시에 틀린 에러 메시지가 출력될 수 있다. - Changes: NONE - Workaround: NONE