미리보기
ALTIBASE Administration
Starting User’s Manual
Release 5.3.3
--------------------------------------------
ALTIBASE Administration Starting User’s Manual
Release 5.3.3
Copyright ⓒ 201~209 ALTIBASE Corp. All Rights Reserved.
본 문서의 저작권은 ㈜알티베이스에 있습니다. 이 문서에 대하여 당사의 동의 없이
무단으로 복제 또는 전용할 수 없습니다.
㈜알티베이스
152-790 서울시 구로구 구로동 182-13 대륭포스트타워Ⅱ 10 층
전화: 02-2082-1114 팩스: 02-2082-1099
e-mail: support@altibase.com homepage: http://ww.altibase.com
--------------------------------------------
목차 I
목 차
서문 .................................................................................................................. i
이 매뉴얼에 대하여 ......................................................................................................................... ii
Part I ............................................................................................................... 1
1. 알티베이스 소개 ................................................................................................ 3
알티베이스 개념 ................................................................................................................................ 4
알티베이스 특징 ............................................................................................................................. 10
알티베이스 구조 ............................................................................................................................. 17
2. 알티베이스 구성요소 ..................................................................................... 23
알티베이스 구성요소 .................................................................................................................... 24
알티베이스 디렉토리 .................................................................................................................... 27
3. 알티베이스 실행과 종료................................................................................ 33
알티베이스의 실행 ......................................................................................................................... 34
알티베이스의 종료 ......................................................................................................................... 36
4. 알티베이스 프로퍼티 ..................................................................................... 39
환경 설정 방법 ............................................................................................................................... 40
데이터베이스 구성 프로퍼티 .................................................................................................... 49
성능 관련 프로퍼티 ...................................................................................................................... 79
세션 관련 프로퍼티 .................................................................................................................... 109
트랜잭션 관련 프로퍼티 ........................................................................................................... 124
백업 및 복구 관련 프로퍼티 .................................................................................................. 126
이중화 프로퍼티 ........................................................................................................................... 131
메시지 로그 관련 프로퍼티 ..................................................................................................... 142
II ALTIBASE5 Starting User’s Manual
데이터베이스 링크 관련 프로퍼티 ....................................................................................... 158
기타 프로퍼티 ................................................................................................................................ 162
5. 데이터베이스 객체 및 권한 관리 .............................................................. 167
데이터베이스 객체 개요 ........................................................................................................... 168
권한 관리 개요 ............................................................................................................................. 173
Part II .......................................................................................................... 175
6. 다국어 지원................................................................................................... 177
다국어 지원 개요 ......................................................................................................................... 178
다국어 지원을 위한 캐릭터셋 분류 ..................................................................................... 181
유니코드를 이용한 다국어 지원 ............................................................................................ 183
다국어 데이터베이스를 위한 환경 설정 ............................................................................ 185
데이터베이스 캐릭터셋 선택시 고려사항 .......................................................................... 188
7. 데이터베이스 이중화 ................................................................................... 191
이중화 정의 .................................................................................................................................... 192
알티베이스 이중화 방법 ........................................................................................................... 193
이중화 기능의 사용 방법 ......................................................................................................... 194
DDL 수행 시 주의사항 .............................................................................................................. 196
8. Fail-Over ....................................................................................................... 197
Fail-Over의 개요 ........................................................................................................................... 198
Fail Over 사용 방법 .................................................................................................................... 200
9. 백업 및 복구 ................................................................................................. 202
알티베이스 백업 및 복구 ......................................................................................................... 203
Part III ........................................................................................................ 205
10. 응용프로그램 작성 .................................................................................... 207
응용 프로그램 작성 방법 ......................................................................................................... 208
ODBC를 활용한 프로그램 ........................................................................................................ 209
JDBC를 활용한 프로그램 .......................................................................................................... 217
MS Windows ODBC를 활용한 프로그램 ............................................................................ 220
C/C++ Precompiler를 활용한 프로그램 ............................................................................. 227
서문 i
서문
ii ALTIBASE5 Starting User’s Manual
이 매뉴얼에 대하여
이 매뉴얼은 알티베이스의 기능, 제품 구성요소, 그리고 사용법에
대해 설명한다.
대상 사용자
이 매뉴얼은 다음과 같은 알티베이스 사용자를 대상으로 작성되었다.
y 데이터베이스 관리자
y 성능 관리자
y 데이터베이스 사용자
y 응용 프로그램 개발자
y 기술지원부
다음과 같은 배경 지식을 가지고 이 매뉴얼을 읽는 것이 좋다.
y 컴퓨터, 운영 체제 및 운영 체제 유틸리티 운용에 필요한 기본
지식
y 관계형 데이터베이스 사용 경험 또는 데이터베이스 개념에 대한
이해
y 컴퓨터 프로그래밍 경험
y 데이터베이스 서버 관리, 운영 체제 관리 또는 네트워크 관리 경
험
소프트웨어 환경
이 매뉴얼은 데이터베이스 서버로 알티베이스 버전 5.3.3 을
사용한다는 가정 하에 작성되었다.
이 매뉴얼의 구성
이 매뉴얼은 다음과 같이 구성되어 있다.
y 제 1장 알티베이스 소개
이 장은 알티베이스 데이터베이스 서버를 이해하는데 필요한 개
념, 특징 및 구조에 대한 개요를 제공한다.
y 제 2장 알티베이스 구성 요소
이 장은 알티베이스를 구성하고 있는 실행 바이너리 부문과 프
로그래밍 라이브러리 부문 구성 요소들에 대해 설명한다.
y 제 3장 알티베이스 실행과 종료
이 장은 알티베이스 데이터베이스 서버가 데이터베이스 관리자
서문 iii
에 의해 실행되는 과정과 종료에 대해 설명한다.
y 제 4장 알티베이스 프로퍼티
이 장은 서버의 운용 방식과 튜닝에 관한 모든 구성 요소를 포
함하고 있는 알티베이스 프로퍼티에 대해 설명한다.
y 제 5장 데이터베이스 객체 및 권한 관리
이 장은 특정 사용자에 의해 생성된 제약조건, 인덱스, 시퀀스,
이중화, 테이블, 사용자 등 데이터베이스 객체들에 대해 설명한
다. 또한, 시스템과 스키마 객체 접근 권한에 대해 설명한다.
y 제 6장 다국어 지원
ALTIBASE가 지원하는 다국어 지원 구조 및 다국어 지원을 위
한 환경 설정과 고려사항 등을 살펴본다.
y 제 7장 데이터베이스 이중화
이 장은 데이터베이스 이중화 기능의 올바른 운영을 위해 데이
터베이스 이중화 방법과 이중화 기능의 사용 방법에 대해 설명
한다.
y 제 8장 Fail-Over
이 장은 알티베이스 Fail-Over 의 개념과 사용 방법에 대해 설
명한다.
y 제 9장 백업 및 복구
이 장은 알티베이스 백업 및 복구에 대한 기본적인 개념을 설명
한다.
y 제 10장 응용프로그램 작성
이 장은 JDBC, ODBC, C/C++ Precompiler를 사용하여 알티베
이스 데이터베이스를 활용하는 응용 프로그램 작성법에 관하여
설명한다.
문서화 규칙
이 절에서는 이 매뉴얼에서 사용하는 규칙에 대해 설명한다. 이
규칙을 이해하면 이 매뉴얼과 설명서 세트의 다른 매뉴얼에서 정보를
쉽게 찾을 수 있다.
여기서 설명하는 규칙은 다음과 같다.
y 구문 다이어그램
y 샘플 코드 규칙
구문 다이어그램
이 매뉴얼에서는 다음 구성 요소로 구축된 다이어그램을 사용하여,
명령문의 구문을 설명한다.
구성 요소 의미
iv ALTIBASE5 Starting User’s Manual
예약어
명령문이 시작한다. 완전한 명령문이 아닌 구문 요소는
화살표로 시작한다.
명령문이 다음 라인에 계속된다. 완전한 명령문이 아닌
구문 요소는 이 기호로 종료한다.
명령문이 이전 라인으로부터 계속된다. 완전한
명령문이 아닌 구문 요소는 이 기호로 시작한다.
;
명령문이 종료한다.
SELECT
필수 항목
NOT
선택적 항목
ADD
DROP
선택사항이 있는 필수 항목. 한 항목만 제공해야 한다.
ASC
DESC
선택사항이 있는 선택적 항목
,
ASC
DESC
선택적 항목. 여러 항목이 허용된다. 각 반복 앞부분에
콤마가 와야 한다.
샘플 코드 규칙
코드 예제는 SQL, Stored Procedure, iSQL 또는 다른 명령 라인
구문들을 예를 들어 설명한다.
아래 테이블은 코드 예제에서 사용된 인쇄 규칙에 대해 설명한다.
규칙 의미 예제
[ ] 선택 항목을 표시 VARCHAR [(size)] [[FIXED |]
VARIABLE]
{ }
필수 항목 표시. 반드시 하나
이상을 선택해야 되는 표시
{ ENABLE | DISABLE | COMPILE }
| 선택 또는 필수 항목 표시의
인자 구분 표시
{ ENABLE | DISABLE | COMPILE }
[ ENABLE | DISABLE | COMPILE ]
.
.
그 이전 인자의 반복 표시
예제 코드들의 생략되는 것을
SQL> SELECT ename FROM
employee;
서문 v
. 표시
ENAME
-----------------------
SWNO
HJNO
HSCHOI
.
.
.
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_;
관련 자료
자세한 정보를 위하여 다음 문서 목록을 참조한다.
y ALTIBASE Administration Installation User’s Manual
y ALTIBASE Administration Administrator’s Manual
y ALTIBASE Administration Replication User’s Manual
y ALTIBASE Application Development Precompiler User’s
Manual
y ALTIBASE Application Development ODBC User’s Manual
y ALTIBASE Application Development Application Program
Interface User’s Manual
y ALTIBASE Tools iSQL User’s Manual
y ALTIBASE Tools Utilities User’s Manual
y ALTIBASE Message Error Message Reference
온라인 매뉴얼
알티베이스 테크니컬 센터(http://atc.altibase.com/)에서 국문 및
영문 매뉴얼(PDF, HTML)을 받을 수 있다.
vi ALTIBASE5 Starting User’s Manual
알티베이스는 여러분의 의견을 환영합니다.
이 매뉴얼에 대한 여러분의 의견을 보내주시기 바랍니다. 사용자의
의견은 다음 버전의 매뉴얼을 작성하는데 많은 도움이 됩니다.
보내실 때에는 아래 내용과 함께
기술지원센터(support@altibase.com)로 보내주시기 바랍니다.
y 사용 중인 매뉴얼의 이름과 버전
y 매뉴얼에 대한 의견
y 사용자의 성함, 주소, 전화번호
이 외에도 알티베이스 기술지원 설명서의 오류와 누락된 부분 및
기타 기술적인 문제들에 대해서 이 주소로 보내주시면 정성껏
처리하겠습니다. 기술적인 부분과 관련하여 즉각적인 도움이 필요한
경우에는 기술지원센터로 연락하시기 바랍니다.
여러분의 의견에 항상 감사드립니다.
Part I 1
Part I
알티베이스 소개 3
1. 알티베이스 소개
이 장에서는 알티베이스를 처음 접하는 사용자들을 위해서 Hybrid
DBMS 의 등장 배경과 알티베이스의 구조 및 특징에 대해서
설명한다.
4 ALTIBASE5 Starting User’s Manual
알티베이스 개념
알티베이스의 새로운 개념인 Hybrid Database Management
System(이하 Hybrid DBMS) 구조가 등장하게 된 배경을 설명한다.
Hybrid DBMS 등장 배경
Hybrid DBMS 의 등장은 데이터를 저장하는 두 가지 대표적인 기억
장치인 메모리와 디스크의 특징과 밀접한 관련이 있다.
첫째, 메모리는 전자 게이트로 구성되어 있고 접근시간이 수 ns(십억
분의 일초) 단위로서 매우 빠르며 접근시간이 균일하고 정전 시에는
데이터가 소실되는 특징을 가지고 있다. 반면에, 디스크는 헤드암과
플래터로 구성되어 있고 접근시간이 수 us(백만 분의 일초)로
메모리에 비해서 상대적으로 느리며 접근시간이 균일하지 않고
정전이 되더라도 데이터가 영구히 보존되는 특징을 가지고 있다.
둘째, 메모리는 메인보드와 시스템 버스로 연결되어 있어 메인보드의
특성에 따라 최대 크기가 결정이 된다. 메인보드에 장착된 CPU 가
32 비트이면 메모리의 최대 크기는 4GB, CPU 가 64 비트라고 해도
최대 크기는 현재 수백 GB(십억 바이트)까지만 장착 가능하다.
반면에, 디스크는 메인보드와 I/O 버스로 연결되어 있어 메인보드의
특징과 거의 무관하게 수 TB(일조 바이트)까지 구성이 가능하다.
요약하면, 일반적으로 메모리는 디스크에 비해 접근 시간이 수백배
빠르며 성능이 균일한 반면, 정전시 데이터가 소실되고 저장용량에
한계가 있다. 이에 반해, 디스크는 데이터가 영구히 저장되며
저장용량의 한계가 거의 없는 반면, 접근 시간이 느리고 일정하지
않다.
이런 기억장치의 특징에 따라서 DBMS 의 구조는 디스크에 데이터를
저장하는 Disk-Resident DBMS(이하 DRDBMS), 메모리에
데이터를 저장하는 Main-Memory DBMS(이하 MMDBMS)가
존재해 왔다. Hybrid DBMS 는 이 두 가지 구조의 장점을 수용하고,
단점을 보완하여 등장하게 되었다.
DRDBMS 등장
DRDBMS 의 구조는 데이터가 디스크에 저장되어 있고, DRDBMS 가
디스크에 있는 데이터를 메모리 버퍼로 읽어서 응용프로그램에게
전달해 주는 형태이다.
이런 구조는 응용프로그램이 표준 SQL 을 통해서 데이터에 접근하고,
DBMS 가 동시성제어 및 복구를 통해 데이터를 보호하기 때문에
응용프로그램의 개발이 훨씬 간편해지며 데이터 공유가 쉬운 장점이
알티베이스 소개 5
있다. 또한 데이터가 디스크에 저장되어 있기 때문에 대용량
DBMS 를 제공할 수 있다.
이런 장점 때문에, 지금까지 전 산업분야에서 DRDBMS 가
광범위하게 사용되어 왔다.
하지만, 사회전반에 걸쳐 정보화가 급격히 진전되고 정보처리의 요구
성능이 높아지면서 데이터 처리에 대한 수요는 많았으나,
DRDBMS 의 낮은 평균 처리속도와 처리속도의 기복(jitter)의 문제
때문에 DRDBMS 를 사용하지 못하는 분야가 많았다.
따라서 고성능 및 균일 성능의 데이터 처리를 필요로 하는 산업
분야에서는 지금까지 Custom Designed Memory DB 를 사용하였다.
그러나 범용적이지 않고 데이터 관리에 필요한 모든 것을 직접
개발해야 했기 때문에 개발 및 유지보수가 어렵고, 성능, 가용성,
확장성 등에서 문제가 있었다.
MMDBMS 등장
MMDBMS 의 구조는 데이터가 메모리에 저장되어 있고
MMDBMS 가 메모리에 있는 데이터를 읽어서 응용프로그램에 바로
전달하는 형태이다.
이런 구조는 DRDBMS 의 장점인 표준 SQL 을 통한 데이터 접근,
동시성 제어 및 복구을 통한 데이터 보호, 이를 통한 응용프로그램의
개발과 데이터 공유의 용이성 등의 장점을 그대로 가진다.
또한 MMDBMS 는 데이터를 메모리에 저장하기 때문에 디스크에
데이터를 저장하는 DRDBMS 에 비해 평균처리 속도가 매우 빠르며
메모리의 특징인 균일한 성능을 보장한다. 따라서 고성능 및 균일
성능을 필요로 하지만 DRDBMS 를 사용할 수 없어 개발 및 유지가
어려운 분야에서 각광을 받고 있다.
일반적으로 DRDBMS 에 비해서 MMDBMS 가 갱신 연산은 약 10 배,
검색 연산은 약 3 배 이상의 성능을 보인다.
갱신 연산이 DRDBMS 에 비해서 수백배가 아닌 이유는
MMDBMS 도 데이터 보호를 위해서 DRDBMS 와 똑같이 로그파일을
디스크에 기록하기 때문이다. 그럼에도 불구하고 MMDBMS 의 갱신
연산이 더 빠른 이유는 MMDBMS 는 데이터 보호가 DRDBMS 에
비해서 훨씬 단순하게 최적화되어 있기 때문이다.
또한 검색 연산이 DRDBMS 에 비해서 수백배가 아닌 이유는
DRDBMS 도 데이터접근 성능을 높이기 위해 메모리 버퍼를
사용하기 때문이다. 그럼에도 불구하고 MMDBMS 의 검색 연산이 더
빠른 이유는 데이터접근이 단순하게 최적화되어 있고, 메모리 접근
시 성능의 기복(jitter)이 없기 때문이다.
이런 고성능 및 균일성능의 장점에도 불구하고 데이터를 메모리에
6 ALTIBASE5 Starting User’s Manual
저장해야 하는 MMDBMS 는 정보처리의 요구량이 방대하여 수백
GB 이상의 데이터를 저장해야 하는 산업분야에서 다시 한계를
나타내게 되었다.
MMDBMS 와 DRDBMS 혼용 구조 등장
이런 문제점을 극복하기 위해서 현재 가장 일반적으로 사용되는
구조는 데이터를 구분하여 저장하는 형태이다. 고성능이 필요한
데이터는 MMDBMS 에, 대용량이 필요한 데이터는 DRDBMS 에
저장함으로써 MMDBMS 와 DRDBMS 를 혼용한다.
이러한 구조는 MMDBMS 와 DRDBMS 의 공통정보에 대해서 서로
동기화해야 한다는 문제, MMDBMS 와 DRDBMS 를 같이 처리해야
하는 응용프로그램은 양쪽에 동시에 접속해서 처리해야 한다는 문제,
또한 장애 복구가 복잡하다는 문제들을 가지고 있다.
하지만 이제까지는 고성능처리와 대용량처리를 함께 처리할 방법이
없었기 때문에, 고성능처리와 대용량 정보처리가 필요한 분야에서는
일반적으로 활용되고 있다.
Hybrid DBMS 등장
Hybrid DBMS 는 DRDBMS, MMDBMS, 그리고 MMDBMS 와
DRDBMS 를 혼용하는 각각의 구조들의 장점을 수용하고 문제점을
해결하기 위해서 등장하게 되었다.
Hybrid DBMS 는 데이터를 구분하여, 고성능이 필요한 데이터는
메모리에, 대용량이 필요한 데이터는 디스크에 저장하되, 이 두 가지
데이터를 처리하는 DBMS 는 하나로 통합된 구조를 가지고 있다.
고성능 정보처리와 대용량 정보처리를 하나의 DBMS 에서 통합,
처리하는 구조이기 때문에, 앞서 설명한 혼용구조의 동기화 문제,
복잡한 장애처리 문제, 응용프로그램이 복잡해지는 문제를 해결하게
되었다. 또한 MMDBMS 전용, DRDBMS 전용, Hybrid DBMS 등
다양한 구성이 가능하게 되었다.
요약하면, Hybrid DBMS 는 고성능 정보처리를 가능하게 하는
MMDBMS 와 대용량 정보처리를 가능하게 하는 DRDBMS 의 장점을
결합하여 데이터는 구분하여 저장하고 데이터 관리는 통합한
구조이다.
즉, Hybrid DBMS 는 효율적인 시간 활용으로 고성능 정보 처리가
가능하고, 효율적인 자원활용으로 대용량 정보처리를 할 수 있게
되었다. Hybrid DBMS 는 고성능 및 대용량 정보처리가 모두 필요한
분야를 포함하여 포괄적으로 사용이 가능해졌다.
알티베이스 소개 7
[그림 1-1] 고성능 대용량 DBMS구조
Hybrid DBMS 알티베이스의 특징
Hybrid DBMS 인 알티베이스는 저장 관리자(Storage Manager)와
질의 처리기(Query Processor), 그리고 메인 모듈(Main Module)로
구성되어 있다.
저장 관리자는 동시성제어 및 회복을 통한 데이터보호를 담당하는
모듈이고 질의 처리기는 표준 SQL 로부터 실행계획을 생성하여
데이터접근을 담당하는 모듈이다. 마지막으로, 메인 모듈은 여러
개의 클라이언트로부터 수신되는 요청(Request)들을 동시에 처리할
수 있도록 서버의 세션(session), 쓰레드(thread)의 관리를 담당하는
모듈이다.
저장 관리자
저장 관리자는 복구 관리자와 동시성 제어 부분으로 구성되어 있다.
저장 관리자는 Layer 구조로 구성하여, 구현 복잡도를 개선하고
구조적 안정성을 확보하였으며 보다 손쉽게 Layer 별 Unit Test 를
할 수 있어 결함 발생률를 줄였다.
복구 관리자는 메모리 테이블과 디스크 테이블의 로그파일이
통합되어 최적의 검사점 수행알고리즘이 적용되었으며, 개발과정에서
자동 복구 시험 도구(Automatic Recovery Test Tool)을 사용하여
오류 가능성을 줄였다.
동시성 제어 부분은 Index Layer 와 Transaction Layer,
Application Layer, Interface Layer 로 구성되어 있고, Out-place
MVCC 와 In-place MVCC 가 통합되었고, Transaction Status
Slot 과 Start SCN List 기법이 적용되어 동시수행 성능이
향상되었다. 그리고, B+트리(B+Tree) 인덱스도 인덱스 구조 수정
연산 (Structure Modification Operation)이 발생하였을 때 B+트리
검색 과정 중에 Latch 를 잡지 않는 구조로 되어 있어서 더욱 성능이
향상되었다.
8 ALTIBASE5 Starting User’s Manual
메모리 테이블스페이스와 디스크 테이블스페이스의 인터페이스가
통합되어 메모리, 디스크 테이블스페이스 사용이 편리해졌고 서로
쉽게 호환된다.
질의 처리기
질의 처리기는 질의 실행기(Query Executor)와 질의
최적화기(Query Optimizer)로 구성되며, 메모리 쿼리, 디스크 쿼리,
하이브리드 쿼리를 통합한 투명한 구조로 구성되었다.
질의 실행기는 Tuple-Set Processing 으로 인한 노드간 의존성이
완전히 제거됨으로써 최소 Plan Node 로 다양한 조인이 구현되었다.
조인 방법이 10 개에서 34 개로 확장되었음에도 불구하고, Plan
Node 는 하나만 추가되었다.
질의 최적화기는 부하가 거의 없는 실시간 통계정보가 활용되었고,
메모리 쿼리, 디스크 쿼리, 하이브리드 쿼리 구분 없이 비용
계산(cost estimation)을 투명하게 하도록 구현되었다. 또한 Join
Greedy Algorithm 을 Join Ordering 알고리즘으로 사용하여
최적화기의 탐색공간이 최소화되었다.
메인 모듈
세션 관리자(Session Manager)는 세션을 관리하는 역할을 한다.
쓰레드 관리자(Thread Manager)는 데이터를 처리하는 쓰레드들을
관리한다.
알티베이스 소개 9
[그림 1-2] 알티베이스 내부 구조
10 ALTIBASE5 Starting User’s Manual
알티베이스 특징
고성능 대용량 하이브리드 데이터베이스 시스템인 알티베이스에 대한
일반적인 내용을 소개한다. 하이브리드 데이터베이스 시스템으로써
알티베이스가 갖는 특징, 구조, 기능 등에 관하여 간략하게 설명한다.
이에 대한 자세한 내용은 알티베이스 각각의 세부 매뉴얼을 참조한다.
데이터 모델
알티베이스의 데이터 모델은 관계 모델,(relational model)을
채택하고 있다. 관계 모델은 세 가지 주요 요소를 포함한다.
구조(structure)는 데이터베이스를 저장하거나 접근하는 객체 단위로
테이블, 뷰, 인덱스 등을 일컫는다. 이들은 곧 연산자의 조작 단위가
된다. 연산(operation)은 데이터베이스의 데이터와 구조를
사용자들이 조작할 수 있도록 허용하는 행위(action)들을 정의한
것으로써 무결성 규칙을 수반한다. 무결성 규칙(integrity rule)은
데이터와 구조에 허용된 연산을 다루기 위한 법칙으로, 데이터와
구조를 보호하기 위한 것이다.
관계 데이터베이스 관리 시스템은 다음과 같은 장점을 제공한다.
y 물리적 데이터와 논리적 데이터 독립성을 유지한다.
y 모든 데이터에 대한 접근이 다양하고 쉽다.
y 데이터베이스 설계가 유연하다.
y 데이터베이스 저장 공간과 데이터의 중복을 줄일 수 있다.
엔진 구조
알티베이스는 클라이언트-서버 구조와 내장형(embedded) 구조를
제공한다. 클라이언트-서버 구조는 클라이언트가 통신망을 통해
서버에 접근하는 형태로 기존의 RDBMS 가 제공하는 방식이다.
내장형 구조는 알티베이스와 응용 프로그램이 하나의 프로세스를
이루는 형태로써 고속의 성능을 요구하거나 작은 규모의 컴퓨팅
시스템에 적용하는 등, 특수 응용에 적합한 구조이다.
클라이언트-서버 구조는 응용 프로그램의 작성이 용이하고
데이터베이스 관리가 편리한 장점이 있는 반면, 클라이언트와 서버
간의 통신 비용으로 인하여 내장형 구조에 비하여 속도가 다소
떨어지는 단점이 있다.
알티베이스 서버는 내부적으로 다중 쓰레드 구조를 갖고 있다.
클라이언트-서버 구조에서 한 개의 클라이언트는 한 개의 서버
알티베이스 소개 11
쓰레드와 세션(session)을 구성한다. 내장형 구조에서는 응용
프로그램에서 생성한 쓰레드들이 각각의 세션에 해당되며 한
세션에서는 여러 개의 트랜잭션을 생성할 수 있다.
인터페이스
알티베이스는 기존의 실시간 데이터베이스 시스템과는 달리 범용성을
추구하는 일환으로 산업 표준 인터페이스를 지원한다.
알티베이스에서 제공하는 데이터베이스 질의어는 SQL92 표준을
따른다.
프로그래밍 인터페이스로는 ODBC,OLE DB, JDBC, C/C++
Precompiler, LDAP 등을 지원하고 있으며, 기존에 작성된
데이터베이스 응용 프로그램을 변환할 필요 없이 그대로 사용할 수
있다. 자세한 내용은
SQL User’s Manual 참조한다.
다중버전 기법
알티베이스는 다중버전 기법(이하 MVCC: Multi-Version
Concurrency Control)을 이용한 동시성 제어를 수행한다. 다중 버전
기법은 하나의 데이터에 대해 여러 개의 버전을 유지하여 읽기와
쓰기 연산에 대한 충돌을 없앰으로서 최대의 성능을 발휘할 수
있도록 하는 것이다. 특히, 기존의 row locking 방식의 단점이었던
수정된 데이터에 대한 읽기 연산이 lock 으로 인해 대기하거나, 이미
읽힌 데이터에 대해 수정 연산이 장기간 대기하는 문제점을
제거하였으며, 필요 없는 오래된 데이터를 즉시 회수함으로서
메모리의 낭비를 방지하였다. 다중 버전 기법은 대규모 사용자가
접근하는 환경에서 최적의 성능을 발휘하고, 데이터베이스를
종료하지 않고도 즉시 백업할 수 있는 핫-백업(hot-backup)
시스템을 지원한다.
알티베이스는 메모리 테이블과 디스크 테이블에 대해 외형상으로는
같은 기능을 하지만, 서로 다른 방법으로 MVCC 를 구현하였다.
메모리 테이블은 레코드의 변경시마다 새로운 버전을 생성하는 out-
place MVCC 로 구현되어 있으며, 디스크 테이블의 경우는 변경된
데이터를 기존의 레코드에 덮어 쓰고, 변경 이전의 정보를 undo
테이블스페이스에 저장하여 참조하는 in-place MVCC 방식을
채택하고 있다.
트랜잭션
12 ALTIBASE5 Starting User’s Manual
알티베이스는 Hybrid DBMS 의 구조에 맞추어 최고의 성능을 낼 수
있는 트랜잭션 구조와 이와 관련된 다양한 기능을 제공한다. 먼저
데이터베이스 내에서 동시에 수행될 수 있는 트랜잭션의 개수를
프로퍼티를 이용해서 조절할 수 있다. 또한 효율적인 서버 운영을
위해 별도로 지원하는 autocommit 모드를 사용할 수 있다. 그리고
알티베이스 시스템이 제공하는 트랜잭션의 고립화 수준(isolation
level)으로 read committed(=0), repeatable read(=1), no
phantom read(=2)을 사용자의 필요에 맞추어 적절하게 선택,
사용할 수 있다.
로깅
데이터베이스 안정성과 영속성을 위하여 알티베이스는 변경된
데이터베이스 내용에 대하여 로깅(logging)을 수행한다. 또한
시스템간의 이중화 작업(replication)을 지원하기 위해 최적의 로그를
생성함으로서 이중화 작업 때의 성능을 극대화 시킨다.
버퍼 풀 (Bufer Pol)
디스크 테이블스페이스에 접근하는 트랜잭션들의 성능을 향상시키기
위해 디스크에 대한 I/O 회수를 최소화해야 한다. 이를 위해 버퍼
풀을 사용함으로써 이전에 디스크로부터 읽은 페이지들 중 일정
부분을 메모리에 캐시해 두어 디스크에서 다시 읽어들이는 것을
방지한다. 버퍼 풀은 Hot-Cold LRU(Least Recently Used)
알고리즘에 의해 관리된다.
더블 라이트 (Double Wri te)
알티베이스 시스템의 페이지 크기와 파일 시스템의 물리적 페이지
크기가 다를 경우, 디스크 I/O 를 수행하다가 비정상적으로 종료하면
페이지가 온전하지 못한 상태로 남아있을 수 있다.
이런 현상을 방지하기 위하여 알티베이스는 페이지를 플러시할 때,
같은 이미지를 디스크의 더블 라이트 파일에 저장한 후, 페이지 원래
위치에 다시 저장한다. 그리고 알티베이스를 재구동할 때 더블
라이트 파일의 내용과 실제 페이지의 내용을 비교하여 손상된
페이지를 복구한다.
더블 라이트 기능은 디스크의 결함을 보완해 주지만, 시스템의
성능을 떨어뜨릴 수 있다. 이 기능은 사용자가 성능을 위해 사용하지
않을 수 있다.
알티베이스 소개 13
퍼지 汰廣
알티베이스는 최근의 데이터베이스 상태를 안전하게 백업(backup)
데이터베이스로 반영하기 위해 퍼지 汰廣수행한다.
메인 메모리 데이터베이스에서의 퍼지 체크포인트(fuzzy
checkpoint)는 모든 변경된 데이터 페이지가 백업 데이터베이스로
내려가 현재 수행중인 트랜잭션의 수행에 영향을 미칠 수 있기
때문에 퍼지 체크포인트와 더불어 핑퐁 체크포인트(ping pong
checkpoint) 방식을 함께 수행한다. 즉, 백업 데이터베이스를 두
개로 관리함으로써, 체크포인트 과정에서 부하를 줄일 수 있어
트랙잭션 동작이 최대한의 성능을 발휘할 수 있다.
저장 프로시저 (Stored Procedure)
저장 프로시저는 입력 인자, 출력 인자, 입출력 인자를 가지고
바디(body) 내에 정의된 조건에 따라 여러 SQL 문을 한번에
수행하는 데이터베이스 프로시저다.
저장 프로시저의 종류는 리턴값에 따라 프로시저와 함수로 나누어
진다. 자세한 내용은
Stored Procedure User’s Manual을
참고한다.
데드락 감지 (Deadlock Detection)
데드락은 트랜잭션간의 리소스 할당이 자동으로 해제될 수 없는
비정상적인 트랜잭션 정지 상태이다. 이러한 경우 일반적으로
데드락을 감지하는 별도의 쓰레드 또는 프로세스를 두게 되는데,
이러한 감지 구조는 필연적으로 일시적인 서비스 중단 사태를
초래한다. 알티베이스는 별도의 데드락 감지 쓰레드를 두지 않고,
데드락이 발생되는 순간 데드락 상황을 감지하여, 신속히 조치를
취함으로써 어떠한 경우에도 서비스가 중지되지 않도록 하며,
지속적이고 안정적인 데이터베이스 운용을 보장한다.
테이블 컴팩션
데이터베이스 운용시, 실제로 특정 메모리 테이블이 필요한 메모리
공간 이상을 차지하는 경우가 발생한다. 주로 대량의 데이터가 삽입
된 후 변경 및 삭제가 이루어지는 경우가 그러하다. 이런 경우 해당
테이블에서 필요 없는 메모리를 시스템으로 반환할 수 있다면, 보다
효율적으로 메모리 사용이 가능하다. 이런 필요로 인해 알티베이스는
14 ALTIBASE5 Starting User’s Manual
메모리 테이블에 대해 테이블 단위의 컴팩션(compaction) 기능을
제공하며, 이 기능을 이용하여 메모리 및 테이블의 효율적 관리가
가능하다.
데이터베이스 이중화
알티베이스는 시스템의 높은 가용성(high availability)과
무정지(fault tolerance) 시스템을 위하여 로그 기반의 데이터베이스
이중화(replication)를 제공한다. 로그 기반의 이중화 시스템 구조는
트랜잭션 로그를 기반으로 데이터베이스를 이중화시킴으로써,
알티베이스의 효율성을 높이고 시스템 부하를 줄일 수 있다. 서비스
중인 지역(local) 시스템의 이중화 관리 쓰레드는 로그 데이터를
원격(Remote) 시스템의 이중화 관리 쓰레드에 실시간으로 전달한다.
원격 시스템의 이중화 관리 쓰레드는 전달받은 로그 데이터를
분석하여 이것을 알티베이스 서버에게 전달하면 알티베이스 서버는
이 내용을 데이터베이스에 반영한다. 이렇게 함으로써 서비스 중인
컴퓨팅 시스템이 중단되었을 때, 시스템 복구 시간이 필요 없이
곧바로 서비스할 수 있는 체제를 갖추고 있다.
알티베이스는 부하 분산(load balancing) 기능도 제공한다.
알티베이스의 데이터베이스 복제 운영 환경에서, 서비스하는
트랜잭션들을 두 그룹 이상으로 나누어 각각의 트랜잭션이 해당
서버에서 수행되도록 하고 각 서버에서 변경되는 데이터베이스
내용은 상대편 서버에 반영시킴으로서 복제된 데이터베이스의
일관성(consistency)을 보장한다.
클라이언트-서버 프로토콜
알티베이스를 클라이언트-서버 구조로 운영할 때, 사용자는 응용
시스템의 구성에 적합한 클라이언트-서버 프로토콜을 선택하여
사용할 수 있다. 알티베이스가 제공하는 통신 프로토콜로는 TCP/IP,
IPC 와 Unix Domain socket 이 있다.
TCP/IP(Transmission Control Protocol/Internet Protocol)
프로토콜은 네트워크 상에서 클라이언트-서버 간에 사용되는
사실상의 표준 통신 프로토콜이다. IPC(Inter Process
Communication) 프로토콜은 알티베이스가 제공하는 프로토콜로서,
공유메모리(shared memory)를 활용하여 클라이언트와 서버 간에
통신을 하도록 하였다. IPC 방법은 통신 패킷에 대하여
마샬링(marshaling)이 필요 없고 공유 메모리를 이용하기 때문에
다른 통신 프로토콜보다 빠른 통신 속도를 낼 수 있다.
클라이언트 프로그램과 알티베이스 서버가 상이한 컴퓨터 시스템에
알티베이스 소개 15
존재하는 경우에는 인터넷 소켓을 이용한 TCP/IP 프로토콜을
사용하여야 하며, 이들이 동일 컴퓨터 시스템에 존재하는 경우에는
도메인 소켓을 이용한 프로토콜이나 IPC 프로토콜을 사용하여야 한다.
각각의 통신 프로토콜에 대한 성능은 IPC, 도메인 소켓, 인터넷 소켓
순으로 IPC 가 가장 빠르다.
데이터베이스 공간
알티베이스 데이터베이스는 데이터베이스의 모든 데이터를 모아
저장하는 하나 이상의 테이블스페이스로 구성되고, 테이블스페이스는
크게 메모리 공간과 디스크 공간으로 나누어진다. 알티베이스가
생성하는 시스템 테이블스페이스 외에 사용자가 메모리와 디스크
각각의 공간에 테이블스페이스를 추가할 수 있다.
DIRECT-PATH INSERT
Direct-Path INSERT 는 데이터를 입력할 때 페이지의 빈 공간을
찾아 들어가는 대신 새로운 페이지를 만들어 데이터를 입력한다. 즉
데이터를 입력할 때 테이블의 빈 공간(free space)을 사용하지 않고,
테이블스페이스로부터 익스텐트(extent)를 새로 할당받는다.
또한 버퍼 관리자를 사용하지 않고, 전용 버퍼(Private Buffer)를
사용하기 때문에 버퍼 공간에 대하여 여러 트랜잭션과의 경합을
줄인다. 그리고 INSERT 를 APPEND 방식으로 수행하여 리두(Redo)
및 언두(Undo)를 하지 않거나 줄여 로깅에 들어가는 비용을 줄인다.
데이터베이스 링크
알티베이스 데이터베이스 링크는 지역적으로 분리되어 있으나,
네트워크로 연결된 이기종의 데이터 서버들을 연동하여 개별
데이터들을 통합해 하나의 결과를 생성할 수 있게 한다.
iSQL
알티베이스는 iSQL을 이용해 데이터베이스를 관리할 수 있어 빠르고
간편하게 데이터베이스를 관리할 수 있다.
Audit
16 ALTIBASE5 Starting User’s Manual
알티베이스는 Audit 기능을 통해 데이터베이스를 테이블 단위로
비교, 검사하여 데이터간의 불일치 정보를 출력하는 기능과 불일치가
발생한 경우 두 데이터베이스를 일치시키는 기능 등을 제공한다.
iLoader
알티베이스는 iLoader 유틸리티를 제공하여, 데이터베이스의
이전이나 테이블 단위의 백업 등을 할 때 테이블 단위로 데이터를
다운로드하거나 업로드할 수 있도록 지원한다.
Admin Center
알티베이스는 GUI 형태의 Admin Center 유틸리티를 제공하여,
관리자가 보다 쉽게 데이터베이스에 접근할 수 있도록 한다.
알티베이스 연결 및 모니터링 뿐만 아니라 테이블 및 각종 객체들에
대한 관리를 윈도우 시스템에서 시각적으로 관리할 수 있도록
지원한다.
알티베이스 소개 17
알티베이스 구조
본 절에서는 알티베이스의 클라이언트-서버 구조를 중심으로 한
전체 구성도, 서버 프로세스 내부 구조, 데이터베이스 구조에 관하여
살펴본다.
전체 구성도
알티베이스의 전체 구성은 자료 저장 관리자와 질의 처리기로 구성된
서버 부분과 응용 프로그램 작성을 위한 클라이언트 라이브러리,
그리고 이들 간의 통신 모듈로 구성되어 있다.
[그림 1-3] 알티베이스 구성도
18 ALTIBASE5 Starting User’s Manual
서버 프로세스 내부 구조
알티베이스 서버 프로세스의 내부 구조를 보면 메인 쓰레드, 서비스
데몬 쓰레드, 체크 포인트 쓰레드, 세션 관리 쓰레드, 가비지 콜렉션
쓰레드, 로그 플러시 쓰레드, 버퍼 플러시 쓰레드 그리고 아카이브
쓰레드가 있다. 각각의 쓰레드는 다음과 같은 일을 수행한다.
메인 쓰레드
모든 쓰레드를 생성/종료시키고 생성한 쓰레드들을 관리한다.
서비스 데몬 쓰레드
클라이언트의 연결 요청이 있으면, 서비스 쓰레드 풀(pool)에서 대기
상태에 있는 서비스 쓰레드와 요청한 클라이언트를 연결시킨다.
서비스 쓰레드 풀
서버가 구동되면 설정(configuration) 정보에 명시된 값만큼 서비스
쓰레드를 생성하여 관리한다. 서비스 쓰레드는 질의를 처리하는
쓰레드이다.
체크포인트 쓰레드
고장 복구 시에 일의 양을 줄이기 위하여, 주기적 또는 임의로
현재의 데이터베이스 및 시스템에 대한 상황을 데이터파일에
기록하는 쓰레드이다.
세션 관리 쓰레드
클라이언트와 서비스 쓰레드 간에 연결된 세션의 상태 즉, 이 세션이
단절되었지의 여부를 감시하는 쓰레드이다.
가비지 콜렉션 쓰레드
다중 버전 기법에서는 한 데이터에 대해 필요없는 오래된 데이터가
생성될 수 있다. 가비지 콜렉션 쓰레드(garbage collection
thread)는 이러한 데이터에 대해 필요없게 된 순간 그 즉시 메모리
공간을 회수하여, 재사용할 수 있도록 조치를 취함으로서 메모리
사용의 효율성을 극대화한다.
로그 플러시 쓰레드
로그 플러시 쓰레드(log flush thread)는 데이터베이스 내의 모든
트랜잭션이 생성한 로그를 관리하고, 이렇게 로그 버퍼에 모여진
다량의 로그 데이터를 로그 디스크에 반영하는 기능을 하며,
디스크에 완전히 반영(sync)된 로그는 데이터베이스 시스템의 장애
및 재해 발생 시에 안전하게 복구할 수 있도록 회복 시에 사용된다.
버퍼 플러시 쓰레드
버퍼 풀의 모든 메모리가 사용 중이면 특정 트랜잭션이 수행중에
알티베이스 소개 19
디스크 I/O 를 발생시켜서 성능 상의 기복(Jitter) 현상을 일으키게
된다. 버퍼 플러시 쓰레드는 주기적으로 버퍼를 체크하여 일정 양
이상의 가용 버퍼 메모리를 항시 유지하도록 하며, 사용하지 않는
페이지를 디스크에 내리고 메모리를 사용 가능하게 만드는 역할을
한다.
아카이브 쓰레드
매체 오류에 대한 복구를 지원하기 위해 주기적으로 온라인 로그
파일들을 프로퍼티에 지정된 위치(ARCHIVE_DIR)로 복사하는
쓰레드이다. 알티베이스가 아카이브 모드로 운영될 때만 동작한다.
......
......
[그림 1-4] 알티베이스 프로세스의 내부 구조
데이터베이스의 물리적 구조
알티베이스 데이터베이스는 물리적으로 로그앵커 파일, 로그 파일,
데이터 파일로 구성되어 있다.
로그앵커 파일(loganchor file)
로그앵커 파일은 데이터 파일과 로그와의 관계를 나타내는 중요한
정보를 포함한다. 이는 로그를 기준으로 한 시점에서 데이터 파일의
총체적인 정보를 나타낸다. 이 파일은 데이터 파일과 함께 중요한
백업 대상이 된다.
로그 파일(logfile)
로그 파일은 트랜잭션의 원자성(Atomicity)과 영속성(Durability)을
유지하기 위해 사용된다. 원자성은 트랜잭션의 철회(rollback)를 통해
트랜잭션 수행 이전의 상태로 복귀할 수 있도록 하는 것이고,
영속성은 정상적으로 종료(commit)된 트랜잭션이 다양한
20 ALTIBASE5 Starting User’s Manual
데이터베이스 장애로부터 원래의 내용을 복구할 수 있도록 하는
것이다.
로그 파일은 prepare 로그 파일과 active 로그 파일, archive 로그
파일로 구분할 수 있다. active 로그 파일은 실행되는 트랜잭션의
로그가 기록되는 로그파일이다. Prepare 로그 파일은 로그 기록
성능을 향상시키기 위해 미리 만들어지는 로그 파일로 실제 로그가
기록되기 전까지는 비어있는 상태이다. archive 로그 파일은 복구를
위하여 백업된 로그 파일로 기록이 완료된 로그 파일들이다.
로그 파일은 현재의 데이터베이스 상태를 가지는 매우 중요한
파일로서, 만일 현재 로그 파일이 손상을 입었을 경우 당시 작업의
유무에 관계없이 데이터베이스 전체가 손상을 입게 된다. 기존 로그
파일은 일반적으로 데이터 파일이 손상될 경우 백업 파일과 함께
데이터베이스를 복구하는데 사용된다.
데이터 파일 (datafile)
데이터 파일 중 SYS_TBS_MEM_DATA 에는 기본으로 생성되는
시스템 메모리 테이블스페이스가 저장되며,
SYS_TBS_MEM_DIC 에는 메타 테이블들이, system.dbf 파일에는
기본으로 생성되는 디스크 테이블스페이스가 저장된다. 또한
temp.dbf 파일에는 쿼리 수행 시 중간 결과들이 저장되며, undo
파일에는 다중버전 기법(MVCC: Multi-Version Concurrency
Control)에서 사용되는 이전 이미지 정보들이 저장된다.
알티베이스는 페이지 단위로 데이터파일 내에서 저장 공간을
관리한다. 페이지는 데이터베이스에 의해 사용되는 데이터의 가장
작은 단위이다.
페이지는 데이터베이스를 관리하기 위한 정보를 담고 있는 카탈로그
페이지와 사용자 데이터를 저장하는 데이터 페이지로 나누어 진다.
카탈로그 페이지는 현재 생성된 데이터베이스에 대한 상세한 명세를
담고 있으며, 알티베이스의 구동 및 종료 시 데이터베이스의 일관성
검사 및 변경 정보를 유지하게 된다.
카탈로그 페이지는 데이터베이스에서 사용되는 자기 자신을 제외한
나머지 데이터 페이지에 대한 리스트 및 사용정보를 담고 있으며,
백업 데이터베이스의 가장 첫 번째 페이지에 위치하고 있는 매우
중요한 페이지 영역이다.
데이터 페이지는 실제로 사용자 데이터가 저장되는 영역이며, 페이지
헤더와 페이지 본체(body)로 나누어진다. 페이지 헤더는 서로 간의
리스트를 유지하기 위한 링크 정보와 타입, 그리고 자기 자신의
페이지 번호로 구성되어 있다. 페이지 본체는 여러 개의 슬롯으로
분할된다. 이 슬롯이 실제 데이터가 저장되는 최종 저장소이다.
알티베이스 소개 21
데이터베이스 논리적 구조
알티베이스가 메모리 또는 디스크에 데이터를 저장하는 방식은
논리적으로는 테이블스페이스 내에 그리고 물리적으로는 해당
테이블스페이스와 관련된 데이터파일 내에 저장한다.
테이블스페이스와 데이터파일의 관계를 보면 알티베이스
데이터베이스를 구성하는 각각의 테이블스페이스는 하나 이상의
데이터파일로 구성된다. 단, 하나의 데이터파일은 하나의
테이블스페이스에만 소속된다. 데이터베이스, 테이블스페이스 그리고
데이터파일은 밀접한 관계가 있으며 이 관계를 정리하면 다음과 같다.
데이터베이스는 논리적으로 테이블스페이스라는 저장 단위로
구성되어 있다. 즉, 테이블스페이스는 데이터베이스의 모든 데이터를
저장하는 논리적인 공간이다. 데이터베이스는 물리적으로
데이터파일이라고 불리는 하나 이상의 파일들로 구성된다. 즉
데이터파일은 데이터베이스의 모든 데이터를 저장하는 물리적
공간이다. 다음 그림은 테이블스페이스와 데이터파일의 관계를
설명한다.
DATABASE
TABLESPACE A
TABLESPACE B
TABLESPACE C
DATAFILE 1
1
DATAFILE 2
2
DATAFILE 3
DATAFILE 4
4
DATAFILE 5
5
DATAFILE 6
DATAFILE 7
7
DATAFILE 8
8
DATAFILE 9
[그림 1-5] 데이터베이스 논리적 구조
알티베이스는 데이터베이스 내의 모든 데이터에 논리적 데이터베이스
영역인 테이블스페이스를 할당한다. 물리적인 데이터베이스 영역
할당의 단위로는 페이지(page), 익스텐트(extent) 그리고
세그먼트(segment)가 있다.
페이지는 가장 작은 물리적 저장 단위로, 모든 데이터는 페이지 내에
저장된다.
페이지의 물리적인 다음 단계는 익스텐트이다. 즉 일정 개수의
연속적인 페이지들이 모여서 익스텐트라는 데이타베이스 영역을
형성한다.
익스텐트 상위의 물리적 데이터베이스 저장 단계를 세그먼트라고
22 ALTIBASE5 Starting User’s Manual
한다. 하나의 세그먼트는 일련의 익스텐트의 집합이며, 모든
익스텐트는 같은 테이블스페이스에 저장된다.
자세한 내용은
Administrator’s Manual을 참조한다.
기타 제어 파일들
부트 파일(altibase_boot.log)
알티베이스 서버가 동작된 상태를 기록한다. 이 파일이 기록하고
있는 정보로는 알티베이스 구동 및 종료 시 얻어지는 시스템 정보에
대한 세부사항이 있으며, 또한 알티베이스의 비정상 종료 시
알티베이스의 오류 발생 상태를 기록한다.
프로퍼티 파일(altibase.properties)
알티베이스 서버의 환경 설정을 위한 파일이며 알티베이스 서버의
운용 방식과 튜닝에 관한 모든 구성 요소를 포함하고 있다.
메시지 파일
자료 저장 관리 모듈, 질의 처리 모듈, 알티베이스 서버 메인 모듈,
그리고 함수 실행이나 데이터 타입과 관련된 오류 메시지를 수록한
파일이다.
알티베이스 구성요소 23
2. 알티베이스 구성요소
이 장에서는 알티베이스의 주요 구성요소에 대해서 설명한다.
사용자는 알티베이스 패키지 설치 후에 실행 바이너리 부문과
프로그래밍 라이브러리 부문 등의 구성요소에 대해서 확인할 수 있다.
24 ALTIBASE5 Starting User’s Manual
알티베이스 구성요소
알티베이스 제품을 구성하고 있는 요소들은 크게 실행 바이너리
부문과 프로그래밍 라이브러리 부문으로 구분된다. 각 부분에 대한
자세한 내용은 본 장의 알티베이스 디렉토리 부분을 참조한다.
실행 바이너리
aexport
알티베이스 버전을 업그레이드할 때 필요한 일련의 작업들을 수행할
수 있는 도구로, 업그레이드를 위한 SQL 스크립트 파일, iSQL 실행
쉘 파일, iLoader 실행 쉘 파일을 자동으로 만든다.
altibase
클라이언트-서버 구조로 운영할 때의 서버이다.
altierr
오류 코드에 대한 세부 내용을 검색하여 출력한다.
altimon
알티베이스의 동작 상태를 모니터링하는 쉘 스크립트 프로그램이다.
altiprofile
SQL 문의 통계정보(수행 횟수, 수행 시간)를 수집하는 도구이다.
altipaswd
sys 계정의 패스워드를 변경하기 위한 도구이다.
audit
audit 은 서버의 데이터베이스를 테이블 단위로 비교, 검사하여
불일치 정보를 출력하는 기능과 불일치가 발생한 경우 두
데이터베이스를 일치시키는 기능 등 두 가지를 제공한다.
이에 대한 자세한 내용은 Audit User’s Manual 을 참조한다.
checkServer
알티베이스의 상태를 체크하여 비정상 종료시 수행해야 할 일을
스크립트 파일로 만들어 실행할 수 있도록 한다.
dumpla
알티베이스 로그앵커 파일의 내용을 출력 및 검사한다.
dumplf
알티베이스 구성요소 25
알티베이스 로그 파일의 내용을 출력 및 검사한다.
dump_stack.sh
알티베이스 비정상 종료시 프로세스의 콜 스택을 출력한다.
iloader
데이터베이스의 특정 테이블을 로드 및 언로드할 수 있는 도구이다.
이 도구에 대한 자세한 내용은
iLoader User’s Manual을
참조한다.
isql
대화형으로 알티베이스 데이터베이스 질의를 수행할 수 있는
도구이다. 이 도구에 대한 자세한 내용은
iSQL User’s Manual을
참조한다.
killCheckServer
실행중인 checkServer 를 종료시킨다.
server
알티베이스의 구동 및 종료, 재시작 등의 동작을 수행할 수 있도록
작성된 쉘 스크립트 프로그램이다.
sesc
내장 SQL 문을 사용하여 응용 프로그램을 작성한 후, 작성된 응용
프로그램을 전처리(precompile)하기 위한 전처리 실행 파일이다.
자세한 설명은
Precompiler User’s Manual을 참조한다.
shmutil
공유메모리 데이터베이스 관리 도구이다. 알티베이스의 공유
메모리를 메인 메모리 데이터베이스로 사용하는 경우, shmutil 로
공유메모리에 관련된 관리 작업을 한다.
* 구체적인 참조 매뉴얼을 명시하지 않은 실행 파일은
Utilities
User’s Manual
을 참조한다.
프로그래밍 라이브러리
알티베이스의 응용 프로그램을 작성할 때 필요한 구성 요소들로서,
다음과 같은 것들이 있다.
y C 또는 C++ 언어로 프로그램을 작성할 때 필요한 라이브러리
y ODBC 인터페이스를 제공하는 라이브러리(libodbccli.a)가 포함
된다.
y MS-Windows 환경에서 ODBC 드라이버를 활용하여 프로그래
26 ALTIBASE5 Starting User’s Manual
밍할 수 있는 라이브러리(altibase_odbc.dll)
y 자바 언어로 프로그래밍할 때 필요한 자바 클래스 라이브러리
(Altibase.jar)
y 프로그래밍에 필요한 헤더 파일들
이에 대해 본 매뉴얼의
응용 프로그램 작성 부분에서 자세히
설명한다.
알티베이스 구성요소 27
알티베이스 디렉토리
알티베이스를 설치하면 다음의 디렉토리가 생성된다. 알티베이스 홈
디렉토리는 환경 변수 ALTIBASE_HOME 에 지정된다. 이 홈
디렉토리가 포함하는 내용은 bin, conf, lib, include, msg, dbs,
logs, sample, install, audit, trc, admin, 그리고 arch_logs
디렉토리를 포함하고 있다.
각각의 디렉토리 역할과 이 디렉토리가 포함하는 내용에 관하여
설명한다.
admin 디렉토리
알티베이스 시스템 정보와 관련된 view 를 생성하는 adminview.sql
파일과 프로시져, 테이블 정보를 볼 수 있는 프로시져를 생성하는
SQL 파일들이다.
arch_logs 디렉토리
복구를 위해 로그 파일을 백업하는 백업 디렉토리이다. 이
디렉토리의 위치 및 디렉토리 이름은 프로퍼티 파일에 명시되어 있다.
audit 디렉토리
이중화 동작 시 발생한 불일치를 해결하는 알티베이스 유틸리티인
audit 의 예제 스크립트 파일이 들어있는 디렉토리이다.
자세한 설명은 Audit User’s Manual 을 참조한다.
bin 디렉토리
알티베이스를 포함한 알티베이스 관리도구와 알티베이스를
사용하는데 필요한 지원 도구들의 실행 파일이 존재하는
디렉토리이다.
bin 디렉토리에는 다음과 같은 파일이 존재한다. 각각의 유틸리티에
대한 자세한 설명은
Utilities User’s Manual을 참조한다.
aexport, altibase, altierr, altimon, altipasswd, altiprofile, audit,
checkServer, dumpla, dumplf, iloader, isql, killCheckServer,
28 ALTIBASE5 Starting User’s Manual
server, sesc, shmutil
conf 디렉토리
알티베이스 라이선스 및 알티베이스가 취할 수 있는 다양한 옵션을
수록한 프로퍼티 파일(altibase.properties)이 존재하는 디렉토리이다.
알티베이스 서버가 실행될 때 라이선스를 확인하고 프로퍼티 파일을
참조하여 서버 상태를 초기화한다. 알티베이스의 프로퍼티에 대한
자세한 설명은 본 매뉴얼의
알티베이스 프로퍼티 부분을 참조한다.
dbs 디렉토리
기본 프로퍼티를 이용할 경우 데이터베이스의 파일들이 생성되는
디렉토리이다. 이 디렉토리의 위치 및 디렉토리 명은 프로퍼티에
명시되어 있다.
SYS_TBS_MEM_DATA 파일에는 기본으로 생성되는 시스템 메모리
테이블스페이스가, SYS_TBS_MEM_DIC 파일에는 메타 테이블이,
system001.dbf 파일에는 기본으로 생성되는 디스크 테이블스페이스,
temp001.dbf 파일에는 쿼리 수행 시 필요한 임시 결과들이
저장된다.
undo001.dbf 파일에는 SQL 문 수행과 복구에 필요한 이전 이미지
정보들이 저장된다. .dwf 파일은 더블 라이트 버퍼 파일로서 디스크
페이지가 임시로 저장된다.
include 디렉토리
ODBC 라이브러리를 이용하여 응용 프로그램을 작성할 때 필요한
헤더 파일을 수록한 디렉토리이다.
alaAPI.h
알티베이스 로그 분석기(ALA)에서 사용하는 API 헤더 파일이다.
sqlcli.h
클라이언트 응용 프로그램을 작성할 때 필요한 헤더 파일이다.
sqltypes.h
ODBC 응용 프로그램 개발시 필요한 기초 데이터 타입에 대한
정보를 담고 있다.
sqlucode.h
알티베이스 구성요소 29
유니코드 정의 헤더 파일이다.
ses.h
C/C++ 전처리기(Precompiler)로 응용 프로그램 개발시 오류 처리
SQL 문장 구조에 대한 정보를 담고 있다.
install 디렉토리
알티베이스 응용프로그램 작성에 필요한 makefile 을 위한 매크로
설정 등이 포함된 altibase_env.mk 파일과 README 파일이 있다.
l ib 디렉토리
응용 프로그램 작성에 필요한 라이브러리를 수록한 디렉토리이며
다음과 같은 파일을 갖고있다. 각각의 라이브러리를 이용하여 응용
프로그램을 작성하는 방법은
응용 프로그램 작성 에서 설명한다.
Altibase.jar
알티베이스를 자바 응용프로그램에서 사용하기 위한 JDBC
드라이버이다. 순수 자바 언어로 구현된 Type 4 방식을 사용한다.
Altibase_server.jar
임베디드 환경에서 알티베이스를 자바 응용프로그램에서 사용하기
위한 JDBC 드라이버이다. 이 드라이버는 하드웨어에 종속적인
네이티브 모듈을 사용하는 Type 2 방식을 사용한다.
libsesc.a
내장 SQL 프로그램을 작성할 때 필요한 라이브러리이다. 내장 SQL
프로그램 작성에 관한 자세한 내용은
Precompiler User’s
Manual
을 참조한다.
libodbccli.a
알티베이스 클라이언트-서버용 응용프로그램 작성을 위한
라이브러리이다.
l ogs 디렉토리
로그앵커 파일들과 로그 파일들이 존재하는 디렉토리다. 이
디렉토리의 위치 및 디렉토리 명은 프로퍼티 파일에 명시되어 있다.
로그앵커 파일명과 로그 파일명은 알티베이스 시스템에서 자동으로
결정된다. 그러나 로그 앵커를 가진 파일 시스템의 오류에 대비하기
30 ALTIBASE5 Starting User’s Manual
위해서는 프로퍼티를 변경하여 여러 개의 로그 앵커 파일들을 각각
서로 다른 파일 시스템에 두어 관리하는 것이 좋다.
msg 디렉토리
오류 메시지를 수록한 파일들을 포함하는 디렉토리다. 다음과 같은
파일이 있다. 오류 메시지는 영문만 제공된다.
E_SM_ US7ASCII.msb
자료 저장 관리 모듈에서 발생할 수 있는 오류 메시지를 수록한
파일이다.
E_QP_ US7ASCII.msb
질의 처리 모듈에서 발생할 수 있는 오류 메시지를 수록한 파일이다.
E_MM_ US7ASCII.msb
알티베이스 서버의 메인 모듈에서 발생할 수 있는 오류 메시지를
수록한 파일이다.
E_CM_ US7ASCII.msb
알티베이스 통신 모듈에서 발생할 수 있는 오류 메시지를 수록한
파일이다.
E_RP_ US7ASCII.msb
알티베이스 이중화 모듈에서 발생할 수 있는 오류 메시지를 수록한
파일이다.
E_ST_ US7ASCII.msb
알티베이스 저장 프로시저 모듈에서 발생할 수 있는 오류 메시지를
수록한 파일이다.
E_ID_US7ASCII.msb (E_MT_ US7ASCII.msb)
함수 실행이나 데이터 타입과 관련된 오류 메시지를 수록한 파일이다.
sample 디렉토리
알티베이스의 응용 프로그램을 샘플로 제공한 디렉토리다.
JDBC, ODBC, C/C++ 전처리기(precompiler) 라이브러리를
이용하여 작성된 프로그램과 Makefile 이 수록되어 있다.
알티베이스 구성요소 31
t rc 디렉토리
알티베이스 운영 상태를 기록한 파일들이 존재한다.
altibase_boot.log
알티베이스 서버가 동작된 상태를 기록하고 있다. 이 파일이
기록하고 있는 정보로는 알티베이스 구동 및 종료시 생성되는 시스템
정보에 대한 세부사항이 있다. 또한 알티베이스의 비정상 종료시
알티베이스의 오류 발생 상태를 기록한다.
altibase_id.log
시스템 레벨에서 발생하는 경고 메시지나 트레이스 메시지 등이
기록되는 파일들이다.
altibase_sm.log
저장관리자 모듈에서 발생하는 경고 메시지나 트레이스 메시지 등이
기록되는 파일들이다.
altibase_mt.log
데이터 타입 및 빌트인 함수 모듈에서 발생하는 경고 메시지나
트레이스 메시지 등이 기록되는 파일들이다.
altibase_rp.log
이중화 모듈에서 발생하는 경고 메시지나 트레이스 메시지 등이
기록되는 파일들이다.
altibase_qp.log
질의 처리 모듈에서 발생하는 경고 메시지나 트레이스 메시지 등이
기록되는 파일들이다.
altibase_IPC.log
IPC 로 접속시 생성된 자원(resource)들에 대한 정보가 기록되는
파일이다.
알티베이스 실행과 종료 33
3. 알티베이스 실행과 종료
이 장에서는 알티베이스 설치 완료 후 데이터베이스 구동 및 종료에
대한 설명을 제공된다.
34 ALTIBASE5 Starting User’s Manual
알티베이스의 실행
알티베이스 서버를 실행하는 방법은 sys 계정의 관리자가 서버에
로그인 시 -sysdba 관리자 모드를 통하여 서버에 접속한 후 부여된
관리자 권한을 이용하거나 서버 스크립트 명령을 이용하여 실행할 수
있다.
알티베이스 서버가 실행되는 과정을 살펴보면, 먼저 프로퍼티
읽어들이고 시스템 메모리 검사를 거친 후, 알티베이스 시스템 환경
초기화, 시스템 데이터 초기화, 시그널 핸들링, 데이터베이스 공간의
메모리 초기화, 질의 처리 모듈 초기화, 마지막으로 쓰레드들을
초기화함으로써 알티베이스 서버의 구동이 완료된다.
알티베이스의 startup 명령어는 알티베이스를 설치한 유닉스
계정으로만 수행이 가능하다.
shell> isql -u sys -p manager -sysdba
-------------------------------------------
Altibase Client Query utility.
Release Version 5.3.3.1
Copyright 20, ALTIBASE Corporation or its subsidiaries.
Al Rights Reserved.
-------------------------------------------
ISQL_CONNECTION = UNIX, SERVER = 127.0.0.1, PORT_NO = 20300
iSQL(sysdba)>
iSQL(sysdba)> startup
Connecting to the DB server.... Connected.
TRANSITION TO PHASE : PROCESS
TRANSITION TO PHASE : CONTROL
TRANSITION TO PHASE : META
[SM] Recovery Phase - 1 : Preparing Database
: Dynamic Memory Version => Paralel
Loading
[SM] Recovery Phase - 2 : Loading Database
[SM] Recovery Phase - 3 : Skipping Recovery Threads...
Refining Disk Table
[SM] Refine Memory Table : .....................................................
[SUCCESS]
[SM] Rebuilding Indices [Total Count:100] ..........................
[SUCCESS]
TRANSITION TO PHASE : SERVICE
[CM] Listener started : TCP on port 20300
[CM] Listener started : UNIX
[RP] Initialization : [PASS]
--- STARTUP Process SUCCESS --
Command execute success.
또는 서버 스크립트 명령을 이용하여 서버를 구동할 수 있다.
shell> server start
-------------------------------------------
Altibase Client Query utility.
Release Version 5.3.3.1
알티베이스 실행과 종료 35
Copyright 20, ALTIBASE Corporation or its subsidiaries.
Al Rights Reserved.
-------------------------------------------
ISQL_CONNECTION = UNIX, SERVER = 127.0.0.1, PORT_NO = 20300
[ERR-910FB : Connected to idle instance]
Connecting to the DB server... Connected.
TRANSITION TO PHASE : PROCESS
TRANSITION TO PHASE : CONTROL
TRANSITION TO PHASE : META
[SM] Recovery Phase - 1 : Preparing Database
: Dynamic Memory Version => Paralel
Loading
[SM] Recovery Phase - 2 : Loading Database
[SM] Recovery Phase - 3 : Skipping Recovery Threads...
Refining Disk Table
[SM] Refine Memory Table : .......................................................
[SUCCESS]
[SM] Rebuilding Indices [Total Count:100] ..................................
[SUCCESS]
TRANSITION TO PHASE : SERVICE
[CM] Listener started : TCP on port 20300
[CM] Listener started : UNIX
[RP] Initialization : [PASS]
--- STARTUP Process SUCCESS --
Command execute success.
36 ALTIBASE5 Starting User’s Manual
알티베이스의 종료
알티베이스 서버를 종료시키는 명령은 sys 사용자가 -sysdba 관리자
모드로 서버에 접속 후 부여된 권한을 이용하거나 서버 스크립트
명령을 이용하여 실행할 수 있다.
서버를 종료시키는 명령인 shutdown 은 세 가지 옵션을 갖고 있으며,
각각의 옵션에 따라 서버를 종료하는 방식이 다르다.
알티베이스의 shutdown 명령어는 알티베이스를 설치한 유닉스
계정으로만 수행이 가능하다.
normal
서버를 정상적으로 종료하는 방식으로, 클라이언트들이 모두 종료될
때까지 서버의 종료 작업을 대기하는 방법이다. 서버가 종료하면서
수행하는 일들은 클라이언트-서버간 통신 세션을 감지하는 쓰레드의
종료, 서비스 쓰레드의 종료, 자료 저장 관리자의 종료, 그리고
알티베이스 서버 프로세스가 완전히 종료되기를 대기하는 일들을
수행함으로써, 알티베이스 서버를 종료한다. 이렇게 종료했을 때
다음과 같은 메시지가 출력된다.
iSQL(sysdba)> shutdown normal;
Ok..Shutdown Proceeding....
TRANSITION TO PHASE : Shutdown Altibase
[RP] Finalization : PASS
shutdown normal success.
immediate
서버를 종료할 때 현재 연결된 세션들을 강제로 단절시킨 다음,
알티베이스 서버가 현재 실행 중인 트랜잭션들을
철회(rollback)시키고 알티베이스 서버를 종료하는 방법이다.
iSQL(sysdba)> shutdown imediate
Ok..Shutdown Proceeding....
TRANSITION TO PHASE : Shutdown Altibase
[RP] Finalization : PASS
shutdown immediate success.
서버 스크립트 명령을 이용하여 서버를 종료할 수 있다.
$ server stop
-------------------------------------------
Altibase Client Query utility.
Release Version 5.3.3.1
알티베이스 실행과 종료 37
Copyright 20, ALTIBASE Corporation or its subsidiaries.
Al Rights Reserved.
-------------------------------------------
ISQL_CONNECTION = UNIX, SERVER = 127.0.0.1, PORT_NO = 20300
Ok..Shutdown Proceeding....
TRANSITION TO PHASE : Shutdown Altibase
[RP] Finalization : PASS
shutdown immediate success.
abort
알티베이스 서버를 ‘kill -9’ 시스템 명령을 사용하여 강제로
죽이는 방법이다. 이 방법으로 알티베이스 서버를 종료하면,
데이터베이스가 완전하지 못하여 다음에 알티베이스 서버를 실행할
때 데이터베이스 복구 과정을 거쳐야 한다.
iSQL(sysdba)> shutdown abort
iSQL(sysdba)>
또는 서버 스크립트 명령을 이용하여 서버를 강제 종료할 수 있다.
$ server kill
-------------------------------------------
Altibase Client Query utility.
Release Version 5.3.3.1
Copyright 20, ALTIBASE Corporation or its subsidiaries.
Al Rights Reserved.
-------------------------------------------
ISQL_CONNECTION = UNIX, SERVER = 127.0.0.1, PORT_NO = 20300
$
알티베이스 프로퍼티 39
4. 알티베이스 프로퍼티
사용자는 알티베이스 서버를 다양한 모드로 운영할 수 있다.
알티베이스 서버의 환경 설정은 알티베이스 프로퍼티 파일을
이용하는 것이다. 프로퍼티 파일은 알티베이스 서버의 운용 방식과
튜닝에 관한 모든 구성 요소를 포함하고 있다.
이 장에서는 알티베이스를 사용자 업무에 적합한 데이터베이스로
구성하고 운영하기 위해서 설정되고 관리되어야 하는 알티베이스
프로퍼티들에 대해서 설명한다.
40 ALTIBASE5 Starting User’s Manual
환경 설정 방법
알티베이스 서버와 관련된 환경을 설정하기 위한 방법은 세 가지가
있다.
첫째, 알티베이스 프로퍼티 파일,
$ALTIBASE_HOME/conf/altibase.properties 를 이용하는
방식이다. 이 방식은 알티베이스 서버가 실행되지 않은 상태에서 할
수 있는 정적인 환경 설정 방법으로, 프로퍼티 파일에서 해당 구성
요소를 특정 값으로 설정한 후 알티베이스 서버를 재구동해야 수정된
값이 알티베이스 서버에 반영된다.
둘째, 알티베이스 서버가 가동 중이더라도 알티베이스 관련 환경
설정을 변경할 수 있는 동적인 방식이다. 알티베이스 서버를 내리지
않고도 변경할 수 있다는 장점이 있으나, 모든 프로퍼티에
적용되지는 않는다. 프로퍼티 속성이 변경 가능일 경우, ALTER
SYSTEM 문 혹은 ALTER SESSION 문을 이용하여 변경할 수
있으며 알티베이스 서버 전체 혹은 세션 별로 환경 설정 값이
적용된다.
셋째, 운영체제의 환경변수를 이용하여 설정할 수 있다. 이는
프로퍼티 파일과 마찬가지로 정적인 방법이다. 프로퍼티 속성이 읽기
전용, 단일 값일 경우 환경변수로 값을 설정할 수 있다. 환경변수는
ALTIBASE_프로퍼티명 형식으로 설정한 후 데이터베이스 서버를
재구동하여야 수정된 값이 서버에 반영된다.
예를 들면 다음과 같이 설명할 수 있다.
$ export ALTIBASE_DEFAULT_DATE_FORMAT=YYYY/MM/DD
프로퍼티 설정 방법에 따른 우선순위는 다음과 같다.
1. 환경변수로 설정
2. 알티베이스 프로퍼티 파일에서 설정
3. 시스템의 기본값 사용
다음 예와 같이 프로퍼티가 설정되었을 경우 환경변수의 우선순위가
높으므로, 알티베이스 프로퍼티 파일 DEFAULT_DATE_FORMAT 의
값은 무시되고 환경변수의 값으로 설정된다.
shell> export ALTIBASE_DEFAULT_DATE_FORMAT=YYY-MM-DD
altibase.properties
DEFAULT_DATE_FORMAT=YYYY-MM-DD
알티베이스 서버의 환경 설정에 관한 프로퍼티 파일은
ALTIBASE_HOME 의 conf 디렉토리 밑에 있는
altibase.properties 이며, 프로퍼티의 내용은 크게 다음과 같이
분류할 수 있다.
알티베이스 프로퍼티 41
y 데이터베이스 구성 관련 프로퍼티
y 성능 관련 프로퍼티
y 세션 관련 프로퍼티
y 트랜잭션 관련 프로퍼티
y 백업 및 복구 관련 프로퍼티
y 이중화 관련 프로퍼티
y 메시지 로그 관련 프로퍼티
y 데이터베이스 링크 관련 프로퍼티
y 기타 프로퍼티
다음의 표는 위 분류기준에 의해서 알티베이스 프로퍼티를 정리한
표이다. 참고로 표의 각 항은 다음과 같은 의미를 지닌다.
D: 데이터베이스 구성
P: 성능
S: 세션
T: 트랜잭션
B: 백업 및 복구
R: 이중화
M: 메시지 로그
L: 데이터베이스 링크
E: 기타
SESSION : ALTER SESSION 문을 이용하여 프로퍼티 값 변경
가능
SYSTEM : ALTER SYSTEM 문을 이용하여 프로퍼티 값 변경
가능
BOTH : ALTER SESSION, ALTER SYSTEM 문을 이용하여
프로퍼티 값 변경 가능
분류 소분류 프로퍼티 설정값
변경문
D BUFFER_AREA_CHUNK_SIZE
BUFFER_AREA_SIZE SYSTEM
BUFFER_CHECKPOINT_LIST_CNT
BUFFER_FLUSH_LIST_CNT
BUFFER_FLUSHER_CNT
BUFFER_HASH_BUCKET_DENSITY
BUFFER_HASH_CHAIN_LATCH_DENSITY
BUFFER_LRU_LIST_CNT
BUFFER_PREPARE_LIST_CNT
COMPRESSION_RESOURCE_GC_SECOND
DB_NAME
DDL_SUPPLEMENTAL_LOG_ENABLE SYSTEM
DEFAULT_DISK_DB_DIR
42 ALTIBASE5 Starting User’s Manual
분류 소분류 프로퍼티 설정값
변경문
DEFAULT_MEM_DB_FILE_SIZE
DEFAULT_SEGMENT_MANAGEMENT_TYPE
DEFAULT_SEGMENT_STORAGE_INITEXTENTS
DEFAULT_SEGMENT_STORAGE_MAXEXTENTS
DEFAULT_SEGMENT_STORAGE_MINEXTENTS
DEFAULT_SEGMENT_STORAGE_NEXTEXTENTS
DIRECT_PATH_BUFFER_PAGE_COUNT SYSTEM
DISK_INDEX_UNBALANCED_SPLIT_RATE
DOUBLE_WRITE_DIRECTORY
DOUBLE_WRITE_DIRECTORY_COUNT
DRDB_FD_MAX_COUNT_PER_DATAFILE
EXPAND_CHUNK_PAGE_COUNT
LOG_DIR
LOG_FILE_SIZE
LOGANCHOR_DIR
MAX_CLIENT
MEM_DB_DIR
MEM_MAX_DB_SIZE
MEM_SIZE_CLASS_COUNT
MEMORY_INDEX_BUILD_RUN_SIZE SYSTEM
MEMORY_INDEX_BUILD_VALUE_LENGTH_THRESHOLD SYSTEM
MEMORY_LOB_COLUMN_IN_ROW_SIZE
MEMORY_VARIABLE_COLUMN_IN_ROW_SIZE
MIN_COMPRESSION_RESOURCE_COUNT
MIN_LOG_RECORD_SIZE_FOR_COMPRESS SYSTEM
MIN_PAGES_ON_DB_FREE_LIST
MIN_PAGES_ON_TABLE_FREE_LIST SYSTEM
PCTFREE
PCTUSED
QP_MEMORY_CHUNK_SIZE
SHM_DB_KEY SYSTEM
STARTUP_SHM_CHUNK_SIZE
ST_OBJECT_BUFFER_SIZE
SYS_DATA_TBS_EXTENT_SIZE
SYS_DATA_FILE_INIT_SIZE
SYS_DATA_FILE_MAX_SIZE
SYS_DATA_FILE_NEXT_SIZE
SYS_TEMP_TBS_EXTENT_SIZE
SYS_TEMP_FILE_INIT_SIZE
알티베이스 프로퍼티 43
분류 소분류 프로퍼티 설정값
변경문
SYS_TEMP_FILE_MAX_SIZE
SYS_TEMP_FILE_NEXT_SIZE
SYS_UNDO_TBS_EXTENT_SIZE
SYS_UNDO_FILE_INIT_SIZE
SYS_UNDO_FILE_MAX_SIZE
SYS_UNDO_FILE_NEXT_SIZE
TABLE_BACKUP_FILE_BUFFER_SIZE
TEMP_PAGE_CHUNK_COUNT
TRANSACTION_SEGMENT_COUNT SYSTEM
USER_DATA_TBS_EXTENT_SIZE
USER_DATA_FILE_INIT_SIZE
USER_DATA_FILE_MAX_SIZE
USER_DATA_FILE_NEXT_SIZE
USER_TEMP_TBS_EXTENT_SIZE
USER_TEMP_FILE_INIT_SIZE
USER_TEMP_FILE_MAX_SIZE
USER_TEMP_FILE_NEXT_SIZE
VOLATILE_MAX_DB_SIZE
P AGER_WAIT_MAXIMUM
AGER_WAIT_MINIMUM
BUFFER_VICTIM_SEARCH_INTERVAL
BUFFER_VICTIM_SEARCH_PCT
BULKIO_PAGE_COUNT_FOR_DIRECT_PATH_INSERT SYSTEM
CHECKPOINT_BULK_SYNC_PAGE_COUNT SYSTEM
CHECKPOINT_BULK_WRITE_PAGE_COUNT SYSTEM
CHECKPOINT_BULK_WRITE_SLEEP_SEC SYSTEM
CHECKPOINT_BULK_WRITE_SLEEP_USEC SYSTEM
CHECKPOINT_FLUSH_COUNT
CHECKPOINT_FLUSH_MAX_GAP
CHECKPOINT_FLUSH_MAX_WAIT_SEC
CM_BUFFER_MAX_PENDING_LIST
DATABASE_IO_TYPE
DATAFILE_WRITE_UNIT_SIZE SYSTEM
DB_FILE_MULTIPAGE_READ_COUNT
DEFAULT_FLUSHER_WAIT_SEC SYSTEM
DIRECT_BUFFER_FLUSH_THREAD_SYNC_INTERVAL SYSTEM
DIRECT_IO_ENABLED
DIRECT_PATH_INSERT_TEMP_QUEUE_SIZE
DIRECT_PATH_INSERT_TEMP_QUEUE_WAIT_TIME
44 ALTIBASE5 Starting User’s Manual
분류 소분류 프로퍼티 설정값
변경문
DISK_INDEX_BUILD_MERGE_PAGE_COUNT SYSTEM
EXECUTE_STMT_MEMORY_MAXIMUM SYSTEM
FAST_START_IO_TARGET SYSTEM
FAST_START_LOGFILE_TARGET SYSTEM
HIGH_FLUSH_PCT SYSTEM
HOT_LIST_PCT SYSTEM
HOT_TOUCH_CNT SYSTEM
INDEX_BUILD_THREAD_COUNT
INDEX_INITRANS
INDEX_MAXTRANS
INSPECTION_LARGE_HEAP_THRESHOLD SYSTEM
LFG_GROUP_COMMIT_INTERVAL_USEC
LFG_GROUP_COMMIT_RETRY_USEC
LFG_GROUP_COMMIT_UPDATE_TX_COUNT
LOCK_ESCALATION_MEMORY_SIZE SYSTEM
LOG_FILE_GROUP_COUNT
LOG_IO_TYPE
LOW_FLUSH_PCT SYSTEM
LOW_PREPARE_PCT SYSTEM
MAX_FLUSHER_WAIT_SEC SYSTEM
MULTIPLEXING_CHECK_INTERVAL
MULTIPLEXING_MAX_THREAD_COUNT
MULTIPLEXING_THREAD_COUNT
NORMALFORM_MAXIMUM BOTH
OPTIMIZER_MODE
PARALLEL_DML_MODE
SYSTEM
PARALLEL_LOAD_FACTOR
PREPARE_STMT_MEMORY_MAXIMUM SYSTEM
REFINE_PAGE_COUNT
SHM_PAGE_COUNT_PER_KEY
SMALL_TABLE_PAGE_COUNT
SYSTEM
SORT_AREA_SIZE SYSTEM
SQL_PLAN_CACHE_BUCKET_CNT
SQL_PLAN_CACHE_HOT_REGION_LRU_RATIO SYSTEM
SQL_PLAN_CACHE_PREPARED_EXECUTION_CONTEXT_CNT
SQL_PLAN_CACHE_SIZE SYSTEM
TABLE_INITRANS
TABLE_MAXTRANS
TABLE_LOCK_ENABLE SYSTEM
TIMER_RUNNING_LEVEL
알티베이스 프로퍼티 45
분류 소분류 프로퍼티 설정값
변경문
TIMED_STATISTICS
TIMER_THREAD_RESOLUTION
TOUCH_TIME_INTERVAL SYSTEM
TRANSACTION_SEGMENT_COUNT
TRX_UPDATE_MAX_LOGSIZE BOTH
S 일반 CM_DISCONN_DETECT_TIME
DEFAULT_THREAD_STACK_SIZE
IPC_CHANNEL_COUNT
IPC_PORT_NO
MAX_ LISTEN
NLS_COMP
PORT_NO
PS M_ F I LE_ O PEN _ LIMIT
SERVICE_THREAD_STACK_SIZE
USE_MEMORY_POOL
SYSTEM
XA_HEURISTIC_COMPLETE
타임 BLOCK_ALL_TX_TIME_OUT SYSTEM
아웃 DBLINK_QUERY_TIMEOUT
DDL_LOCK_TIMEOUT SYSTEM
FETCH_TIMEOUT BOTH
IDLE_TIMEOUT BOTH
MULTIPLEXING_POLL_TIMEOUT
LINKER_CONNECT_TIMEOUT
LINKER_RECEIVE_TIMEOUT
LOGIN_TIMEOUT BOTH
QUERY_TIMEOUT BOTH
REMOTE_SERVER_CONNECT_TIMEOUT
REPLICATION_CONNECT_TIMEOUT SYSTEM
REPLICATION_LOCK_TIMEOUT SYSTEM
REPLICATION_RECEIVE_TIMEOUT SYSTEM
REPLICATION_SENDER_SLEEP_TIMEOUT SYSTEM
REPLICATION_SYNC_LOCK_TIMEOUT SYSTEM
UTRANS_TIMEOUT BOTH
XA_INDOUBT_TX_TIMEOUT
T AUTO_COMMIT SYSTEM
INDEX_INITRANS
INDEX_MAXTRANS
ISOLATION_LEVEL
TABLE_INITRANS
46 ALTIBASE5 Starting User’s Manual
분류 소분류 프로퍼티 설정값
변경문
TABLE_MAXTRANS
TRAN S A CT IO N _ TABLE_ S I ZE S YS TEM
B ARCHIVE_DIR
ARCHIVE_FULL_ACTION
ARCHIVE_THREAD_AUTOSTART
CHECKPOINT_ENABLED
CHECKPOINT_INTERVAL_IN_LOG
CHECKPOINT_INTERVAL_IN_SEC
COMMIT_WRITE_WAIT_MODE BOTH
LOG_BUFFER_TYPE
PREPARE_LOG_FILE_COUNT
R REPLICATION_ACK_XLOG_COUNT
REPLICATION_CONNECT_RECEIVE_TIMEOUT SYSTEM
REPLICATION_DDL_ENABLE SYSTEM
REPLICATION_HBT_DETECT_HIGHWATER_MARK SYSTEM
REPLICATION_HBT_DETECT_TIME SYSTEM
REPLICATION_KEEP_ALIVE_CNT
REPLICATION_LOG_BUFFER_SIZE
REPLICATION_MAX_LOGFILE SYSTEM
REPLICATION_POOL_ELEMENT_COUNT
REPLICATION_POOL_ELEMENT_SIZE
SYSTEM
SYSTEM
REPLICATION_PORT_NO
REPLICATION_PREFETCH_LOGFILE_COUNT SYSTEM
REPLICATION_RECOVERY_MAX_LOGFILE
REPLICATION_RECOVERY_MAX_TIME
REPLICATION_SENDER_AUTO_START
REPLICATION_SENDER_SLEEP_TIME
REPLICATION_SERVICE_WAIT_MAX_LIMIT
REPLICATION_SYNC_LOG
REPLICATION_SYNC_TUPLE_COUNT SYSTEM
REPLICATION_TIMESTAMP_RESOLUTION SYSTEM
REPLICATION_UPDATE_REPLACE SYSTEM
M ALL_MSGLOG_FLUSH SYSTEM
QP_MSGLOG_COUNT
QP_MSGLOG_DIR
QP_MSGLOG_FILE
QP_MSGLOG_SIZE
QP_MSGLOG_FLAG SYSTEM
QUERY_PROF_FLAG SYSTEM
알티베이스 프로퍼티 47
분류 소분류 프로퍼티 설정값
변경문
RP_MSGLOG_COUNT
RP_MSGLOG_DIR
RP _MSGLOG_ FILE
RP_MSGLOG_SIZE
RP_MSGLOG_FLAG SYSTEM
DL_MSGLOG_COUNT
DL_MSGLOG_DIR
DL_MSGLOG_FILE
DL_MSGLOG_SIZE
DL_MSGLOG_FLAG
LK_MSGLOG_COUNT
LK_MSGLOG_DIR
LK_MSGLOG_FILE
LK_MSGLOG_SIZE
LK_MSGLOG_FLAG
NETWORK_ERROR_LOG
SERVER_MSGLOG_COUNT
SERVER_MSGLOG_DIR
SERVER_MSGLOG_FILE
SERVER_MSGLOG_SIZE
SERVER_MSGLOG_FLAG SYSTEM
SM_MSGLOG_COUNT
SM_MSGLOG_DIR
SM_MSGLOG_FILE
SM_MSGLOG_SIZE
SM_MSGLOG_FLAG SYSTEM
TRCLOG_DETAIL_PREDICATE SYSTEM
TRCLOG_SET_LOCK_TIME
XA_MSGLOG_COUNT
XA_MSGLOG_DIR
XA_MSGLOG_FILE
XA_MSGLOG_SIZE
XA_MSGLOG_FLAG
SYSTEM
SYSTEM
L AUTO_REMOTE_EXEC
DBLINK_ENABLE
LINKER_LINK_TYPE
LINKER_PORT_NO
LINKER_THREAD_COUNT
LINKER_THREAD_SLEEP_TIME
MAX_DBLINK_COUNT
BOTH
48 ALTIBASE5 Starting User’s Manual
분류 소분류 프로퍼티 설정값
변경문
LINKER_SQLLEN_SIZE
E ACCESS_LIST
ADMIN_MODE SYSTEM
CHECK_MUTEX_DURATION_TIME_ENABLE SYSTEM
DEFAULT_DATE_FORMAT
EXEC_DDL_DISABLE SYSTEM
QUERY_STACK_SIZE BOTH
REMOTE_SYSDBA_ENABLE
SELECT_HEADER_DISPLAY SYSTEM
이 장에서는 각 프로퍼티에 대하여 다음과 같은 형식에 따라
설명하고 있다.
y 프로퍼티 이름
y 데이터 타입
y 기본값
y 속성 (읽기 전용/변경 가능, 단일 값/다중 값 허용)
y 값의 범위 (최대, 최소값)
y 설명
알티베이스 프로퍼티 49
데이터베이스 구성 프로퍼티
BUFFER_AREA_CHUNK_SIZE (단위: 바이트)
데이터 타입
Unsigned Long
기본값
33554432 (32M)
속성
읽기 전용, 단일 값
값의 범위
[8192, 2
64
-1]
설명
버퍼 영역의 크기가 늘어나는 단위를 명시한다. 버퍼 크기를 늘리면
이 크기의 배수로 늘어난다. 서버 운영중에는 변경할 수 없다.
BUFFER_AREA_SIZE (단위: 바이트)
데이터 타입
Unsigned Long
기본값
134217728 (128M)
속성
변경 가능, 단일 값
값의 범위
[8192, 2
64
-1]
설명
알티베이스 버퍼 풀이 사용하는 총 메모리 크기를 명시한다.
사용자가 명시한 값은 BUFFER_AREA_CHUNK_SIZE 크기의
배수로 늘어난다.
BUFFER_CHECKPOINT_LIST_CNT
데이터 타입
Unsigned Integer
기본값
4
속성
50 ALTIBASE5 Starting User’s Manual
읽기 전용, 단일 값
값의 범위
[1, 64]
설명
체크포인트 플러시의 개수를 명시한다. 이 개수가 많을수록 트랜잭션
간의 체크포인트 플러시에 대한 록(LOCK) 경합이 줄어든다.
BUFFER_FLUSH_LIST_CNT
데이터 타입
Unsigned Integer
기본값
1
속성
읽기 전용, 단일 값
값의 범위
[1, 64]
설명
플러시 리스트의 개수를 명시한다. 이 개수가 많을수록 트랜잭션
간의 플러시 리스트 관련 록(LOCK) 경합이 준다.
BUFFER_FLUSHER_CNT
데이터 타입
Unsigned Integer
기본값
2
속성
읽기 전용, 단일 값
값의 범위
[1, 16]
설명
버퍼 플러셔의 개수를 결정한다. 서버 운영중에는 변경할 수 없다.
BUFFER_HASH_BUCKET_DENSITY
데이터 타입
Unsigned Integer
기본값
알티베이스 프로퍼티 51
1
속성
읽기 전용, 단일 값
값의 범위
[1, 100]
설명
해시 테이블의 버킷 개수를 명시한다. 이 값이 1 이면 버킷의 개수는
버퍼 풀의 버퍼 프레임 개수와 같아지기 때문에 록(LOCK) 경합은
최소화된다. 이 값이 2 이면 버킷의 개수는 프레임 개수의 절반이
되며, 100 이면 버킷은 하나가 된다. 버킷의 수가 줄어들수록
메모리는 적게 사용하지만, 한 버킷당 관리해야 할 버퍼 프레임의
수가 증가하기 때문에 연산 비용이 증가한다.
BUFFER_HASH_CHAIN_LATCH_DENSITY
데이터 타입
Unsigned Integer
기본값
1
속성
읽기 전용, 단일 값
값의 범위
[1, 100]
설명
해시 테이블에서 몇 개의 버킷에 걸쳐 한 개의 래치를 둘 것인지를
명시한다. 이 값이 1 이면 버킷 하나당 한 개의 래치를 두며, 2 이면
버킷 두 개가 하나의 래치를 공유한다. 그리고 100 이면 해시 테이블
전체에 걸쳐 한 개의 래치가 존재한다.
이 프로퍼티는 해시 테이블에 BCB 가 삽입, 삭제될 때 동시성을
제어하기 위해 사용된다. 래치 수가 많을 수록 해시 체인 래치의
경합이 줄어든다.
BUFFER_LRU_LIST_CNT
데이터 타입
Unsigned Integer
기본값
7
속성
52 ALTIBASE5 Starting User’s Manual
읽기 전용, 단일 값
값의 범위
[1, 64]
설명
LRU 리스트의 개수를 명시한다. 이 개수가 많을수록 트랜잭션 간의
LRU 리스트 관련 록(LOCK) 경합이 줄어든다.
BUFFER_PREPARE_LIST_CNT
데이터 타입
Unsigned Integer
기본값
7
속성
읽기 전용, 단일 값
값의 범위
[1, 64]
설명
Prepare 리스트의 개수를 명시한다. 이 개수가 많을수록 트랜잭션
간의 Prepare 리스트 관련 록(LOCK) 경합이 줄어든다.
BULKIO_PAGE_COUNT_FOR_DIRECT_PATH_INSERT (단위 : 개수)
데이터 타입
Unsigned Integer
기본값
128
속성
변경 가능, 단일 값
값의 범위
[128, 12800]
설명
Dirct Path 방식으로 데이터를 입력할 때 한 번에 몇 개의 페이지를
디스크에 기록할 것인지 결정한다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
COMPRESSION_RESOURCE_GC_SECOND (단위 : 초)
알티베이스 프로퍼티 53
데이터 타입
Unsigned Integer
기본값
3600
속성
읽기 전용, 단일 값
값의 범위
[1, (2
64
-1)/1000000]
설명
로그 압축 리소스 풀에서 리소스가 몇 초 이상 사용되지 않을 경우
가비지 콜렉션(Garbase Collection)할 것인지를 결정한다.
DB_NAME
데이터 타입
String
기본값
mydb
속성
읽기 전용, 단일 값
값의 범위
없음
설명
데이터베이스 이름은 데이터베이스 파일을 생성할 때 임의의 이름을
지정한다.
DDL_SUPPLEMENTAL_LOG_ENABLE
데이터 타입
Unsigned Integer
기본값
0
속성
변경 가능, 단일 값
값의 범위
[0, 1]
설명
54 ALTIBASE5 Starting User’s Manual
DDL 연산시 로그를 추가적으로 남길 것인지 여부를 설정한다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
0 : DISABLE (로그를 남기지 않음)
1 : ENABLE (로그를 남김)
DEFAULT_DISK_DB_DIR
데이터 타입
String
기본값
$ALTIBASE_HOME/dbs
속성
읽기 전용
값의 범위
없음
설명
디스크 데이터베이스 파일을 저장할 디렉토리 경로를 지정한다.
디스크 기능을 사용하지 않더라도 반드시 지정한다. 이 경로의
기본값은 $ALTIBASE_HOME/dbs 로 지정되어 있다.
DEFAULT_MEM_DB_FILE_SIZE (단위 : 바이트)
데이터 타입
Unsigned Long
기본값
1073741824(1G)
속성
읽기 전용, 단일 값
값의 범위
[4194304 (4M), 2
64
-1]
설명
메모리 테이블스페이스의 기본 페이지 크기를 나타낸다.
DEFAULT_SEGMENT_MANAGEMENT_TYPE
데이터 타입
Unsigned Integer
기본값
알티베이스 프로퍼티 55
0
속성
일기 전용, 단일 값
값의 범위
없음
설명
디스크 테이블스페이스를 생성할 때 세그먼트 관리 방법을 결정한다.
0 : MANUAL 사용자가 테이블스페이스의 가용 공간 관리 방식을
프리 리스트(Freelist) 기반으로 세그먼트 생성
1 : AUTO 사용자가 테이블스페이스의 가용 공간 관리 방식을
비트맵(Bitmap) 인덱스 기반으로 세그먼트 생성(현재 비지원)
DEFAULT_SEGMENT_STORAGE_INITEXTENTS (단위: 개수)
데이터 타입
Unsigned Integer
기본값
1
속성
읽기 전용, 단일 값
값의 범위
[1, 2
32
-1]
설명
기본 세그먼트의 초기 익스텐트(extent) 개수를 명시한다.
DEFAULT_SEGMENT_STORAGE_MAXEXTENTS (단위 : 개수)
데이터 타입
Unsigned Integer
기본값
2
32
-1
속성
읽기 전용, 단일 값
값의 범위
[1, 2
32
-1]
설명
56 ALTIBASE5 Starting User’s Manual
기본 세그먼트의 최대 익스텐트 개수를 명시한다.
DEFAULT_SEGMENT_STORAGE_MINEXTENTS (단위 : 개수)
데이터 타입
Unsigned Integer
기본값
1
속성
읽기 전용, 단일 값
값의 범위
[1, 2
32
-1]
설명
기본 세그먼트의 최소한의 익스텐트 개수를 명시한다.
DEFAULT_SEGMENT_STORAGE_NEXTEXTENTS (단위 : 개수)
데이터 타입
Unsigned Integer
기본값
1
속성
읽기 전용, 단일 값
값의 범위
[1, 2
32
-1]
설명
기본 세그먼트의 확장할 수 있는 익스텐트 개수를 명시한다.
DIRECT_PATH_BUFFER_PAGE_COUNT (단위 : 개수)
데이터 타입
Unsigned Integer
기본값
1024
속성
변경 가능, 단일 값
값의 범위
[1024, 2
32
-1]
알티베이스 프로퍼티 57
설명
Direct Path 버퍼의 페이지 개수를 나타낸다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
DISK_INDEX_UNBALANCED_SPLIT_RATE (단위 : 백분율)
데이터 타입
Unsigned Integer
기본값
90
속성
변경 가능, 단일 값
값의 범위
[50, 99]
설명
디스크 B+ tree 의 인덱스에서 최하위 리프 노드의 마지막 차일드
노드(child node)가 분할될 때, 분할을 발생시키는 노드와 생성되는
노드 사이에 키를 분배하는 비율을 명시할 수 있다. 이 값을
기본값인 90 으로 지정할 경우, 두 노드 사이에 키의 비율은
90:10 으로 배분된다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
DOUBLE_WRITE_DIRECTORY
데이터 타입
String
기본값
없음
속성
읽기 전용, 단일 값
값의 범위
없음
설명
더블 라이트 파일이 저장될 디렉토리를 지정한다. 이 프로퍼티는
DOUBLE_WRITE_DIRECTORY_COUNT 에 의해 복수로 명시할 수
있다.
58 ALTIBASE5 Starting User’s Manual
DOUBLE_WRITE_DIRECTORY_COUNT
데이터 타입
Unsigned Integer
기본값
2
속성
읽기 전용, 단일 값
값의 범위
[1, 16]
설명
더블 라이트 파일이 저장되는 디렉토리의 개수를 지정한다. 더블
라이트 파일들은 각각 별도의 분할된 디스크에 저장될 수 있다.
플러셔(Flusher)마다 별도의 더블 라이트 파일을 사용하기 때문에
서로 다른 디스크로 디렉토리를 지정하면, 플러시 성능을 높일 수
있다.
DRDB_FD_MAX_COUNT_PER_DATAFILE
데이터 타입
Unsigned Integer
기본값
8
속성
변경 가능, 단일 값
값의 범위
[1, 32]
설명
하나의 디스크 데이터 파일에서 I/O 가 발생할 때 열 수 있는 최대
FD(File Description) 갯수이다. FD 가 프로퍼티에서 설정한 최대
숫자까지 열려있다면, 다른 I/O 가 완료될 때까지 대기한다.
EXPAND_CHUNK_PAGE_COUNT
데이터 타입
Unsigned Integer
기본값
128
속성
알티베이스 프로퍼티 59
읽기 전용, 단일 값
값의 범위
[64, 2
64
-1]
설명
데이터베이스 확장의 단위인 Expand Chunk 가 가지는 페이지의
개수이다.
LOG_DIR
데이터 타입
String
기본값
$ALTIBASE_HOME/logs
속성
읽기 전용, 다중 값
값의 범위
없음
설명
로그 파일이 존재할 경로를 지정한다. 로그 파일 그룹 기능을
사용하는 경우에는 로그 파일 그룹 개수 만큼 설정해야 한다.
LOG_FILE_SIZE (단위: 바이트)
데이터 타입
Unsigned long
기본값
10 * 1024 * 1024
속성
읽기 전용, 단일 값
값의 범위
[1024 * 1024, 2
64
-1]
설명
로그 파일의 크기를 지정한다. 지정된 로그 파일의 크기 만큼 차게
되면 새로운 로그 파일에 기록한다. 데이터베이스 생성 시에 설정할
수 있으며 생성 후에는 변경할 수 없다. 생성 후에 사용자가 임의로
변경할 경우 비정상 종료와 같은 문제를 발생시킬 수 있다.
오프라인 이중화를 사용하기 위해서는 지역 서버(Active)와 원격
60 ALTIBASE5 Starting User’s Manual
서버(Standby)의 로그 파일 크기가 반드시 동일해야 한다.
LOGANCHOR_DIR
데이터 타입
String
기본값
$ALTIBASE_HOME/logs
속성
읽기 전용, 다중 값
값의 범위
없음
설명
로그앵커 파일이 존재할 경로를 지정한다. 반드시 3 개가 지정되어야
하며, 기본값은 3 개가 동일하게 지정되어 있다.
MAX_CLIENT
데이터 타입
Unsigned Integer
기본값
1000
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
알티베이스에 접속할 수 있는 최대 클라이언트의 개수를 명시한다.
MEM_DB_DIR
데이터 타입
String
기본값
$ALTIBASE_HOME/dbs
속성
읽기 전용, 다중 값
값의 범위
알티베이스 프로퍼티 61
없음
설명
메모리 데이터베이스 파일이 존재할 경로를 지정한다.
최소 1 개, 최대 8 개 지정이 가능하다. 여러 개의 경로가 지정될
경우,데이타베이스 파일은 각 경로에 분산되어 저장된다. 속성으로
지정되는 모든 경로는 실제 존재하는 경로여야 한다. 현재 경로의
기본 개수는 2 개, 각 경로의 기본값은 $ALTIBASE_HOME/dbs 로
동일하게 지정되어 있다.
MEM_MAX_DB_SIZE (단위 : 바이트)
데이터 타입
Unsigned Long
기본값
2
32
속성
읽기 전용, 단일 값
값의 범위
32 비트 : [1024 * 1024, 2
32
]
64 비트 : [1024 * 1024, 2
64
-1]
설명
서비스 과정 중에 동적으로 늘어날 수 있는 데이터베이스의 최대
크기를 명시한다. 32 비트와 64 비트 모드에 관계없이 기본 값은
4G 로 설정된다.
MEM_MAX_DB_SIZE 를 벗어난 크기로 데이터베이스 크기가
확장될 경우 그 트랜잭션은 오류 처리되며, 이후 수행되는 SELECT
문을 제외한 모든 SQL 문은 오류로 간주된다.
MEM_SIZE_CLAS_COUNT (단위 : 개수)
데이터 타입
Unsigned Integer
기본값
4
속성
읽기 전용, 단일 값
값의 범위
[1, 4]
62 ALTIBASE5 Starting User’s Manual
설명
메모리 페이지의 빈 공간(free space)을 몇 개의 클래스로 구분한
것인지를 나타낸다.
MEMORY_INDEX_BUILD_RUN_SIZE (단위 : 바이트)
데이터 타입
Unsigned Long
기본값
32768
속성
변경 가능, 단일 값
값의 범위
[1024, 2
64
-1]
설명
메모리 인덱스를 구축할 때 in-memory sorting 영역의 크기를
지정할 수 있다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
MEMORY_INDEX_BUILD_VALUE_LENGTH_THRESHOLD (단위 : 바이트)
데이터 타입
Unsigned Long
기본값
64
속성
변경 가능, 단일 값
값의 범위
[0, 2
64
-1]
설명
메모리 인덱스 구축시, 중간 정렬을 위해 키 값을 사용하기 위한
최대 키 값 길이를 설정한다.
키 값의 길이가 이 프로퍼티보다 작으면 중간 정렬시 키 값을
사용하지만, 이 프로퍼티의 값이 0 이면 레코드에 대한 포인터를
사용한다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
알티베이스 프로퍼티 63
값을 변경할 수 있다.
MEMORY_LOB_COLUMN_IN_ROW_SIZE (단위 : 바이트)
데이터 타입
Unsigned Long
기본값
64
속성
읽기 전용, 단일 값
값의 범위
[0,4000]
설명
메모리 테이블에 사용된 LOB 타입 데이터의 기본 in row 크기를
지정한다. in row 크기는 LOB 데이터 타입의 칼럼에 데이터가
들어갈 때 데이터 길이가 이 값보다 작거나 같으면 고정(fixed)
영역에 저장하고, 이 보다 긴 경우에는 가변(variable) 영역에
들어가도록 지정하는 속성이다. in row 크기나 LOB 타입에 대한
자세한 사항은
SQL User’s Manual의 데이터 타입 부분을
참조한다. 메모리 테이블에만 해당하는 것으로 디스크 테이블은 이
프로퍼티를 참조하지 않는다.
DISK_LOB_COLUMN_IN_ROW_SIZE (단위 : 바이트)
데이터 타입
Unsigned Long
기본값
4000
속성
읽기 전용, 단일 값
값의 범위
[0,4000]
설명
디스크 테이블에 사용된 LOB 타입 데이터의 기본 in row 크기를
지정한다. in row 크기는 LOB 데이터 타입의 칼럼에 데이터가
들어갈 때 데이터 길이가 이 값보다 작거나 같으면 고정(fixed)
영역에 저장하고, 이 보다 긴 경우에는 가변(variable) 영역에
들어가도록 지정하는 속성이다.
in row 크기나 LOB 타입에 대한 자세한 사항은 SQL User’s
64 ALTIBASE5 Starting User’s Manual
Manual 의 데이터 타입 부분을 참조한다. 디스크 테이블에만
해당하는 것으로 메모리 테이블은 이 프로퍼티를 참조하지 않는다.
MEMORY_VARIABLE_COLUMN_IN_ROW_SIZE(단위: 바이트)
데이터 타입
Unsigned Long
기본값
32
속성
읽기 전용, 단일 값
값의 범위
[0,4000]
설명
메모리 테이블에 사용된 VARCHAR 타입 데이터의 기본 in row
크기를 지정한다. in row 크기는 VARCHAR 데이터 타입의 칼럼에
데이터가 들어갈 때 데이터 길이가 이 값보다 작거나 같으면
고정(fixed) 영역에 저장한다. 이보다 긴 경우에는 가변(variable)
영역에 들어가도록 지정하는 속성이다. 메모리 테이블에만 해당하는
것으로 디스크 테이블은 이 프로퍼티를 참조하지 않는다.
MIN_COMPRESSION_RESOURCE_COUNT (단위 : 개수)
데이터 타입
unsigned integer
기본값
16
속성
읽기 전용, 단일 값
값의 범위
[1, 10240]
설명
로그 관리자가 로그를 압축하기 위해 사용하는 버퍼 청크(buffer
chunk)를 유지하는 최소한의 개수를 나타낸다 (한 개의 압축 버퍼
청크는 약 16KB 이다).
MIN_LOG_RECORD_SIZE_FOR_COMPRESS (단위 : 바이트)
데이터 타입
Unsigned Integer
알티베이스 프로퍼티 65
기본 값
512
속성
변경 가능, 단일 값
값의 범위
[0, 2
32
-1]
설명
로그 압축을 수행할 것인지 기준이 되는 로그의 크기를 설정할 수
있다. 이 값이 0 으로 설정된 경우 로그 압축을 수행하지 않으며,
값의 범위 내에서 설정된 값보다 큰 경우 로그 압축을 수행한다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
MIN_PAGES_ON_DB_FREE_LIST
데이터 타입
Unsigned Integer
기본값
16
속성
읽기 전용, 단일 값
값의 범위
[1, 2
32
-1]
설명
데이타베이스의 다중화된 사용가능한 페이지 리스트에서 페이지를
분배할 때 각 페이지 리스트에 남겨 놓아야할 최소 페이지 개수이다.
MIN_PAGES_ON_TABLE_FREE_LIST
데이타 타입
Unsigned Integer
기본값
1
속성
변경가능, 단일 값
값의 범위
[ 1, 2
32
-1]
66 ALTIBASE5 Starting User’s Manual
설명
테이블에서 데이타베이스로 빈 페이지를 반납하거나, 다중화된 사용
가능한 페이지 리스트에서 페이지를 분배할 때 각 페이지 리스트에
남겨 놓아야 할 최소 페이지 개수이다.
PCTFREE (단위: 백분율)
데이터 타입
Unsigned Integer
기본값
10
속성
읽기 전용, 단일 값
값의 범위
[0, 99]
설명
테이블스페이스의 각 페이지에서 삽입 가능한 상태를 유지하는 여유
공간을 나타낸다. PCTFREE 에서 지정한 값은 기존 레코드들을
갱신하기 위해 확보한 여유 공간의 비율이다.
만약 테이블스페이스의 전체 크기가 100MB 인 경우 PCTFREE 가
10 이라면, 90%의 공간인 90MB 까지만 삽입 연산이 가능하다.
디스크 테이블 생성 시 CREATE TABLE 구문에서 PCTFREE 값이
지정되지 않은 경우 기본값으로 사용된다.
PCTUSED (단위: 백분율)
데이터 타입
Unsigned Integer
기본값
40
속성
읽기 전용, 단일 값
값의 범위
[0, 99]
설명
테이블스페이스의 페이지가 갱신 연산만 가능한 상태에서 삽입
연산이 가능한 상태로 가기 위한 페이지의 사용 공간 비율을
나타낸다.
알티베이스 프로퍼티 67
페이지의 사용 공간은 PCTFREE 에서 지정한 값까지 입력할 경우
갱신 연산만이 가능한 상태로 된다. 이 때 갱신과 삭제로 빈 공간이
다시 확보되어 PCTUSED 에서 정한 값보다 낮아지면, 새로운 행을
삽입할 수 있는 상태가 된다.
디스크 테이블 생성시 CREATE TABLE 구문에서 PCTUSED 값이
지정되지 않은 경우 기본값으로 사용된다.
QP_MEMORY_CHUNK_SIZE (단위 : 바이트)
데이터 타입
Unsigned long
기본값
65536
속성
읽기 전용, 단일 값
값의 범위
[1024, 2
64
-1]
설명
QP 에서 필요한 메모리를 시스템에서 가져올 때 확장 단위를 정한다.
SHM_DB_KEY
데이터 타입
Unsigned Integer
기본값
0
속성
변경 가능, 단일 값
값의 범위
[0, 2
32
-1]
설명
데이터베이스를 가상 메모리 공간에서 사용할 경우 0 으로 설정하고,
공유 메모리 공간에 사용할 경우는 공유 메모리 키 값을 지정해야
한다. 공유 메모리 키 값은 시스템에서 사용되지 않는 임의의 값이면
된다.
공유 메모리 상에 데이터베이스가 존재할 경우 알티베이스 서버의
재가동 단계에서 디스크로부터 페이지를 읽는 과정이 불필요하기
때문에 알티베이스 서버 가동 시간을 줄일 수 있다.
68 ALTIBASE5 Starting User’s Manual
STARTUP_SHM_CHUNK_SIZE (단위 : 바이트)
데이터 타입
Unsigned long
기본값
1 G
속성
읽기 전용, 단일 값
값의 범위
[1024, 2
64
-1]
설명
SHM_DB_KEY 의 값이 지정된 상태에서 알티베이스 구동시
생성되는 공유 메모리 조각(chunk)의 최대 크기를 명시한다.
ST_OBJECT_BUFFER_SIZE (단위: 바이트)
데이터 타입
Unsigned long
기본값
32000 (32KByte)
속성
변경 가능, 단일 값
값의 범위
[0,100Mbyte]
설명
단일 공간 객체(Geometry Object)의 최대 크기를 지정할 수 있다.
SYS_DATA_TBS_EXTENT_SIZE (단위: 바이트)
데이터 타입
Unsigned long
기본값
256 * 1024
속성
읽기 전용, 단일 값
값의 범위
[40K, 32G]
알티베이스 프로퍼티 69
설명
시스템 디스크 데이터 테이블스페이스(System Disk Data
Tablespace)
1
인 SYS_TBS_DISK_DATA 생성 시 익스텐트의
크기
2
를 명시한다. 최소 5 개 이상의 페이지를 갖도록 설정해야 하고
가능한 최소값은 40K(5*8K)이다.
SYS_DATA_FILE_INIT_SIZE (단위: 바이트)
데이터 타입
Unsigned long
기본값
100M (100 * 1024 * 1024)
속성
읽기 전용, 단일 값
값의 범위
[8*8K, 32G]
설명
SYS_TBS_DISK_DATA 생성시 데이터 파일(system001.dbf)의
기본 크기를 명시한다. 또한 SYS_TBS_DISK_DATA 에 데이터
파일((system001.dbf 를 제외한 사용자가 명시한 데이터 파일))을
추가할 때 초기 크기를 지정하지 않은 경우 기본값으로 사용된다.
SYS_DATA_FILE_MAX_SIZE (단위: 바이트)
데이터 타입
Unsigned long
기본값
2 * 1024 * 1024 * 1024
속성
읽기 전용, 단일 값
값의 범위
[8 * 8K, 32G]
설명
1
시스템 디스크 데이터 테이블스페이스: 데이터베이스 생성 시 기본적으로 생성되는 디스크 데이터
테이블스페이스이다. 데이터베이스 객체 중 디스크 테이블과 디스크 인덱스만 저장된다.
2
하나의 테이블스페이스의 EXTENT 의 크기(SIZE)는 생성 시 지정하면 이후 변경할 수 없다.
명시하지 않을 경우 기본값은 32 개의 페이지 크기로 고정되어 있다.
70 ALTIBASE5 Starting User’s Manual
SYS_TBS_DISK_DATA 생성 시 할당될 데이터 파일의 최대 크기를
명시한다. 최소 SYS_DATA_FILE_INIT_SIZE 이상의 크기를 가져야
하며, 최소값은 64K 이다.
또한 SYS_TBS_DISK_DATA 테이블스페이스에 데이터 파일을
추가할 때 최대 크기를 지정하지 않았을 경우 이 값을 기본값으로
사용한다.
SYS_DATA_FILE_NEXT_SIZE (단위: 바이트)
데이터 타입
Unsigned long
기본값
1 * 1024 * 1024
속성
읽기 전용, 단일 값
값의 범위
[8 * 8K, 32G]
설명
SYS_TBS_DISK_DATA 의 속성이 autoextend on 으로 설정되어
있는 경우, 데이터량의 증가에 따라서 명시된 값만큼 데이터 파일의
크기가 자동으로 확장된다.
데이터 파일의 크기가 SYS_DATA_FILE_MAX_SIZE 에 도달한
상태에서 다른 데이터 파일에도 SYS_DATA_FILE_NEXT_SIZE 에
설정한 만큼의 유효 공간이 없다면 테이블스페이스 공간 부족 오류가
발생한다.
SYS_TEMP_TBS_EXTENT_SIZE (단위: 바이트)
데이터 타입
Unsigned long
기본값
256 * 1024
속성
읽기 전용, 단일 값
값의 범위
[40K, 32G]
설명
시스템 디스크 임시 테이블스페이스(System disk temporary
알티베이스 프로퍼티 71
tablespace)
6
SYS_TBS_DISK_TEMP 생성 시 익스텐트의 크기를
명시한다.
최소 5 개 페이지(40K = 5 * 8K) 이상의 크기를 가져야 한다.
SYS_TEMP_FILE_INIT_SIZE (단위: 바이트)
데이터 타입
Unsigned long
기본값
100M (100 * 1024 * 1024)
속성
읽기 전용, 단일 값
값의 범위
[ 8 * 8K, 32G]
설명
SYS_TBS_DISK_TEMP 생성 시 임시 데이터 파일(temp001.dbf)의
초기 크기를 명시한다. 또한 SYS_TBS_DISK_TEMP 에 임시 데이터
파일을 추가할 때 초기 크기를 지정하지 않았을 경우, 이 값이
기본값으로 사용된다.
SYS_TEMP_FILE_MAX_SIZE (단위: 바이트)
데이터 타입
Unsigned long
기본값
2 * 1024 * 1024 * 1024
속성
읽기 전용, 단일 값
값의 범위
[8 * 8K, 32G]
설명
SYS_TBS_DISK_TEMP 생성 시 할당될 데이터
파일(temp001.dbf)의 최대 크기를 명시한다.
6
시스템 디스크 임시 테이블스페이스 : 데이터베이스 생성 시 기본적으로 생성되며, 데이터베이스 각종
연산의 임시 저장소로 사용되는 테이블스페이스이다. 모든 사용자의 디스크 객체를 위한
기본(DEFAULT) 임시 테이블스페이스로 지정된다. 데이터베이스 객체 중 디스크 테이블과 디스크
인덱스만 저장된다.
72 ALTIBASE5 Starting User’s Manual
최소 SYS_TEMP_FILE_INIT_SIZE 이상의 크기를 가져야 하며,
가능한 최소값은 64K 이다. 또한, SYS_TBS_DISK_TEMP
테이블스페이스에 임시 데이터 파일을 추가할 때 최대 크기를
지정하지 않았을 경우, 기본 최대 크기를 의미한다.
SYS_TEMP_FILE_NEXT_SIZE (단위: 바이트)
데이터 타입
Unsigned long
기본값
1 * 1024 * 1024
속성
읽기 전용, 단일 값
값의 범위
[8 * 8K, 32G]
설명
SYS_TBS_DISK_TEMP 테이블스페이스에 데이터 파일의 공간이
부족한 경우 명시된 값만큼 데이터 파일의 크기를 확장한다.
SYS_UNDO_TBS_EXTENT_SIZE (단위: 바이트)
데이터 타입
Unsigned long
기본값
32 * 1024
속성
읽기 전용, 단일 값
값의 범위
[40K, 32G]
설명
시스템 디스크 언두 테이블스페이스(System disk undo tablespace)
5
SYS_TBS_DISK_UNDO 생성 시 익스텐트의 크기를 명시한다.
SYS_UNDO_FILE_INIT_SIZE (단위: 바이트)
5
시스템 디스크 언두 테이블스페이스: 데이터베이스 생성 시 기본적으로 생성되며 언두(undo) 정보를
저장하기 위해 유일하게 사용되는 특수한 테이블스페이스이다. 사용자는 디스크 언두 테이블스페이스
내에 테이블이나 인덱스 등을 생성할 수 없다. 데이터베이스 내에 오직 하나만 존재 하며, 사용자가
생성하거나 삭제할 수 없다.
알티베이스 프로퍼티 73
데이터 타입
Unsigned long
기본값
100 * 1024 * 1024
속성
읽기 전용, 단일 값
값의 범위
[32 * 8K, 32G]
설명
SYS_TBS_DISK_UNDO 테이블스페이스 생성 시 데이터
파일(undo001.dbf)의 기본 크기를 명시한다. 또한
SYS_TBS_DISK_UNDO 에 데이터 파일을 추가할 때 초기 크기를
지정하지 않았을 경우 기본값으로 사용된다.
SYS_UNDO_FILE_MAX_SIZE (단위: 바이트)
데이터 타입
Unsigned long
기본값
2 * 1024 * 1024 * 1024
속성
읽기 전용, 단일 값
값의 범위
[32 * 8K, 32G]
설명
SYS_TBS_DISK_UNDO 테이블스페이스 생성 시 할당될 데이터
파일(undo001.dbf)의 최대 크기를 명시한다. 최소
SYS_UNDO_FILE_INIT_SIZE 이상의 크기를 가져야 한다. 가능한
최소값은 256K 이다. SYS_TBS_DISK_UNDO 테이블스페이스에
데이터 파일을 추가할 때 최대 크기를 지정하지 않았을 경우, 기본
최대 크기로 사용된다.
SYS_UNDO_FILE_NEXT_SIZE (단위: 바이트)
데이터 타입
Unsigned long
기본값
1 * 1024 * 1024
74 ALTIBASE5 Starting User’s Manual
속성
읽기 전용, 단일 값
값의 범위
[8 * 8K, 32G]
설명
SYS_TBS_DISK_UNDO 테이블스페이스의 데이터 파일에 공간이
부족한 경우 명시된 값만큼 데이터 파일의 크기를 확장한다.
TABLE_BACKUP_FILE_BUFFER_SIZE (단위 : 바이트)
데이터 타입
Unsigned Integer
기본값
1024
속성
읽기 전용, 단일 값
값의 범위
[0, 1048576]
설명
메모리 테이블의 칼럼을 추가하거나 삭제할 경우 테이블 백업 파일의
I/O 버퍼 크기를 나타낸다.
TEMP_PAGE_CHUNK_COUNT
데이터 타입
Unsigned Integer
기본값
128
속성
읽기 전용, 단일 값
값의 범위
[1, 2
32
-1]
설명
임시 데이터 페이지를 한번에 할당하는 개수이다.
USER_DATA_TBS_EXTENT_SIZE (단위: 바이트)
데이터 타입
알티베이스 프로퍼티 75
Unsigned long
기본값
256 * 1024
속성
읽기 전용, 단일 값
값의 범위
[2 * 8K, 2
64
-1]
설명
사용자 디스크 데이터 테이블스페이스(User disk data tablespace)
7
생성 시 익스텐트의 크기를 명시한다.
USER_DATA_FILE_INIT_SIZE (단위: 바이트)
데이터 타입
Unsigned long
기본값
100 * 1024 * 1024
속성
읽기 전용, 단일 값
값의 범위
[8 * 8K, 32G]
설명
사용자 디스크 데이터 테이블스페이스에 사용자 정의 데이터 파일을
생성하거나 추가할 때 데이터 파일의 초기 크기를 명시한다. 초기
크기를 지정하지 않은 경우 기본값으로 사용된다.
USER_DATA_FILE_MAX_SIZE (단위: 바이트)
데이터 타입
Unsigned long
기본값
2 * 1024 * 1024 * 1024
속성
읽기 전용, 단일 값
7
사용자 디스크 데이터 테이블스페이스: 사용자의 객체를 저장하기 위한 테이블스페이스이다.
데이터베이스 객체 중 디스크 테이블과 디스크 인덱스만 저장된다.
76 ALTIBASE5 Starting User’s Manual
값의 범위
[8 * 8K, 32G]
설명
사용자 디스크 데이터 테이블스페이스에 사용자 정의 데이터 파일을
생성하거나 추가할 때 데이터 파일의 최대 크기를 명시한다.
최소 USER_DATA_FILE_INIT_SIZE 이상의 크기를 가져야 하며,
가능한 최소값은 64K 이다. 최대 크기를 지정하지 않은 경우 기본
최대 크기를 의미한다.
USER_DATA_FILE_NEXT_SIZE (단위: 바이트)
데이터 타입
Unsigned long
기본값
1 * 1024 * 1024
속성
읽기 전용, 단일 값
값의 범위
[8 * 8K, 32G]
설명
사용자 디스크 데이터 테이블스페이스의 사용자 정의 데이터 파일에
데이터 파일 공간이 부족한 경우, 명시된 값만큼 데이터 파일의
크기를 확장한다.
USER_TEMP_TBS_EXTENT_SIZE (단위: 바이트)
데이터 타입
Unsigned long
기본값
256 * 1024
속성
읽기 전용, 단일 값
값의 범위
[2 * 8K, 2
64
-1]
설명
사용자 임시 테이블스페이스(User temporary tablespace) 생성 시
익스텐트의 크기를 명시한다. 최소 2 개 페이지(16K = 2*8K) 이상의
크기를 가져야 한다.
알티베이스 프로퍼티 77
USER_TEMP_FILE_INIT_SIZE (단위: 바이트)
데이터 타입
Unsigned long
기본값
100 * 1024 * 1024
속성
읽기 전용, 단일 값
값의 범위
[8 * 8K, 32G]
설명
사용자 임시 테이블스페이스에 사용자 정의 임시 데이터 파일을
생성하거나 추가할 때 데이터 파일의 초기 크기를 명시한다. 초기
크기를 지정하지 않은 경우 기본 크기로 사용된다.
USER_TEMP_FILE_MAX_SIZE (단위: 바이트)
데이터 타입
Unsigned long
기본값
2 * 1024 * 1024 * 1024
속성
읽기 전용, 단일 값
값의 범위
[8 * 8K, 32G]
설명
사용자 임시 테이블스페이스에 사용자 정의 임시 데이터 파일을
생성하거나 추가할 때 할당 될 데이터파일의 최대 크기를 명시한다.
최소 USER_DATA_FILE_INIT_SIZE 이상의 크기를 가져야 하며,
가능한 최소값은 64K 이다. 최대 크기를 지정하지 않은 경우 기본
최대 크기를 의미한다.
USER_TEMP_FILE_NEXT_SIZE (단위: 바이트)
데이터 타입
Unsigned long
기본값
1 * 1024 * 1024
78 ALTIBASE5 Starting User’s Manual
속성
읽기 전용, 단일 값
값의 범위
[8 * 8K, 32G]
설명
사용자 임시 테이블스페이스에 사용자 정의 임시 데이터 파일에
데이터 파일의 공간이 부족한 경우 명시된 값만큼 데이터 파일의
크기를 확장한다.
VOLATILE_MAX_DB_SIZE (단위 : 바이트)
데이터 타입
Unsigned long
기본값
2
32
속성
읽기 전용, 단일 값
값의 범위
[2097152, 2
64
-1]
설명
휘발성 테이블스페이스가 가질 수 있는 최대 크기를 설정한다.
알티베이스 프로퍼티 79
성능 관련 프로퍼티
AGER_WAIT_MAXIMUM (단위: 마이크로 초)
데이터 타입
Unsigned Integer
기본값
100000
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
가비지 콜렉터(garbage collector, 혹은 Ager) 관련 쓰레드들이
가비지 콜렉터 sleep 시, 시스템 호출인 sleep 의 과도한 사용으로
인하여 (특히, HP 시스템) 발생하는 서버의 성능 저하를 막기 위한
것이다. 이 값들을 이용하여 서버 운영 중에 가비지 콜렉터 sleep
time 을 적절히 조절할 수 있도록 한다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
AGER_WAIT_MINIMUM (단위: 마이크로 초)
데이터 타입
Unsigned Integer
기본값
200000
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
가비지 콜렉터(garbage collector, 혹은 Ager) 관련 쓰레드들이
가비지 콜렉터 sleep 시 시스템 호출인 sleep 의 과도한 사용으로
인하여 (특히, HP 시스템) 발생하는 서버의 성능 저하를 막기 위한
것이다. 이 값들을 이용하여 서버 운영 중에 가비지 콜렉터 sleep
time 을 적절히 조절할 수 있도록 한다.
80 ALTIBASE5 Starting User’s Manual
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
BUFFER_VICTIM_SEARCH_INTERVAL (단위: 밀리초)
데이터 타입
Unsigned Integer
기본값
3000
속성
변경 가능, 단일 값
값의 범위
[0, 8640000]
설명
버퍼 교체 대상을 검색할 때 검색을 실패하면 플러셔가 플러시
작업을 할 때까지의 대기 시간을 명시한다. 이 시간을 대기하여도
교체 대상 버퍼를 찾지 못하면, VICTIM_SEATCH_WARP 의 숫자가
증가한다.
BUFFER_VICTIM_SEARCH_PCT(단위 : 백분율)
데이터 타입
Unsigned Integer
기본값
5
속성
변경 가능, 단일 값
값의 범위
[0, 100]
설명
버퍼 교체 대상을 LRU 리스트에서 검색할 때 얼마나 탐색할
것인지를 명시한다. 이 프로퍼티는 하나의 LRU 리스트 전체를
100 이라고 할 때, LRU Cold last 를 기준으로 명시한 값의
퍼센트만큼 검색하는 것을 나타낸다.
CM_BUFFER_MAX_PENDING_LIST
데이터 타입
Unsigned Integer
기본값
알티베이스 프로퍼티 81
32
속성
읽기 전용, 단일 값
값의 범위
[1, 128]
설명
메모리가 급격하게 증가하는 것을 방지하기 위해 한 세션에서
할당받을 수 있는 최대 통신 버퍼 블록의 수를 제한한다.
CHECKPOINT_BULK_SYNC_PAGE_COUNT (단위: 페이지 개수)
데이터 타입
Unsigned Integer
기본값
3200
속성
변경 가능, 단일 값
값의 범위
[0, 2
32
-1]
설명
체크포인트를 할 때 메모리와 디스크의 데이터를 일치시키기 위해 몇
개의 페이지 단위마다 내용을 일치시킬 것인지를 나타낸다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
CHECKPOINT_BULK_WRITE_PAGE_COUNT (단위 : 개수)
데이터 타입
Unsigned Integer
기본값
0
속성
변경 가능, 단일 값
값의 범위
[0, 2
32
-1]
설명
체크포인트시 메모리의 더티 페이지들을 여러 번에 나눠서 디스크로
82 ALTIBASE5 Starting User’s Manual
저장할 수 있다. 이 때 한 번에 저장할 수 있는 더티 페이지의
개수를 설정할 수 있다. 값이 0 일 때는 한 번에 모든 더티 페이지를
디스크 데이터베이스로 저장할 수 있다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
CHECKPOINT_BULK_WRITE_SLEEP_SEC (단위 : 초)
데이터 타입
Unsigned Integer
기본값
0
속성
변경 가능, 단일 값
값의 범위
[0, 2592000]
설명
CHECKPOINT_BULK_WRITE_PAGE_COUNT 의 값이 0 이 아닐
때 더티 페이지들을 디스크로 저장 후 대기하는 시간(초)을 나타낸다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
CHECKPOINT_BULK_WRITE_SLEEP_USEC (단위 : 마이크로초)
데이터 타입
Unsigned Integer
기본값
0
속성
변경 가능, 단일 값
값의 범위
[0, 60000000]
설명
CHECKPOINT_BULK_WRITE_PAGE_COUNT 의 값이 0 이 아닐
때 더티 페이지들을 디스크로 저장 후 대기하는 시간(마이크로 초)을
나타낸다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
알티베이스 프로퍼티 83
CHECKPOI NT_FLUSH_COUNT (단위: 프레임 개수)
데이터 타입
Unsigned Integer
기본값
64
속성
변경 가능, 단일 값
값의 범위
[1, 2
32
-1]
설명
플러셔가 한 번의 주기에서 체크포인트 플러시를 할 때 플러시를 할
수 있는 버퍼 페이지(프레임)의 개수를 명시한다.
CHECKPOINT_FLUSH_MAX_GAP (단위: 로그 파일 개수)
데이터 타입
Unsigned Integer
기본값
10
속성
변경 가능, 단일 값
값의 범위
[0, 2
32
-1]
설명
체크포인트 플러시를 발생시키는 조건 중의 하나가 된다. 체크포인트
리스트에 있는 갱신된 버퍼들 중에 갱신 LSN(recovery LSN)이 가장
작은 값과 현재 로그 LSN 과의 차이가 이 프로퍼티에서 지정한 값이
되면 체크포인트 플러시를 수행한다.
이 값은 서버 재구동시의 복구 시간을 결정한다. 이 값이 클수록
체크포인트 플러시가 적게 발생하며, 서버의 재구동시 복구 시간은
길어진다. 서버 운영 중에도 변경이 가능하다.
CHECKPOINT_FLUSH_MAX_WAIT_SEC (단위: 초)
데이터 타입
Unsigned Integer
기본값
84 ALTIBASE5 Starting User’s Manual
10
속성
변경 가능, 단일 값
값의 범위
[0, 2
32
-1]
설명
체크포인트 플러시를 발생시키는 조건 중의 하나이다. 마지막 플러시
작업이 끝난 이후 이 프로퍼티에서 지정한 시간이 지나면 체크포인트
플러시가 발생한다.
DATABASE_IO_TYPE
데이터 타입
Unsigned Integer
기본값
0
속성
읽기 전용, 단일 값
값의 범위
[0, 1]
설명
알티베이스는 하이브리드 메모리 상주형 데이터베이스 시스템이므로
데이터베이스와 관련된 디스크 I/O 작업은 최초 알티베이스 서버
가동 시의 데이터 로딩 때와 알티베이스 운용 중 체크포인트가
발생하는 경우이다.
데이터베이스 파일과 관련하여 디스크 I/O 를 수행하는 경우 Direct
I/O 와 Buffered I/O 두 가지 방법을 제공한다. Direct I/O 를
사용하기 위해서는 이 프로퍼티의 값을 1 로 설정하며 Buffered I/O
를 사용할 때는 0 으로 설정한다.
Direct I/O 는 디스크 I/O 가 발생하는 동안 CPU 점유율을 줄인다는
장점이 있다. Buffered I/O 는 read-ahead, asynchronous write
기법을 사용하므로 디스크 I/O 요구가 있을 때마다 실제로 디스크에
접근하지 않을 수도 있으므로 응용 프로그램 수준에서 볼 때 디스크
I/O 가 훨씬 빠르다는 장점이 있다.
DATAFILE_WRITE_UNIT_SIZE (단위 : 개수)
데이터 타입
Unsigned Long
알티베이스 프로퍼티 85
기본값
1024
속성
변경 가능, 단일 값
값의 범위
[1, 1024]
설명
데이터 파일을 생성할 때 데이터의 기본 단위를 설정한다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
DB_FILE_MULTIPAGE_READ_COUNT
데이터 타입
Unsigned Integer
기본값
8
속성
변경 가능, 단일 값
값의 범위
[1, 128]
설명
디스크 테이블을 풀 스캔(Full Scan)할 때 이 값에 정해진 페이지
개수 단위로 IO 를 수행한다.
이 때 디스크 테이블의 익스텐트 사이즈 즉 익스텐트 내의 페이지
개수가 DB_FILE_MULTIPAGE_READ_COUNT 값의 배수이면서,
이 값보다 크면 MPR(Multi Page Read)을 한다.
그러나 DB_FILE_MULTIPAGE_READ_COUNT 값의 배수가
아니고, 이 값보다 작으면 SPR(Single Page Read)로 수행한다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
DEFAULT_FLUSHER_WAIT_SEC (단위: 초)
데이터 타입
Unsigned Integer
기본값
86 ALTIBASE5 Starting User’s Manual
1
속성
변경 가능, 단일 값
값의 범위
[1, 2
32
-1]
설명
플러셔의 최소 대기 시간을 명시한다. 플러셔는 특정 조건을
제외하고, 항상 이 시간만큼 대기 후 플러시 작업을 수행한다.
플러셔가 대기에서 풀려나 아무런 플러시를 하지 않는다면, 대기
시간은 1 초씩 계속 늘어난다.
DIRECT_BUFFER_FLUSH_THREAD_SYNC_INTERVAL (단위 : 마이크로초)
데이터 타입
Unsigned Integer
기본값
100000
속성
변경 가능, 단일 값
값의 범위
[1, 2
32
-1]
설명
버퍼에 존재하는 더티 페이지들을 디스크로 플러시하는 주기를
마이크로초 단위로 설정한다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
DIRECT_IO_ENABLED
데이터 타입
Unsigned Integer
기본값
1
속성
읽기 전용, 단일 값
값의 범위
[0, 1]
알티베이스 프로퍼티 87
설명
데이터베이스를 디스크로 직접 입출력할 것인지 여부를 나타낸다.
0 : disable (직접 입력하지 않음)
1 : enable (직접 입력함)
DIRECT_PATH_INSERT_TEMP_QUEUE_SIZE (단위 : 바이트)
데이터 타입
Unsigned Integer
기본값
8M
속성
변경 가능, 단일 값
값의 범위
[1, 2
32
-1]
설명
DIRECT-PATH INSERT 를 수행한 데이터를 SELECT 하면, 결과가
쌓이는 큐(queue)의 크기를 설정한다.
DIRECT_PATH_INSERT_TEMP_QUEUE_WAIT_TIME (단위: 마이크로 초)
데이터 타입
Unsigned Integer
기본값
100000
속성
변경 가능, 단일 값
값의 범위
[1, 86400000]
설명
Direct-Path INSERT 수행 시, 내부적으로 인큐(enqueue) 또는
디큐(dequeue)시에 공간이 부족할 경우 다시 작업을 시도하는 대기
시간을 설정한다.
DISK_INDEX_BUILD_MERGE_PAGE_COUNT (단위: 페이지 수)
데이터 타입
Unsigned Integer
기본값
88 ALTIBASE5 Starting User’s Manual
128
속성
변경 가능, 단일 값
값의 범위
[2, 2
32
-1]
설명
디스크 인덱스를 생성할 때 데이터에서 추출된 키들을 메모리에서
한번에 정렬할 수 없을 경우, 외부 정렬에 사용될 페이지의 수를
나타낸다. 가동 중 ALTER SYSTEM 문을 이용해 프로퍼티의 값을
변경할 수 있다.
EXECUTE_STMT_MEMORY_MAXIMUM (단위 : 바이트)
데이터 타입
Unsigned Long
기본값
1G
속성
변경 가능, 단일 값
값의 범위
[1024*1024, 2
64
-1]
설명
하나의 질의문(statement)이 사용할 수 있는 execute 메모리의 양을
제한한다. 이 프로퍼티는 가동중에 ALTER SYSTEM 구문으로 변경
가능하다.
FAST_START_IO_TARGET (단위: 페이지 개수)
데이터 타입
Unsigned Long
기본값
10000
속성
변경 가능, 단일 값
값의 범위
[1, 2
64
-1]
설명
알티베이스 프로퍼티 89
서버를 재구동하여 복구할 때 읽을 리두(Redo) 페이지의 개수를
명시한다.
운영중에 플러셔가 체크포인트 플러시를 할 때 버퍼에 남은 더티
페이지가 이 프로퍼티에서 지정한 페이지보다 많다면, 그 차이만큼
오래된 더티 페이지부터 디스크에 반영한다.
이 값은 서버 재구동시에 복구 시간을 결정해준다. 이 값이 작을수록
플러시할 페이지 수가 많아지기 때문에 서버를 재구동할 때 소요되는
복구 시간을 줄일 수 있다.
서버 운영중에 ALTER SYSTEM 문을 이용해 프로퍼티의 값을
변경할 수 있다.
FAST_START_LOGFILE_TARGET (단위: 로그 파일 개수)
데이터 타입
Unsigned Integer
기본값
100
속성
변경 가능, 단일 값
값의 범위
[1, 2
32
-1]
설명
서버를 재구동하여 복구할 때 읽을 로그 파일의 개수를 명시한다.
운영중에 플러셔가 체크포인트 플러시를 할 때, 체크포인트 리스트에
있는 더티 페이지 중 페이지 LSN 의 LogFileNo 와 현재 로그
LSN 의 LogFileNO 와의 차이가 이 프로퍼티에서 지정한 값보다
크면 페이지를 플러시한다.
이 값은 서버를 재구동할 때 복구 시간을 결정한다. 이 값이
작을수록 플러시 할 페이지 수는 많아지기 때문에 서버를 재구동할
때 소요되는 복구 시간을 줄일 수 있다.
서버 운영중에 ALTER SYSTEM 문을 이용해 프로퍼티의 값을
변경할 수 있다.
HI GH_FLUSH_PCT (단위: 백분율)
데이터 타입
Unsigned Integer
기본값
90 ALTIBASE5 Starting User’s Manual
5
속성
변경 가능, 단일 값
값의 범위
[0, 100]
설명
플러셔가 대기 상태에서 풀렸을 때 플러시 리스트의 길이가 전체
버퍼 크기에서 명시된 값 이상이 되면 교체 플러시를 수행한다. 이
때 해당되는 플러시 리스트의 모든 갱신된 버퍼들이 대기없이
연속적으로 플러시된다. 이 프로퍼티는 서버 운영중에 변경이
가능하다.
HOT_LIST_PCT (단위: 백분율)
데이터 타입
Unsigned Integer
기본값
50
속성
변경 가능, 단일 값
값의 범위
[0, 100]
설명
LRU 리스트 내에서 hot 영역의 비중을 명시한다. 이 프로퍼티는
서버 운영중에 변경이 가능하다.
HOT_TOUCH_CNT
데이터 타입
Unsigned Integer
기본값
2
속성
변경 가능, 단일 값
값의 범위
[1, 2
32
-1]
설명
알티베이스 프로퍼티 91
버퍼가 hot 하다고 판단하는 접근 회수의 기준을 명시한다. 이
속성에서 명시한 값 이상으로 버퍼에 접근되면 그 버퍼는 hot 이라고
판단되며, hot 버퍼는 교체 대상 검색시 hot 리스트로 이동한다.
INDEX_BUILD_THREAD_COUNT
데이터 타입
Unsigned Integer
기본값
CPU 개수
속성
읽기 전용, 단일 값
값의 범위
[1, 128]
설명
실행시간(runtime)에 인덱스를 재구축(rebuilding)하는 과정에서
생성되는 인덱스를 구축(index build)하는 쓰레드의 개수를 조절한다.
주석으로 처리할 경우 기본값으로 시스템의 CPU 개수(N) 만큼 병렬
작업 쓰레드가 생성된다.
INDEX_INITRANS (단위 : 개수)
데이터 타입
Unsigned Integer
기본값
8
속성
읽기 전용, 단일 값
값의 범위
[0, 30]
설명
인덱스 페이지에 유지될 초기 TTS(Touched Transaction Slot)의
개수를 나타낸다.
I NDEX_MAXTRANS (단위 : 개수)
데이터 타입
Unsigned Integer
기본값
92 ALTIBASE5 Starting User’s Manual
30
속성
읽기 전용, 단일 값
값의 범위
[0, 30]
설명
인덱스 페이지에 유지될 수 있는 최대 TTS(Touched Transaction
Slot)의 개수를 나타낸다.
INSPECTION_LARGE_HEAP_THRESHOLD (단위: 바이트)
데이터 타입
Unsigned Integer
기본값
0
속성
변경 가능, 단일 값
값의 범위
[0, 2
32
-1]
설명
서버에서 내부적으로 사용되는 대용량 메모리 요구를 사용자에게
보여주기 위한 프로퍼티이다. 사용자에게 정보를 제공하기 위하여
대용량 메모리를 요구한 콜 스택을 로그 파일에 출력한다. 이 값이
0 으로 설정되었을 경우에는 관련 정보를 제공하지 않으며, 설정되어
있는 프로퍼티보다 큰 메모리를 사용하는 경우에만 로그 파일에 콜
스택 정보를 출력한다.
LFG_GROUP_COMMI T_INTERVAL_USEC (단위: 마이크로 초)
데이타 타입
Unsigned Integer
기본값
1000
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
알티베이스 프로퍼티 93
본 프로퍼티는 그룹 커밋 관련 프로퍼티이다.
각각의 로그 파일 그룹(LFG)별로 로그를 디스크에 기록하기 위해
디스크 I/O 를 수행한 마지막 시각을 가지고 있다. 이 시각을
기준으로 이 프로퍼티가 지정한 시간이 지난 후에 디스크 I/O 를
한다.
이를 통해, 여러 트랜잭션이 동시 다발적으로 커밋하면서 요청하는
디스크 I/O 를 한 번에 몰아서 수행한다.
LFG_GROUP_COMMIT_RETRY_USEC (단위: 마이크로 초)
데이타 타입
Unsigned Integer
기본값
100
속성
읽기 전용, 단일 값
값의 범위
[0, 60000000]
설명
본 프로퍼티는 그룹커밋 관련 프로퍼티이다.
마지막으로 로그 기록을 위한 디스크 I/O 를 수행한 시각 이후로
LFG_GROUP_COMMIT_INTERVAL_USEC 만큼의 시간이 지나지
않은 경우, 커밋을 하려는 트랜잭션은 사용자가 이 프로퍼티에
지정한 값 만큼 기다린 후 디스크 I/O 를 수행할 수 있는 충분한
시간이 지났는지를 다시 체크한다.
LFG_GROUP_COMMIT_UPDATE_TX_COUNT
데이타 타입
Unsigned Integer
기본값
80
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
본 프로퍼티는 그룹커밋 관련 프로퍼티이다.
94 ALTIBASE5 Starting User’s Manual
각각의 로그 파일 그룹(LFG)별로 데이터베이스에 변경을 가한
트랜잭션의 수(V$LFG 의 UPDATE_TX_COUNT )가 이 값보다
크거나 같은 값이 되면 그룹 커밋이 활성화된다. 만약 이 프로퍼티가
0 으로 설정되면 그룹커밋은 항상 비활성화된다.
LOCK_ESCALATION_MEMORY_SIZE(단위 : 바이트)
데이타 타입
Unsigned Integer
기본값
100M
속성
변경 가능, 단일 값
값의 범위
[0, 1000M]
설명
다량의 변경(UPDATE) 배치 작업을 할 때, 버전(versioning)으로
인해 메모리가 크게 증가할 수 있으므로 이를 방지하기 위한
프로퍼티이다. 변경되는 메모리 크기가 프로퍼티에 설정된 값보다
커지면 버전을 만들지 않고 inplace update
2
를 하여 메모리가
증가하는 것을 막는다.
변경시 버전 기법을 사용하면, 레코드 레벨의 X 잠금(lock)을
획득하고 테이블 레벨의 IX 잠금을 획득하지만 inplace update 시
테이블 레벨의 X 잠금 즉, 배타적 잠금을 획득한다. 따라서, 이 값을
너무 작게 설정하면 해당 테이블에 대한 확장성(scalability)이
떨어질 수 있으므로 유의해야 한다.
알티베이스 가동 중 ALTER SYSTEM 문으로 이 프로퍼티의 값을
변경할 수 있다.
LOG_FILE_GROUP_COUNT (단위: 개수)
데이터 타입
Unsigned Integer
기본값
1
속성
2
inplace update 란 변경 대상이 되는 원래 레코드에 대해 버전(version)을 만들지 않고 해당 칼럼의
값이 바로 수정되는 것을 의미한다.
알티베이스 프로퍼티 95
읽기전용, 단일 값
값의 범위
[1,32]
설명
이 프로퍼티는 로그 파일 그룹(LFG) 기능 관련 프로퍼티이다.
데이터베이스 관리자(DBA)는 이 프로퍼티에 시스템에서 사용할 로그
파일 그룹의 수를 지정한다.
이 프로퍼티는 LOG_DIR 프로퍼티의 개수와 ARCHIVE_DIR
프로퍼티의 갯수가 일치해야 한다. LOG_DIR 과 ARCHIVE_DIR 을
여러 개 기술할 경우에는 모두 서로 다른 경로로 기술해야 한다.
이 프로퍼티는 데이터베이스가 생성된 이후로 변경될 수 없다.
LOG_IO_TYPE
데이터 타입
Unsigned Integer
기본값
1
속성
읽기 전용, 단일 값
값의 범위
[0, 1]
설명
로그를 기록할 때 I/O 모드를 나타낸다.
0 : buffered I/O
1 : direct I/O
LOW_FLUSH_PCT(단위 : 백분율)
데이터 타입
Unsigned Integer
기본값
1
속성
변경 가능, 단일 값
값의 범위
[0, 100]
96 ALTIBASE5 Starting User’s Manual
설명
플러시 리스트의 길이가 전체 버퍼 크기에서 명시된 값 이상이 되면
교체 플러시를 수행한다. 이 때 해당 플러시 리스트의 모든 갱신
버퍼들은 플러시한다.
LOW_PREPARE_PCT (단위 : 백분율)
데이터 타입
Unsigned Integer
기본값
1
속성
변경 가능, 단일 값
값의 범위
[0, 100]
설명
플러셔가 대기에서 깨어났을 때 Prepare 리스트의 길이가 전체
버퍼에서 명시한 값 이하가 되면 교체 플러시를 수행한다. 이 때
해당 플러시 리스트의 모든 갱신 버퍼들은 플러시한다.
MAX_FLUSHER_WAIT_SEC (단위: 초)
데이터 타입
Unsigned Integer
기본값
10
속성
변경 가능, 단일 값
값의 범위
[1, 2
32
-1]
설명
플러셔의 최대 대기 시간을 명시한다. 플러셔의 대기 시간은 작업
빈도에 따라 계속 늘어날 수 있지만, 이 값을 넘어가지는 못한다.
MULTIPLEXING_CHECK_INTERVAL(단위 : 마이크로 초)
데이터 타입
Unsigned Integer
기본값
알티베이스 프로퍼티 97
200000
속성
변경 가능, 단일 값
값의 범위
[100000, 10000000]
설명
쓰레드 매니저가 서비스 쓰레드 분산을 위해 세션을 확인하는 주기를
나타낸다. 시간 단위는 마이크로초이다.
쓰레드 매니저는 주기적으로 세션의 상태를 확인하여 세션의 통계
정보를 갱신하며, 서비스 쓰레드를 추가 삭제한다.
MULTIPLEXING_MAX_THREAD_COUNT
데이터 타입
Unsigned Integer
기본값
1024
속성
변경 가능, 단일 값
값의 범위
[1, 1024]
설명
멀티플렉싱을 하는 쓰레드의 최대 갯수이다.
기존에 존재하는 쓰레드들의 부하가 증가하면 쓰레드가 자동으로
증가한다. 그러나 쓰레드들이 계속 증가하게 되면 오히려 성능이
저하될수 있으므로 적절한 값을 설정해야 한다.
단 큐(QUEUE)를 사용하는 경우에는 이 프로퍼티에서 설정한 값보다
더 많은 쓰레드가 생성될수 있다.
MULTIPLEXING_THREAD_COUNT
데이터 타입
Unsigned Integer
기본값
플랫폼의 CPU 개수
속성
읽기 전용, 단일 값
98 ALTIBASE5 Starting User’s Manual
값의 범위
[1, 1024]
설명
알티베이스가 유지하는 쓰레드의 최소 개수이다.
NORMALFORM_MAXIMUM
데이터 타입
Unsigned Integer
기본값
128
속성
변경 가능, 단일 값
값의 범위
[1, 2
32
-1]
설명
조건절을 정규화할 때 정규화 형(Normal Form) 노드 크기의 최대
개수를 지정할 수 있는 프로퍼티이다.
SELECT 질의문의 WHERE 절에 존재하는 predicate 들이 논리
연산자(AND, OR)로 복잡하게 연결되어 있을 때, 알티베이스는
테이블을 더 빠르게 탐색하기 위하여 predicate 을 정규화시킨다.
정규화 방법으로 CNF(conjunctive normal form)와 DNF(
disjunctive normal form)가 있으며, 둘 중 어떤 정규화 형으로
변경되든지 NORMALFORM_MAXIMUM 에 명시된 노드 크기를
초과하는 경우에 그 해당 정규화 형으로 정규화를 시도하지 않는다.
만약, 두 정규화 형 모두 NORMALFORM_MAXIMUM 을 초과하면
조건절을 정규화하지 않고 수행한다. 이 경우, 조건절이 정규화되지
않아서 인덱스를 사용할 수 없게 된다. 반대로 해당 프로퍼티를
지나치게 크게 잡을 경우, 복잡한 조건절 처리를 위해 정규화
과정에서 방대한 메모리를 사용하게 되고 정규화 자체의 비용이
커지게 되므로 성능저하의 원인이 될 수 있다.
따라서 조건절 작성시에 논리연산자를 지나친 사용을 자제하고
정규화 형태로 조건절을 작성하는 것이 중요하다.
이 규칙은 ON 조건 조인의 ON predicate 에도 동일하게 적용된다.
OPTIMIZER_MODE
데이터 타입
알티베이스 프로퍼티 99
Unsigned Integer
기본값
0
속성
변경 가능, 단일 값
값의 범위
[0, 1]
설명
이 프로퍼티 값이 0 으로 설정되면 질의문을 최적화하기 위하여 비용
기반 최적화(cost_based optimization)를 지원하고, 1 이면 규칙
기반 최적화(rule_based optimization)를 지원한다.
알티베이스 가동 중 ALTER SYSTEM 문 또는 ALTER SESSION
문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
PARALLEL_DML_MODE
데이터 타입
Unsigned Integer
기본값
0
속성
변경 가능, 단일 값
값의 범위
[0, 1]
설명
DIRECT-PATH INSERT 작업시 Parallel DML 수행 여부를
설정한다. ALTER SESSION 구문을 이용해 프로퍼티의 값을 변경할
수 있다.
0 : Parallel DML 수행 안함
1 : Parallel DML 수행 가능
PARALLEL_LOAD_FACTOR
데이터 타입
Unsigned Integer
기본값
CPU 개수
100 ALTIBASE5 Starting User’s Manual
속성
읽기 전용, 단일 값
값의 범위
[1, 128]
설명
ALTIBASE 서버 재가동 시 데이터베이스 정제 과정(database
refining) 또는 인덱스 재구축(index rebuilding) 과정에서 생성되는
데이터베이스 정제 쓰레드/인덱스 구축 쓰레드 개수를 조절하는
프로퍼티이다.
주석으로 처리할 경우 기본값으로 시스템의 CPU 개수(N) 만큼 병렬
작업 쓰레드가 생성된다.
PREPARE_STMT_MEMORY_MAXIMUM(단위 : 바이트)
데이터 타입
Unsigned Long
기본값
100M
속성
변경 가능, 단일 값
값의 범위
[1024*1024, 2
64
-1]
설명
하나의 질의문(statement)이 사용할 수 있는 prepare 메모리의 양을
제한한다. ALTER SYSTEM 구문으로 변경 가능하다.
REFINE_PAGE_COUNT
데이터 타입
Unsigned Integer
기본값
50
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
알티베이스 프로퍼티 101
알티베이스 서버 가동 시 수행하는 단계 중 데이터베이스
정제(database refining) 단계가 있다. 알티베이스 서버가 이전
종료할 당시, 트랜잭션들이 생성한 버전 레코드(versioning
record)들이 가비지 콜렉터에 의해 처리되지 못해서 불필요한
레코드들이 데이터베이스에 존재하고 있을 수 있으며 또한 서버
가동시의 회복 과정에서 생성된 버전 레코드들이 존재할 수 있다.
이들 레코드들을 사용 가능하도록 처리하는 것이 데이터베이스 정제
단계이다.
데이터베이스 정제 대상이 되는 레코드들이 많을 경우 시간을 많이
소모할 수 있기 때문에 이 작업을 여러 쓰레드에 의해 병렬로 수행할
수 있다. 이 때 각 쓰레드가 처리하는 페이지 양을 지정한다.
SHM_PAGE_COUNT_PER_KEY
데이터 타입
Unsigned Integer
기본값
3200
속성
변경 가능, 단일 값
값의 범위
[320, 2
32
-1]
설명
공유 메모리 키(Shared Memory Key) 한 개에 몇 개의 페이지를
할당할 것인지를 정하며, 데이터베이스 타입이 공유 메모리인 경우에
사용된다.
데이터베이스가 공유 메모리를 사용할 때 공간 부족으로 확장이
필요하면, 공유 메모리 영역도 운영 체제로부터 할당을 받는다. 이
때 몇 개의 페이지 단위로 확장될 것인지를 나타내며, 새로운 공유
메모리 키도 필요하다.
그러나 이 값이 너무 작을 경우 다수의 공유 메모리 청크(Shared
Memory Chunk)가 할당되며, 청크마다 공유 메모리 키도 할당된다.
그러나 공유 메모리 키도 한정된 자원이기 때문에 데이터베이스를
내리고 공유 메모리를 지운 후 다시 데이터베이스를 구동해야 되는
문제가 발생한다. 이를 방지하기 위해 초기 설정시 적절한 크기로
설정해야 한다.
SMALL_TABLE_PAGE_COUNT
데이터 타입
Unsigned Integer
102 ALTIBASE5 Starting User’s Manual
기본값
128
속성
변경 가능, 단일 값
값의 범위
[1, 2
32
-1]
설명
테이블이 이 프로퍼티의 값보다 작거나 같으면 작은 테이블로
간주된다. 테이블이 작은 테이블로 간주되면, 전체 테이블을 스캔할
때 해당 테이블을 모두 버퍼에 올리고, SPR(Single Page Read)로
수행한다.
그러나 작은 테이블이 아니라면 테이블을 읽은 후, 버퍼에 올리지
않는다.
SORT_AREA_SIZE(단위: 바이트)
데이터 타입
Unsigned long
기본값
65536
속성
변경 가능, 단일 값
값의 범위
[8192, 2
64
-1]
설명
디스크 인덱스 생성 시 데이터에서 추출한 키들을 정렬할 때 사용될
메모리의 크기를 나타낸다. 시스템 가동 중에는 ALTER SYSTEM
문을 이용해 프로퍼티의 값을 변경할 수 있다.
SQL_PLAN_CACHE_BUCKET_CNT
데이터 타입
Unsigned Integer
기본값
127
속성
읽기 전용, 단일 값
알티베이스 프로퍼티 103
값의 범위
[5, 4096]
설명
SQL 플랜 캐시에서 해시 테이블의 버킷 개수를 나타낸다.
SQL_PLAN_CACHE_HOT_REGION_LRU_RATIO(단위 : 백분율)
데이터 타입
Unsigned Integer
기본값
50
속성
변경 가능, 단일 값
값의 범위
[10, 90]
설명
SQL 플랜 캐시에 있는 LRU 리스트의 HOT 영역 비율을 나타낸다.
HOT 영역 LRU 리스트는 SQL 플랜 캐시에 있는 LRU 리스트에서
빈번하게 참조되는 플랜들을 별도의 HOT 영역으로 저장한 것이다.
시스템 가동 중에는 ALTER SYSTEM 문을 이용해 프로퍼티의 값을
변경할 수 있다.
SQL_PLAN_CACHE_PREPARED_EXECUTION_CONTEXT_CNT
데이터 타입
Unsigned Integer
기본값
1
속성
변경 가능, 단일 값
값의 범위
[0, 1024]
설명
플랜을 생성할 때 초기에 생성하는 execution context 의 개수를
나타낸다.
플랜을 생성하기 전에 execution context 의 개수를 지정하지만,
이는 초기에 생성하는 개수만을 결정할 뿐이다. 그리고 execution
context 는 실행 시간에 필요한 만큼 자동으로 증가되거나 감소된다.
104 ALTIBASE5 Starting User’s Manual
그러나 하나의 플랜을 동시에 execute 하는 경우 이 값을 증가시키는
것은 성능에 도움이 되지만, 그렇지 않은 경우에는 플랜의 크기만
증가시킬 뿐 성능 향상에 도움이 되지 않는다.
SQL_PLAN_CACHE_SIZE (단위: 바이트)
데이터 타입
Unsigned long
기본값
64 M
속성
변경 가능, 단일 값
값의 범위
[0, 2
64
-1]
설명
SQL 플랜 캐시의 최대 크기를 나타낸다. 그러나 0 으로 설정되면
캐시를 사용할 수 없게된다. V$SQL_PLAN_CACHE 의
MAX_CACHE_SIZE 로 확인할 수 있다.
시스템 가동 중에는 ALTER SYSTEM 문을 이용해 프로퍼티의 값을
변경할 수 있다.
TABLE_INITRANS
데이터 타입
Unsigned Integer
기본값
2
속성
읽기 전용, 단일 값
값의 범위
[0, 120]
설명
테이블 페이지에 유지될 초기 TTS(Touched Transaction Slot)의
개수를 나타낸다.
TABLE_MAXTRANS
데이터 타입
Unsigned Integer
기본값
알티베이스 프로퍼티 105
120
속성
읽기 전용, 단일 값
값의 범위
[0, 120]
설명
테이블 페이지에 유지될 수 있는 최대 TTS(Touched Transaction
Slot)의 개수를 나타낸다.
TABLE_LOCK_ENABLE
데이터 타입
Unsigned Integer
기본값
1
속성
변경 가능, 단일 값
값의 범위
[0, 1]
설명
잠금(Lock) 레벨을 제어하는 프로퍼티이다. 기본값은 1 로 테이블
수준 잠금과 레코드 수준 잠금을 모두 지원한다. 값을 0 으로
설정하면 테이블 수준 잠금을 지원하지 않고 레코드 수준 잠금만을
지원하여 단순 DML 시 성능상 이점이 있다.
그러나 0 으로 설정하는 경우 다음과 같은 제약 사항이 있다.
y DDL문을 수행할 수 없다.
y CREATE DATABASE를 수행할 수 없다.
y 이중화 시 병렬 SYNC를 허용하지 않는다.
이 프로퍼티는 ALTER SYSTEM, ALTER SESSION 문으로 변경이
가능하지만, 활성화된 트랜잭션이 없는 경우에만 변경 가능하다.
TIMER_RUNNING_LEVEL
데이터 타입
Unsigned Integer
기본값
플랫폼 별로 기본값이 아래와 같이 상이하다.
106 ALTIBASE5 Starting User’s Manual
1 : 하위에 기술되지 않은 모든 플랫폼
2 : sparc-solaris, X86-solaris, IBM-AIX, PA-RISC-HP-64,
IA64-HP
3 : x86-linux, Amd64-linux
속성
변경 가능, 단일 값
값의 범위
[1, 3]
설명
쓰레드의 대기하는 시간과 연산시 소요 시간을 측정하는 방법을
설정한다.
1 : 시간을 측정하는 쓰레드가
TIMER_THREAD_RESOULTION에서 지정한 단위로 시간
측정한다.
2 : 플랫폼별로 지원하는 라이브러리 함수를 이용하여 측정한다.
3 : 1 번과 비슷하지만 시스템 시계(clock)를 이용하여 측정한다.
따라서 다른 방법에 비해 성능 저하가 낮다.
TIMED_STATISTICS
데이터 타입
Unsigned Integer
기본값
0
속성
변경 가능, 단일 값
값의 범위
[0, 1]
설명
쓰레드의 대기 시간과 연산시 소요 시간을 측정할 것인지 여부를
설정한다. 이 프로퍼티를 측정하는 것으로 설정할 경우 성능이
떨어질 수 있다.
0 : 측정하지 않음
1 : 측정함
TIMER_THREAD_RESOLUTION (단위: 마이크로초)
데이터 타입
알티베이스 프로퍼티 107
Unsigned Integer
기본값
1000
속성
변경 가능, 단일 값
값의 범위
[50, 10000000]
설명
대기 시간과 연산 시간을 측정하는 방법이
TIMER_RUNNING_LEVEL에서 1 로 설정한 경우의 시간을 재는
주기를 의미한다.
TOUCH_TIME_INTERVAL (단위: 초)
데이터 타입
Unsigned Integer
기본값
3
속성
변경 가능, 단일 값
값의 범위
[0, 100]
설명
버퍼의 접근 회수를 증가시키기 위한 최소 시간 간격을 의미한다.
버퍼에 대해 마지막으로 접근한 이후 이 프로퍼티에서 명시한 시간이
지나면, 접근 회수가 증가한다.
이 값이 기본값 3 으로 명시되면, 특정 버퍼의 마지막 접근 이후 3 초
이내의 접근에 대해서는 접근 회수를 갱신하지 않는다.
TRANSACTION_SEGMENT_COUNT (단위 : 개수)
데이터 타입
Unsigned Integer
기본값
256
속성
변경 가능, 단일 값
108 ALTIBASE5 Starting User’s Manual
값의 범위
[1, 512]
설명
서버 구동시 생성되는 트랜잭션 세그먼트(언두 세그먼트와 TSS
세그먼트)의 개수를 나타낸다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
TRX_UPDATE_MAX_LOGSIZE (단위 : 바이트)
데이타 타입
Unsigned Integer
기본값
10 MB
속성
변경 가능, 단일 값
값의 범위
[0, 2
64
-1]
설명
하나의 DML 에 의해 생성되는 로그 크기가 프로퍼티에 설정된
값보다 커지면 해당 트랜잭션을 중단하고 오류 값을 보여준다.
사용자의 부주의로 대용량 배치 작업이 실행되어 시스템에 부하가
발생하는 것을 방지하기 위해 사용하는 프로퍼티이다.
해당 프로퍼티의 값을 0 으로 설정하면 로그 크기에 대한 제한이
없어지기 때문에, 트랜잭션을 갱신할 때 발생하는 로그를 무한대로
사용할 수 있다. 알티베이스 가동 중 ALTER SYSTEM 문 또는
ALTER SESSION 문을 이용하여 이 프로퍼티의 값을 변경할 수
있다.
알티베이스 프로퍼티 109
세션 관련 프로퍼티
알티베이스는 클라이언트-서버 구조로 사용 가능하며 세션 연결
프로퍼티는 클라이언트와 서버의 통신에 관한 프로퍼티를 규정하는
것이다. 다음과 같은 프로퍼티들이 있다.
공통 프로퍼티
CM_DISCON_DETECT_TIME (단위: 초)
데이터 타입
Unsigned Integer
기본값
3
속성
읽기 전용, 단일 값
값의 범위
[1, 2
32
-1]
설명
알티베이스 서버에는 클라이언트와 서버의 연결이 단절되었는지를
검사하기 위해 세션 관리 쓰레드(cm detecter)가 존재한다. 세션
관리 쓰레드의 동작 주기를 설정하기 위한 프로퍼티이다.
일반적으로 클라이언트 프로세스가 비정상 종료하면 그 클라이언트와
연결된 세션은 곧바로 그 상태를 감지할 수 있다.
그러나, 그 세션이 작업 중인 상태이고, 또 그 세션에서 수행 중인
작업이 세션 작업과는 무관한 알티베이스 서버 내부의 작업이면서
오랜 시간을 요구하는 작업이라면, 해당 세션은 클라이언트 비정상
종료 여부를 확인할 수 없다. 즉 클라이언트와 연결이
종료되었는지를 해당 세션에서는 확인할 수 없기 때문에
클라이언트가 비정상 종료되었음에도 불구하고 알티베이스 서버는 그
작업을 계속 진행하게 된다.
위와 같은 경우 그러한 세션을 감지하여 해당 트랜잭션들을 롤백시킬
필요가 있으며 이를 위해 세션 관리 쓰레드가 주기적으로 세션들의
상태를 검사하게 된다.
DEFAULT_THREAD_STACK_SIZE(단위 : 바이트)
데이터 타입
110 ALTIBASE5 Starting User’s Manual
Unsigned Integer
기본값
1048576
속성
읽기 전용, 단일 값
값의 범위
[131072, 1572864]
설명
서비스 쓰레드를 제외한 나머지 시스템 쓰레드의 스택 사이즈를
지정한다. 서비스 쓰레드의 스택 사이즈는
SERVICE_THREAD_STACK_SIZE 에서 지정한다.
IPC_CHANNEL_COUNT
데이터 타입
Unsigned Integer
기본값
0
속성
읽기 전용, 단일 값
값의 범위
[0, 65535]
설명
클라이언트와 서버 사이에 IPC 통신을 하기 위하여 반드시 설정되어
야 하는 프로퍼티이다. IPC 를 이용한 클라이언트와 서버 통신
채널의 최대 개수를 지정한다. 각 채널 수에 비례해서 공유 메모리와
세마포어를 할당받기 때문에 서버와 동시에 연결될 최대 IPC 연결
개수를 설정한다.
IPC_PORT_NO
데이터 타입
Unsigned Integer
기본값
20350
속성
읽기 전용, 단일 값
값의 범위
알티베이스 프로퍼티 111
[1024, 65535]
설명
윈도우에서 IPC 연결을 위해 서버와 클라이언트가 통신하기 위한
TCP 포트 번호이다. UNIX 환경에서는 IPC 연결을 위해 유닉스
도매인 소켓을 사용하지만, 윈도우 환경에서는 사용할 수 없어 이를
위한 포트 번호가 필요하다.
TCP 연결을 통해 클라이언트는 자신이 사용하게 될 공유 메모리의
이름, 세마포어, 뮤텍스의 이름 등을 전달받게 되며, 이를 사용해
IPC 를 사용할 수 있다.
MAX_LISTEN
데이터 타입
Unsigned Integer
기본값
128
속성
읽기 전용, 단일 값
값의 범위
[0, 512]
설명
클라이언트와 알티베이스 간의 통신 시 TCP/IP 또는 UNIX
DOMAIN 을 사용하는 경우 대기 큐(listen queue)의 크기를
지정하는 값이다.
NLS_NCHAR_CONV_EXCP
데이터 타입
Unsigned Integer
기본값
0
속성
변경 가능, 단일 값
값의 범위
[0, 1]
설명
NCHAR 데이터 타입에서 다른 캐릭터셋으로 변환 시, 데이터 손실이
발생할 수 있다. 이 때 에러를 발생시킬 것인지 아니면 데이터
112 ALTIBASE5 Starting User’s Manual
손실이 발생한 채로 변환을 할 것인지를 결정하는 프로퍼티이다.
이 프로퍼티는 서버의 데이터 타입이 NCHAR 에서 다른
캐릭터셋으로 변환할 때에만 에러가 발생할 수 있도록 하는
프로퍼티이며, 클라이언트의 변환은 해당되지 않는다.
알티베이스 가동 중 ALTER SESSION 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
0 : FALSE (에러를 발생시키지 않는다.)
1 : TRUE
NLS_COMP
데이터 타입
Unsigned Integer
기본값
0
속성
읽기 전용, 단일 값
값의 범위
[0, 1]
설명
데이터베이스 생성시 지정된 캐릭터셋(character set)은 해당
국가에서 사용되는 사전과 그 이진 값의 순서가 동일하다고 보장할
수 없다.
이 프로퍼티의 값이 1 로 설정되면, 각 캐릭터셋을 해당 언어의 사전
순서대로 비교한다. 현재 한국어에 대해서만 지원하기 때문에,
데이터베이스 캐릭터셋이 한글(KSC5601 완성형 또는 MS 확장
완성형)로 설정됐을 때에만 지원한다.
PORT_NO
데이터 타입
Unsigned Integer
기본값
20300
속성
읽기 전용, 단일 값
값의 범위
[1024, 65535]
알티베이스 프로퍼티 113
설명
TCP/IP 로 클라이언트와 서버가 통신할 때 사용하는 포트 번호이다.
사용자는 루트 영역(일반적으로 1023 번까지)을 제외한 나머지
영역(최대 65535)에 대해 다른 프로그램에서 사용하지 않는 번호면
임의로 지정할 수 있다. 알티베이스 응용 프로그램은 이 포트 번호를
사용하여 서버와 연결하는데,
$ALTIBASE_HOME/conf/altibase.properties 의 PORT_NO 를
참조한다. 클라이언트가 서버와 다른 컴퓨터에 있는 경우에도 위의
경로를 설정해 주어야 한다.
PSM_FILE_OPEN_LIMIT
데이터 타입
Unsigned Integer
기본값
16
속성
변경 가능, 단일 값
값의 범위
[0,128]
설명
세션당 최대로 열 수 있는 자장 프로시저 파일 핸들의 개수를
지정한다.
SERVICE_THREAD_STACK_SIZE(단위 : 바이트)
데이터 타입
Unsigned Integer
기본값
1048576
속성
읽기 전용, 단일 값
값의 범위
[524288, 1572864]
설명
OS 상에서의 서비스 쓰레드 스택 사이즈를 지정한다. 그러나 서비스
쓰레드를 제외한 나머지 시스템 쓰레드의 스택 사이즈 지정은
DEFALUT_THREAD_STACK_SIZE 에서 한다.
USE_MEMORY_POOL
114 ALTIBASE5 Starting User’s Manual
데이터 타입
Unsigned Integer
기본값
1
속성
읽기 전용, 단일 값
값의 범위
[0,1]
설명
메모리 풀링 기능의 사용 유무를 지정한다. 메모리 풀링이란
서버에서 메모리를 미리 할당하여 사용하는 기능이다.
이 기능을 사용하면, 메모리를 미리 할당하기 때문에 메모리
사용량이 많아진다.
0: 사용하지 않음
1: 사용
XA_HEURISTIC_COMPLETE
데이터 타입
Unsigned Integer
기본값
0
속성
읽기 전용, 단일 값
값의 범위
[0, 2]
설명
분산 트랜잭션 환경에서는 2 단계 커밋 프로토콜(2 Phase Commit
Protocol, XA)을 사용하여 트랜잭션을 수행한다. 트랜잭션을
수행하는 도중 PREPARE 명령을 전역(global) 트랜잭션
관리자(Coordinator)로부터 받은 후 어떤 이유로 COMMIT 이나
ROLLBACK 명령을 받지 못한 상태에서 오랜 시간이 지나면,
알티베이스는 너무 오랫동안 트랜잭션을 유지하므로 데이터베이스
성능에 큰 지장을 줄 수 있다.
이를 방지하기 위해 일정 시간 이상이 지나면 PREPARE
상태(IN_DOUBT 상태)인 전역 트랜잭션을 임의로 종료시킨다. 이 때
알티베이스 프로퍼티 115
COMMIT 으로 종료시킬 것인지, ROLLBACK 으로 종료시킬
것인지를 선택하는 프로퍼티이다.
트랜잭션을 종료시킬 때 명령을 기다리는 시간은
XA_INDOUBT_TX_TIMEOUT 속성에서 정의된 값을 사용하게 된다.
현재 속성값이 0 이면 아무것도 하지 않지만, 1 이면 커밋(commit),
2 이면 롤백(rollback)을 수행한다.
세션별 타임아웃 관련 프로퍼티
BLOCK_ALL_TX_TIME_OUT (단위: 초)
데이터 타입
Unsigned Integer
기본값
3
속성
변경 가능, 단일 값
값의 범위
[0, 2
32
-1]
설명
버퍼 매니저가 해시 테이블의 크기를 조정할 때 트랜잭션의 접근을
제한할 수 있다. 이 프로퍼티의 최소값 0 은 대기하지 않고 즉시
오류 처리됨을 의미한다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
DBLINK_QUERY_TIMEOUT(단위 : 초)
데이터 타입
Unsigned Integer
기본값
600
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
116 ALTIBASE5 Starting User’s Manual
AltiLinker 에서 원격 서버로 질의를 전달한후, 응답을 기다리는
시간을 지정한다.
DDL_LOCK_TIMEOUT (단위 : 초)
데이터 타입
Short integer
기본값
0
속성
변경 가능, 단일 값
값의 범위
[-1, 65535]
설명
DDL 문을 수행할 때 해당 테이블에 이미 다른 트랜잭션에 의해
잠금(Lock)이 획득되어 있는 경우 잠금을 대기하는 옵션을 설정하는
것이다. 잠금을 요구하여 곧바로 획득되지 않을 경우 이 프로퍼티의
값이 1 로 설정되어 있으면 무한정 대기하고 양수로 설정되어
있으면 지정된 값 만큼 대기하고 다시 시도한다.
DDL 수행시 잠금을 요구한 시점에서 잠금을 획득할 수 없는 경우
해당 DDL 은 즉시 오류 처리된다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
FETCH_TIMEOUT(단위 : 초)
데이터 타입
Unsigned Integer
기본값
60
속성
변경 가능, 단일 값
값의 범위
[0, 2
32
-1]
설명
응용 프로그램에서 SELECT 문을 수행하는 시간이 길어짐에 따라
데이터베이스 메모리가 비정상적으로 증가하는 것을 막기 위하여 이
값을 설정한다. 질의 수행 시간이 프로퍼티 파일에 설정된 값보다
알티베이스 프로퍼티 117
커지면 세션 연결을 해제하고 현재 트랜잭션을 철회한다.
알티베이스 가동 중 ALTER SYSTEM 문 또는 ALTER SESSION
문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
IDLE_TIMEOUT (단위 : 초)
데이터 타입
Unsigned Integer
기본값
0
속성
변경 가능, 단일 값
값의 범위
[0, 2
32
-1]
설명
서버에 접속된 클라이언트가 비정상적으로 오랜 시간 연결을 맺고
있고, 만약 이러한 클라이언트의 수가 점차적으로 많아진다면
결국에는 서비스를 할 수 있는 연결 개수가 현저히 작아져, 나중에는
서비스가 불가능한 상황이 될 수 있다.
이러한 현상을 미리 방지하기 위해 이 값을 설정한다. 한 세션의
유휴 시간이 프로퍼티 파일에 설정된 값보다 커지면 세션 연결을
해제하고 현재 트랜잭션을 철회한다.
알티베이스 가동 중 ALTER SYSTEM 문 또는 ALTER SESSION
문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
MULTIPLEXING_POLL_TIMEOUT(단위 : 마이크로 초)
데이터 타입
Unsigned Integer
기본값
10000
속성
변경 가능, 단일 값
값의 범위
[1000, 1000000]
설명
멀티플렉싱을 하는 서비스 쓰레드가 세션을 감지하는 주기를
나타낸다.
118 ALTIBASE5 Starting User’s Manual
LINKER_CONNECT_TIMEOUT(단위: 초)
데이터 타입
Unsigned Integer
기본값
225
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
알티베이스 서버에서 AltiLinker 로 접속할 때, Connection timeout
시간을 지정한다.
LINKER_RECEIVE_TIMEOUT(단위: 초)
데이터 타입
Unsigned Integer
기본값
300
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
알티베이스 서버와 AltiLinker 사이의 정보를 교환할 때, 대기
시간을 지정한다.
LOGIN_TIMEOUT(단위 : 초)
데이터 타입
Unsigned Integer
기본값
0
속성
변경 가능, 단일 값
값의 범위
[0, 2
32
-1]
알티베이스 프로퍼티 119
설명
알티베이스의 포트로 접속이 이루어진 후 인증 절차가 완료될 때까지
허용된 시간. 이 시간 안에 인증이 이루어지지 않으면 서버는 접속을
끊는다.
QUERY_TIMEOUT (단위 : 초)
데이터 타입
Unsigned Integer
기본값
600
속성
변경 가능, 단일 값
값의 범위
[0, 2
32
-1]
설명
특정 질의들(정렬 혹은 긴 조인 등)의 수행 시간이 길어짐에 따라
데이터베이스 크기가 비정상적으로 증가하는 것을 막기 위하여 이
값을 설정한다. 질의 수행 시간이 프로퍼티 파일에 설정된 값보다
커지면 현재 트랜잭션 연산을 부분 철회한다.
알티베이스 가동 중 ALTER SYSTEM 문 또는 ALTER SESSION
문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REMOTE_SERVER_CONNECT_TIMEOUT (단위: 초)
데이터 타입
Unsigned Integer
기본값
5
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
AltiLinker 에서 원격 서버로 접속하는 시간을 지정한다.
REPLICATION_CONNECT_TIMEOUT (단위: 초)
데이터 타입
120 ALTIBASE5 Starting User’s Manual
Unsigned Integer
기본값
10
속성
변경 가능, 단일 값
값의 범위
[0, 2
32
-1]
설명
이중화를 수행하기 위해 대상 호스트에 대한 이중화 연결 수행 시,
이 프로퍼티에 설정된 시간 값 이상 응답이 없을 경우 연결을 더
이상 시도하지 않는다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
REPLICATION_LOCK_TIMEOUT (단위: 초)
데이터 타입
Unsigned Integer
기본값
5
속성
변경 가능, 단일 값
값의 범위
[0, 3600]
설명
이중화 데드락이 발생하는 경우 수신 쓰레드 쪽에서는 무한정 잠금을
기다리게 되어 서비스가 중단될 수 있다. 이러한 경우를 방지하기
위해 수신 쓰레드는 해당 작업의 수행에 대해 잠금을 요구할 때,
최대 이 프로퍼티에 설정된 시간만큼만 잠금을 획득하기 위해
기다린다.
명시된 시간 내에 잠금을 획득하지 못하여
REPLICATION_LOCK_TIMEOUT 이 발생하는 경우 해당 작업은
철회된다.
REPLICATION_RECEIVE_TIMEOUT(단위 : 초)
데이터 타입
Unsigned Integer
알티베이스 프로퍼티 121
기본값
300
속성
변경 가능, 단일 값
값의 범위
[0, 2
32
-1]
설명
송신 쓰레드와 수신 쓰레드에서 공통적으로 사용하는 프로퍼티로
송신/수신 쓰레드로부터 어떤 메시지를 기다리는 최대 시간을
지정하는 프로퍼티이다.
송신 쓰레드에서는 상대편 수신 쓰레드로부터 응답을 기다리는 최대
시간이며 명시된 시간이 경과하게 되면
REPLICATION_SENDER_SLEEP_TIMEOUT 에서 지정된 시간만큼
sleep 한 후 다시 상대편 수신 쓰레드와의 접속을 시도한다. 이 경우
기존 사용하던 소켓은 닫고 새로운 소켓을 생성하여 재연결을
시도한다.
수신 쓰레드에서는 상대편 송신 쓰레드로부터 어떤 메시지를
기다리는 최대 시간이다. 명시된 시간이 경과하게 되면 수신
쓰레드는 자동 종료되며 이후 상대편 송신 쓰레드가 어떤 메시지를
다시 보내게 되는 경우 다시 생성된다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
REPLICATION_SENDER_SLEEP_TIMEOUT(단위: 초)
데이터 타입
Unsigned Integer
기본값
60
속성
변경가능, 단일 값
값의 범위
[0, 2592000]
설명
이중화 송신 쓰레드가 오류 상황에서 sleep 을 해야 할 때 얼마나 할
것인지를 결정한다.
알티베이스 가동 중에 ALTER SYSTEM 구문을 이용하여 이
122 ALTIBASE5 Starting User’s Manual
프로퍼티의 값을 변경할 수 있다.
REPLICATION_SYNC_LOCK_TIMEOUT (단위: 초)
데이터 타입
Unsigned Integer
기본값
30
속성
변경 가능, 단일 값
값의 범위
[1, 2
32
-1]
설명
이중화 sync 수행 시 이중화가 걸린 테이블에 이미 다른 트랜잭션에
의해 잠금이 획득되어 있는 경우 잠금을 대기하는 옵션을 설정하는
프로퍼티이다. 잠금을 요구하여 곧바로 획득되지 않을 경우
프로퍼티에 지정된 값 만큼 잠금을 대기한다. 값이 30 인 경우,
해당시간 동안 잠금을 획득할 수 없으면 sync 는 오류 처리된다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
UTRANS_TIMEOUT (단위 : 초)
데이터 타입
Unsigned Integer
기본값
3600
속성
변경 가능, 단일 값
값의 범위
[0, 2
32
-1]
설명
변경 연산(UPDATE, INSERT, DELETE)을 수행하는 트랜잭션의
수행 시간이 길어짐에 따라 로그 파일의 개수가 비정상적으로
증가하는 것을 막기 위하여 이 값을 설정한다. 수행 시간이 프로퍼티
파일에 설정된 값보다 커지면 세션 연결을 해제하고 현재 트랜잭션을
철회한다.
알티베이스 가동 중 ALTER SYSTEM 문 또는 ALTER SESSION
알티베이스 프로퍼티 123
문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
XA_INDOUBT_TX_TIMEOUT (단위: 초)
데이터 타입
Unsigned Integer
기본값
60
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
2 단계 커밋 프로토콜에서 IN-DOUBT 상태의 오래 실행되는 전역
트랜잭션을 임의로 종료시키는 시간 기준에 대한 프로퍼티이다.
124 ALTIBASE5 Starting User’s Manual
트랜잭션 관련 프로퍼티
AUTO_COMMIT
데이터 타입
Unsigned Integer
기본값
1
속성
변경 가능, 단일 값
값의 범위
[0, 1]
설명
세션에서 SQL 문을 수행할 때 하나의 SQL 문을 하나의
트랜잭션으로 처리하여 커밋할 것인지를 결정하는 프로퍼티이다. 이
값이 1 이면 auto-commit 모드이고 0 이면 non-autocommit
모드이다. non-autocommit 모드인 경우 응용 프로그램에서
트랜잭션의 시작과 끝을 명시적으로 알려주어야 한다.
세션 단위로 이를 설정할 수 있는데, 서버 구동 시
AUTO_COMMIT 의 값이 1 일지라도 세션 별로 이 모드를 변경할 수
있다. 예를 들어, 클라이언트에서 ALTER SESSION SET
AUTOCOMMIT = FALSE (non-autocommit)를 실행하면 이
세션은 이 후에 발생하는 트랜잭션을 반영할 것인지 또는 롤백할
것인지를 사용자가 명시해 주어야 한다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
ISOLATION_LEVEL
데이터 타입
Unsigned Integer
기본값
0
속성
읽기 전용, 단일 값
값의 범위
[0, 3]
알티베이스 프로퍼티 125
설명
트랜잭션의 고립화 수준(isolation level)을 지정한다. 고립화 수준에
따라 하나의 트랜잭션이 여러 번 같은 테이블에 대한 검색을 수행할
때의 결과가 결정된다.
고립화 수준 특징
0 (Committed Read) 알티베이스의 기본 모드이다.
검색 트랜잭션이 읽은 데이터는 완료한
트랜잭션에 의해 변경된 데이터임을 보장한다.
검색 트랜잭션이 한번 읽고 다시 읽을 때 다른
트랜잭션이 동시에 INSERT 혹은 DELETE를
수행하고 커밋했다면 그것이 반영되어 새로운
행(row)이 보이거나 혹은 보였던 행이 보이지
않게 될 수 있다.
1 (Repeatable Read) 한 트랜잭션 수행 동안 동일 레코드를 여러 번
반복해서 읽는 경우 항상 동일한 레코드의 내용을
검색하게 됨을 보장한다.
한번 읽을 때 읽은 행(row)에 잠금(lock)이
걸린다. 그래서 다시 읽을 때 이전에 보였던 행이
안 보이는 경우는 없으나, 그 사이에 새로 삽입된
행은 보일 수 있다.
2 (No Phantom) 여러 번 반복해서 읽어도 모두 동일한 결과가
보이는 것을 보장한다.
TRANSACTION_TABLE_SIZE(단위 : 트랜잭션 개수)
데이터 타입
Unsigned Integer
기본값
1024
속성
변경 가능, 단일 값
값의 범위
[0, 1024 * 10]
설명
알티베이스 서비스 과정 중에 동시에 생성될 수 있는 트랜잭션
개수로, 이에 대해 메모리가 미리 할당된다.
126 ALTIBASE5 Starting User’s Manual
백업 및 복구 관련 프로퍼티
데이터베이스가 변경될 때 변경 로그를 유지하는데, 이에 관한
처리를 어떻게 할 것인지를 정하는 프로퍼티들이 있다.
ARCHIVE_DIR
데이터 타입
String
기본값
$ALTIBASE_HOME/arch_logs
속성
읽기 전용, 다중 값
값의 범위
없음
설명
아카이브 로그 백업(Archive log backup)을 사용하는 경우 아카이브
로그파일들이 백업될 디렉토리를 설정하는 프로퍼티이다. 사용자가
명시적으로 이 값을 지정하지 않으면 기본으로 알티베이스가 설치된
디렉토리 밑의 arch_logs 디렉토리에 아카이브 로그파일들이
백업된다. 이 프로퍼티의 개수는 LOG_DIR 프로퍼티 개수와 정확히
일치해야 한다. 또한 LOG_DIR 프로퍼티가 여러 개인 경우
ARCHIVE_DIR 프로퍼티들은 LOG_DIR 프로퍼티 값과 순서대로
1:1 로 매핑될 수 있도록 기술한다.
사용자가 이 값을 명시적으로 지정할 수 있으나 지정된 디렉토리는
미리 생성되어 있어야 하며, 그렇지 않은 경우 오류 메시지를
출력함과 동시에 알티베이스 서버가 구동되지 않는다.
ARCHIVE_FULL_ACTION
데이터 타입
Unsigned Integer
기본값
0
속성
읽기 전용, 단일 값
값의 범위
[0, 1]
알티베이스 프로퍼티 127
설명
ARCHIVE_DIR 에 설정된 디렉토리가 속한 파일 시스템에 충분한
디스크 공간이 없는 경우 아카이브 로그 백업(archive log backup)을
수행하는 아카이브 쓰레드의 동작을 제어하는 프로퍼티이다.
값이 0 인 경우 아카이브 쓰레드는 오류 메시지를 출력한 후,
아카이브 로그파일을 백업하는 작업을 중지하게 된다. 이후 충분한
디스크 공간이 확보된 후에라도 사용자가 명시적으로 아카이브 로그
백업을 활성화하는 명령을 입력하지 않는 한 아카이브 로그 백업은
수행되지 않는다. 이 경우 체크포인트가 발생하면 아카이브
로그파일이 백업되지 않았더라도 불필요한 로그 파일들은 삭제되기
때문에 운영시 주의가 필요하다.
값이 1 인 경우 아카이브 쓰레드는 충분한 디스크 공간이 확보되어
아카이브 로그파일을 백업할 수 있을 때까지 기다린다. 이 기간 동안
체크포인트가 발생한다면 아카이브 로그파일이 백업되지 않아서 로그
파일들이 삭제될 수 없으므로 주의해야 한다.
ARCHIVE_THREAD_AUTOSTART
데이터 타입
Unsigned Integer
기본값
1
속성
읽기 전용, 단일 값
값의 범위
[0, 1]
설명
아카이브 로그파일을 주기적으로 백업하는 쓰레드인 아카이브
쓰레드를 활성화시킬 것인지를 지정하는 프로퍼티로, 1 인 경우
아카이브 쓰레드를 활성화시킨다.
이 프로퍼티는 아카이브 로그파일 백업을 위한 디렉토리에 충분한
디스크 공간이 없어서 아카이브 쓰레드가 비활성화된 경우, 이후에
디스크 공간을 확보하여 아카이브 쓰레드를 다시 활성화하고자 할 때
사용할 수 있다.
CHECKPOINT_ENABLED
데이터 타입
Unsigned Integer
기본값
128 ALTIBASE5 Starting User’s Manual
1
속성
읽기 전용, 단일 값
값의 범위
[0, 1]
설명
체크포인트를 ON 또는 OFF 시키는 프로퍼티이다. 이 값을
0(OFF)으로 지정하면 체크포인트 쓰레드가 동작하지 않으며,
사용자도 임의로 체크포인트를 수행할 수 없다.
CHECKPOINT_INTERVAL_IN_LOG
데이터 타입
Unsigned Integer
기본값
100
속성
변경 가능, 단일 값
값의 범위
[1, 2
32
-1]
설명
체크포인트 주기를 로그 파일이 생성되는 횟수로 정하는 것이다. 즉,
정해진 횟수 만큼 로그 파일이 교체되면 체크포인트를 자동으로
수행한다.
이 프로퍼티 값에 의해 체크포인트 수행이 요구될 때, 이미
체크포인트가 진행 중이거나 기타 다른 이유로 인하여 체크포인트가
수행되지 못하는 경우가 발생할 수 있다.
이 경우 이미 진행 중인 체크포인트가 끝난 후 바로 체크포인트를
수행하는 것이 아니라 현재의 체크포인트 요구는 바로 취소된다.
따라서, 다음 체크포인트 요구가 발생하는 최대 시점은 이
프로퍼티에 설정된 값만큼 로그 파일이 새로 생기는 시점이 될 수
있다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
CHECKPOINT_INTERVAL_IN_SEC(단위 : 초)
데이터 타입
Unsigned Integer
알티베이스 프로퍼티 129
기본값
6000
속성
변경 가능, 단일 값
값의 범위
[3, 2592000]
설명
체크포인트의 주기를 초 단위 시간으로 정하는 것이다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
COMMI T_WRI TE_WAI T_MODE
데이터 타입
Unsigned Integer
기본값
0
속성
변경 가능, 단일 값
값의 범위
[0, 1]
설명
트랜잭션을 커밋할 때 로그가 로그 파일에 반영될 때까지 기다릴
것인지 여부를 설정하는 프로퍼티이다. 알티베이스는 기본으로
성능을 위해 기다리지 않는 값으로 설정된다.
이 프로퍼티는 시스템 전체에 대해서 혹은 사용자의 세션 단위로
설정할 수 있으며, 알티베이스 가동 중 ALTER SYSTEM 또는
ALTER SESSION 구문으로 변경할 수 있다.
0 : No Wait
1 : Wait
LOG_BUFFER_TYPE
데이터 타입
Unsigned Integer
기본값
0
130 ALTIBASE5 Starting User’s Manual
속성
읽기 전용, 단일 값
값의 범위
[0, 1]
설명
로그 버퍼 타입을 결정하는 프로퍼티이다. 이 프로퍼티는 시스템
운영 중에 변경할 수 없다.
0 : 운영체제 커널의 로그 버퍼를 사용
1: 프로세스 메모리의 로그 버퍼를 사용
PREPARE_LOG_FILE_COUNT
데이터 타입
Unsigned Integer
기본값
5
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
로그 생성시 해당 로그파일에 충분한 공간이 없으면 새로운 로그
파일을 생성하며, 이 경우 트랜잭션의 응답 시간은 늦어지게 된다.
이처럼 로그파일 생성으로 인해 트랜잭션의 수행이 늦어지는 것을
막기 위해 알티베이스는 여분의 로그파일을 미리 생성해 둔다. 이
여분의 로그파일의 개수를 지정하는 것이 이 프로퍼티이다.
알티베이스 프로퍼티 131
이중화 프로퍼티
다음 속성값들은 데이터베이스의 이중화 기능을 위한 값들이다.
데이터베이스 이중화에 대한 자세한 내용은 본 매뉴얼의
데이터베이스 이중화 부분과 Replication User's Manual 을
참조한다.
REPLICATION_ACK_XLOG_COUNT
데이터 타입
Unsigned Integer
기본값
100
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
수신 쓰레드가 송신 쓰레드에게 ACK 를 보내는 주기를 나타낸다.
수신 쓰레드는 XLog 를 받아서 하나씩 반영하는 작업을 하는데,
반영한 XLog 의 개수가 REPLICATION_ACK_XLOG_COUNT 를
넘게되면 송신 쓰레드에게 ACK 를 전송한다.
이 값이 너무 작으면 송신 쓰레드에 ACK 를 자주 보내게 되어 성능
저하를 가져올 수 있다.
너무 큰 경우에는 송신 쓰레드가 ACK 를 받는 시간을 초과하여
네트워크 장애로 판단할 수 있다. 또한, 오랜 시간 ACK 를 받지
못하는 경우 이중화 XSN 이 갱신되지 않아, 체크포인트시 송신
쓰레드가 가장 최근의 로그 레코드부터 다시 시작되며, 이중화하지
못한 로그 파일이 삭제되는 현상이 발생할 수 있다.
REPLICATION_CONNECT_RECEIVE_TIMEOUT (단위: 초)
데이터 타입
Unsigned Integer
기본값
60
속성
변경 가능, 단일 값
132 ALTIBASE5 Starting User’s Manual
값의 범위
[0, 2
32
-1]
설명
이중화 시작시 대상 호스트에 접속을 시도한 후, 대기하는 시간이다.
최소 0 에서 최대 2
32
-1 사이의 값을 가질 수 있다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
REPLICATION_DDL_ENABLE
데이터 타입
Unsigned Integer
기본값
0
속성
변경 가능, 단일 값
값의 범위
[0, 1]
설명
이중화 대상 테이블에 DDL 구문을 허용할 것인지를 나타낸다. 1 로
설정한 경우 이중화 대상 테이블에 DDL 을 실행할 수 있다.
DDL 을 수행하기 전에 현재 세션에서 수행하는 트랜잭션의 이중화
프로퍼티를 NONE 이외의 값으로 설정해야 송신 쓰레드에서 DDL
실행을 알 수 있다. 이중화에서 허용하는 DDL 목록과 제약사항은
Replication User's Manual 을 참조한다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
REPLICATION_HBT_DETECT_HIGHWATER_MARK
데이터 타입
Unsigned Integer
기본값
10
속성
변경 가능, 단일 값
값의 범위
알티베이스 프로퍼티 133
[0, 2
32
-1]
설명
연결(Connection) 응답을 하지 않는 경우 몇 회 이후에 장애로
판단할 것인지 결정한다. 따라서, 임의의 호스트의 장애를 판단하는
최대 시간은 REPLICATION_HBT_DETECT_TIME *
REPLICATION_HBT_DETECT_HIGHWATER_MARK 이다.
즉, HeartBeat 쓰레드는 기본값인 30 초 동안 연결이 되지 않을
경우 장애로 판단한다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
REPLICATION_HBT_DETECT_TIME(단위 : 초)
데이터 타입
Unsigned Integer
기본값
3
속성
변경 가능, 단일 값
값의 범위
[0, 2592000]
설명
HeartBeat 쓰레드
1
의 검사 주기를 설정한다. 기본값인 3 초 마다
HeartBeat 쓰레드는 해당 호스트에 대한 장애를 검사한다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
REPLICATION_KEEP_ALIVE_CNT
데이터 타입
Unsigned Integer
기본값
600
속성
1
HeartBeat 쓰레드: 알티베이스의 리플리케이션에서는 송신 쓰레드와 수신 쓰레드 간에 데이터 통신
수행 시 물리적인 장애가 발생했을 때 가능한 한 신속하게 장애를 검출하기 위하여 HeartBeat
Thread 를 만들어서 상대 호스트의 상태를 주기적으로 검사하도록 하는 기법을 도입했다.
134 ALTIBASE5 Starting User’s Manual
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
송신 쓰레드가 패킷을 전송하지 않고
(REPLICATION_SENDER_SLEEP_TIME *
REPLICATION_KEEP_ALIVE_CNT) 시간 동안 Sleep 하면,
KEEP_ALIVE 를 전송한다.
REPLICATION_LOG_BUFFER_SIZE (단위 : MB)
데이터 타입
Unsigned Integer
기본값
30
속성
읽기 전용, 단일 값
값의 범위
[0, 2
12
-1]
설명
이중화 전용 로그 버퍼를 사용함으로써 이중화 성능을 개선하는
프로퍼티이다. 이중화 전용 로그 버퍼에는 이중화에 필요한 로그만
필터링하여 저장하기 때문에 더 많은 로그가 버퍼에 존재한다.
송신 쓰레드는 로그를 읽기 위해서 로그 버퍼 또는 디스크에서
로그를 읽는다. 그러나 디스크에서 로그를 읽는 경우 송신 쓰레드의
처리 속도가 현저히 떨어질 수 있다. 더욱이 이중화를 실행하면
필요하지 않은 로그까지 읽어야 하는 부담이 발생한다. 이중화 전용
로그 버퍼는 이러한 부담을 완화시켜준다.
그러나 로그파일그룹(Log File Group, LFG)이 다수일 때에는 이중화
로그 버퍼를 사용할 수 없다. 만약 LFG 가 하나 이상이면,
REPLICATION_LOG_BUFFER_SIZE 값은 무시된다.
다수의 이중화 송신 쓰레드가 수행중일 때는 이중화 성능과 서비스
성능이 저하될 수 있다. 이중화 로그 버퍼가 하나이므로 다수의 송신
쓰레드가 접근한다면 동기화 오버헤드가 발생할 확률이 높아지기
때문이다.
이중화 로그 버퍼에서 읽은 로그는 REPLICATION_SYNC_LOG
값을 1 로 하여도 디스크에 기록되지 않은 상태에서 수신 쓰레드로
전송될 수 있다.
알티베이스 프로퍼티 135
REPLICATION_LOG_BUFFER_SIZE 를 너무 작게 설정하면,
사용하지 않는 것(0)보다 더 좋지 못한 성능을 낼 수 있다.
REPLICATION_MAX_LOGFILE
데이터 타입
Unsigned Integer
기본값
0
속성
변경 가능, 단일 값
값의 범위
[0, 65535]
설명
이중화를 위하여 재시작 리두 시점(Restart Redo Point)를 기준으로
삭제하지 않을 최대 로그파일의 개수이다.
이중화 시작 후, 지역 서버와 원격 서버간의 네트워크 속도 등의
문제로 지역 서버의 변경내용이 아직 원격 서버에 반영되지 않았을
경우, 체크포인트가 발생해도 로그 파일을 삭제할 수 없다. 이러한
문제가 발생하면, 지역서버의 로그파일 개수가 계속 증가하게 되고
결국 디스크가 가득 차버릴 수 있다(Disk Full). 따라서 체크포인트가
발생하였을 때 미리 정해 놓은 로그 파일 개수를 넘는 경우, 이중화
XSN 을 현재 로그파일로 변경시키고, 이전 로그파일들을 삭제한다.
그리고 이 변경된 XSN 을 참조하여 이중화를 수행한다.
0 으로 설정한 경우에는 이 기능을 적용하지 않는다. 참고로
체크포인트를 수행할 때 로그파일을 지우기 때문에,
CHECKPOINT_INTERVAL_IN_SEC 와
CHECKPOINT_IN_LOG 의 값을 함께 고려해야 한다.
REPLICATION_POOL_ELEMENT_COUNT(단위 : 개)
데이터 타입
Unsigned Integer
기본값
10
속성
변경 가능, 단일 값
값의 범위
[1, 1024]
136 ALTIBASE5 Starting User’s Manual
설명
송신 쓰레드가 로그를 분석하여 칼럼 값을 복사할 때 사용하는
메모리의 개수이다. 이 때 메모리는 메모리 풀에서 미리 할당하며,
메모리 크기는 REPLICATION_POOL_ELEMENT_SIZE 에서
지정한다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
REPLICATION_POOL_ELEMENT_SIZE(단위 : Byte)
데이터 타입
Unsigned Integer
기본값
256
속성
변경 가능, 단일 값
값의 범위
[128, 65536]
설명
송신 쓰레드가 로그를 분석하여 각각의 칼럼 값을 복사할 때
사용하는 메모리의 크기이다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
REPLICATION_PORT_NO
데이터 타입
Unsigned Integer
기본값
0
속성
읽기 전용, 단일 값
값의 범위
[0, 65535]
설명
지역 서버에서 이중화 연결을 할 때 지역 서버의 이중화 포트
번호이다.
REPLICATION_PREFETCH_LOGFILE_COUNT
알티베이스 프로퍼티 137
데이터 타입
Unsigned Integer
기본값
0
속성
변경 가능, 단일 값
값의 범위
[0, 1024]
설명
각각의 로그 파일 그룹에 대해서 미리 읽을 로그 파일의 수를
나타낸다. 로그 파일을 미리 읽어 둠으로써 송신 쓰레드가 파일에서
로그 레코드를 읽는 시간을 줄인다.
REPLICATION_RECOVERY_MAX_LOGFILE
데이터 타입
Unsigned Integer
기본값
0
속성
변경 가능, 단일 값
값의 범위
[0, 65535]
설명
이중화를 이용한 데이터 복구를 위하여 재시작 리두 시점(Restart
Redo Point)을 기준으로 삭제하지 않을 최대 로그 파일의 개수를
의미한다.
이중화를 이용한 데이터 복구를 하기 위하여 원격 서버에서 디스크에
반영(flush)되지 않은 로그에 해당하는 지역 서버의 로그를 삭제하지
않고 유지한다. 이 때 체크포인트가 발생해도 로그 파일을 삭제할 수
없어 지역 서버의 로그파일 개수가 계속 증가하게 되면 결국 디스크
풀이 발생할 수 있다.
따라서 체크포인트가 발생하였을 때 복구 옵션을 위한 로그 파일
개수의 최대 값을 넘는 경우, 이중화를 이용한 복구를 포기하고,
로그 파일들을 삭제한다. 그리고 이중화를 다시 시작한다.
0 으로 설정한 경우, 이 기능을 적용하지 않는다.
138 ALTIBASE5 Starting User’s Manual
체크포인트를 수행할 때 로그 파일을 지우기 때문에,
CHECKPOINT_INTERVAL_IN_SEC 와
CHECKPOINT_IN_LOG 의 값을 함께 고려해야 한다.
REPLICATION_RECOVERY_MAX_TIME (단위 : 초)
데이터 타입
Unsigned Integer
기본값
2
32
-1
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
이중화 모듈이 복구를 진행하는 중에 최대 시간이 지나면, 복구를
중단하고 지금까지 복구된 상태로 서비스를 진행할 수 있도록 한다.
이 값을 0 으로 설정하는 경우, 이중화를 이용한 복구 과정을
진행하지 않는다.
알티베이스는 이중화를 이용한 데이터 복구가 완료하기 전에 서비스
단계로 진행할 수 없어, 서비스 지연을 가져올 수 있다.
REPLICATION_SENDER_AUTO_START
데이터 타입
Unsigned Integer
기본값
1
속성
읽기 전용, 단일 값
값의 범위
[0, 1]
설명
알티베이스는 서버 재구동 시 종료를 시키지 않은 이중화의 송신
쓰레드가 존재하면 자동으로 띄우도록 되어 있다. 이 값을 0 으로
설정함으로써 송신 쓰레드를 자동으로 띄우지 않게 할 수 있다.
REPLICATION_SENDER_SLEEP_TIME (단위: 마이크로 초)
데이터 타입
알티베이스 프로퍼티 139
Unsigned Integer
기본값
10
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
송신 쓰레드가 더 이상 읽을 로그가 없을 때, Sleep 하는 시간을
나타낸다. 특정 플랫폼에서는 짧은 시간의 Sleep 이 무시되므로,
적당한 값을 지정해야 한다. REPLICATION_KEEP_ALIVE_CNT 와
함께 KEEP_ALIVE 를 전송하는 데 사용된다.
REPLICATION_SERVICE_WAIT_MAX_LIMIT (단위 : 개)
데이터 타입
Unsigned Integer
기본값
50000
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
지역 서버의 서비스 트랜잭션이 이중화가 되는 것을 기다릴 것인지
여부를 판단하는데 사용되며, ACKED 와 EAGER 모드에만 적용된다.
네트워크 장애나 원격 서버 장애시, 또는 이중화가 밀려서 이중화
갭이 REPLICATION_SERVICE_WAIT_MAX_LIMIT 를 초과하면,
트랜잭션은 LAZY 모드처럼 동작한다. 해당 트랜잭션은 송신
쓰레드가 자신이 기록한 모든 로그를 전송하지 못한 경우에도
COMMIT 을 수행하여 LAZY 모드처럼 동작한다.
그러나 장애가 복구된 후, 또는 이중화가 밀린 현상이 해소되어
이중화 갭이 REPLICATION_SERVICE_WAIT_MAX_LIMIT 값보다
작아지면, ACKED 또는 EAGER 모드로 정상 동작한다.
하지만 너무 큰 값을 지정하면, 장애 복구 후 지역 서버에서 발생한
트랜잭션의 COMMIT 에 오랜 시간이 걸릴 수 있다. 또한 너무 작은
값을 지정하면, 정상적인 상황에서도 LAZY 모드처럼 동작할 수 있다.
140 ALTIBASE5 Starting User’s Manual
REPLICATION_SYNC_LOG
데이터 타입
Unsigned Integer
기본값
0
속성
읽기 전용, 단일 값
값의 범위
[0, 1]
설명
이중화 수행 시 송신 쓰레드가 보내는 로그는, 디스크에
내려갔는지의 여부에 관계없이 메모리 상의 로그를 보내기 때문에,
시스템 또는 매체 장애(media failure)와 같은 상황에서 데이터
불일치 등의 문제가 발생할 소지가 있다.
이러한 문제를 해결하기 위해서, 이 값을 1 로 설정하면 송신
쓰레드는 디스크에 내려간 로그만 보낼 수 있도록 한다.
REPLICATION_SYNC_TUPLE_COUNT
데이터 타입
Unsigned long
기본값
30000
속성
변경 가능, 단일 값
값의 범위
[0, 2
64
-1]
설명
병렬 sync 시 송신 쓰레드가 한번에 읽어서 처리할 수 있는 레코드의
최대 개수를 지정한다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
REPLICATION_TIMESTAMP_RESOLUTION
데이터 타입
Unsigned Integer
알티베이스 프로퍼티 141
기본값
0
속성
변경 가능, 단일 값
값의 범위
[0, 1]
설명
Active-Active 이중화 환경에서 이 프로퍼티의 값이 1 로 설정되고,
이중화 대상 테이블에 TIMESTAMP 컬럼이 있는 경우에 conflict
resolution 에 대한 방법 중 timestamp-based scheme 을 사용한다.
즉, 이중화 대상 테이블에 TIMESTAMP 컬럼이 추가 되어 있을
지라도, 이 프로퍼티의 값이 0 이면 기존의 conflict resolution
scheme 이 사용된다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
REPLICATION_UPDATE_REPLACE
데이터 타입
Unsigned Integer
기본값
0
속성
변경 가능, 단일 값
값의 범위
[0, 1]
설명
이중화 작업중 변경작업 충돌(update conflict) 시 변경된 내용의
반영을 결정한다. 값이 0 이면 충돌이 있을 경우 반영하지 않고 오류
처리하며, 1 일 경우 충돌을 무시하고 반영한다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
142 ALTIBASE5 Starting User’s Manual
메시지 로그 관련 프로퍼티
ALL_MSGLOG_FLUSH
데이터 타입
Unsigned Integer
기본값
1
속성
단일 값
값의 범위
[0, 1]
설명
이 값이 1 인 경우 데이터베이스의 모든 메시지가 기록 즉시
디스크에 반영되고 0 인 경우에는 일정 주기에 한 번씩 디스크에
반영된다. 과도한 로깅으로 인한 성능저하를 예방하기 위해서는
0 으로 설정하는 것이 적절하고, 데이터베이스 문제 진단 시에는 1 로
설정하고 작업한다.
QP_MSGLOG_COUNT
데이터 타입
Unsigned Integer
기본값
10
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
질의 처리기 메시지 파일의 최대 개수를 지정한다.
QP_MSGLOG_DIR
데이터 타입
String
기본값
$ALTIBASE_HOME/trc
알티베이스 프로퍼티 143
속성
읽기 전용, 단일 값
값의 범위
없음
설명
질의 처리기 모듈의 메시지 파일이 위치해야 할 디렉토리를 지정한다.
QP_MSGLOG_FLAG
데이터 타입
Unsigned Integer
기본값
2
속성
변경가능, 단일 값
값의 범위
[0, 2
32
-1]
설명
쿼리 프로세싱 모듈에서 발생하는 경고 메시지나 트레이스 메시지를
QP_MSGLOG_FILE 에 기록 할지 여부를 나타내는 플래그 값이다.
0 이면 기록하지 않고, 0 보다 큰값이면 기록한다.
QP_MSGLOG_FILE
데이터 타입
String
기본값
altibase_qp.log
속성
읽기 전용, 단일 값
값의 범위
없음
설명
질의 연산 (Query Processing) 처리 시에 발생하는 메시지가
기록되는 파일이다.
QP_MSGLOG_SIZE(단위 : 바이트)
144 ALTIBASE5 Starting User’s Manual
데이터 타입
Unsigned Integer
기본값
10 * 1024 * 1024
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
질의 처리기 메시지 파일의 최대 크기를 지정한다.
QUERY_PROF_FLAG
데이터 타입
Integer
기본값
0
속성
변경 가능, 단일 값
값의 범위
[0, 2
6
-1]
설명
서버 내에서 수행되는 작업과 서버의 상태 정보를 파일로 기록하여
분석할 수 있도록 한다. 사용자는 값을 조합하여 원하는 정보를
기록하도록 설정할 수 있으며, 값에 따라서 기록되는 정보는 다음과
같다.
0 : 기록하지 않음
1 : SQL 문이 실행될 때마다 실행된 SQL 문, 실행시간, 실행정보,
색인 및 디스크 접근 정보 출력
2 : SQL 문이 실행될 때마다 BIND 파라미터 출력
4 : SQL 문이 실행될 때마다 실행계획 출력
8 : 3 초마다 세션 정보 출력(V$SESSTAT 정보)
16 : 3 초마다 시스템 정보 출력(V$SYSSTAT 정보)
32 : 3 초마다 메모리 정보 출력(V$MEMSTAT 정보)
알티베이스 프로퍼티 145
예를 들어 프로퍼티를 1+4+32=37 로 설정하면, SQL 문이 실행될
때마다 SQL 문의 실행 정보와 실행계획을 출력하고 3 초마다 메모리
정보를 출력한다.
파일에 대한 분석은 ALTIPROFILE 유틸리티로 가능하며, 자세한
설명은
Utilities User’s Manual 의 유틸리티를 참조한다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
RP_MSGLOG_COUNT
데이터 타입
Unsigned Integer
기본값
10
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
이중화 메시지 파일의 최대 개수를 지정한다.
RP_MSGLOG_DIR
데이터 타입
String
기본값
$ALTIBASE_HOME/trc
속성
읽기 전용, 단일 값
값의 범위
없음
설명
이중화 모듈의 메시지 파일이 위치해야 할 디렉토리를 지정한다.
RP_MSGLOG_FILE
데이터 타입
String
기본값
146 ALTIBASE5 Starting User’s Manual
altibase_rp.log
속성
읽기 전용, 단일 값
값의 범위
없음
설명
복제 관리자 (Replication) 처리 과정에서 발생하는 메시지가
기록되는 파일이다.
RP_MSGLOG_SIZE (단위 : 바이트)
데이터 타입
Unsigned Integer
기본값
10 * 1024 * 1024
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
이중화 메시지 파일의 최대 크기를 지정한다.
RP_MSGLOG_FLAG
데이터 타입
Unsigned Integer
기본값
6
속성
변경가능, 단일 값
값의 범위
[0, 2
32
-1]
설명
복제 관리자(Replication Manager)모듈에서 발생하는 경고 메시지나
트레이스 메시지를 RP_MSGLOG_FILE 에 기록 할지 여부를
나타내는 플래그 값이다.
0 이면 기록하지 않고, 0 보다 큰값이면 기록한다.
알티베이스 프로퍼티 147
DL_MSGLOG_COUNT
데이터 타입
Unsigned Integer
기본값
10
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
데이터베이스 링크 메시지 파일의 최대 개수를 지정한다.
DL_MSGLOG_DIR
데이터 타입
String
기본값
$ALTIBASE_HOME/trc
속성
읽기 전용, 단일 값
값의 범위
없음
설명
데이터베이스 링크 모듈의 메시지 파일이 위치해야 할 디렉토리를
지정한다.
DL_MSGLOG_FILE
데이터 타입
String
기본값
altibase_dl.log
속성
읽기 전용, 단일 값
값의 범위
없음
148 ALTIBASE5 Starting User’s Manual
설명
데이터베이스 링크를 처리하는 과정에서 발생하는 메시지가 기록되는
파일이다.
DL_MSGLOG_SIZE
데이터 타입
Unsigned Integer
기본값
10 * 1024 * 1024
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
데이터베이스 링크 메시지 파일의 최대 크기를 지정한다.
DL_MSGLOG_FLAG
데이터 타입
Unsigned Integer
기본값
6
속성
변경 가능, 단일 값
값의 범위
[0, 2
32
-1]
설명
데이터베이스 링크 모듈에서 발생하는 경고 메시지나 추적 메시지를
DL_MSGLOG_FILE 에 기록할 것인지 여부를 나타내는 플래그
값이다.
0 이면 DL_MSGLOG_FILE 에 기록하지 않고, 0 보다 큰 값이면
기록한다.
LK_MSGLOG_COUNT
데이터 타입
Unsigned Integer
기본값
알티베이스 프로퍼티 149
10
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
데이터베이스 링크를 할 때 연결 프로세스에 지정할 수 있는 메시지
파일의 최대 개수를 설정한다.
LK_MSGLOG_DIR
데이터 타입
String
기본값
$ALTIBASE_HOME/trc
속성
읽기 전용, 단일 값
값의 범위
없음
설명
데이터베이스 링크에서 연결 프로세스 모듈의 메시지 파일이
위치해야 할 디렉토리를 지정한다.
LK_MSGLOG_FILE
데이터 타입
String
기본값
altibase_lk.log
속성
읽기 전용, 단일 값
값의 범위
없음
설명
데이터베이스 링크가 연결 프로세스 처리 과정에서 발생하는
메시지를 기록되는 파일이다.
LK_MSGLOG_SIZE
150 ALTIBASE5 Starting User’s Manual
데이터 타입
Unsigned Integer
기본값
10 * 1024 * 1024
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
데이터베이스 링크에서 연결 프로세스의 메시지 파일 최대 크기를
지정한다.
LK_MSGLOG_FLAG
데이터 타입
Unsigned Integer
기본값
6
속성
변경 가능, 단일 값
값의 범위
[0, 2
32
-1]
설명
데이터베이스 링크의 연결 프로세스 모듈에서 발생하는 경고
메시지나 추적 메시지를 LK_MSGLOG_FILE 에 기록할 것인지
여부를 나타내는 플래그 값이다.
0 이면 기록하지 않고, 0 보다 큰값이면 기록한다.
NETWORK_ERROR_LOG
데이터 타입
Unsigned Integer
기본값
1
속성
변경 가능, 단일 값
값의 범위
알티베이스 프로퍼티 151
[0, 1]
설명
서버 메시지 파일에 네트워크 관련 에러 메시지의 출력 여부를
지정한다.
네트워크 환경이 불안정하여 에러 메시지의 출력이 많을 때 0 으로
설정하면, 네트워크 관련 에러 메시지의 출력을 막을수 있다.
SERVER_MSGLOG_COUNT
데이터 타입
Unsigned Integer
기본값
10
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
서버 메시지 파일의 최대 개수를 지정한다.
SERVER_MSGLOG_DIR
데이터 타입
String
기본값
$ALTIBASE_HOME/trc
속성
읽기 전용, 단일 값
값의 범위
없음
설명
서버 구동및 종료 등에 대한 시스템 정보가 기록되어 있는 서버
모듈의 메시지 파일인 SERVER_MSGLOG_FILE 과 서버 관리
프로그램에서 사용하는 내부파일인 altibase.lock 이 위치할 경로이다.
SM_MSGLOG_DIR,QP_MSGLOG_DIR,RP_MSGLOG_DIR 등과
같은 각 모듈의 기본 메시지 경로 프로퍼티가 설정되어 있지 않는
경우에 각 모듈의 기본 메시지 파일 경로로도 사용된다.
152 ALTIBASE5 Starting User’s Manual
SERVER_MSGLOG_FILE
데이터 타입
String
기본값
altibase_boot.log
속성
읽기 전용, 단일 값
값의 범위
없음
설명
서버 모듈에 대한 메시지를 남기는 파일명을 지정한다.
알티베이스의 구동 및 경고, 비정상 종료 시에 출력되는 메시지를
기록하는 파일이다.
SERVER_MSGLOG_SIZE(단위 : 바이트)
데이터 타입
Unsigned Integer
기본값
10 * 1024 * 1024
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
서버 메시지 파일의 최대 크기를 지정한다.
SERVER_MSGLOG_FLAG
데이터 타입
Unsigned Integer
기본값
7
속성
변경가능, 단일 값
값의 범위
알티베이스 프로퍼티 153
[0, 2
32
-1]
설명
서버 모듈에서 발생하는 경고 메시지나 트레이스 메시지를
SERVER_MSGLOG_FILE 에 기록 할지 여부를 나타내는 플래그
값이다.
0 이면 기록하지 않고, 0 보다 큰 값이면 기록한다.
SM_MSGLOG_COUNT
데이터 타입
Unsigned Integer
기본값
10
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
저장 관리자 메시지 파일의 최대 개수를 지정한다.
SM_MSGLOG_DIR
데이터 타입
String
기본값
$ALTIBASE_HOME/trc
속성
읽기 전용, 단일 값
값의 범위
없음
설명
저장 관리자 모듈의 메시지 파일이 위치해야 할 디렉토리를 지정한다.
SM_MSGLOG_FILE
데이터 타입
String
기본값
154 ALTIBASE5 Starting User’s Manual
altibase_sm.log
속성
읽기 전용, 단일 값
값의 범위
없음
설명
저장 관리자(Storage Manager) 처리 과정에서 발생하는 메시지가
기록되는 파일이다.
SM_MSGLOG_SIZE(단위 : 바이트)
데이터 타입
Unsigned Integer
기본값
10 * 1024 * 1024
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
저장 관리자 메시지 파일의 최대 크기를 지정한다.
SM_MSGLOG_FLAG
데이터 타입
Unsigned Integer
기본값
2147483647
속성
변경가능, 단일 값
값의 범위
[0, 2
32
-1]
설명
저장 관리자(Storage Manager)모듈에서 발생하는 경고 메시지나
트레이스 메시지를 SM_MSGLOG_FILE 에 기록 할지 여부를
나타내는 플래그 값이다. 0 이면 기록하지 않고, 0 보다 큰값이면
기록한다.
알티베이스 프로퍼티 155
TRCLOG_DETAIL_PREDICATE
데이터 타입
Unsigned Integer
기본값
0
속성
변경 가능, 단일 값
값의 범위
[0, 1]
설명
Isql 에서 Explain plan 기능 사용 시 where 절의 predicate 분류
상태를 나타낸다. 이 trace log 를 사용하기 위해 1 을 설정한다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
TRCLOG_SET_LOCK_TIME
데이터 타입
Unsigned Integer
기본값
0
속성
변경 가능, 단일 값
값의 범위
[0, 1]
설명
잠금 설정 시간을 altibase_boot.log 파일에 기록한다.
이 trace log 를 사용하기 위해 1 을 설정한다.
XA_MSGLOG_COUNT
데이터 타입
Unsigned Integer
기본값
10
속성
156 ALTIBASE5 Starting User’s Manual
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
서버용 XA 메시지 파일의 최대 개수를 지정한다.
XA_MSGLOG_DIR
데이터 타입
String
기본값
$ALTIBASE_HOME/trc
속성
읽기 전용, 단일 값
값의 범위
없음
설명
서버용 XA 메시지 파일이 위치해야 할 디렉토리를 지정한다.
XA_MSGLOG_FILE
데이터 타입
String
기본값
altibase_xa.log
속성
읽기 전용, 단일 값
값의 범위
없음
설명
서버용 XA 메시지 로그가 기록되는 파일이다.
XA_MSGLOG_SIZE
데이터 타입
Unsigned Integer
기본값
10 * 1024 * 1024
알티베이스 프로퍼티 157
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
서버용 XA 메시지 파일의 최대 크기를 지정한다.
XA_MSGLOG_FLAG
데이터 타입
Unsigned Integer
기본값
3
속성
변경가능, 단일 값
값의 범위
[0, 3]
설명
서버용 XA 메시지 로그의 기록 단계를 설정하는 속성으로 설정값은
다음과 같다.
0: XA 관련 최소 필수 메시지만 기록
1: XA 연산 호출을 기록
2: XID 할당, 해제 등을 기록함
3: XA 관련 모든 메시지 로그를 기록함
158 ALTIBASE5 Starting User’s Manual
데이터베이스 링크 관련 프로퍼티
AUTO_REMOTE_EXEC
데이터 타입
Unsigned Integer
기본값
0
속성
변경 가능, 단일 값
값의 범위
[0, 1]
설명
데이터베이스 링크를 사용할 때, SQL 구문에서 직접
EXEC_REMOTE 힌트를 사용하지 않고도 원격 서버에서 검색
대상에 대한 결과만 가져올 수 있다.
0 : 기본 동작
1 : 원격 서버로 질의문을 전달 (REMOTE 힌트 기능)
알티베이스 가동 중 ALTER SYSTEM 문 또는 ALTER SESSION
문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
DBLINK_ENABLE
데이터 타입
Unsigned Integer
기본값
0
속성
읽기 전용, 단일 값
값의 범위
[0, 1]
설명
데이터베이스 링크 사용 여부를 결정한다. 데이터베이스 링크를
사용하고자 할 때는 이 값을 1 로 설정한다. 값이 0 이면
데이터베이스 링크를 사용할 수 없다.
LINKER_LINK_TYPE
알티베이스 프로퍼티 159
데이터 타입
Unsigned Integer
기본값
0
속성
읽기 전용, 단일 값
값의 범위
[0, 2]
설명
알티베이스 서버와 AltiLinker 사이의 통신 방법을 결정한다.
이 값이 0 이면 TCP, 1 이면 Unix domain, 2 이면 IPC 로
통신한다(현재는 TCP 와 Unix domain 만 지원).
LINKER_PORT_NO
데이터 타입
Unsigned Integer
기본값
0
속성
읽기 전용, 단일 값
값의 범위
[0, 65535]
설명
AltiLinker 의 통신 방법이 TCP 일때, AltiLinker 에서 대기할 포트
번호를 지정한다.
LINKER_THREAD_COUNT
데이터 타입
Unsigned Integer
기본값
16
속성
읽기 전용, 단일 값
값의 범위
160 ALTIBASE5 Starting User’s Manual
[0, 100]
설명
AltiLinker 에서 띄울 Linker 쓰레드 개수를 지정한다.
LINKER_THREAD_SLEEP_TIME(단위: 마이크로초)
데이터 타입
Unsigned Integer
기본값
200 (윈도우 환경에서는 1000 이상)
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
Linker 쓰레드가 처리할 작업이 없을 때 대기하는 시간을 지정한다.
시스템의 원활한 운영을 위해 유닉스 환경에서는 기본값으로 200 을
설정하지만, 윈도우 환경에서는 1000 이상을 설정한다.
MAX_DBLINK_COUNT
데이터 타입
Unsigned Integer
기본값
10
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
데이터베이스 링크에서 사용할 캐쉬 관리자의 개수를 지정한다. 생성
가능한 데이터베이스 링크 수와는 관계 없으며 여기에 주어진 값보다
많은 개수의 데이터베이스 링크를 생성할 수 있다.
그러나 데이터베이스 링크 수가 Cache 의 수보다 많으면 cache 가
자주 바뀌어 성능이 저하될 수 있다.
LINKER_SQLLEN_SIZE
데이터 타입
알티베이스 프로퍼티 161
Unsigned Integer
기본값
0
속성
읽기 전용, 단일 값
값의 범위
[0, 2
32
-1]
설명
UNIXODBC 에서 사용되는 SQLLEN 의 크기를 바이트 혹은 비트
단위로 지정한다. 4 혹은 32 로 설정할 경우, 4 바이트 즉 32 비트로
지정되며 8, 64 는 64 비트로 지정된다. 설정값이 애매한 경우,
sizeof(SQLLEN)으로 설정하는 것이 좋다.
162 ALTIBASE5 Starting User’s Manual
기타 프로퍼티
ACCESS_LIST
형식
ACCESS_LIST = operation, address, mask
값의 범위
y operation ::= [PERMIT|DENY]
검사 규칙과 일치하는 IP 패킷의 접근을 허용할 것인지 제한할
것인지 기술한다.
y address
검사할 패킷의 IP 주소를 기술한다.
y mask
서브넷 마스크로, 패킷의 IP 주소 중, 특정 부분만 검사하도록
설정한다.
검사 규칙
IF
BITXOR(BITAND(
IP_패킷,mask), BITAND(address,mask)) = 0
THEN 일치
ELSE 불일치
설명
알티베이스 데이타베이스에 접근하고자 하는 IP 패킷을 주소에 따라
접근을 제한하거나 허용할 수 있다. IP 패킷의 주소를 검사 규칙에
따라 검사하여, 일치하면 operation 에 기술된 대로 허용 또는
제한하며 불일치하면 무시하고 다음 리스트를 검사한다.
IP 패킷의 주소를 여러 개가 지정될 경우 기술된 순서대로 검사한다.
일치하는 조건이 없을 경우, 접근이 허용된다.
예제
IP 주소가 192.168.1.55 인 패킷만 접근을 제한하고 나머지는
허용한다.
ACCESS_LIST = deny, 192.168.1.55, 255.255.255.255
192.168.3.*, 219.211.253.* 주소들은 접근을 허용하고 나머지는
모두 제한한다.
ACCESS_LIST = permit, 192.168.3.0, 255.255.255.0
ACCESS_LIST = permit, 219.211.253.0, 255.255.255.0
ACCESS_LIST = deny ,0.0.0.0, 0.0.0.0
ADMIN_MODE
알티베이스 프로퍼티 163
데이터 타입
Unsigned Integer
기본값
0
속성
변경 가능, 단일 값
값의 범위
[0, 1]
설명
이 프로퍼티 값을 1(ON)로 설정하면 관리자 모드로 활성화되어 SYS
또는 SYSTEM_ 사용자가 SYSDBA 옵션으로 서버와 연결을 맺어
작업을 할 수 있고 그 외 일반 사용자들은 연결 자체가 실패한다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
CHECK_MUTEX_DURATION_TIME_ENABLE
데이터 타입
Unsigned Integer
기본 값
0
속성
변경 가능, 단일 값
값의 범위
[0, 1]
설명
MUTEX_DURATION_TIME 을 확인할 것인지 여부를 설정한다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
0 : check disable
1 : check enable
DEFAULT_DATE_FORMAT
데이터 타입
String
기본값
164 ALTIBASE5 Starting User’s Manual
DD-MON-RRRR
속성
읽기 전용, 단일 값
값의 범위
없음
설명
테이블의 칼럼 도메인 중 DATE 타입 데이터의 기본 형식을
지정한다. 이 타입은 날짜, 시간을 저장할 수 있는 형식으로
제공되어야 한다. 형식은 “DD MON RRRR” 과 같이 따옴표 내에
공백도 사용할 수 있다.
DEFAULT_DATE_FORMAT = YYYY/MM/DD
iSQL> select sysdate from dual;
SYSDATE
---------
2008/06/16
1 row selected.
EXEC_DDL_DISABLE
데이터 타입
Unsigned Integer
기본값
0
속성
변경 가능, 단일 값
값의 범위
[0, 1]
설명
일반적으로 초기 데이터베이스를 구축한 이후에는 DML 을 훨씬 더
빈번하게 수행하며 DDL 수행은 기존 데이터베이스 스키마를
변경시키는 작업이므로 상당한 주의를 요한다.
따라서 알티베이스 운영 중 DDL 을 수행하지 못하도록 운영자가
설정할 수 있으며 이 프로퍼티의 값을 1 로 설정하면 알티베이스
운영 중 DDL 을 수행할 수 없으며 0 인 경우 DDL 을 수행할 수 있다.
알티베이스 가동 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의
값을 변경할 수 있다.
QUERY_STACK_SIZE (단위 : 개)
데이터 타입
알티베이스 프로퍼티 165
Unsigned Integer
기본값
1024
속성
변경 가능, 단일 값
값의 범위
[8, 65536]
설명
질의 수행 시 연산 및 비교 등의 연산자를 처리하기 위해 시스템
내부적으로 사용하는 스택의 크기를 설정하는 시스템 프로퍼티이다.
복잡한 연산식 또는 저장프로시저와 같이 많은 구문이 사용될 경우
stack overflow 오류가 날 수 있고 이 때 프로퍼티 값을 큰 값으로
변경해야 한다. 응용 프로그램 환경에 따라 적절한 값을 설정해야
하며 필요 이상 큰 값으로 설정할 경우 불필요한 메모리 공간 낭비가
될 수 있으므로 유의해야 한다.
Altibase.properties 파일에 명시할 수 있으며 ALTER SYSTEM
또는 ALTER SESSION 명령문으로 변경할 수 있다.
ALTER SESSION 문으로 변경하는 경우 다음과 같은 별도의
SQL 문을 지원한다.
ALTER SESSION SET STACK SIZE = n;
REMOTE_SYSDBA_ENABLE
데이터 타입
Unsigned Integer
기본값
1
속성
변경 가능, 단일 값
값의 범위
[0, 1]
설명
SYS 사용자가 원격에서 SYSDBA 권한으로 접속할 수 있는지 여부를
설정한다. ALTER SYSTEM 명령문으로 값을 변경할 수 있다.
0 : 원격에서 SYSDBA 권한으로 접속 불가
1 : 원격에서 SYSDBA 권한으로 접속 가능 (기본값)
166 ALTIBASE5 Starting User’s Manual
SELECT_HEADER_DISPLAY
데이터 타입
Unsigned Integer
기본값
0
속성
변경 가능, 단일 값
값의 범위
[0, 1]
설명
검색 대상이 select all (*)로서, 결과 출력 시 iSQL 상에 칼럼
이름만 출력할 것인지, 테이블 이름과 함께 칼럼 이름을 출력할
것인지를 설정하는 시스템 프로퍼티이다.
Altibase.properties 파일에 명시할 수 있으며 ALTER SYSTEM
또는 ALTER SESSION 명령문으로 변경할 수 있다. 값이 0 인 경우
iSQL 상에서 결과 출력 시 테이블 이름과 칼럼 이름이 함께
출력된다.
알티베이스 객체 및 권한 167
5. 데이터베이스 객체 및
권한 관리
이 장에서는 스키마 객체와 비-스키마 객체를 구분하고 각각에
포함되는 데이터베이스 객체에 대해 설명한다.
168 ALTIBASE5 Starting User’s Manual
데이터베이스 객체 개요
데이터베이스 객체는 특정 스키마에 속하여 관리되는 스키마 객체와
스키마와 관계없이 데이터베이스 전체에서 관리되는 비-스키마
객체로 구분할 수 있다. 이 장에서는 스키마 객체와 비-스키마
객체를 구분하고 각각에 포함되는 데이터베이스 객체에 대해
설명한다.
스키마 객체
스키마란 데이터 또는 객체들의 논리적 집합으로 한 사용자는 하나의
스키마를 소유하고 SQL 문에 의해 관리한다. 이러한 스키마에
포함되는 객체를 스키마 객체라고 하며, 알티베이스는 다음과 같은
스키마 객체를 제공한다.
테이블(Table)
테이블은 가장 기본적인 데이터 저장 단위로 칼럼들로 구성된
레코드들의 집합이다. 알티베이스의 테이블은 데이터의 저장 공간에
따라 메모리 테이블과 디스크 테이블로 구별되고, 생성자에 따라
시스템이 생성하고 관리하는 시스템 테이블과 사용자가 생성하는
일반 테이블로 구별될 수도 있다.
시스템 테이블은 달리 데이터 딕셔너리라고 하며 알티베이스에서
제공하는 데이터 딕셔너리의 종류와 정보에 대해서는
Administrator’s Manual 중 데이터 딕셔너리 부분에서 자세히
설명한다.
또한 이중화 대상 테이블의 경우 테이블 관리가 특별하며 대용량
테이블의 경우에도 주의를 요하는 사항들이 있다.
이에 대한 보다 자세한 내용은
Administrator’s Manual 중
데이터베이스 객체 및 권한 관리 부분의 테이블 관리에서 자세히
설명한다.
큐 테이블(Queue Table)
알티베이스는 메시지 큐잉 기능을 이용하여 데이터베이스와 사용자
프로그램간의 비동기 데이터 통신을 지원한다. 이때 사용되는 큐
테이블은 데이터베이스 오브젝트의 하나로써 다른 데이터베이스
테이블과 마찬가기로 DDL 과 DML 로 제어할 수 있다.
큐 테이블의 개념과 기능에 대해서는
Administrator’s Manual
중의 데이터베이스 객체 및 권한 관리 부분의 테이블 관리에서
자세히 설명한다.
알티베이스 객체 및 권한 169
제약조건(Constraint)
제약 조건이란 테이블의 데이터 삽입 또는 변경 시 제약 사항을
설정하여 데이터의 일관성을 유지할 수 있도록 하는 조건을 의미한다.
제약조건의 대상에 따라 칼럼 제약조건과 테이블 제약조건으로
구별할 수 있고, 제약 사항에 따라 다음과 같은 종류의 제약조건을
제공한다.
y NOT NULL / NULL 제약조건
y 유일 키(unique key) 제약조건
y 주 키(primary key) 제약조건
y 외래 키(foreign key) 제약조건
y TIMESTAMP 제약조건
이에 대한 보다 자세한 내용은
Administrator’s Manual 제약조건
관리에서 자세히 설명한다.
LOB
LOB(Large Object)은 문자 자료나 이미지 파일과 같은 대용량
데이터를 저장하기 위한 데이터 타입이다. LOB 으로 저장이 가능한
크기는 최대 2G-1 바이트이며, 하나의 테이블에 하나 이상의 LOB
타입 칼럼을 정의할 수 있다. LOB 데이타 타입은 이미지, 동영상
파일들과 같이 이진 데이터를 저장하는 BLOB(Binary Large
Object)과 문자열 데이타를 저장하는 CLOB(Character Large
Object)으로 나눌 수 있다.
이에 대한 보다 자세한 내용은
SQL User’s Manual의 LOB
데이터 타입에서 자세히 설명한다.
인덱스(Index)
인덱스는 테이블 내 레코드들의 빠른 접근이 가능하도록 하는
구조체로 테이블에 인덱스를 생성하여 DML 문의 처리 성능을
향상시킬 수 있다.
이에 대한 보다 자세한 내용은
Administrator’s Manual 인덱스
관리에서 자세히 설명한다.
뷰(View)
뷰(View)란 실제 데이터 자체는 포함하지 않고, 하나 이상의 테이블
또는 뷰를 기반으로 한 논리적 테이블(logical table)을 의미한다.
(알티베이스는 변경 가능한 뷰(Updatable view)와 실체화
뷰(materialized view)는 제공하지 않는다.)
이에 대한 보다 자세한 내용은
Administrator’s Manual 뷰
관리에서 자세히 설명한다.
시퀀스(Sequence)
170 ALTIBASE5 Starting User’s Manual
알티베이스는 유일키를 생성하는 있는 키 생성자로 시퀀스를
제공한다.
이에 대한 보다 자세한 내용은
Administrator’s Manual 시퀀스
관리에서 자세히 설명한다.
저장 프로시저 및 저장 함수 (Stored Procedure or Function)
저장 프로시저(Stored Prodedure)란 SQL 문들과 흐름 제어문,
할당문, 오류 처리 루틴 등을 이용해 전체 업무 절차를
프로그래밍하여 하나의 모듈로 만든 후 데이터베이스에 영구적으로
저장해 두고, 모듈 이름만을 호출하여 전체 업무 절차를 서버에서
한번에 수행하는 데이터베이스 객체이다.
이에 대한 보다 자세한 내용은
Administrator’s Manual 저장
프로시저 및 저장 함수 관리에서 전반적인 관리 개요를 설명한다.
알티베이스 저장 프로시저의 특장점, 자세한 관리 방법 등에
대해서는
Stored Procedure User’s Manual에서 자세히 설명한다.
타입 세트(Type Set)
타입 세트(Type Set)란 저장 프로시저 및 저장 함수에서 사용하는
사용자 정의 타입들을 한 곳에 모아서 관리하도록 해 주는
데이터베이스 객체이다.
이에 대한 보다 자세한 내용은 Stored Procedure User’s
Manual 에서 자세히 설명한다.
데이터베이스 트리거(Database Triger)
트리거란 테이블에 데이터가 삽입, 삭제, 또는 갱신될 때 시스템에
의해 묵시적으로 작동되어 특정 작업 절차를 자동으로 수행할 수
있도록 하는 저장 프로시저다. 사용자는 테이블에 대해 제약조건과
트리거를 정의하여 데이터의 일관성을 유지할 수 있다.
이에 대해서는 Administrator’s Manual 트리거 관리에서 자세히
설명한다.
데이터베이스 링크(Database Link)
데이터베이스 링크는 지역적으로 분리되어 있으나 네트워크로 연결된
데이터 서버들을 연동하여 개별 데이터들을 통합, 하나의 결과를
생성할 수 있게 한다.
비스키마 객체
특정 스키마에 소속되지 않고 전체 데이터베이스 수준에서 관리되는
객체를 비스키마 객체라고 하고 알티베이스는 다음과 같은 비스키마
알티베이스 객체 및 권한 171
객체를 제공한다.
이중화(Replication)
이중화는 시스템이 자동으로 한 지역서버에서 원격 서버로 데이터를
전송해 다른 서버들간의 테이블 데이터를 동일하게 유지해 줄 수
있도록 하는 객체이다.
이중화에 대한 자세한 기능과 이중화 관리에 대해서는
Replication
User’s Manual
을 참조한다.
테이블스페이스(Tablespace)
테이블스페이스는 가장 큰 논리적 데이터 저장 단위로
데이터베이스는 여러 개의 테이블스페이스 단위로 나뉘어져 관리된다.
알티베이스는 데이터베이스를 생성하면 자동적으로 시스템
테이블스페이스가 생성되며, 사용자가 임의로 사용자 정의
테이블스페이스를 생성하기도 한다.
알티베이스는 데이터베이스 객체가 디스크에 상주하는 디스크
테이블스페이스와 메모리에 상주하는 메모리 테이블스페이스,
메모리에 상주하면서 로깅을 하지않는 휘발성 테이블스페이스를
지원한다.
테이블스페이스 관리에 대한 자세한 내용은
Administrator’s
Manual
테이블스페이스 관리 부분을 참조한다.
파티션드 테이블(Partitioned Table)
테이블이 파티션되는 경우 해당 테이블을 파티션드
테이블(Partitioned Table)이라고 한다. 파티션드 테이블은 대용량
테이블을 파티셔닝 조건(범위, 리스트, 해시)에 따라 다수의
파티션으로 분리한 테이블을 의미한다.
테이블스페이스 관리에 대한 자세한 내용은
Administrator’s
Manual
파티션드 테이블 부분을 참조한다.
파티션드 인덱스(Partitioned Index)
인덱스가 파티션되는 여부에 따라 파티션드 인덱스(partitioned
index) 또는 논파티션드 인덱스(non partitioned index)로 분류한다.
논파티션드 인덱스는 파티션으로 분할되지 않은 인덱스를 의미하며,
파티션드 인덱스는 파티션드 테이블과 마찬가지로 대용량 인덱스를
파티션 조건에 따라 분리한 인덱스를 의미한다.
테이블스페이스 관리에 대한 자세한 내용은
Administrator’s
Manual
파티션드 테이블 부분을 참조한다.
사용자(User)
스키마의 소유자로 알티베이스 접속을 위해서는 사용자 계정이
172 ALTIBASE5 Starting User’s Manual
필요하다. 사용자는 시스템에 의해 생성되어 전체 시스템 관리자인
시스템 사용자와 일반 사용자로 구별된다.
일반 사용자의 경우 데이터베이스에 접근하여 데이터를 조작하기
위해서는 적절한 권한 관리를 요한다.
이에 대해서는
Administrator’s Manual 사용자 관리와 권한
관리에서 자세히 설명한다.
알티베이스 객체 및 권한 173
권한 관리 개요
사용자가 데이터베이스 객체 또는 데이터에 접근하기 위해서는
적절한 권한을 필요로 한다. 이 절에서는 사용자와 권한 및 객체와
권한에 대해 이를 관리하는 방법에 대해 설명한다.
권한 관리의 종류
알티베이스는 사용자가 권한(privilege)을 관리할 수 있는 기능은
지원하지만 권한들의 묶음인 롤(role)은 지원하지 않는다.
알티베이스가 지원하는 권한의 종류는 다음과 같다.
시스템 접근 권한(System Privilege)
시스템 접근 권한은 일반적으로 DBA 가 관리를 하며,
데이터베이스에 특정한 작업을 수행하거나 모든 스키마에 있는
객체들을 관리할 수 있는 권한이다.
객체 접근 권한 (Object Privilege)
객체 접근 권한은 객체의 소유자가 관리를 하며, 객체에 접근하고
조작할 수 있는 권한이다. 알티베이스가 지원하는 전체 권한의
목록은 Administrator’s Manual 의 권한 관리를 참조하고, 관련된
자세한 설명은 SQL User’s Manual 을 참조한다.
권한 부여
데이터베이스 생성 이후 초기 상태에 존재하는 사용자로
SYSTEM_와 SYS 사용자의 경우 DBA 로서 모든 권한을 갖고
있으며, 일반 사용자에게 임의의 권한을 부여할 수 있다.
일반 사용자의 경우 CREATE USER 문 사용해 사용자가 생성될 때
CREATE SESSION, CREATE TABLE 문 데이터베이스에 접근할 수
있는 최소 권한들을 시스템에 의해 자동으로 부여 받는다. 그 외의
권한들은 DBA 로부터 명시적으로 권한을 부여 받아야 한다.
권한을 부여하고 관리하는 방법에 대한 자세한 내용은
Administrator’s Manual 의 권한 관리, SQL User’s Manual 을
참조한다.
권한 해제
174 ALTIBASE5 Starting User’s Manual
SYSTEM_와 SYS 사용자를 제외한 일반 사용자의 경우 사용자에게
기 부여된 권한은 REVOKE 문을 사용해 명시적으로 해제할 수 있다.
CREATE USER 문으로 사용자 생성 시 시스템에 의해 자동으로
부여된 권한들도 필요한 경우 해제할 수 있다.
그러나 SYSTEM_와 SYS 사용자의 권한은 해제할 수 없다.
Part II 175
Part II
다국어 지원 177
6. 다국어 지원
ALTIBASE가 지원하는 다국어 지원 구조 및 다국어 지원을 위한
환경 설정과 고려사항 등을 살펴본다.
178 ALTIBASE5 Starting User’s Manual
다국어 지원 개요
개념
다국어 지원을 한다는 것은 DBMS가 서로 다른 국가의 문자들을
저장하고 처리하는 것을 뜻한다. 즉, 하나의 DBMS로 한국어, 중국어,
일본어 등 서로 다른 문자를 사용하는 클라이언트에 대한 처리를
가능하게 한다.
관련 용어
y 캐릭터셋(Character-Set)
어떤 특정 문자 집합을 숫자 값으로 나타낸 것을 의미한다.
아래 표는 하나의 문자를 UTF-8, UTF-16 BE, UTF-16 LE
캐릭터셋으로 인코딩할 때 각각 처리하는 값을 나타낸 표이다.
이와 같이 동일한 문자더라도 캐릭터셋을 변환하면 다르게 표현
된다.
문자 UTF-8 UTF-16 BE UTF-16 LE
A 41 00 41 41 00
C3 B6 00 F6 F6 00
y NLS(National Language Support)
특정 언어 환경에서 데이터베이스를 사용할 수 있도록 고안된
것이다.
NLS를 지정하면 사용자의 애플리케이션에서 지정한 캐릭터셋으
로 DBMS의 데이터를 읽거나 쓸 수 있다.
다국어 지원 구조
다국어 지원은 데이터베이스의 캐릭터셋과 클라이언트 캐랙터셋 간의
변환에 의해 이뤄진다.
다국어 지원과 관련한 서버-클라이언트 관계를 다음 4 가지로
분류하여 살펴본다.
y 동일한 캐릭터셋을 가진 데이터베이스와 클라이언트
y 상이한 캐릭터셋을 가진 데이터베이스와 클라이언트
y 상이한 캐릭터셋을 가진 데이터베이스와 다수의 클라이언트
다국어 지원 179
y 유니코드 데이터 타입 지원
동일한 캐릭터셋을 가진 데이터베이스와 클라이언트
데이터베이스와 클라이언트 간의 캐릭터셋이 서로 동일한 경우를
나타낸다.
[그림 6-1] 동일한 캐릭터셋을 가진 데이터베이스와 클라이언트
위의 그림과 같이 데이터베이스도 KSC5601, 클라이언트도
KSC5601 인 경우에는 캐릭터셋 간의 변환이 일어나지 않는다.
상이한 캐릭터셋을 가진 데이터베이스와 클라이언트
데이터베이스와 클라이언트 간의 캐릭터셋이 서로 다른 경우에는
캐릭터셋 변환이 일어난다. 따라서 아래 그림과 같이 변환에 대한
손실이 있을 수 있다.
[그림 6-2] 상이한 캐릭터셋을 가진 데이터베이스와 클라이언트
문자 변환에 따른 손실을 방지하려면 서버의 캐릭터셋은
클라이언트의 캐릭터셋을 포함하는 캐릭터셋이 되는 것이 유리하다.
즉 그림과 같이 문자 변환시 발생할 수 있는 손실을 방지하려면
180 ALTIBASE5 Starting User’s Manual
데이터베이스의 캐릭터셋은 MS949 가 되거나 이를 포함하는
UTF8 로 설정해야 한다.
상이한 캐릭터셋을 가진 데이터베이스와 다수의 클라이언트
다수의 클라이언트가 서로 다른 캐릭터셋을 가지는 경우 서버는
각각의 클라이언트 캐릭터셋을 모두 포함하는 캐릭터셋으로 지정해야
문자 변환에 따른 손실을 방지할 수 있다.
[그림 6-3] 상이한 캐 릭터셋을 가진 데이터베이스와 다수의
클라이언트
위의 그림은 하나의 데이터베이스와 연결된 각각의 클라이언트가
일본어, 중국어, 한국어 등을 사용하는 시스템 구성을 나타낸 것이다.
하나의 서버와 각각의 언어를 사용하고 있는 다수의 클라이언트 간의
문자 변환에 따른 손실을 막기 위하여 클라이언트들에서 사용되는
언어가 포함되는 캐릭터셋 UTF8 을 데이터베이스 캐릭터셋으로
지정한다.
유니코드 데이터 타입 지원
데이터베이스와 클라이언트가 각각 어떤 캐릭터셋으로 설정되었는지
상관없이 유니코드 데이터를 지원하는 NCHAR 또는 NVARCHAR
데이터 타입을 사용하여 다국어를 지원할 수 있다.
다국어 지원 181
다국어 지원을 위한 캐릭터셋 분류
데이터베이스 캐릭터셋
데이터베이스에 저장되는 캐릭터셋을 의미한다.
SQL 표준이 ASCII 캐릭터셋이므로 이를 포함하는 캐릭터셋이
데이터베이스 캐릭터셋으로 사용 가능하다. 단, UTF16 은 ASCII
캐릭터셋을 포함하지 않기 때문에 데이터베이스 캐릭터셋에서
제외된다.
지정 방법
데이터베이스 생성 시, CREATE DATABASE 구문에서 지정할 수
있다.
지원하는 캐릭터 셋
ALTIBASE 는 데이터베이스 캐릭터셋으로 다음 8 가지 캐릭터셋을
지원한다. 이들 캐릭터셋은 모두 ASCII 캐릭터셋을 포함한다.
y US7ASCII
y KO16KSC5601
y MS949
y BIG5
y GB231280
y UTF8
y SHIFT-JIS
y EUC-JP
내셔널 캐릭터셋
NCHAR, NVARCHAR 데이터 타입에서 사용되는 캐릭터셋으로,
유니코드 기반의 문자를 저장할 수 있다.
지정 방법
데이터베이스 생성 시, CREATE DATABASE 구문에서 지정할 수
있다.
지원하는 캐릭터 셋
ALTIBASE 는 내셔널 캐릭터셋으로 다음 2 가지 캐릭터셋을
지원한다.
y UTF8
182 ALTIBASE5 Starting User’s Manual
y UTF16(BE)
클라이언트 캐릭터셋
데이터를 검색할 때 사용자에게 보여주는 클라이언트의 캐릭터셋이다.
서버로부터 전송된 데이터는 모두 클라이언트에서 지정한
캐릭터셋으로 변환되어 사용자에게 보여준다.
지정 방법
환경변수 ALTIBASE_NLS_USE 에서 지정할 수 있다.
지원하는 캐릭터 셋
y US7ASCII(기본값)
y KO16KSC5601
y MS949
y BIG5
y GB231280
y UTF8
y UTF16(BE)
y SHIFT-JIS
y EUC-JP
다국어 지원 183
유니코드를 이용한 다국어 지원
유니코드 개념
유니코드란 어떤 언어로 된 정보도 단일 캐릭터셋으로 저장할 수
있는 국제적으로 부호화된 캐릭터셋을 말한다. 또한 유니코드는
플랫폼, 프로그램 언어에 관계 없이 모든 문자는 유일한 값을 가진다.
따라서 여러 나라의 언어를 동시에 저장하고자 할 경우에 유용하게
사용할 수 있는 코드이다.
유니코드 인코딩
유니코드를 컴퓨터에 저장하기 위한 구조로 표현하는 방식을 말한다.
유니코드는 코드 체계 또는 문자 집합을 명명하는 것으로 이를
표현하기 위해 UTF-8, UTF-16 과 같은 인코딩이 필요하다.
유니코드의 저장
데이터베이스에 유니코드 문자를 저장하는 방법으로 다음 2 가지가
있다.
y 데이터베이스를 생성할 때 유니코드 캐릭터셋으로 데이터베이스
를 생성하는 방법
y NCHAR 또는 NVARCHAR 칼럼을 이용하는 방법
그러나 데이터베이스 캐릭터셋은 UTF8 이고, 내셔널 캐릭터셋은
UTF16 인 경우처럼, 유니코드 문자를 저장하는 2 가지 방법을 같이
사용할 수 있다.
유니코드 데이터베이스
데이터베이스 생성 시, 데이터베이스 캐릭터셋을 UTF8 로 설정하여
유니코드를 지원하는 데이터베이스를 생성하면, CHAR, VARCHAR
칼럼에 유니코드 데이터를 저장할 수 있다.
사용할 수 있는 캐릭터 셋
y UTF8
184 ALTIBASE5 Starting User’s Manual
유니코드 데이터베이스가 필요한 경우
y SQL 문장이나 저장 프로시저에 유니코드 데이터를 포함하고 있
는 경우
y 언제 어느 칼럼에 다국어 데이터가 들어올지 모르는 경우
유니코드 데이터 타입
데이터베이스 캐릭터셋을 UTF8 이 아닌 다른 캐릭터 셋으로
설정하여 데이터베이스를 생성했을 때에도 유니코드 데이터 타입인
NCHAR 또는 NVARCHAR 데이터 타입에 유니코드 문자를 저장할
수 있다.
사용할 수 있는 캐릭터 셋
y UTF8
y UTF16
유니코드 데이터 타입이 필요한 경우
y 유니코드 데이터베이스가 아닌데 다국어 데이터를 저장할 칼럼
이 필요한 경우
y 대부분 같은 언어의 데이터이지만, 일부 데이터가 다국어로 저장
할 칼럼이 있는 경우
y 윈도우 클라이언트 프로그램에서 wchar_t 버퍼에서 사용한 데
이터를 저장할 때(UTF16)
다국어 지원 185
다국어 데이터베이스를 위한 환경 설정
다국어를 지원하는 데이터베이스 환경을 구축하기 위해 아래와 같은
방법으로 설정해야 한다.
1. 서버를 가장 많이 사용하는 클라이언트의 언어를 고려하여
데이터베이스 생성시 캐릭터셋을 지정한다.
2. 클라이언트 캐릭터셋에 맞는 NLS 를 지정한다.
3. 기타 환경변수 및 프로퍼티를 지정한다.
환경변수 설정
클라이언트에서 아래의 환경변수를 설정한다.
y ALTIBASE_NLS_USE
y ALTIBASE_NLS_NCHAR_LITERAL_REPLACE
ALTIBASE_NLS_USE
클라이언트의 캐릭터셋을 아래와 같이 지정할 수 있다. 서버로부터
전송된 데이터는 모두 클라이언트에서 지정한 캐릭터셋으로 변환되어
사용자에게 보여준다.
y US7ASCII(기본값)
y KO16KSC5601
y MS949
y BIG5
y GB231280
y UTF8
y SHIFT-JIS
y EUC-JP
ALTIBASE_NLS_NCHAR_LITERAL_REPLACE
변수의 값이 1(TRUE)일 때 NCHAR 타입의 데이터는 데이터베이스
캐릭터셋으로 변환되지 않고, 서버에서 직접 내셔널 캐릭터셋으로
변환된다. 이 변수의 기본값은 0(FALSE)이다.
일반적으로 클라이언트에서 사용한 쿼리가 데이터베이스
캐릭터셋으로 변환되어 서버로 전송된다. 이 때 데이터베이스 캐릭터
셋이 US7ASCII 인 데이터베이스에 NCHAR 컬럼을 만들어도 해당
컬럼에 US7ASCII 캐릭터셋을 벗어나는 데이터를 넣지 못한다.
예를 들어 클라이언트 캐릭터셋이 KO16KSC5601 이고,
데이터베이스 캐릭터셋이 US7ASCII 인 DB 인 경우, INSERT 구문
전체가 클라이언트 캐릭터셋에서 데이터베이스 캐릭터셋으로
186 ALTIBASE5 Starting User’s Manual
변환된다. 이 때 아래의 예문과 같이‘안’이라는 글자도
US7ASCII 로 변환되는데, ‘안’은 US7ASCII 로 변환할 수가 없기
때문에 US7ASCII 캐릭터 셋의 대체 문자(replacement
character)인 ‘?’가 테이블에 저장된다.
SQL> create table t1 ( i1 nvarchar2(10) );
Table created.
SQL> insert into t1 values ( '안' );
1 row created.
SQL> select * from t1;
I1
-----------------
?
따라서 데이터베이스 캐릭터셋을 벗어나는 캐릭터셋을 NCHAR
컬럼에 저장할 수 있는 방법이 있어야 한다.
그 방법 중 하나가 아래와 같이 환경변수를 설정하고, NCHAR
타입을 이용하여 입력하는 것이다.
$ export ALTIBASE_NLS_NCHAR_LITERAL_REPLACE=1
...
SQL> create table t1 ( i1 nvarchar2(10) );
Table created.
SQL> insert into t1 values ( N'안' );
1 row created.
SQL> select * from t1;
I1
-----------------
안
위와 같이 ALTIBASE_NLS_NCHAR_LITERAL_REPLACE 를
1(TRUE)로 설정하고 데이터를 입력하면, 데이터베이스 캐릭터셋으로
변환되지 않고 서버에서 바로 내셔널 캐릭터셋으로 변환한다.
예제
다음은 기본 데이터베이스 캐릭터셋을 KSC5601 로 사용하고, 내셔널
캐릭터셋은 UTF16 으로 사용하는 환경을 구축하는 과정을 설명한다.
1. 데이터베이스 생성
iSQL(sysdba)> create database mydb initsize=10m noarchivelog
character set KSC5601 national character set UTF16;
DB Info (Page Size = 32768)
(Page Count = 257)
(Total DB Size = 8421376)
(DB File Size = 1073741824)
Creating MDB FILES [SUCCES]
Creating Catalog Tables [SUCCESS]
다국어 지원 187
Creating DRDB FILES [SUCES]
[SM] Rebuilding Indices [Total Count:0] [SUCCESS]
DB Writing Completed. All Done.
Create success.
2. 클라이언트 환경 설정
클라이언트에서 KSC5601 을 사용하는 경우 다음과 같이 환경변수를
설정한다.
% export ALTIBASE_NLS_USE=KSC5601
만약 클라이언트에서 ASCII 를 사용할 때에는 다음과 같이
환경변수를 설정한다.
% export ALTIBASE_NLS_USE=ASCII
3. 기타 환경 변수 및 프로퍼티 설정
사용 환경에 따라 아래의 환경변수 및 프로퍼티를 지정한다.
y 환경변수
ALTIBASE_NLS_NCHAR_LITERAL_REPLACE
y 프로퍼티
NLS_COMP 또는 NLS_NCHAR_CONV_EXCP
188 ALTIBASE5 Starting User’s Manual
데이터베이스 캐릭터셋 선택시 고려사항
데이터베이스 캐릭터셋을 결정할 때 문자 변환시 발생할 수 있는
손실 및 변환 비용, 식별자 등을 고려하여 선택해야 한다.
사용범위
식별자(Identifier)
칼럼 이름, 스키마 객체, 주석 등은 데이터베이스 캐릭터셋으로
데이터베이스에 저장된다. 그러나 그 외의 식별자는 US7ASCII
이외의 캐릭터셋으로 사용할 수 없다.
식별자별로 사용할 수 있는 캐릭터셋을 구분하면 다음과 같다.
식별자 이름 사용 가능한 캐릭터셋
컬럼 이름 데이터베이스 캐릭터셋
스키마 객체 데이터베이스 캐릭터셋
주석 데이터베이스 캐릭터셋
데이터베이스 링크 이름 데이터베이스 캐릭터셋
데이터베이스 이름
US7ASCII
파일 이름
(데이터파일, 로그 파일 등)
US7ASCII
디렉토리 이름
US7ASCII
키워드
US7ASCII
테이블스페이스 이름
US7ASCII
[표 6-1] 식별자별 사용 가능한 캐릭터셋
저장되는 SQL 문
저장 프로시저 등 메타 테이블에 저장되는 SQL 문의 경우
데이터베이스 캐릭터셋이 그대로 저장된다.
제약 사항
이중화
데이터베이스 캐릭터셋이 상이한 데이터베이스와의 이중화는 사용할
수 없다.
다국어 지원 189
문자 변환시 영향
데이터베이스 캐릭터셋이 클라이언트 캐릭터셋과 다르다면 변환이
발생한다. 이러한 문자 변환시 데이터 손실이 잠재적으로 일어날 수
있을 뿐 아니라 성능 저하에도 영향을 줄 수 있다.
데이터 손실
표현할 수 있는 범위가 큰 캐릭터셋에서 작은 캐릭터셋으로 변환이
일어날 경우, 데이터 손실이 발생한다.
이처럼 변환 대상인 문자가 변환할 문자가 없을 때 대체
문자(US7ASCII 캐릭터셋의 경우 ‘?’문자)로 변환하게 된다.
변환 비용
모든 클라이언트의 캐릭터셋이 동일한 캐릭터셋을 사용하고, 같은
캐릭터셋으로 데이터베이스의 캐릭터셋을 설정하여 데이터베이스를
생성하였다면 문자 변환은 일어나지 않는다.
하지만 클라이언트가 각각 서로 다른 캐릭터셋을 사용하여
데이터베이스 캐릭터셋을 클라이언트들의 수퍼셋으로 캐릭터셋을
지정했다면 캐릭터셋의 변환이 발생한다.
데이터베이스 이중화 191
7. 데이터베이스 이중화
알티베이스는 트랜잭션 로그 기반의 이중화 기능을 제공하며 이것은
서버의 예기치 않은 종료가 발생했을 때 서비스가 중단 없이
시스템을 운영할 수 있게 한다.
이 장에서는 이중화 기능에 대한 개괄적인 소개와 운영 방법을
소개한다.
192 ALTIBASE5 Starting User’s Manual
이중화 정의
알티베이스의 데이터베이스 이중화 기능은 서비스를 수행하고 있는
서버의 데이터에 대한 최신(up-to-date) 백업 데이터베이스의
유지와, 서버의 예기치 않은 종료가 발생했을 때 즉시 대체 서버에서
동일한 데이터베이스로 서비스를 재개할 수 있는 무정지 운영환경을
제공하는 것을 목적으로 한다.
데이터베이스 이중화 기능의 올바른 운영을 위해 다음과 같은 순으로
설명한다.
y 데이터베이스 이중화 방법
y 이중화 기능의 사용 방법
자세한 내용은 Replication User's Manual 을 참조한다.
데이터베이스 이중화 193
알티베이스 이중화 방법
이중화 기능의 운영 방법
이중화 기능을 하기 위해서는 먼저 이중화를 만들 데이터가 있는
테이블을 정의하고, 이중화할 원격 서버와 이중화 이름, 프라이머리
키, 포트 번호 등의 스키마를 결정하고 지역 서버와 원격 서버에서
이중화 연결을 만든다.
그 다음 원격 서버와 이중화를 시작한다.
양 방향일 경우 원격 서버에서도 이중화 개시를 하면 양 방향으로
이중화를 사용할 수 있다.
194 ALTIBASE5 Starting User’s Manual
이중화 기능의 사용 방법
알티베이스의 데이터베이스 이중화 기능을 위하여, 지역 서버(local
server)는 시스템에서 발생하는 데이터베이스 변경 내용을 원격
서버(remote server)로 전송하며, 원격 서버는 전송받은 내용을
자신의 데이터베이스에 반영하는 방법을 사용한다.
지역 서버와 원격 서버는 서비스 쓰레드와 별도로 이중화 관리에
필요한 쓰레드를 구동한다. 지역 서버의 이중화 송신
쓰레드(sender)는 데이터베이스의 변경에 따라 발생하는 내용을 원격
서버로 전송하며, 원격 서버의 이중화 수신 쓰레드(receiver)는
전송받은 변경 내용을 데이터베이스에 반영한다.
또한 이중화 송,수신 쓰레드 (sender 와 receiver)는 대응 서버의
정상 및 비정상 종료를 자동 감지하며 이에 상응하는 작업을
수행한다.
이중화 연결 생성
지역 서버와 원격 서버에 동일하게 이중화 정의를 한다.
CREATE [LAZY|ACKED|EAGER] REPLICATION
replication_name [as master|as slave]
WITH ‘remote_host_ip’, remote_host_ port_no
FROM user_name.table_name
TO user_name.table_name,
FROM user_name.table_name
TO user_name.table_name,
…
FROM user_name.table_name
TO user_name.table_name;
이중화 시작
이중화를 시작한다.
ALTER REPLICATION replication_name SYNC [PARALLEL
parallel_factor];
ALTER REPLICATION replication_name SYNC ONLY [PARALLEL
parallel_factor];
ALTER REPLICATION replication_name START;
ALTER REPLICATION replication_name QUICKSTART;
이중화 종료
이중화를 종료한다.
ALTER REPLICATION replication_name STOP;
이중화 테이블 삭제
이중화 테이블을 삭제한다. 이중화가 중지되어 있는 상태에서 이중화
테이블을 삭제할 수 있다.
ALTER REPLICATION replication_name STOP;
ALTER REPLICATION replication_name DROP TABLE
데이터베이스 이중화 195
FROM user_name.table_name
TO user_name.table_name;
이중화 테이블 추가
이중화할 테이블을 추가한다. 이중화가 중지되어 있는 상태에서
이중화할 테이블을 추가할 수 있다.
ALTER REPLICATION replication_name STOP;
ALTER REPLICATION replication_name ADD TABLE
FROM user_name.table_name
TO user_name.table_name;
이중화 기본 모드 변경
이중화의 기본 모드를 변경한다. 이중화가 중지되어 있는 상태에서
이중화 기본 모드를 변경할 수 있다.
ALTER REPLICATION replication_name STOP;
ALTER REPLICATION replication_name SET MODE
LAZY|ACKED|EAGER;
이중화 연결 삭제
이중화 정의를 삭제한다. 이중화가 시작되어 있는 상태에서는 이중화
연결을 삭제하기 전에 이중화를 먼저 종료를 해야 한다.
ALTER REPLICATION replication_name STOP;
DROP REPLICATION replication_name;
196 ALTIBASE5 Starting User’s Manual
DDL 수행 시 주의사항
이중화로 운영중인 서버에서 REPLICATION_DDL_ENABLE
프로퍼티를 1 로 설정하면, 아래의 DDL 을 실행할 수 있다.
y ALTER TABLE
table_name ADD COLUMN
y ALTER TABLE
table_name DROP COLUMN
y ALTER TABLE
table_name ALTER COLUMN column_name
SET DEFAULT
y ALTER TABLE
table_name ALTER COLUMN column_name
DROP DEFAULT
y ALTER TABLE
table_name TRUNCATE PARTITION
TRUNCATE TABLE
y CREATE INDEX
y DROP INDEX
이중화에서 허용하는 DDL 목록과 제약사항은
Replication User’s
Manual
을 참조한다.
그러나 이중화에서 허용하지 않는 DDL 은 절차에 따라서 이중화를
중지하거나 삭제한 후 사용하여야 한다. 또한 이중화 객체에 포함된
테이블에 대해서는 DDL 이 수행될 수 없다. 이러한 DDL 문을
수행하기 위해서는 반드시 두 서버에서 이중화를 중지하고, 해당
테이블을 이중화에서 삭제한 후 각각의 서버에서 DDL 을 수행해야
한다. 그리고 DDL 이 성공적으로 수행되면, 이중화에 해당 테이블을
다시 등록한 후 이중화를 시작한다.
백업 및 복구 197
8. Fail-Over
데이터베이스 시스템을 운영 하는 도중, 장애가 발생하였을 때 이를
극복하고 장애에 관계없이 서비스를 계속할 수 있도록 Fail-Over
기능을 제공한다. 이 장은 알티베이스에서 지원하는 Fail-Over 의
기능과 사용 방법에 대해 설명한다.
198 ALTIBASE5 Starting User’s Manual
Fail-Over 의 개요
개념
Fail-Over 는 DBMS 운영 도중 장애가 발생하였을 때 이를
극복하고 장애에 관계없이 서비스를 계속할 수 있도록 하는 것을
의미한다.
발생 가능한 장애로는 DBMS 서버가 탑재된 장비 자체에서 장애가
발생하거나, 장비로 가는 네트워크 경로에서 장애가 발생하거나
DBMS 의 소프트웨어 오류로 비정상 종료되어 장애가 발생하는 경우
등이 있다. Fail-Over 는 장애의 종류와 관계 없이, 장애 발생시
다른 DBMS 서버로 접속할 수 있게 함으로써 응용 프로그램에서
장애 여부를 인식하지 못한 채 서비스를 계속할 수 있게 한다.
Fail-Over 는 장애를 인식하는 시점에 따라 다음 2 가지로 분류할 수
있다.
y CTF(Connection Time Fail-Over)
y STF(Service Time Fail-Over)
CTF 는 DBMS 접속 시점에 장애를 인식하여 장애가 발생한
DBMS 대신 다른 가용 노드의 DBMS 로 접속하고 서비스를 진행한다.
STF 는 DBMS 접속에 성공하여 서비스하는 도중에 장애가 발생하는
것으로, 다른 가용 노드의 DBMS 에 다시 접속하여 세션의
프로퍼티를 복구한 후 사용자 응용 프로그램의 업무 로직을 다시
수행하도록 하는 것을 의미한다. 즉 장애가 발생한 DBMS 에서
수행된 작업을 다시 한 번 수행할 필요가 있는 경우이다.
이러한 Fail-Over 에서 정확한 작업 결과를 얻기 위해, 장애
DBMS 와 가용 DBMS 간의 데이터베이스의 정합성이 보장되어야
한다.
알티베이스에서는 데이터베이스의 정합성을 보장하기 위해 오프라인
이중화(Off-Line replicator) 기능을 이용한 데이터베이스 복제
방법을 사용한다. 오프라인 이중화는 대기 서버(stand-by
server)에서 진행 서버(Active server)의 로그를 읽어
데이터베이스를 정합시키는 방법이다.
이중화 방법의 특성상, 데이터베이스의 정합성이 맞지 않는 경우가
발생할 수 있으므로 Fail-Over 콜백(Callback) 함수를 이용하여
정합성을 꼭 확인하도록 권장한다. Fail-Over 콜백에 대해서는 다음
절에서 자세히 설명한다.
백업 및 복구 199
알티베이스의 Fail-Over 설정은 응용프로그램에 Fail-Over 속성을
등록함으로써 이루어지며, Fail-Over 콜백을 등록하여 Fail-Over 를
수행하기 전에 데이터베이스의 정합성을 확인할 수 있다.
응용프로그램에서 Fail-Over 와 관련된 작업은 다음 3 가지로 요약될
수 있다.
y Fail-Over 연결 속성 등록
y Fail-Over 콜백 등록
y 콜백의 결과에 따른 업무 로직 처리
자세한 내용은 Replication User's Manual 을 참조한다.
200 ALTIBASE5 Starting User’s Manual
Fail Over 사용 방법
Fail-Over 연결 속성 등록
Fail-Over 연결 속성을 등록하면, 장애가 발생하였을 때
알티베이스가 이를 감지하고 연결 속성에 명시된 대로 Fail-Over
작업을 내부적으로 수행하게 된다.
속성 표시 방법은 다음 2 가지가 있다.
y API 의 연결(Connect) 함수에서 연결 속성
문자열(Connection String)로 표시
y 알티베이스 설정 파일에 표시
altibase_cli.ini 파일에 표시
odbc.ini파일에 표시(WinODBC)
자세한 설정 방법은 Replication User's Manual 을 참조한다.
Fail-Over 성공 여부 확인
CTF(Connection Time Fail-Over)는 데이터베이스 연결이 되는지에
따라 성공 여부를 바로 알 수 있다. 반면 STF(Service Time Fail-
Over)는 Exception 이나 오류 확인을 통해서 파악할 수 있다.
예를 들어, JDBC 는 SQLException 을 catch 하고 SQLException 의
getSQLState() 메쏘드를 이용하여 SQLStates.status 가
ES_08FO01 값이면 Fail-Over 가 성공한 것이다.
CLI 와 ODBC 경우는 SQLPrepare, SQLExecute, SQLFetch 등에서
SQL_SUCCESS 가 아닌 에러가 발생하면, SQLGetDiagRec 에
statement handle 을 넘기고, aNativeError 가
ALTIBASE_FAILOVER_SUCCESS 인 diagnostic record 가 있으면
STF(Service Time Fail-Over)가 성공한 것으로 판단할 수 있다.
Embedded SQL 에서 EXEC SQL 구문을 수행 후, sqlca.sqlcode 가
SQL_SUCCESS 가 아니고 sqlcode 가
ALTIBASE_FAILOVER_SUCCESS 이면 STF(Service Time Fail-
Over)이 성공한 것이다.
자세한 설정 방법은 Replication User's Manual 을 참조한다.
백업 및 복구 201
Fail-Over 콜백 작성 방법
응용 프로그램 형태별로 Fail-Over 콜백 작성 방법이 다르지만 기본
구조는 유사하다. 다음과 같은 구조를 가진다.
y Fail-Over 관련 자료구조 정의
y Fail-Over 관련 이벤트에 따른 Fail-Over Callback 함수
본문 작성
y fail-Over 성공 여부 확인
자료구조 정의에서는 Fail-Over 이벤트를 정의하거나 정의된
인터페이스(header 파일)을 include한다.
콜백 함수 본문 작성 부분은 Fail-Over 이벤트 즉 Fail-Over
시작이나 Fail-Over 종료와 같은 이벤트가 발생하였을 때 필요한
작업들, 예를 들어 정합성 확인을 위한 코드를 구현한다.
Fail-0ver 성공 여부 확인 부분은 Fail-Over가 성공적으로 끝나고
콜백 함수까지 성공적으로 실행되면 장애로 인해 중단된 서비스를
계속할 수 있도록 처리하는 것을 의미한다.
응용프로그램 형태에 따른 구체적인 작성 방법은 Replication User's
Manual 을 참조한다.
202 ALTIBASE5 Starting User’s Manual
9. 백업 및 복구
시스템 정전 또는 디스크, 데이터 파일 손상, 유실 등과 같은 예기치
않은 상황으로 인해 알티베이스에 저장된 데이터가 손실될 수 있다.
이 장은 이를 대비하여 알티베이스에서 지원하는 백업 및 복구에
대하여 설명한다.
백업 및 복구 203
알티베이스 백업 및 복구
알티베이스 백업 정책
알티베이스는 일반적으로 사용되는 논리적 백업과 물리적 백업
방식을 모두 제공한다.
논리적 백업은 데이터베이스 객체의 논리적인 복사본을 생성하여
텍스트 파일로 저장하는 방식으로 aexport, iLoader 등의 유틸리티를
사용하여 제공한다. 논리적 백업은 오류가 발생한 시점까지 복구가
되지 않는다. 논리적 백업의 절차는 다음과 같다.
1. 알티베이스 데이터베이스가 운영중인 상태에서 aexport 또는
iLoader 를 이용하여 데이터베이스 오브젝트를 텍스트 파일에
aexport 한다.
2. 백업된 텍스트 파일을 디스크나 테이프에 저장한다.
물리적 백업은 물리적인 데이터파일을 디스크나 데이프에 복사해
두는 방식이다. 알티베이스는 오프라인 백업(cold backup)과 온라인
백업(hot backup)을 제공한다.
오프라인 백업은 데이터베이스를 정상 종료하고, 데이터베이스에
필요한 모든 파일들을 백업하는 방식이다. 오프라인 백업 절차는
다음과 같다.
1. 데이터베이스를 정상 종료한다.
2. 로그앵커파일, 온라인 로그파일, 데이터베이스 파일 백업을
복사한다.
온라인 백업은 데이터베이스가 아카이브로그 모드로 운영중일 경우에
사용하는 백업이다. 온라인 백업이 수행중에도 데이터베이스
서비스는 가능하지만, 서비스가 적은 시간에 백업을 수행하는 편이
좋다. 만약 서비스가 과다한 시간에 백업을 수행한다면 많은 로그가
발생할 수 있다. 온라인 백업 절차는 다음과 같다.
1. 메모리 테이블스페이스와 로그앵커 파일을 백업한다.
2. 디스크 테이블스페이스 백업한다.
3. 아카이브 로그파일 백업한다.
알티베이스 복구 정책
알티베이스는 논리적 백업본을 이용한 복구, 자동복구(restart
recovery)와 매체복구(media recovery) 방식을 제공한다.
204 ALTIBASE5 Starting User’s Manual
논리적 백업본을 이용한 복구는 iLoader 유틸리티를 통하여 백업된
텍스트 파일을 iLoader 유틸리티를 통해 복구하는 방식이다.
자동복구는 알티베이스가 구동되면서 자동으로 수행하는 간단한
복구방식으로, 데이터베이스 서버가 비정상종료한 경우에 수행된다.
매체복구는 백업 정책에 의해 백업된 데이터베이스 파일,
로그앵커파일, 아카이브 로그파일을 사용하여 현재 시점의
데이터베이스 파일 또는 과거 특정시점의 데이터베이스 파일로
복구하는 방식이다. 매체 오류 상황과 복구 절차에 따라 완전 복구
(complete recovery)와 불완전 복구(incomplete recovery) 절차를
선택하여 데이터베이스 복구할 수 있다.
백업 및 복구에 대한 자세한 설명은 Administrator’s Manual 의
백업 및 복구를 참고 바란다.
Part III 205
Part III
응용프로그램 작성 207
10. 응용프로그램 작성
이 장에서는 알티베이스 데이터베이스를 활용하는 응용 프로그램
작성법에 관하여 간략하게 설명하도록 한다.
208 ALTIBASE5 Starting User’s Manual
응용 프로그램 작성 방법
알티베이스 사용자가 데이터베이스 관련 프로그램을 작성하는 것은
JDBC, ODBC, C/C++ Precompiler 등의 API 라이브러리를
사용하여 클라이언트 프로그램을 작성하는 방법으로써, 일반적으로
범용 데이터베이스 운용 환경에서의 프로그램 작성법과 동일하다.
본 장에서는 알티베이스 데이터베이스를 활용하는 응용 프로그램
작성법에 관하여 간략하게 설명하도록 한다.
응용 프로그램 작성의 자세한 내용은 ODBC User’s Manual,
Precompiler User’s Manua, API User’s Manual 을 참조한다.
응용프로그램 작성 209
ODBC 를 활용한 프로그램
알티베이스의 ODBC 를 이용하여 클라이언트를 작성하는 방법이다.
알티베이스를 클라이언트-서버 구조로 운영하는 상황에서 사용할
API 이다. 클라이언트 프로그램이 다중 쓰레드 또는 단일 프로세스
중 어느 형태로 작성되느냐에 따라 링크해야 할 클라이언트
라이브러리가 구분된다. 자세한 내용은 ODBC User’s Manual 을
참조한다.
헤더 파일과 라이브러리
ODBC 를 이용하여 프로그램을 작성하기 위해서는 알티베이스의 홈
디렉토리의 서브 디렉토리인 include 와 lib 에 있는 헤더 파일과
라이브러리 파일이 필요하다.
$ALTIBASE_HOME/include/sqlcli.h
$ALTIBASE_HOME/lib/libodbccli.a
Makefile
작성된 ODBC 소스를 컴파일하기 위한 Makefile 에는 다음과 같은
내용이 포함된다.
include $(ALTIBASE_HOME)/install/altibase_env.mk
이 파일 안에는 컴파일시 필요로 하는 라이브러리 패스와
라이브러리들을 링크시키기 위한 옵션들이 정의되어 있으며 오브젝트
파일을 만드는 규칙을 제공한다.
$(ALTIBASE_HOME)/sample/SQLCLI 내의 Makefile 을 참조한다.
예문
include $(ALTIBASE_HOME)/install/altibase_env.mk
SRCS=
OBJS=$(SRCS:.cpp=.$(OBJEXT))
BINS=demo_ex1
all: $(BINS)
demo_ex1: demo_ex1.$(OBJEXT)
$(LD) $(LFLAGS) $(LDOUT)demo_ex1$(BINEXT)
demo_ex1.$(OBJEXT) $(LIBOPT)odbccli$(LIBAFT) $(LIBS)
다중 쓰레드 프로그램
210 ALTIBASE5 Starting User’s Manual
다중 쓰레드 프로그램을 작성할 때 다음과 같은 사항을 주의해야
한다. 각 쓰레드 별로 환경 핸들, 연결 핸들을 각각 할당해야 한다.
각 쓰레드에서 데이터베이스 관련 오류를 저장하는 데 필요한
저장소를 할당하는 함수 ideAllocErrorSpace()를 호출해야 한다. 이
함수는 쓰레드 생성 초기에 한 번만 호출하면 된다.
프로그램 작성
ODBC 를 이용하여 작성하는 프로그램에서 알티베이스 서버에
접속하고 종료하는 방법을 간략하게 설명하도록 한다.
ODBC 프로그램의 예
/* test.cpp */
#include
#include
#include
#include
#include
#include
#include
void sbigint_bigint(int cnt);
void slong_integer(int cnt);
void char_char(int cnt);
void char_number(int cnt);
void double_double(int cnt);
void prepare();
void execute();
void usage();
long logMsec(const char *astr);
void conn(char *port, char *contype);
#define MSG_LEN 1024
SQLHENV env; // Environment 를 할당 받을 handle
SQLHDBC con; // Connection 을 할당 받을 handle
SQLHSTMT hstmt; // Statement 를 할당 받을 handle
SQLHSTMT bstmt; // Statement 를 할당 받을 handle
int erNo;
short msgLength;
char erMsg[MSG_LEN];
SQLRETURN rc;
/* Main 프로그램 - 인자 개수가 5 보다 적을 경우 사용법(usage) 출력 */
int main(int ac, char **av)
{
if (ac < 5)
{
usage();
}
conn(av[2], av[3]);
응용프로그램 작성 211
switch(atoi(av[1])
{
case 1:
logMsec(" BIGINT - START TIME : ");
sbigint_bigint(atoi(av[4]);
logMsec(" BIGINT - END TIME : ");
break;
case 2:
logMsec(" INTEGER - START TIME : ");
slong_integer(atoi(av[4]);
logMsec(" INTEGER - END TIME : ");
break;
case 3:
logMsec(" CHAR - START TIME : ");
char_char(atoi(av[4]);
logMsec(" CHAR - END TIME : ");
break;
case 4:
logMsec(" NUMBER - START TIME : ");
char_number(atoi(av[4]);
logMsec(" NUMBER - END TIME : ");
break;
case 5:
logMsec(" DOUBLE - START TIME : ");
double_double(atoi(av[4]));
logMsec(" DOUBLE - END TIME : ");
break;
}
}
/* 프로그램의 사용법을 출력 */
void usage()
{
printf("Usage: ./test
n");
printf("tprogram_no : 1 => t SBIGINT-BIGINTn");
printf("tprogram_no : 2 => t SLONG-INTEGERn");
printf("tprogram_no : 3 => t CHAR-CHARn");
printf("tprogram_no : 4 => t CHAR-NUMERICn");
printf("tprogram_no : 5 => t DOUBLE-DOUBLEn");
exit(1);
}
/* 프로그램 시작시간 및 종료시간 체크 */
long logMsec(const char *astr)
{
struct timeval tv;
struct tm *ctm;
gettimeofday(
ctm = localtime( ));
fprintf(stderr, "%s [%.02d:%.02d:%.02d]n", astr, ctm->tm_hour,
ctm->tm_min, ctm->tm_sec);
return tv.tv_usec;
}
212 ALTIBASE5 Starting User’s Manual
/* Altibase 접속 구문 */
void conn(char *port, char *contype)
{
char connStr[200];
char query[200];
if (SQL_ERROR == SQLAllocEnv( printf(stderr, "SQLAllocEnv error!!n");
//Environment 를 위한 메모리를 할당.
return;
}
if (SQL_ERROR == SQLAllocConnect(env, onection 을 위한 메모리를 할당
{
fprintf(stder, "SQLAlocConect eror!n");
SQLFreEnv(env);
return;
}
sprintf((char*)connStr,
"DSN=127.0.0.1;PORT_NO=%s;UID=SYS;PWD=MANAGER;CONNTYPE=
%s", port, conntype);
/* Connection 생성 */
if (SQL_ERROR == SQLDriverConnect(con, NULL, (char*)connStr,
SQL_NTS, NULL, 0, NULL, SQL_DRIVER_NOPROMPT))
{
if (SQL_SUCCESS == SQLError(env, con, NULL, NULL, har*)errMsg, MSG_LEN, )
{
fprintf(stderr, " rCM_-%d : %sn", errNo, errMsg);
}
SQLFreConect(con);
SQLFreEnv(env);
return;
}
/* 각 SQL 문을 실행 시 자동으로 반영하지 않는다 */
SQLSetConnectAttr(con, SQL_ATTR_AUTOCOMMIT,
(void*)SQL_AUTOCOMMIT_OFF, 0);
if (rc = SQL_EROR)
{
if (SQL_SUCCESS == SQLError(env, con, NULL, NULL, har*)errMsg, MSG_LEN, )
{
fprintf(stderr, "[%d : %s]n", errNo, errMsg);
}
}
hstmt = bstmt = SQL_NUL_HSTMT;
SQLAlocStmt(con,
SQLAlocStmt(con,
/* DDL 문을 직접 수행하며 오류발생시 메시지를 지정서식에 따라 파일로
출력 */
strcpy(query, "drop table t1");
rc = SQLExecDirect(hstmt, (char*)query, SQL_NTS);
응용프로그램 작성 213
if (rc == SQL_EROR)
{
if (SQL_SUCES = SQLEror(env, con, hstmt, NUL, ar*)errMsg, MSG_LEN, )
{
fprintf(stderr, "[%d : %s]n", errNo, errMsg);
}
}
/* DDL 문을 직접 수행하며 오류발생시 메시지를 지정서식에 따라 파일로
출력 */
strcpy(query, "create table t1(i1 number(6))");
rc = SQLExecDirect(hstmt, (char*)query, SQL_NTS);
if (rc == SQL_EROR)
{
if (SQL_SUCES = SQLEror(env, con, hstmt, NUL, ar*)errMsg, MSG_LEN, )
{
fprintf(stderr, "[%d : %s]n", errNo, errMsg);
}
}
}
/* 실행할 SQL 문을 준비 */
void prepare()
{
char query[100];
strcpy(query, "insert into t1 values(?)");
rc = SQLPrepare(bstmt, (char*)query, SQL_NTS);
if (rc = SQL_EROR)
{
if (SQL_SUCES = SQLEror(env, con, bstmt, NUL, ar*)errMsg, MSG_LEN, )
{
fprintf(stderr, "[%d : %s]n", errNo, errMsg);
}
}
}
/* 준비된 SQL 문장을 실행 */
void execute()
{
rc = SQLExecute(bstmt);
if (rc = SQL_EROR)
{
if (SQL_SUCES = SQLEror(env, con, bstmt, NUL, ar*)errMsg, MSG_LEN, )
{
fprintf(stderr, "[%d : %s]n", errNo, errMsg);
}
}
}
void sbigint_bigint(int cnt)
{
int i;
long long i1;
214 ALTIBASE5 Starting User’s Manual
char tmp[100];
int len = SQL_NTS;
prepare();
/* SQL 문장에 매개변수(parameter)를 연결시킴 */
SQLBindParameter(bstmt, 1, SQL_PARAM_INPUT, SQL_C_SBIGINT,
SQL_BIGINT, 0, 0, (void*) n);
for(i=0; i make test
shell> ./test 3 20300 1 10
216 ALTIBASE5 Starting User’s Manual
BIGINT - START TIME : [16:43:48]
BIGINT - END TIME : [16:43:49]
응용프로그램 작성 217
JDBC 를 활용한 프로그램
알티베이스의 JDBC 드라이버를 이용하여 클라이언트를 작성하는
방법이다. 자세한 내용은 API User’s Manual 을 참조한다.
JDBC 드라이버
알티베이스는 기본적으로 $ALTIBASE_HOME/lib 디렉토리 안에
Altibase.jar 파일을 JDBC 드라이버로 제공한다.
알티베이스 서버와 연결을 설정하기 위해, 먼저 드라이버를 로드하고,
URL 과의 연결을 시도한다.
1. JDBC 드라이버를 로드할 때에는 프로그램 내에서 다음과 같은
코드로 JDBC 드라이버를 등록하여 사용한다.
Class.forName(“Altibase.jdbc.driver.AltibaseDriver”)
2. 알티베이스의 URL 을 제공하고, URL 과 연결을 시도하기 위한
일반적인 방법으로 다음과 같다. (Altibase 에 로그인 하기 위한 id 가
“SYS”이고, 패스워드가 “MANAGER”인 경우)
(JDBC url
“jdbc:Altibase://hostname:portnum/databasename")
(Connection
DriverManager.getConnection(url, "user", "password"))
String url = "jdbc:Altibase://127.0.0.1:20300/mydb";
Connection con = DriverManager.getConnection(url, “SYS”,
“MANAGER”);
현재 JDBC 2.0 API 와 Standard Extension API 는 일부 지원한다.
CLASS PATH
Java 프로그램의 수행을 위해 Altibase.jar 파일이 CLASSPATH 에
포함되어야 한다.
예를 들어, Altibase.jar 를 이용하기 위해 사용자 홈 디렉토리에
있는 default startup files (예: .bashrc, .profile, etc.) 안에
다음과 같이 CLASSPATH 를 설정한다. (Bourne shell 환경이며,
compiler, tools, runtimes, and APIs 등을 제공하는 java1.2 가
UNIX 환경에서 /usr/ 밑에 설치되었다고 가정한다.)
aexport JAVA_HOME=/usr/java1.2
aexport CLASSPATH=$ALTIBASE_HOME/lib/Altibase.jar:$CLASSPATH
218 ALTIBASE5 Starting User’s Manual
프로그램 작성
JDBC 를 이용하여 작성하는 프로그램에서 알티베이스 서버에
접속하고 종료하는 방법은 대략 다음과 같다.
JDBC 프로그램의 예
/* JdbcTest.java */
import java.util.Properties;
import java.sql.*;
class JdbcTest
{
public static void main(String args[]) {
Properties props = new Properties();
Connection con = null;
Statement stmt = null;
PreparedStatement pstmt = nul;
ResultSet res;
if ( args.length = 0 )
{
System.err.println("Usage : java JdbcTest port_non");
System.exit(1);
}
String port = args[0];
String url = "jdbc:Altibase://127.0.0.1:" + port + "/mydb";
String user = "SYS";
String paswd = "MANAGER";
String enc = "US7ASCI";
props.put("user", user);
props.put("pasword", paswd);
props.put("encoding", enc);
/* 알티베이스 JDBC 드라이버 등록 */
try {
Clas.forName("Altibase.jdbc.driver.AltibaseDriver" );
} catch ( Exception e ) {
System.er.println("Can't register Altibase Driver");
return;
}
/* 접속하고 Statment 를 할당 */
try {
con = DriverManager.getConection(url,props);
stmt = con.createStatement();
} catch ( Exception e ) {
e.printStackTrace();
}
/* 쿼리수행 */
try {
stmt.execute("DROP TABLE TEST01");
} catch ( SQLException se ) { }
응용프로그램 작성 219
try {
stmt.execute("CREATE TABLE TEST01 ( name
varchar(20), age number(3) )");
pstmt = con.prepareStatement("INSERT INTO TEST01
VALUES(?,?)");
pstmt.setString(1,"김민석");
pstmt.setInt(2,28);
pstmt.execute();
pstmt.setString(1,"홍길동");
pstmt.setInt(2,25);
pstmt.execute();
pstmt.setString(1,"원훈");
pstmt.setInt(2,34);
pstmt.execute();
res = stmt.executeQuery("SELECT * FROM TEST01");
/* 결과를 받아 화면에 출력 */
while(res.next()) {
System.out.println(" Name : "+res.getString(1)+", Age :
"+res.getInt(2));
}
/* 연결 해제 */
stmt.close();
pstmt.close();
con.close();
} catch ( Exception e ) {
e.printStackTrace();
}
}
}
실행결과
shell> javac JdbcTest
shell> java JdbcTest 20300 <- port
Name : 김민석, Age : 28
Name : 홍길동, Age : 25
Name : 원훈, Age : 34
220 ALTIBASE5 Starting User’s Manual
MS Windows ODBC 를 활용한 프로그램
알티베이스의 MS Windows ODBC 드라이버를 이용하여
클라이언트를 작성하는 방법이다. 기타 자세한 내용은 API User’s
Manual 을 참조한다.
ODBC 드라이버 설치
1. 윈도우 상에 알티베이스 ODBC 드라이버를 설치하기 위해
http://atc.altibase.com에서 Environment 메뉴의 Client 탭에서
ODBC 드라이버 파일을 다운로드 한 후 실행하면 알티베이스 ODBC
드라이버의 DLL 이 system 폴더에 설치된다.
2. 제어판에서 관리도구 메뉴를 선택하고, 데이터 원본 (ODBC)을
선택한다. 그러면, 다음과 같은 ODBC 데이터 원본 관리자 윈도우가
나타난다. 시스템 DSN 을 추가하기 위해 오른쪽에 위치한 추가
버튼을 클릭한다.
3. 데이터베이스의 원본을 설정할 드라이버
(altibase_ODBC_CM511)를 선택하고 마침 버튼을 클릭한다.
응용프로그램 작성 221
4. 알티베이스 데이터베이스의 ODBC 세팅이 끝난 뒤, ODBC 데이터
원본 관리자에서 DSN (Data Source Name: Altibase)을 추가하고
데이터베이스 연결 시 필요한 정보(host, Port, User, Password)를
입력한다.
5. 이제 알티베이스 서버의 ODBC 설정이 끝나고, 다음과 같이
시스템 DSN 탭을 클릭하면 데이터베이스 파일을 Altibase 란
이름으로 사용할 수 있게 된다.
6. 위와 같이 ODBC 설정 후 ODBC 설치 폴더 내(예: C:\Program
Files\Altibase\Altibase5_ODBC\)의 iodbc.exe 로 설정이 잘
되었는가를 확인 후 Altibase ODBC 원본 (Data Source)을
테스트하기 위해 SQL 문을 실행함으로써 알티베이스 ODBC 설정이
완벽하다는 것을 다시 한 번 확인할 수 있다.
C:[InstallDir]> IODBC.exe -S altibase -H 127.0.0.1 -U SYS -P
MANAGER
iodbc Ver. 0.11 (Beta 2) Copyright 1995 FFE Software, Inc.
This is free software, and you are welcome to redistribute it under certain
conditions; type 'help ?' for details.
1> create table t1 (i1 integer primary key, i2 varchar(10))
222 ALTIBASE5 Starting User’s Manual
2> go
Msg 0, Level 16, State HYC00:
Optional feature not implemented
(0 rows affected)
프로그램 작성
ODBC 를 이용하여 작성하는 프로그램에서 알티베이스 서버에
접속하고 종료하는 방법과 수행결과는 다음과 같다.
ODBC 응용 프로그램의 예
/* test_odbc.cpp */
#include
#include
#include
#include
#include
#define SQL_LEN 1000
#define MSG_LEN 1024
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;
SQLRETURN retcode;
void execute_err(SQLHSTMT stat, char* q)
{
printf("Error : %sn",q);
SQLINTEGER errNo;
SQLSMALLINT msgLength;
SQLTCHAR errMsg[MSG_LEN];
if (SQL_SUCCESS = SQLError ( henv, hdbc, stat, NULL, Msg,
MSG_LEN, ))
{
printf(" Error : # %lld, %sn", errNo, errMsg);
}
SQLFreeStmt(stat, SQL_DROP);
if (SQL_ERROR == SQLDisconnect(hdbc))
{
printf("disconnect errorn");
}
SQLFr eeConne ct(h dbc);
SQLFreeEnv(henv);
exi t (1);
}
void main()
{
char *DSN, *DBNAME, *USERNAME, *PASWD, *PORTNO;
char query[SQL_LEN], name[21];
int age;
응용프로그램 작성 223
SQLCHAR constr[100];
SQLINTEGER len;
DSN = "ALTIBASE"; // Domain Server Name
DBNAME = "mydb"; // 데이터베이스 명.
USERNAME = "SYS"; // 사용자명.
PASSWD = "MANAGER"; / 사용자 암호.
PORTNO = "20316"; // Port Number
/* Environment 을 위한 메모리를 할당 */
if(SQLAllocEnv( QL_ERROR)
{
printf("AlocEnv eror!n");
exit(1);
}
/* Connection 을 위한 메모리를 할당 */
if(SQLAllocConnect(henv, QL_ERROR)
{
printf("AlocDbc eror!n");
SQLINTEGER errNo;
SQLSMALLINT msgLength;
SQLTCHAR errMsg[MSG_LEN];
if (SQL_SUCCESS == SQLError ( henv, NULL, NULL, NULL, rMsg, MSG_LEN, ))
{
printf(" Error : # %lld, %sn", errNo, errMsg);
}
exit(1);
}
/* Connection을 형성 */
sprintf((char*)constr,
"DSN=%s; UID=%s; PWD=%s; CONNTYPE=1; PORT_NO=%s",
DSN, USERNAME, PASSWD, PORTNO);
if ( SQLDriverConnect(hdbc, NULL, constr, SQL_NTS, NULL, 0, NULL,
SQL_DRIVER_COMPLETE))
{
printf("DBNAME = %sn", DBNAME);
printf("USERNAME = %sn", USERNAME);
printf("Connection error!!n");
SQLINTEGER errNo;
SQLSMALLINT msgLength;
SQLTCHAR errMsg[MSG_LEN];
if (SQL_SUCCESS == SQLError ( henv, hdbc, NULL, NULL, rMsg, MSG_LEN, ))
{
printf(" Error : # %lld, %sn", errNo, errMsg);
}
SQLFreeConnect(hdbc);
SQLFreEnv(henv);
exit(1);
}
printf("connected...n");
224 ALTIBASE5 Starting User’s Manual
/* statement을 위한 메모리를 할당 */
if ( SQLAllocStmt(hdbc, SQL_ERROR )
{
printf("AllocStmt error!!n");
SQLDisconect(hdbc);
SQLFreeConnect(hdbc);
SQLFreEnv(henv);
exit(1);
}
/* 쿼리수행 */
sprintf(query,"DROP TABLE TEST001");
SQLExecDirect(hstmt,(SQLTCHAR*)query, SQL_NTS);
sprintf(query,"CREATE TABLE TEST001 ( name varchar(20), age
number(3) )");
if (SQL_ERROR == SQLExecDirect(hstmt,(SQLTCHAR*)query,
SQL_NTS)
{
execute_er(hstmt, query);
}
/* statement를 준비하고 변수를 바인드한다. */
sprintf(query,"INSERT INTO TEST001 VALUES( ?, ? )");
if (SQL_ERROR == SQLPrepare(hstmt, (SQLTCHAR*)query,
SQL_NTS)
{
execute_er(hstmt, query);
}
if (SQL_ERROR == SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT,
SQL_C_CHAR, SQL_CHAR, 0, 0, name,
19, printf("SQLBindParameter error!!! ==> %s n",query);
exit(1);
}
if (SQL_ERROR == SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT,
SQL_C_SLONG, SQL_NUMERIC, 0, 0,
en))
{
printf("SQLBindParameter error!!! ==> %s n",query);
exit(1);
}
/* 준비된 statement를 수행 */
sprintf(name, "김민석");
age = 28;
if (SQL_ERROR == SQLExecute(hstmt))
{
execute_er(hstmt, query);
}
sprintf(name, "홍길동");
age = 25;
if (SQL_ERROR == SQLExecute(hstmt))
{
execute_er(hstmt, query);
응용프로그램 작성 225
}
sprintf(name, "아무개");
age = 34;
if (SQL_ERROR == SQLExecute(hstmt))
{
execute_er(hstmt, query);
}
sprintf(query,"SELECT * FROM TEST01");
if (SQL_ERROR == SQLExecDirect(hstmt,(SQLTCHAR*)query,
SQL_NTS)
{
execute_er(hstmt, query);
}
/* Select의 결과값을 변수에 저장 */
if (SQL_EROR == SQLBindCol(hstmt, 1, SQL_C_CHAR, name, 21,
printf("SQLBindCol eror!!!n");
exit(1);
}
if (SQL_ERROR = SQLBindCol(hstmt, 2, SQL_C_SLONG, len))
{
printf("SQLBindCol eror!!!n");
exit(1);
}
while ( SQLFetch(hstmt) = SQL_SUCCES)
// 결과값이 있는 동안 결과값을 받아 화면에 출력 */
{
printf("Name : %5s, Age : %5ldn",name,age);
}
/* 모든 handle을 해제하고 접속을 종료 */
SQLFreeStmt(hstmt, SQL_DROP);
SQLDisconnect(hdbc);
SQLFreeConnect(hdbc);
SQLFreeEnv(henv);
}
실행결과
Visual C++에서 컴파일 후 생성된 exe 파일을 실행시키면 다음과
같은 결과를 볼 수 있다.
226 ALTIBASE5 Starting User’s Manual
응용프로그램 작성 227
C/ C++ Precompiler 를 활용한 프로그램
C/C++ Precompiler 는 내장 SQL 문이 포함된 소스 프로그램을
입력으로 받아, 내장 SQL 문들을 실행 시간 라이브러리 호출로
변환하여, 호스트 언어로 컴파일될 수 있는 수정된 소스 프로그램을
생성한다. 자세한 내용은 Precompiler User’s Manual 을 참조한다.
환경 설정
C/C++ Precompiler 로 전처리된 결과 파일을 컴파일 및 링크하기
위해서 필요한 환경 설정은 다음과 같다.
헤더파일
필요한 헤더파일은 ses.h 이며, $ALTIBASE_HOME/include
디렉토리에 있다.
전처리된 응용 프로그램을 컴파일하기 위해서는 I
$ALTIBASE_HOME/include 옵션이 필요하다.
라이브러리
필요한 라이브
러리는 libsesc.a 와 libodbccli.a 이며,
$ALTIBASE_HOME/lib 디렉토리에 있다.
전처리된 응용 프로그램을 링크하기 위해서는 L
$ALTIBASE_HOME/lib 옵션과 lsesc, lodbccli, -lpthread
옵션이 필요하다.
전처리 실행
C/C++ Precompiler 는 내장 SQL 문을 포함하는 C 또는 C++로
작성된 프로그램을 전처리하여 변환된 C 또는 C++ 프로그램을
생성한다. 입력 파일은 .sc 확장자를 가지는 C 또는 C++로 작성된
프로그램이며, 출력 파일은 .c 또는 .cpp 를 확장자를 가진다. 출력
파일의 확장자는 사용자가 지정할 수 있으며 기본적으로 .c 이다.
실행방법
다음은 다양한 옵션을 이용하여 전처리하는 방법이다.
sesc [ ]
: [-h] [-t ] [-include
] [-o ] [-mt]
[-v] [-g] [-sea] [-n] [-r] [-align]
228 ALTIBASE5 Starting User’s Manual
: 내장 SQL문을 포함하는 소스
프로그램으로, 확장자는 반드시 .sc 이어야 한다.
다중 쓰레드 프로그램
C/C++ Precompiler 는 다중 쓰레드 프로그램을 지원한다. 다중
쓰레드 프로그램의 경우 내장 SQL 문 사용 방법 및 주의 사항에
대해 알아보기로 한다.
1. 전처리 시 다중 쓰레드 프로그램의 판단 근거를 전처리기에게
제공하여야 한다.
2. 각 쓰레드마다 각각의 연결(connection)이 있어야 한다.
3. 연결 이름은 프로그램 내에서 유일해야 한다.
4. 각 연결은 각각의 연결 이름을 가져야 한다.
5. 내장 SQL 문에서도 사용할 연결 이름을 명시하여야 한다.
6. sqlca 를 함수 인자로 넘길때는 ssqlca 로 넘겨야 한다.
프로그램 작성
Precompiler 응용 프로그램의 예
/******************************************
* SAMPLE : DELETE
* .CODE : delete.sc
* 1. Using scalar host variables
* 2. Reference : aray host variables - arays1.sc
*********************************************/
int main()
{
/* 호스트 변수 선언 */
EXEC SQL BEGIN DECLARE SECTION;
char usr[10];
char pwd[10];
char conn_opt[1024];
/* 스칼라형 */
int s_eno;
short s_dno;
EXEC SQL END DECLARE SECTION;
printf("n");
/* 이름, 비밀번호, 옵션 설정 */
strcpy(usr, "SYS");
strcpy(pwd, "MANAGER");
strcpy(conn_opt, "DSN=127.0.0.1;CONNTYPE=1;PORT_NO=20300");
/* 알티베이스 서버에 접속 */
EXEC SQL CONNECT :usr IDENTIFIED BY :pwd USING :conn_opt;
응용프로그램 작성 229
/* check sqlca.sqlcode */
if (sqlca.sqlcode != SQL_SUCES)
{
printf("Eror : [%d] %snn", SQLCODE,
sqlca.sqlerrm.sqlerrmc);
exit(1);
}
/* 스칼라 호스트 변수 사용 */
s_eno = 5;
s_dno = 1000;
EXEC SQL DELETE FROM EMPLOYE
WHERE ENO > :s_eno
AND DNO > :s_dno
AND EMP_JOB LIKE 'P%';
printf("------------------------------------
n");
printf("[Scalar Host Variables]
n");
printf("------------------------------------
n");
/* sqlca.sqlcode 검사 */
if (sqlca.sqlcode = SQL_SUCESS)
{
/* sqlca.sqlerrd[2] holds the rows-processed(deleted) count */
printf("%d rows deletednn", sqlca.sqlerrd[2]);
}
else
{
printf("Eror : [%d] %snn", SQLCODE,
sqlca.sqlerrm.sqlerrmc);
}
/* 접속 해제 */
EXEC SQL DISCONECT;
/* check sqlca.sqlcode */
if(sqlca.sqlcode != SQL_SUCCESS)
{
printf("Eror : [%d] %snn", SQLCODE,
sqlca.sqlerrm.sqlerrmc);
}
}
실행결과
shell> make delete
shell>
----------------------------------------
[Scalar Host Variables]
----------------------------------------
7 rows deleted
찾아보기 231
찾아보기
ㄱ
가비지 콜렉션 쓰레드............................. 18
가용성 ............................................................ 14
객체 ................................................................. 10
객체 접근 권한 ....................................... 185
관계 모델 ..................................................... 10
권한 관리 .................................................. 185
권한 관리의 종류 ................................... 185
권한 부여 .................................................. 185
권한 해제 .................................................. 186
기타 프로퍼티 ......................................... 174
ㄴ
내셔널 캐릭터셋 ..................................... 193
내장형 ............................................................ 10
ㄷ
다국어 지원 .............................................. 190
다국어 지원 구조 ................................... 190
다중 쓰레드 프로그램.......................... 222
다중버전 기법 ............................................ 11
더블 라이트 ................................................. 12
데드락 감지 ................................................. 13
데이터 독립성 ............................................ 10
데이터 모델 ................................................. 10
데이터베이스 객체 ................................ 180
데이터베이스 공간 ................................... 15
데이터베이스 구성 프로퍼티 ............... 49
데이터베이스 링크 ................................ 183
데이터베이스 이중화 ............................... 14
데이터베이스 캐릭터셋 ........................ 193
데이터베이스의 논리적 구조 .............. 21
데이터베이스의 물리적 구조 .............. 19
ㄹ
로그 플러시 쓰레드 ................................ 18
로깅 ................................................................ 12
ㅁ
메시지 로그 관련 프로퍼티 ............... 153
메시지 파일 ................................................ 22
메인 모듈 ........................................................ 8
무결성 규칙 ................................................ 10
무정지 시스템 ............................................ 14
ㅂ
백업 및 복구 관련 프로퍼티 ............ 134
버퍼 풀 ......................................................... 12
버퍼 플러시 쓰레드 ................................ 19
부트 파일 ..................................................... 22
부하 분산 ..................................................... 14
뷰 테이블 ................................................... 181
ㅅ
사용자.......................................................... 184
서버 프로세스 ............................................ 18
서비스 데몬 쓰레드 ................................ 18
서비스 쓰레드 풀 ..................................... 18
성능 관련 프로퍼티 ................................ 83
세션 관련 프로퍼티 .............................. 116
세션 관리 쓰레드 ..................................... 18
232 ALTIBASE5 Starting User’s Manual
스키마 객체 .................................... 180, 183
시스템 접근 권한 ................................... 185
시퀀스 ......................................................... 182
실행 바이너리 ............................................ 24
ㅇ
아카이브 쓰레드 ........................................ 19
알티베이스 개념 .......................................... 4
알티베이스 구성도 ................................... 17
알티베이스 구성요소 ............................... 24
알티베이스 구조 ........................................ 17
알티베이스 디렉토리 ............................... 27
알티베이스 백업 ..................................... 215
알티베이스 특징 ........................................ 10
알티베이스 프로퍼티 파일 ................... 28
알티베이스의 실행 ................................... 34
알티베이스의 종료 ................................... 36
엔진 구조 ..................................................... 10
원격(Remote) 시스템 .............................. 14
유니코드 ..................................................... 195
유니코드 데이터 타입.......................... 196
유니코드 데이터베이스 ....................... 195
응용 프로그램 작성 방법 ................... 220
이중화 ........................................ 14, 183, 204
이중화 관련 프로퍼티.......................... 140
이중화 기본 모드 변경 ....................... 207
이중화 방법 .............................................. 205
이중화 시작 .............................................. 206
이중화 연결 삭제 ................................... 207
이중화 연결 생성 ................................... 206
이중화 종료 .............................................. 206
이중화 테이블 삭제 .............................. 207
이중화 테이블 추가 .............................. 207
인덱스 ......................................................... 181
인터페이스 ................................................... 11
일관성............................................................ 14
ㅈ
자바 클래스 라이브러리 ....................... 26
저장 관리자 ................................................... 7
저장 프로시저 .................................. 13, 182
저장 함수 ................................................... 182
전처리 실행 .............................................. 243
제약조건 ..................................................... 181
지역(local) 시스템 .................................... 14
질의 처리기 ................................................... 8
ㅊ
체크포인트 쓰레드 ................................... 18
ㅋ
캐릭터셋 ..................................................... 190
캐릭터셋 분류 .......................................... 193
큐 테이블 ................................................... 180
클라이언트 캐릭터셋 ............................ 194
클라이언트-서버 ........................................ 10
ㅌ
타입 세트 ................................................... 182
테이블.......................................................... 180
테이블/데이터베이스 컴팩션 ............... 14
테이블스페이스 ....................................... 183
통신 채널 ................................................... 117
트랜잭션 관련 프로퍼티 ..................... 132
트랜잭션의 철회 ....................................... 20
트리거.......................................................... 182
ㅍ
파티션드 인덱스 ..................................... 184
파티션드 테이블 ..................................... 183
퍼지 汰廣........................... 13
찾아보기 233
프로그래밍 라이브러리 .......................... 26
프로토콜 ........................................................ 15
프로퍼티 파일 ............................................ 22
A
abort ............................................................... 37
ACCESS_LIST............................................. 174
active 로그 ................................................... 20
admin 디렉토리 ......................................... 27
ADMIN_MODE ........................................ 175
aexport .......................................................... 24
AGER_WAIT_MAXIMUM ......................... 83
AGER_WAIT_MINIMUM .......................... 83
alaAPI.h ......................................................... 28
ALL_MSGLOG_FLUSH ............................ 153
ALTER REPLICATION ADD TABLE .... 207
ALTER REPLICATION SET MODE ..... 207
ALTER REPLICATION START .............. 206
ALTER REPLICATION STOP ...... 206, 207
altibase .......................................................... 24
Altibase.jar ........................................... 26, 29
altibase.properties ............................ 22, 28
altibase_boot.log ............................... 22, 31
altibase_id.log ............................................. 31
altibase_IPC.log .......................................... 32
altibase_mt.log ........................................... 32
ALTIBASE_NLS_NCHAR_LITERAL_REPL
ACE .......................................................... 197
ALTIBASE_NLS_USE ................................ 197
altibase_odbc.dll ........................................ 26
altibase_qp.log ........................................... 32
altibase_rp.log ............................................ 32
Altibase_server.jar ................................... 29
altibase_sm.log ........................................... 31
altierr .............................................................. 24
altimon .......................................................... 24
altipasswd .................................................... 24
altiprofile ...................................................... 24
arch_logs 디렉토리 .................................. 27
ARCHIVE_DIR ............................................ 134
ARCHIVE_FULL_ACTION ....................... 134
ARCHIVE_THREAD_AUTOSTART ....... 135
audit ............................................................... 24
audit 디렉토리 .......................................... 27
AUTO_COMMIT ....................................... 132
AUTO_REMOTE_EXEC
............................ 170
B
bin 디렉토리 .............................................. 27
BLOCK_ALL_TX_TIME_OUT .................. 122
BUFFER_AREA_CHUNK_SIZE ................. 49
BUFFER_AREA_SIZE .................................. 49
BUFFER_CHECKPOINT_LIST_CNT ........ 49
BUFFER_FLUSH_LIST_CNT ...................... 50
BUFFER_FLUSHER_CNT ........................... 50
BUFFER_HASH_BUCKET_DENSITY ...... 51
BUFFER_HASH_CHAIN_LATCH_DENSI
TY ................................................................ 51
BUFFER_LRU_LIST_CNT ........................... 52
BUFFER_PREPARE_LIST_CNT ................. 52
BUFFER_VICTIM_SEARCH_INTERVAL 84
BUFFER_VICTIM_SEARCH_PCT ............. 84
BULKIO_PAGE_COUNT_FOR_DIRECT_
PATH_INSERT ......................................... 52
C
CHECKPOINT_BULK_SYNC_PAGE_CO
UNT ........................................................... 85
CHECKPOINT_BULK_WRITE_PAGE_CO
UNT ........................................................... 86
234 ALTIBASE5 Starting User’s Manual
CHECKPOINT_BULK_WRITE_SLEEP_SE
C .................................................................. 86
CHECKPOINT_BULK_WRITE_SLEEP_US
EC ................................................................ 87
CHECKPOINT_ENABLED ...................... 136
CHECKPOINT_FLUSH_COUNT .............. 87
CHECKPOINT_FLUSH_MAX_GAP ......... 88
CHECKPOINT_FLUSH_MAX_WAIT_SE
C .................................................................. 88
CHECKPOINT_INTERVAL_IN_LOG .... 136
CHECKPOINT_INTERVAL_IN_SEC ..... 137
checkServer ................................................. 25
class path .................................................. 231
CM_BUFFER_MAX_PENDING_LIST ...... 85
CM_DISCONN_DETECT_TIME ............ 116
COMMIT_WRITE_WAIT_MODE .......... 137
COMPRESSION_RESOURCE_GC_SECO
ND .............................................................. 53
conf 디렉토리 ............................................ 28
configuration .............................................. 40
consistency .................................................. 14
Constraint .................................................. 181
CREATE REPLICATION .......................... 206
CTF ............................................................... 210
D
Database Link .......................................... 183
DATABASE_IO_TYPE ................................. 89
datafile ........................................................... 20
DATAFILE_WRITE_UNIT_SIZE ................ 89
DB_FILE_MULTIPAGE_READ_COUNT . 90
DB_NAME ..................................................... 53
DBLINK_ENABLE ..................................... 170
DBLINK_QUERY_TIMEOUT .................. 123
dbs 디렉토리 .............................................. 28
DDL 수행 시 주의사항 ........................ 208
DDL_LOCK_TIMEOUT ............................ 123
DDL_SUPPLEMENTAL_LOG_ENABLE . 54
DEFAULT_DATE_FORMAT .................... 176
DEFAULT_DISK_DB_DIR .......................... 54
DEFAULT_FLUSHER_WAIT_SEC ............ 90
DEFAULT_MEM_DB_FILE_SIZE .............. 55
DEFAULT_SEGMENT_MANAGEMENT_
TYPE ........................................................... 55
DEFAULT_SEGMENT_STORAGE_INITE
XTENTS .............................................. 42, 56
DEFAULT_SEGMENT_STORAGE_MAXE
XTENTS ..................................................... 56
DEFAULT_SEGMENT_STORAGE_MINE
XTENTS ..................................................... 57
DEFAULT_SEGMENT_STORAGE_NEXT
EXTENTS .................................................. 57
DEFAULT_THREAD_STACK_SIZE ........ 117
DIRECT_PATH_BUFFER_PAGE_COUNT57
DIRECT_PATH_INSERT_TEMP_QUEUE_
SIZE ............................................................ 92
DIRECT_PATH_INSERT_TEMP_QUEUE_
WAIT_TIME .............................................. 92
DIRECT-PATH INSERT ............................. 15
DISK_INDEX_BUILD_MERGE_PAGE_C
OUNT ........................................................ 93
DISK_INDEX_UNBALANCED_SPLIT_RA
TE ................................................................ 58
DISK_LOB_COLUMN_IN_ROW_SIZE ... 65
DL_MSGLOG_COUNT ............................ 158
DL_MSGLOG_DIR .................................... 158
DL_MSGLOG_FILE ................................... 159
DL_MSGLOG_FLAG ................................. 159
DL_MSGLOG_SIZE ................................... 159
DOUBLE_WRITE_DIRECTORY ................ 58
찾아보기 235
DOUBLE_WRITE_DIRECTORY_COUNT59
DRDB_FD_MAX_COUNT_PER_DATAFI
LE ................................................................. 59
DRDMBS ......................................................... 4
DROP REPLICATION .............................. 207
dump_stack.sh ............................................ 25
dumpla .......................................................... 25
dumplf ........................................................... 25
E
EXEC_DDL_DISABLE ............................... 176
EXECUTE_STMT_MEMORY_MAXIMU
M ................................................................. 93
EXPAND_CHUNK_PAGE_COUNT ......... 60
F
Fail Over 사용 방법 .............................. 212
Fail Over 성공 여부 확인 ................... 212
Fail Over 연결 속성 등록 ................... 212
Fail Over 콜백 작성 방법 ................... 213
Fail-Over .................................................... 210
FAST_START_IO_TARGET ........................ 93
FAST_START_LOGFILE_TARGET ............ 94
fault tolerance ............................................ 14
FETCH_TIMEOUT .................................... 124
H
high availability .......................................... 14
HIGH_FLUSH_PCT ...................................... 95
HOT_LIST_PCT............................................. 95
HOT_TOUCH_CNT ..................................... 96
Hybrid DBMS ................................................ 4
I
ideAllocErrorSpace() .............................. 222
IDLE_TIMEOUT ......................................... 124
iloader ........................................................... 25
immediate ................................................... 36
include 디렉토리 ...................................... 28
index rebuilding ...................................... 106
INDEX_BUILD_THREAD_COUNT .......... 96
INDEX_INITRANS ...................................... 96
INDEX_MAXTRANS .................................. 97
indexes ........................................................ 181
INSPECTION_LARGE_HEAP_THRESHO
LD ............................................................... 97
install 디렉토리 ......................................... 29
integrity rule ............................................... 10
IPC .................................................................. 15
IPC_CHANNEL_COUNT ......................... 117
IPC_PORT_NO .......................................... 117
ISOLATION_LEVEL .................................. 132
isql .................................................................. 25
J
JDBC 드라이버 ........................................ 231
JDBC를 활용한 프로그램 .................... 231
K
killCheckServer .......................................... 25
L
LFG_GROUP_COMMIT_INTERVAL_US
EC ............................................................... 98
LFG_GROUP_COMMIT_RETRY_USEC . 98
LFG_GROUP_COMMIT_UPDATE_TX_C
OUNT ........................................................ 99
lib 디렉토리 ................................................ 29
libodbccli.a .................................................. 26
libodbccli.ar ................................................. 30
libsesc.a ........................................................ 29
LINKER_CONNECT_TIMEOUT ............. 125
236 ALTIBASE5 Starting User’s Manual
LINKER_LINK_TYPE ................................. 171
LINKER_PORT_NO .................................. 171
LINKER_RECEIVE_TIMEOUT ................ 126
LINKER_SQLLEN_SIZE ............................ 173
LINKER_THREAD_COUNT .................... 171
LINKER_THREAD_SLEEP_TIME ........... 172
LK_MSGLOG_COUNT ............................ 160
LK_MSGLOG_DIR .................................... 160
LK_MSGLOG_FILE ................................... 161
LK_MSGLOG_FLAG ................................. 161
LK_MSGLOG_SIZE ................................... 161
load balancing ........................................... 14
LOB .............................................................. 181
LOCK_ESCALATION_MEMORY_SIZE .. 99
log anchor file ............................................ 19
log file ........................................................... 20
LOG_BUFFER_TYPE ................................. 138
LOG_DIR ........................................................ 60
LOG_FILE_GROUP_COUNT .................. 100
LOG_FILE_SIZE ............................................ 61
LOG_IO_TYPE ........................................... 101
loganchor 파일 .......................................... 30
LOGANCHOR_DIR ..................................... 61
LOGIN_TIMEOUT .................................... 126
logs 디렉토리 ............................................. 30
LOW_FLUSH_PCT .................................... 101
LOW_PREPARE_PCT ............................... 102
M
makefile............................................... 31, 221
MAX_CLIENT ............................................... 61
MAX_DBLINK_COUNT .......................... 172
MAX_FLUSHER_WAIT_SEC .................. 102
MAX_LISTEN ............................................. 118
MEM_DB_DIR .............................................. 62
MEM_MAX_DB_SIZE ................................ 62
MEM_SIZE_CLASS_COUNT .................... 63
MEMORY_INDEX_BUILD_RUN_SIZE ... 63
MEMORY_INDEX_BUILD_VALUE_LEN
GTH_THRESHOLD ................................ 64
MEMORY_LOB_COLUMN_IN_ROW_SI
ZE ................................................................ 64
MEMORY_VARIABLE_COLUMN_IN_R
OW_SIZE .................................................. 65
message file ................................................ 22
MIN_COMPRESSION_RESOURCE_CO
UNT ........................................................... 66
MIN_LOG_RECORD_SIZE_FOR_COMP
RESS ........................................................... 66
MIN_PAGES_ON_DB_FREE_LIST........... 67
MIN_PAGES_ON_TABLE_FREE_LIST .... 67
MMDBMS ....................................................... 5
msg 디렉토리 ............................................ 30
MULTIPLEXING_CHECK_INTERVAL .. 102
MULTIPLEXING_MAX_THREAD_COUN
T ................................................................ 103
MULTIPLEXING_POLL_TIMEOUT ....... 125
MULTIPLEXING_THREAD_COUNT .... 103
MVCC ............................................................ 11
N
NETWORK_ERROR_LOG ....................... 162
NLS ............................................................... 190
NLS_COMP ................................................ 119
NLS_NCHAR_CONV_EXCP ................... 118
normal ........................................................... 36
NORMALFORM_MAXIMUM ............... 104
O
Object Privilege ....................................... 185
찾아보기 237
ODBC 드라이버 ...................................... 235
OPTIMIZER_MODE ................................. 105
P
PARALLEL_DML_MODE ........................ 105
PARALLEL_LOAD_FACTOR .................. 106
Partitioned Index .................................... 184
Partitioned table ..................................... 183
PCTFREE ........................................................ 68
PCTUSED ....................................................... 68
PORT_NO................................................... 120
PREPARE_LOG_FILE_COUNT .............. 138
PREPARE_STMT_MEMORY_MAXIMU
M .............................................................. 106
PSM_FILE_OPEN_LIMIT ......................... 120
Q
QP_MEMORY_CHUNK_SIZE .................. 69
QP_MSGLOG_COUNT ........................... 153
QP_MSGLOG_DIR ................................... 153
QP_MSGLOG_FILE .................................. 154
QP_MSGLOG_FLAG ................................ 154
QP_MSGLOG_SIZE.................................. 155
QUERY_PROF_FLAG ............................... 155
QUERY_STACK_SIZE............................... 177
QUERY_TIMEOUT ................................... 126
Queue Table............................................. 180
R
REFINE_PAGE_COUNT .......................... 106
relational model ........................................ 10
REMOTE_SERVER_CONNECT_TIMEOU
T ................................................................ 127
REMOTE_SYSDBA_ENABLE ................. 177
REPLICAITON_KEEP_ALIVE_CNT ....... 143
REPLICAITON_LOCK_TIMEOUT ......... 128
replication .................................................... 14
Replication................................................. 183
REPLICATION_ SYNC_MAX_LIMIT .... 149
REPLICATION_ACK_XLOG_COUNT... 140
REPLICATION_CONNECT_RECEIVE_TI
MEOUT ................................................... 140
REPLICATION_CONNECT_TIMEOUT 127
REPLICATION_HBT_DETECT_HIGHWA
TER_MARK ............................................. 141
REPLICATION_HBT_DETECT_TIME .... 142
REPLICATION_LOG_BUFFER_SIZE ..... 143
REPLICATION_MAX_LOGFILE ............. 144
REPLICATION_POOL_ELEMENT_COU
NT ............................................................. 145
REPLICATION_POOL_ELEMENT_SIZE145
REPLICATION_PORT_NO ...................... 146
REPLICATION_PREFETCH_LOGFILE_C
OUNT ...................................................... 146
REPLICATION_RECEIVE_TIMEOUT .... 128
REPLICATION_RECOVERY_MAX_LOGF
ILE ............................................................. 147
REPLICATION_RECOVERY_MAX_TIME147
REPLICATION_SENDER_AUTO_START148
REPLICATION_SENDER_SLEEP_TIME 148
REPLICATION_SENDER_SLEEP_TIMEO
UT ............................................................. 129
REPLICATION_SYNC_LOCK_TIMEOUT130
REPLICATION_SYNC_LOG .................... 150
REPLICATION_SYNC_TUPLE_COUNT150
REPLICATION_TIMESTAMP_RESOLUTI
ON ............................................................ 151
REPLICATION_UPDATE_REPLACE ..... 151
rollback ......................................................... 20
RP_MSGLOG_COUNT ............................ 156
RP_MSGLOG_DIR .................................... 156
238 ALTIBASE5 Starting User’s Manual
RP_MSGLOG_FILE ................................... 157
RP_MSGLOG_FLAG ................................ 157
RP_MSGLOG_SIZE .................................. 157
S
sample 디렉토리 ....................................... 31
SELECT_HEADER_DISPLAY .................. 178
Sequence ................................................... 182
server ............................................................. 25
SERVER_MSGLOG_COUNT ................. 162
SERVER_MSGLOG_DIR .......................... 163
SERVER_MSGLOG_FILE ......................... 163
SERVER_MSGLOG_SIZE ........................ 163
SERVICE_THREAD_STACK_SIZE ......... 120
ses.h ................................................................ 29
sesc ................................................................. 25
SEVER_MSGLOG_FLAG ......................... 164
SHM_DB_KEY............................................... 69
SHM_PAGE_COUNT_PER_KEY ........... 107
shmutil ........................................................... 26
SM_MSGLOG_COUNT .......................... 164
SM_MSGLOG_DIR .................................. 165
SM_MSGLOG_FILE .................................. 165
SM_MSGLOG_FLAG ............................... 166
SM_MSGLOG_SIZE ................................. 165
SMALL_TABLE_PAGE_COUNT ............ 108
SORT_AREA_SIZE .................................... 108
SQL_PLAN_CACHE_BUCKET_CNT ..... 109
SQL_PLAN_CACHE_HOT_REGION_LR
U_RATIO ................................................ 109
SQL_PLAN_CACHE_PREPARED_EXECU
TION_CONTEXT_CNT ....................... 110
SQL_PLAN_CACHE_SIZE ....................... 110
SQL92............................................................. 11
SQLCLI ........................................................ 221
sqlcli.h ........................................................... 28
sqltypes.h ..................................................... 29
sqlucode.h ................................................... 29
ST_OBJECT_BUFFER_SIZE ....................... 70
STARTUP_SHM_CHUNK_SIZE ............... 70
STF ................................................................ 210
stored function ........................................ 182
stored procedure .................................... 182
SYS_DATA_FILE_INIT_SIZE...................... 71
SYS_DATA_FILE_MAX_SIZE .................... 72
SYS_DATA_FILE_NEXT_SIZE ................... 72
SYS_DATA_TBS_EXTENT_SIZE ............... 71
SYS_TEMP_FILE_INIT_SIZE ...................... 73
SYS_TEMP_FILE_MAX_SIZE .................... 74
SYS_TEMP_FILE_NEXT_SIZE ................... 74
SYS_TEMP_TBS_EXTENT_SIZE ............... 73
SYS_UNDO_FILE_INIT_SIZE .................... 75
SYS_UNDO_FILE_MAX_SIZE .................. 76
SYS_UNDO_FILE_NEXT_SIZE ................. 76
SYS_UNDO_TBS_EXTENT_SIZE ............. 75
sysdba 관리자 모드 ................................ 34
system privileges .................................... 185
T
TABLE_BACKUP_FILE_BUFFER_SIZE .... 77
TABLE_INITRANS ..................................... 111
TABLE_LOCK_ENABLE ............................ 111
TABLE_MAXTRANS ................................. 111
tables ........................................................... 180
tablespaces ............................................... 183
TCP/IP ............................................................ 15
TEMP_PAGE_CHUNK_COUNT .............. 77
TIMED_STATISTICS ................................. 113
TIMER_RUNNING_LEVEL ...................... 112
TIMER_THREAD_RESOLUTION ........... 113
찾아보기 239
TOUCH_TIME_INTERVAL ..................... 114
transaction ................................................... 12
TRANSACTION_SEGMENT_COUNT . 114
TRANSACTION_TABLE_SIZE ............... 133
trc 디렉토리 ................................................ 31
TRCLOG_DETAIL_PREDICATE ............. 166
TRCLOG_SET_LOCK_TIME .................... 167
Trigger ........................................................ 182
TRX_UPDATE_MAX_LOGSIZE ............. 115
Type Set ..................................................... 182
U
Unix Domain socket ................................ 15
USE_MEMORY_POOL ............................ 121
USER_DATA_FILE_INIT_SIZE ................... 78
USER_DATA_FILE_MAX_SIZE ................. 78
USER_DATA_FILE_NEXT_SIZE ................ 79
USER_DATA_TBS_EXTENT_SIZE ............ 77
USER_TEMP_FILE_INIT_SIZE ................... 80
USER_TEMP_FILE_MAX_SIZE ................. 80
USER_TEMP_FILE_NEXT_SIZE ................ 81
USER_TEMP_TBS_EXTENT_SIZE............ 79
users............................................................. 184
UTRANS_TIMEOUT ................................. 130
V
View ............................................................. 181
VOLATILE_MAX_DB_SIZE ....................... 81
X
XA_HEURISTIC_COMPLETE .................. 121
XA_INDOUBT_TX_TIMEOUT ................ 131
XA_MSGLOG_COUNT ............................ 167
XA_MSGLOG_DIR .................................... 167
XA_MSGLOG_FILE ................................... 168
XA_MSGLOG_FLAG ................................ 169
XA_MSGLOG_SIZE .................................. 168