1. aexport#
aexport 소개#
개요#
aexport는 Altibase 데이터베이스 간의 자동화된 데이터 마이그레이션(migration)을 지원하기 위한 도구이다. aexport는 데이터베이스의 논리적인 구조 및 데이터를 텍스트로 저장하고, 이를 다시 새로운 Altibase 데이터베이스로 로딩하기 위한 스크립트를 자동으로 생성하여 준다.
aexport가 접속한 데이터베이스로부터 추출할 수 있는 객체 및 구성 요소는 데이터베이스 사용자, 사용자 권한, 테이블, 테이블스페이스, 테이블 제약조건, 인덱스, 뷰, Materialized View, 저장 프로시저, 시퀀스, 그리고 이중화 객체이다.
aexport는 데이터베이스의 논리적인 구조를 SQL 스크립트로 변환하여 저장하고, 모든 데이터를 텍스트로 내려 받기 때문에 상이한 Altibase 버전간, 그리고 상이한 플랫폼 간의 데이터 이동 시에 유용하게 사용될 수 있다. Altibase 서버는 구동했지만 서비스는 하지 않는 상태 즉, 클라이언트 연결이 없을 때 aexport를 사용하기를 권장한다.
aexport 기능 소개#
aexport가 추출할 수 있는 데이터베이스 객체 및 구성 요소는 다음과 같다.
-
데이터베이스 사용자
-
사용자 권한
-
롤(Role)
-
테이블스페이스
-
테이블
-
테이블 제약 조건
-
인덱스
-
뷰
-
Materialized View
-
저장 프로시저
-
이중화 객체
aexport를 수행하면 위에 열거한 데이터베이스 구성 요소를 생성하기 위한 SQL 스크립트와 이를 구동하기 위한 쉘 스크립트가 생성된다.
aexport 모드와 SQL 스크립트 파일#
aexport는 데이터베이스의 어떤 부분을 추출하는지에 따라서 다른 모드로 실행할 수 있다. 모드는 aexport실행 시 커맨드 라인에서 지정할 수 있다.
aexport 실행 모드와 각 모드 별로 생성되는 SQL 스크립트 파일은 아래의 절에서 설명한다.
전체 DB 모드#
이 모드는 전체 데이터베이스를 추출한다. SYS 사용자만이 이 모드로 aexport를 실행할 수 있다.
이 모드로 aexport를 실행할 때 생성되는 SQL 스크립트 파일은 아래와 같다.
-
SYS_CRT_DIR.sql: 모든 디렉토리 객체 생성
-
SYS_CRT_USER.sql: 모든 사용자와 롤(Role) 생성
-
SYS_CRT_SYNONYM.sql: 모든 시노님(Synonym) 객체 생성
-
SYS_CRT_REP.sql: 모든 이중화 객체 생성
-
ALL_CRT_VIEW_PROC.sql: 모든 뷰와 프로시저 생성
-
ALL_CRT_TBS.sql: 모든 테이블스페이스 생성
-
ALL_CRT_TBL.sql: 모든 사용자 테이블 생성
-
ALL_CRT_INDEX.sql: 모든 사용자 인덱스 생성
-
ALL_CRT_FK.sql: 모든 사용자의 외래 키 생성
-
ALL_CRT_TRIG.sql: 모든 사용자의 트리거 생성
-
ALL_CRT_SEQ.sql: 모든 사용자의 시퀀스 생성
-
ALL_CRT_LINK.sql: 모든 사용자의 데이터베이스 Link 생성
-
ALL_EXE_STATS.sql: 모든 사용자의 테이블, 칼럼, 인덱스의 통계 정보 생성
-
ALL_REFRESH_MVIEW.sql: 모든 사용자의 Materialized View를 리프레쉬
-
ALL_ALT_TBL.sql : 모든 사용자의 테이블과 파티션에 대한 접근 모드를 변경
주의: 롤(Role)은 비스키마 객체이므로 전체 DB 모드에서만 추출할 수 있다.
사용자 모드#
이 모드는 옵션으로 지정하는 사용자가 소유한 모든 객체를 추출한다. SYS 사용자와 옵션으로 지정하는 사용자만이 이 모드로 aexport를 실행할 수 있다. 사용자 모드로 aexport를 실행하려면, -u 커맨드라인 옵션에 사용자 이름을 지정하면 된다.
이 모드로 실행할 때 생성되는 SQL 스크립트 파일은 아래와 같다.
-
{사용자명}_CRT_TBL.sql: 지정한 사용자의 모든 테이블 생성
-
{사용자명}_CRT_INDEX.sql: 지정한 사용자의 모든 인덱스 생성
-
{사용자명}_CRT_FK.sql: 지정한 사용자의 모든 외래 키 생성
-
{사용자명}_CRT_TRIG.sql: 지정한 사용자의 모든 트리거 생성
-
{사용자명}_CRT_SEQ.sql: 지정한 사용자의 모든 시퀀스 생성
-
{사용자명}_CRT_LINK.sql: 지정한 사용자의 모든 데이터베이스 Link 생성
-
{사용자명}_EXE_STATS.sql : 지정한 사용자의 모든 테이블, 칼럼, 인덱스의 통계 정보를 설정
-
{사용자명}_REFRESH_MVIEW.sql: 지정한 사용자의 모든 Materialized View를 리프레쉬
-
{사용자명}_ALT_TBL.sql : 지정한 사용자의 테이블과 파티션에 대한 접근 모드를 변경
객체 모드#
이 모드는 옵션으로 지정하는 모든 객체들을 추출한다. 객체 모드로 aexport를 실행하려면, -object 커맨드라인 옵션에 추출하고자 하는 객체들을 user.object 의 형태로 쉼표(",")로 분리 하여 명시하면 된다 (공백문자가 포함되면 안됨). SYS 사용자와 지정하는 객체의 소유자만이 이 모드로 aexport를 실행할 수 있다.
지정한 모든 객체의 소유자는 같아야 한다. 그러나, SYS 사용자로 실행할 때는 지정한 객체들의 소유자가 각각 다른 사용자여도 무방하다.
이 모드로 실행할 때 생성되는 SQL 스크립트 파일은 아래와 같다.
-
{사용자명}_{객체명}_CRT.sql: 지정한 사용자 객체 생성
-
{사용자명}_{객체명}_STATS.sql: 지정한 사용자 통계 정보 생성
쉘 스크립트 파일#
위에서 기술한 SQL 스크립트 파일 외에, aexport 수행 시 생성되는 쉘 스크립트 파일들은 다음과 같다.
-
run_il_in.sh: 데이터 로드 스크립트
-
run_il_out.sh: 데이터 다운로드 스크립트
-
run_is.sh: 스키마 생성 스크립트
-
run_is_con.sh: constraint 생성 스크립트. TWO_PHASE_SCRIPT 프로퍼티를 ON으로 설정하면, 이 쉘 스크립트 파일이 생성된다. 이 파일은 인덱스, 외래 키, 트리거, 및 이중화 객체를 생성하는 SQL 스크립트를 포함한다.
-
run_is_fk.sh: 외래키와 트리거 생성 스크립트. TWO_PHASE_SCRIPT 프로퍼티를 ON으로 설정하면, 이 쉘 스크립트 파일은 생성되지 않는다.
-
run_is_index.sh: 인덱스 생성 스크립트. TWO_PHASE_SCRIPT 프로퍼티를 ON으로 설정하면, 이 쉘 스크립트 파일은 생성되지 않는다.
-
run_is_repl.sh: 이중화 생성 스크립트. TWO_PHASE_SCRIPT 프로퍼티를 ON으로 설정하면, 이 쉘 스크립트 파일은 생성되지 않는다.
-
run_is_refresh_mview.sh: Materialized View를 refresh하는 스크립트. TWO_PHASE_SCRIPT 프로퍼티를 ON으로 설정하면, 이 쉘 스크립트 파일은 생성되지 않는다.
-
run_is_alt_tbl.sh : 테이블과 파티션에 대한 접근 모드를 변경하는 스크립트. TWO_PHASE_SCRIPT 프로퍼티를 ON으로 설정하면, 이 쉘 스크립트 파일은 생성되지 않는다.
aexport 수행 후 생성된 쉘 스크립트를 대상 데이터베이스에 대해 실행하면, 데이터베이스의 논리적 구조가 자동으로 생성된다. 또한 기존의 데이터가 모두 대상 데이터베이스에 로딩된다. 쉘 스크립트는 Altibase iLoader를 사용하여 데이터 다운로드 및 업로드를 수행한다. 쉘 스크립트 내에서 iLoader를 사용하는 과정은 완전히 자동화되어 있기 때문에 사용자가 iLoader의 사용법에 익숙하지 않아도 사용이 가능하다.
aexport에 의해 생성된 모든 파일은 텍스트 파일이기 때문에 사용자의 필요에 따라 변경 후 사용이 가능하므로, 좀 더 유연하게 활용할 수 있다.
aexport 프로퍼티와 스크립트 파일#
이 절은 aexport 프로퍼티 설정에 따라서 생성되는 스크립트 파일에 대해서 설명한다.
프로퍼티에 대한 상세한 설명은 "aexport 프로퍼티" 절을 참조한다.
-
INVALID_SCRIPT = ON 일 때, INVALID.sql 파일이 생성된다. 이 파일은 유효하지 않은 모든 뷰와 저장 프로시저를 생성하는 SQL 스크립트를 포함하는데, 이 파일을 실행하는 쉘 스크립트 파일은 생성되지 않는다.
-
TWO_PHASE_SCRIPT = ON 일 때, ALL_OBJECT.sql 파일과 ALL_OBJECT_CONSTRAINS.sql 파일이 생성된다. ALL_OBJECT.sql 파일은 모든 객체를 생성하는 SQL 스크립트를, ALL_OBJECT_CONSTRAINS.sql 파일은 모든 인덱스, 외래키, 트리거와 이중화 객체를 생성하는 SQL 스크립트를 포함한다. 또한, ALL_OBJECT_CONSTRATINS.sql을 실행하는 run_is_con.sh 쉘 스크립트 파일이 생성된다.
사전 설정#
DBMS_METADATA 패키지 설치#
DBMS_METADATA 패키지는 데이터베이스 딕셔너리로부터 객체 생성 DDL 구문 또는 권한 GRANT 구문을 추출하는 기능을 제공한다.
aexport는 DBMS_METADATA 패키지에 의존성을 가지기 때문에, aexport를 사용하기 위해서는 해당 패키지를 반드시 Altibase에 설치해야 한다. DBMS_METADATA 패키지가 설치되지 않은 Altibase를 대상으로 aexport를 수행하면 다음과 같은 에러가 발생한다.
$ aexport -s localhost -u sys -p manager
-----------------------------------------------------------------
Altibase Export Script Utility.
Release Version 7.3.0.0.0
Copyright 2000, ALTIBASE Corporation or its subsidiaries.
All Rights Reserved.
-----------------------------------------------------------------
[ERR-91144 : DBMS_METADATA package does not exist.]
DBMS_METADATA 패키지에 대한 자세한 설명과 예제는 Stored Procedures Manual의 'Altibase 저장 패키지'를 참조하기 바란다.
aexport 설정#
aexport는 서버에 접속하기 위해서 다음과 같은 정보가 필요하다.
-
ALTIBASE_HOME
서버 혹은 클라이언트가 설치된 경로 -
server_name
Altibase 서버가 구동되어 있는 컴퓨터 서버의 이름(또는 IP 주소) -
port_no
TCP 또는 IPC로 접속할 때 사용할 포트 번호 -
user_id
데이터베이스에 등록된 사용자 ID -
Password
사용자 ID와 일치하는 암호 -
NLS_USE
데이터 검색 시, 사용자에게 보여주는 문자 집합
ALTIBASE_HOME은 환경 변수로 설정하도록 되어 있으며, 나머지는 커맨드 라인 옵션을 통해서 설정할 수 있다.(자세한 내용은 "aexport 사용방법"을 참고한다.)
aexport를 실행하려면 ALTIBASE_HOME 환경 변수와 aexport 설정 파일(aexport.properties)이 필요하다. 실행 전에 ALTIBASE_HOME이 바르게 설정되어 있어야 하며, 샘플로 제공되는 aexport.properties.sample 파일을 이용해 aexport용 설정 파일을 생성해 두어야 한다.
ALTIBASE_HOME은 일반적으로 서버가 설치될 때 자동으로 설정되는데 클라이언트의 경우에는 사용자가 직접 설정해야 한다. 설정되지 않았을 경우에는 제대로 동작하지 않을 수 있으므로 실행 전에 바르게 설정되어 있는지 확인할 것을 권장한다.
port_no와 NLS_USE는 환경 변수 또는 서버 설정 파일(altibase.properties)을 이용해서 설정할 수도 있다. 세 가지 방법으로 모두 설정되어 있을 경우 적용 우선 순위는 다음과 같다.
-
커맨드 라인 옵션
-
환경 변수 (ALTIBASE_PORT_NO, ALTIBASE_NLS_USE)
-
서버 설정 파일(altibase.properties)
그러므로 설정된 값과 다른 옵션으로 연결하고자 할 경우, 커맨드 라인 옵션을 사용하면 서버 설정 파일이나 환경 변수를 변경하지 않아도 된다.
옵션이 설정되어 있지 않을 경우에는 aexport가 처음 실행될 때 옵션 입력 프롬프트를 띄우고 사용자에게서 해당 값을 입력 받는다. 이 때 바르지 않은 형식이나 유효하지 않은 값을 입력할 경우, aexport는 제대로 동작하지 않을 수 있다.
특히 NLS_USE 옵션은 사용자가 설정하지 않았더라도 실행시에 입력 프롬프트를 띄우지 않는다. 만약 사용자가 NLS_USE 옵션을 설정하지 않았다면 현재 데이터베이스의 캐릭터 셋을 이용해 접속을 시도한다. 이 때 데이터베이스의 문자집합이 데이터베이스 캐릭터 셋이 아닐 경우에는 올바로 실행되지 않거나 사용자 데이터가 일부 깨질 수 있으므로 반드시 NLS_USE를 사용 환경에 맞는 값으로 설정해야 한다.
원활한 aexport 사용을 위해 다음 환경 변수를 설정할 것을 권장한다.
-
ALTIBASE_HOME: 서버 혹은 클라이언트가 설치된 경로
-
ALTIBASE_PORT_NO: 서버에 접속할 때 사용할 포트 번호
-
ALTIBASE_NLS_USE: 데이터 검색 시, 사용자에게 보여주는 문자집합
-
PATH: 실행파일이 있는 경로인 $ALTIBASE_HOME/bin 추가
환경변수#
ALTIBASE_HOME#
패키지가 설치된 디렉토리를 설정한다. aexport 사용을 위해 반드시 설정해야 하는 환경변수이다.
ALTIBASE_PORT_NO#
접속할 서버의 포트 번호를 설정하는 환경 변수이다. -PORT 옵션 또는 altibase.properties를 통해서 지정할 수도 있다.
포트 번호 설정의 우선순위는 -PORT 옵션, 환경 변수 ALTIBASE_PORT_NO, altibase.properties 순이며 설정되지 않았을 경우에는 포트 번호 입력 프롬프트가 출력된다.
ALTIBASE_SSL_PORT_NO#
aexport가 SSL/TLS 통신으로 접속할 서버의 포트 번호이다.
SSL 포트 번호 설정의 우선 순위는 -PORT 옵션, 환경변수 ALTIBASE_SSL_PORT_NO, altibase.properties 파일 내의 프로퍼티 순이다. 만약 아무것도 설정되지 않았을 경우에는 포트 번호 입력 프롬프트가 출력된다.
ALTIBASE_NLS_USE#
서버에 연결할 때 사용할 캐릭터 셋을 설정한다. -NLS_USE 옵션 또는 altibase.properties를 통해서 지정할 수도 있다.
NLS_USE 설정의 우선순위는 -NLS_USE 옵션, 환경 변수 ALTIBASE_NLS_USE, altibase.properties 순이며 설정되지 않았을 경우에는 데이터베이스 캐릭터 셋을 사용한다.
주의: 서버 캐릭터 셋과 ALTIBASE_NLS_USE에 설정한 값이 다를 경우에는 정상적으로 동작하지 않을 수 있다. 반드시 적절한 값을 설정할 것을 권장한다.
ALTIBASE_UT_FILE_PERMISSION#
aexport, iLoader, iSQL이 생성하는 파일들의 권한을 설정하는 공통 환경변수이다. 값을 설정하지 않으면 666 (user:rw, group:rw, other: rw)로 설정된다.
예: user:rw, group:--, other:--로 설정하는 경우, export ALTIBASE_UT_FILE_PERMISSION=600
ISQL_FILE_PERMISSION, AEXPORT_FILE_PERMISSION, 또는 ILO_FILE_PERMISSION이 설정된 경우, ALTIBASE_UT_FILE_PERMISSION 환경 변수 보다 우선 처리된다.
예: export ALTIBASE_UT_FILE_PERMISSION=660; export ISQL_FILE_PERMISSION=600; iSQL에서 생성되는 파일의 권한은 ISQL_FILE_PERMISSION=600이 우선처리되어 user:rw, group:--, other:--으로 설정된다. aexport, iloader가 생성하는 파일의 권한은 ALTIBASE_UT_FILE_PERMISSION=660에 따라 user:rw, group:rw, other:--으로 설정된다.
AEXPORT_FILE_PERMISSION#
aexport가 생성하는 파일 권한을 설정하는 환경 변수이다. 값을 설정하지 않으면 666 (user:rw, group:rw, other: rw)로 설정된다.
예: user:rw, group:--, other:--로 설정하는 경우, export AEXPORT_FILE_PERMISSION=600
aexport 사용 방법#
구문#
파라미터#
파라미터 | 설명 |
---|---|
-h | 도움말을 출력한다. |
-s | 데이터를 다운로드할 서버의 호스트 명 또는 IP 주소를 설정한다. 생략시 호스트 명 입력 프롬프트가 출력된다. IP 주소의 경우, IPv4 주소 또는 IPv6 주소를 사용할 수 있다. IPv6 주소는 "["과 "]"로 에워싸야 한다. 예를 들어, localhost 를 명시하고자 할 때, 가능한 값은 다음과 같다. localhost (호스트 이름), 127.0.0.1 (IPv4주소), [::1] (IPv6주소) Altibase에서 IPv6 주소를 사용하는 방법에 대해서는 Administrator's Manual을 참고하기 바란다. |
-u | 접속할 Altibase의 사용자명을 설정한다. 생략 시 사용자명 입력 프롬프트가 출력된다. 전체 DB 모드로 실행하려면, 이 옵션에 SYS 사용자를 지정해야 한다. 사용자 이름에 소문자, 특수 문자 또는 공백이 포함된 경우 큰 따옴표를 사용해야 한다. -u \"user name\" |
-p | 접속할 Altibase 사용자의 패스워드를 설정한다. 생략시 패스워드 입력 프롬프트가 출력된다. |
-port | 접속할 Altibase의 포트번호를 설정한다. 생략 시 환경 변수 ALTIBASE_PORT_NO, altibase.properties를 차례로 참조하며 설정되어 있지 않은 경우에는 포트 번호 입력 프롬프트가 출력된다. |
-object | 추출할 객체를 소유자 이름과 함께 명시한다. 추출할 객체 이름에 소문자, 특수 문자 또는 공백이 포함된 경우 큰 따옴표를 사용해야 한다. -object \"user name\".\"table name\" |
-tserver | 추출한 데이터를 업로드할 대상 서버를 지정한다. 이 정보는 aexport가 생성하는 쉘 스크립트 파일 안에 사용된다. -s 옵션과 마찬가지로 호스트 이름, IPv4 주소 또는 IPv6 주소 모두 가능하다. |
-tport | 접속할 대상 서버의 포트번호를 설정한다. 이 정보는 aexport가 생성하는 쉘 스크립트 파일 안에 사용된다. |
-nls_use | 데이터베이스에 데이터 저장 또는 데이터 추출 시에 사용되는 클라이언트 캐릭터 셋을 지정한다. (US7ASCII, KO16KSC5601, MS949, BIG5, GB231280, MS936, UTF8, SHIFTJIS, MS932, EUCJP). 생략 시 환경 변수 ALTIBASE_NLS_USE, altibase.properties를 차례로 참조하며, 설정되지 않았을 경우에는 데이터베이스 캐릭터 셋을 사용한다. |
-prefer_ipv6 | -s 옵션으로 호스트 이름을 입력했을 때, 접속할 IP 주소의 버전을 결정하는 옵션이다. 이 옵션을 명시하면, 호스트 이름을 IPv6 주소로 바꾸어 접속한다. 이 옵션을 명시하지 않으면, isql은 IPv4 주소로 접속한다. 선호하는 버전의 IP 주소로의 접속이 실패하면, 다른 IP 버전 주소로 접속을 다시 시도한다. 예를 들어, -S 옵션에 "localhost"를 입력하고 이 옵션을 명시하면, isql 은 처음에 IPv6 주소인 [::1]로 접속하고, 이 접속이 실패하면 IPv4 주소인 127.0.0.1로 접속을 다시 시도한다. |
-ssl_ca CA_file_path | 접속할 Altibase 서버의 공개키(public key)가 포함된 CA(인증 기관, Certification Authority) 인증서 파일의 위치를 지정한다. |
-ssl_capath CA_dir_path | 접속할 Altibase 서버의 공개키가 포함된 CA 인증서 파일이 저장되어 있는 디렉토리를 지정한다. |
-ssl_cert certificate_file_path | 클라이언트 인증서 파일의 위치를 지정한다. |
-ssl_key key_file_path | 클라이언트 개인키 파일의 위치를 지정한다. |
-ssl_verify | 이 옵션을 지정하면 클라이언트가 서버로부터 전달받은 인증서를 검증한다. |
-ssl_cipher cipher_list | SSL 암호화를 위해 사용할 알고리즘의 이름 후보들을 지정한다. General Reference에서 SSL_CIPHER_LIST 프로퍼티를 참고한다. |
SSL 접속에 대한 자세한 설명과 예제는 iSQL User's Manual의 '접속 연결 및 해제'를 참조하기 바란다.
수행 절차#
aexport를 사용한 데이터베이스 마이그레이션 절차는 크게 다음과 같이 분류된다.
-
원본 데이터베이스로부터 구조 추출
-
원본 데이터베이스로부터 데이터 추출
-
대상 데이터베이스에 데이터베이스 구조 생성
-
대상 데이터베이스에 데이터 로딩
-
대상 데이터베이스에 Materialized View를 리프레쉬한 다음, 인덱스와 외래키 생성, 접근 모드 변경
데이터베이스 구조 추출#
aexport를 사용하여 데이터베이스 구조를 추출한다.
-
aexport를 수행한다.
$ aexport -s 127.0.0.1 -u sys -p manager
-
Altibase 데이터베이스 사용자의 암호를 입력한다.
(대상 데이터베이스에서 각 사용자가 사용하게 될 암호) -
원격지에 있는 Altibase의 데이터를 aexport를 이용하여 백업을 할 때에는 원격지 서버의 주소와 포트(PORT)를 명시한다.
$ aexport -s 222.112.84.200 -port 20300 -u sys -p manager
데이터 추출#
aexport에 의하여 생성된 쉘 스크립트를 실행하여 테이블 데이터를 추출한다.
-
현재 작업중인 디스크에 충분한 공간이 있는지 확인한다.
텍스트 데이터의 경우 데이터베이스 내부 자료 형태보다 더 많은 용량을 차지할 수 있기 때문에 데이터 파일 사이즈의 두 배 가량의 여유공간 확보를 권장한다. -
"run_il_out.sh" 스크립트를 수행한다.
$ sh run_il_out.sh
대상 데이터베이스에 데이터베이스 구조 생성#
aexport와 "run_il_out.sh"에 의해 생성된 모든 SQL 스크립트와 쉘 스크립트, 그리고 확장자가 "fmt", "log", "dat"인 파일을 대상 데이터베이스가 존재하는 시스템으로 복사한다. 대상 데이터베이스가 동일한 시스템에 존재하는 경우 이 과정은 생략한다.
-
대상 데이터베이스를 구동시킨다.
-
"run_is.sh" 스크립트를 수행한다.
$ sh run_is.sh
-
iSQL로 데이터베이스에 접속하여 데이터베이스 구조가 올바르게 생성되었는지 확인한다. 만약, 데이터베이스 구조가 올바르게 생성되지 않았다면, run_is.sh 수행 당시의 화면출력을 검사하여 문제를 파악한다.
대상 데이터베이스에 데이터 로딩#
-
"run_il_in.sh" 스크립트를 수행한다.
$ sh run_il_in.sh
-
'run_il_in.sh' 디렉토리에서 확장자가 ".bad"인 파일들 중 사이즈가 0이 아닌 파일이 있는지 검사한다. 해당 파일이 있을 경우 해당 테이블에 관련된 .log 파일 및 .bad 파일의 내용을 검사하여 조치한다. 이에 관련된 자세한 사항은 iLoader User's Manual을 참조한다.
대상 데이터베이스에 Materialized View를 리프레쉬한 다음, 인덱스 및 외래키 생성, 접근 모드 변경#
TWO_PHASE_SCRIPT 프로퍼티가 OFF일 때,
-
"run_is_refresh_mview.sh" 스크립트를 수행한다.
$ sh run_is_refresh_mview.sh
-
"run_is_index.sh" 스크립트를 수행한다.
$ sh run_is_index.sh
-
"run_is_fk.sh" 스크립트를 수행한다.
$ sh run_is_fk.sh
-
"run_is_alt_tbl.sh" 스크립트를 수행한다.
$ sh run_is_alt_tbl.sh
TWO_PHASE_SCRIPT 프로퍼티가 ON일 때,
-
"run_is_con.sh" 스크립트를 수행한다.
$ sh run_is_con.sh
주의 사항#
-
SYS 사용자가 아닌 일반 사용자로 aexport를 실행할 경우 해당 사용자가 생성한 스키마에 대해서만 스크립트를 생성한다.
-
SYS 사용자가 아닌 일반 사용자로 aexport를 실행할 경우 이중화 객체는 생성되지 않는다.
-
일반 사용자로 aexport를 실행할 경우 테이블 생성 권한이 필요하다. aexport는 객체간 의존성 분석을 위해 임시 테이블을 생성하기 때문이다.
-
동시에 여러 개의 aexport 프로세스를 실행하면 안 된다. aexport는 생성된 SQL 스크립트를 저장하기 위해 임시 테이블을 사용하기 때문에, 동시에 두 개 이상의 aexport 프로세스를 실행하면 예상치 못한 결과가 나올 수 있다.
-
EXECUTE와 TWO_PHASE_SCRIPT 프로퍼티를 ON 으로, OPERATION 프로퍼티를 IN으로 설정하고 데이터를 업로딩할 때는, INDEX 프로퍼티 값의 영향을 받지 않는다. 이는 인덱스만 생성하는 SQL 스크립트가 따로 생성되지 않기 때문이다.
그러므로 INDEX 프로퍼티를 ON으로 업로딩 작업 (EXECUTE=ON and OPERATION=IN)을 하려면, TWO_PHASE_SCRIPT 프로퍼티를 OFF로 해야 한다. -
"run_is.sh" 스크립트 구동 시 기존에 있는 모든 사용자 및 객체를 삭제하므로, 소스 데이터베이스에서 해당 스크립트를 수행하지 않도록 주의해야 한다.
-
파라미터 -s, -p는 일반적으로 서버에 접속하기 위한 용도뿐 아니라 스크립트에서도 함께 사용된다. 그러나 -tserver, -tport와 함께 사용될 경우에는 -s와 -p는 데이터를 다운로드 할 서버에 접속하는 용도로만 사용되고, 대상 데이터베이스에 대해 수행할 스크립트에는 -tserver와 -tport로 명시한 값들이 사용된다.
$ aexport -s 127.0.0.1 -u sys -p manager -tserver 192.168.1.10 -tport 21300 $ cat run_il_in.sh iloader -s 192.168.1.10 -port 21300 -u SYS -p MANAGER in -f SYS_T1.fmt -d SYS_T1.dat -log SYS_T1.log -bad SYS_T1.bad
-
사용자 생성 시 PASSWORD_VERIFY_FUNCTION을 사용해서 콜백 함수를 지정했다면, 사용자를 import 하기 전에 사용자의 패스워드를 검증 함수에 부합하도록 설정해야 한다. 또한 대상 데이터베이스에 사용자를 import 하기 전에 검증 함수를 먼저 import 해야 한다.
-
사용자 이름 또는 추출할 객체 이름에 소문자, 특수 문자 또는 공백이 포함된 경우 큰 따옴표를 사용해야 한다.
aexport의 한계#
-
저장 프로시저 생성 시 참조해야 할 저장 프로시저가 미리 생성되어 있지 않으면 작업이 실패하게 된다. aexport는 저장 프로시저 간의 의존성에 대한 정보에 접근할 수가 없기 때문에 저장 프로시저 생성 순서를 보장할 수 없다. 이런 경우 저장 프로시저 생성에 실패할 수 있기 때문에 대상 데이터베이스에 저장 프로시저를 수동으로 생성해야 한다.
-
aexport는 시퀀스의 메타 정보에 제한적인 접근만이 가능하다. 이러한 제약 때문에 SYS 사용자 이외의 계정에서 생성한 시퀀스의 경우 INCREMENT BY에 의해서 지정된 시퀀스 특성만 반영이 되고 나머지 특성은 기본 값으로 설정된다. 이러한 제약사항이 문제가 되는 경우 시퀀스를 대상 데이터베이스에 수동으로 생성해야 한다.
-
대상 데이터베이스에 객체를 생성하는 과정에서, Material View 생성 전에 기반 테이블이 미리 생성되어 있어야 한다. aexport는 materialized view 생성을 위한 테이블 생성 순서를 보장하지 않기 때문에, materialized view 생성에 실패할 수도 있다. 이 경우, 사용자가 수동으로 materialized view를 생성해야 한다.
-
aexport 가 원본 데이터베이스에서 materialized view 생성 구문을 추출할 때, 최초로 그 materialized view를 생성했던 구문을 가져온다. 즉, 원본 데이터베이스에서 materialized view에 대해서 refresh 방법 또는 refresh 변경 시기를 변경하는 DDL문을 수행하더라도 aexport가 추출하는 구문에는 해당 변경사항이 반영되지 않는다.
SSL 접속과 스크립트 파일#
-
SSL 접속으로 aexport를 실행하는 경우, 원본 데이터베이스 접속용 스크립트(run_il_out.sh) 파일에는 aexport를 실행할 때 사용한 SSL 옵션이 그대로 적용된다.
-
대상 데이터베이스에 SSL 접속을 원한다면 프로퍼티 파일에 SSL 관련 프로퍼티를 설정해야 한다. 자세한 설명은 aexport 프로퍼티 절의 SSL_ENABLE 프로퍼티를 참조하기 바란다.
aexport 프로퍼티#
aexport 프로퍼티 설정#
aexport.properties 파일의 프로퍼티 값을 조정해야 한다. 이 파일은 $ALTIBASE_HOME/conf 디렉터리에 있어야 한다. (같은 디렉터리의 altibase.properties 파일과 혼동하지 말 것). 이 파일이 없으면 aexport는 구동되지 않는다.
Altibase를 설치할 때, aexport.properties 파일은 $ALTIBASE_HOME/conf에 존재하지 않는다. 다만, 같은 디렉터리에 aexport.properties.sample이라는 이름의 샘플 파일을 제공하는데, 이 파일을 aexport.properties이름으로 복사한 후, 수정해서 사용하면 된다.
aexport 프로퍼티#
OPERATION#
OPERATION = [IN|OUT]
OUT으로 설정할 경우, 모든 스키마와 데이터를 추출할 수 있는 스크립트가 생성된다. 데이터 추출 스크립트(iLoader 실행 명령어로 구성)를 실행하면 form 파일(.fmt)과 데이터 파일(.dat)이 만들어진다.
IN으로 설정할 경우, OUT에서 생성된 스키마 생성 스크립트와 데이터 로딩스크립트를 실행하여 대상 데이터베이스에 스키마를 만들고 데이터를 입력한다. 스키마 생성 스크립트와 데이터 입력 스크립트는 aexport를 실행하지 않고 쉘 프롬프트에서 수동으로 실행할 수도 있다.
EXECUTE#
EXECUTE = [ON|OFF]
생성한 스크립트를 자동으로 수행할 것인지 여부를 설정한다.
ON일 경우 OPERATION에 지정된 작업에 맞는 적절한 스크립트 파일을 자동으로 실행한다. 스크립트 파일 이름은 ILOADER_OUT, ILOADER_IN, ISQL,ISQL_CON, ISQL_INDEX, ISQL_FOREIGN_KEY, ISQL_REPL,ISQL_REFRESH_MVIEW, 그리고 ISQL_ALT_TBL 프로퍼티로 설정된다.
OFF일 경우 스크립트를 생성하기만 하고 실행하지는 않는다.
INVALID_SCRIPT#
INVALID_SCRIPT = [ON|OFF]
이 프로퍼티는 유효하지 않은 객체들을 생성하는 SQL 스크립트를 하나의 스크립트 파일에 모을 것인지 여부를 결정한다.
ON 일 때, INVALID.sql 파일이 생성된다. 이 파일은 유효하지 않은 뷰와 저장 프로시저를 생성하는 모든 SQL 스크립트를 포함한다.
OFF이면, 유효하지 않은 각 객체를 생성하는 SQL 스크립트가 따로 생성된다. 즉, 유효한 객체와 같은 방식으로 다뤄진다.
TWO_PHASE_SCRIPT#
TWO_PHASE_SCRIPT = [ON|OFF]
이 프로퍼티는 객체 생성 스크립트를 두 개의 스크립트 파일로 나눠서 생성할 것인지를 결정한다.
ON 일 때, 아래와 같이 두 개의 SQL 스크립트 파일과 두 개의 쉘 스크립트 파일만이 생성된다.
- ALL_OBJECT.sql, ALL_OBJECT_CONSTRAINS.sql
- run_is.sh, run_is_con.sh
OFF이면, 각 객체를 생성하는 SQL 스크립트 파일을 따로 생성한다.
CRT_TBS_USER_MODE#
CRT_TBS_USER_MODE = [ON|OFF] (기본값: OFF)
사용자 모드에서 테이블스페이스 생성 구문을 추출할 것인지 결정한다.
이 프로퍼티를 ON으로 설정하면, 사용자 모드에서 해당 사용자와 관련된 테이블스페이스를 생성하는 SQL문을 추출한다. 사용자 관련 테이블스페이스는 기본 테이블스페이스, 기본 임시 테이블스페이스, 접근 가능 여부가 설정된 테이블스페이스이다.
INDEX#
INDEX = [ON|OFF]
대상 데이터베이스에 스키마 구성 시 인덱스 포함 여부를 결정한다. 데이터 로딩 후에 인덱스를 생성하고자 할 경우 이 프로퍼티를 ON으로 설정한다. TWO_PHASE_SCRIPT 프로퍼티는 OFF일 때 제대로 동작한다.
USER_PASSWORD#
USER_PASSWORD = password
원본 데이터베이스에서 추출된 사용자를 대상 데이터베이스에 생성할 때 사용할 암호를 지정한다. aexport는 사용자 객체 추출 시 사용자의 암호를 알 수 없기 때문에 수동 설정이 필요하다. 이 프로퍼티가 설정되어 있지 않을 경우 각 사용자의 암호를 묻는 프롬프트가 나타난다.
VIEW_FORCE#
VIEW_FORCE = [ON|OFF]
ON이면 뷰의 기본 테이블 등이 존재하지 않아도 뷰를 강제로 생성한다.
DROP#
DROP = [ON|OFF]
생성 스크립트 내부에 DROP 구문을 포함할 것인지 여부를 결정한다.
ON이면 객체를 제거하는 구문이 SQL 스크립트에 포함되어 대상 데이터베이스 내에 이미 객체가 존재할 경우 기존 객체를 제거하게 된다. 기존 객체를 삭제하기 때문에 사용에 주의를 요한다.
주의: 객체 모드로 실행하면, 이 프로퍼티 값에 상관없이 DROP 구문이 생성되지 않는다.
ILOADER_OUT#
ILOADER_OUT = run_il_out.sh
원본 데이터베이스에서 데이터를 추출하기 위해 생성되는 쉘 스크립트 파일명을 설정한다. OPERATION 프로퍼티를 OUT으로 설정할 경우에 사용된다.
ILOADER_IN#
ILOADER_IN = run_il_in.sh
대상 데이터베이스에 데이터 로딩을 위해 사용될 쉘 스크립트의 파일명을 설정한다.
ISQL#
ISQL = run_is.sh
대상 데이터베이스에 데이터베이스 스키마를 구성하기 위한 SQL 스크립트를 실행하는 쉘 스크립트 파일의 이름을 설정한다.
ISQL_CON#
ISQL_CON = run_is_con.sh
대상 데이터베이스에 인덱스, 외래키, 트리거와 이중화 객체를 생성하는 SQL 스크립트를 실행하는 쉘 스크립트 파일의 이름을 설정한다. TWO_PHASE_SCRIPT 프로퍼티가 ON일 때 사용된다.
ISQL_INDEX#
ISQL_INDEX = run_is_index.sh
대상 데이터베이스에 인덱스를 생성하는 SQL 스크립트를 실행하는 쉘 스크립트 파일의 이름을 설정한다. 이 프로퍼티를 설정하지 않으면 쉘 스크립트 파일은 생성되지 않는다.
ISQL_FOREIGN_KEY#
ISQL_ FOREIGN_KEY = run_is_fk.sh
대상 데이터베이스에 외래키 생성하는 SQL 스크립트를 실행하는 쉘 스크립트 파일의 이름을 설정한다. 이 프로퍼티를 설정하지 않으면 쉘 스크립트 파일은 생성되지 않는다.
ISQL_REPL#
ISQL_REPL = run_is_repl.sh
대상 데이터베이스에 이중화를 생성하기 위한 쉘 스크립트의 파일명을 설정한다. 이 프로퍼티를 설정하지 않으면 쉘 스크립트 파일은 생성되지 않는다.
COLLECT_DBMS_STATS#
COLLECT_DBMS_STATS = [ON|OFF]
이 프로퍼티는 사용자의 테이블, 칼럼, 인덱스의 통계 정보를 추출할 것인지 결정한다.
기본값은 OFF이며 통계 정보를 추출하지 않는다. 이 프로퍼티의 값을 ON으로 할 경우 통계 정보를 추출하도록 한다.
ISQL_REFERSH_MVIEW#
ISQL_REFERSH_MVIEW = run_is_refresh_mview.sh
대상 데이터베이스의 Materialized View를 리프레쉬하는 SQL 스크립트를 실행하는 쉘 스크립트 파일의 이름을 설정한다. 이 프로퍼티를 설정하지 않으면, 쉘 스크립트 파일이 생성되지 않는다.
ISQL_ALT_TBL#
ISQL_ALT_TBL = run_is_alt_tbl.sh
대상 데이터베이스의 테이블과 파티션에 대한 접근 모드를 변경하는 SQL스크립트를 실행하는 쉘 스크립트 파일의 이름을 설정한다. 이 프로퍼티를 설정하지 않으면, 쉘 스크립트 파일이 생성되지 않는다.
ILOADER_FIELD_TERM#
ILOADER_FIELD_TERM = field_term
테이블의 데이터를 텍스트로 다운로드 할 때 사용할 필드 구분자를 설정한다. 설정하지 않을 경우 기본값은 쉼표(,)로 구분되며, 숫자는 그대로, 문자형 칼럼은 큰 따옴표("")로 에워싸여서 출력된다.
주의: 프로퍼티 파일 내에서 # 문자를 구분자로 사용할 경우, # 이하를 주석으로 처리하기 때문에 #는 구분자로 사용할 수 없다.
ILOADER_ROW_TERM#
ILOADER_ ROW_TERM = row_term
테이블 데이터를 텍스트로 내릴 때 사용할 레코드 구분자를 설정한다. 설정하지 않을 경우 기본값은 <LF>이다.
주의: 프로퍼티 파일 내에서 # 문자를 구분자로 사용할 경우, # 이하를 주석으로 처리하기 때문에, #는 구분자로 사용할 수 없다.
ILOADER_PARTITION#
ILOADER_PARTITION = [ON|OFF]
이 프로퍼티는 원본 데이터베이스에 파티션 테이블이 있을 경우, iLoader 스크립트를 파티션 별로 생성할 것인지 결정한다.
이 값이 ON일 경우, run_il_out.sh에 각 파티션마다 form 파일과 데이터를 추출하는 스크립트가 생성된다. run_il_in.sh에도 파티션 별로 데이터를 로드하는 스크립트가 생성된다. 이 값이 OFF일 경우, 파티션드 테이블을 처리하는 스크립트도 논파티션드 테이블과 동일하게 하나의 데이터 파일을 이용하여 추출·입력하도록 생성된다. ILOADER 관련 프로퍼티에 대한 더 자세한 설명은 iLoader User's Manual 을 참고하기 바란다.
ILOADER_ERRORS#
ILOADER_ERRORS = count (기본값: 50)
iLoader로 데이터를 업로드할 때 허용 가능한 최대 에러 개수를 지정한다. 이 프로퍼티의 기본값은 50이며, 0으로 설정하면 발생하는 에러 개수와 무관하게 업로드가 계속 실행된다.
ILOADER_ARRAY#
ILOADER_ARRAY = count (기본값: 1)
iLoader로 데이터를 다운로드 또는 업로드 할 때 한 번에 처리할 row 개수를 지정한다.
ILOADER_COMMIT#
ILOADER_COMMIT = count (기본값: 1000)
iLoader로 데이터를 업로드할 때 커밋할 단위(개수)를 지정한다. 이 프로퍼티로 -commit 옵션의 값을 지정할 수 있다.
ILOADER_PARALLEL#
ILOADER_PARALLEL = count (기본값: 1)
iLoader로 데이터를 다운로드 또는 업로드 할 때 병렬로 처리할 쓰레드 개수를 지정한다.
ILOADER_ASYNC_PREFETCH#
ILOADER_ASYNC_PREFETCH = [OFF|ON|AUTO] (기본값 OFF)
iLoader로 데이터를 다운로드할 때 비동기 prefetch 동작을 설정한다. 자세한 설명은 iLoader User's Manual의 '-async_prefetch'옵션을 참고하기 바란다.
SSL_ENABLE#
대상 데이터베이스에 SSL 프로토콜로 접속할 것인지 여부를 지정한다.
SSL_ENABLE = [ON|OFF]
ON이면 대상 데이터베이스에 실행하는 쉘 스크립트(run_is.sh, run_il_in.sh) 내의 isql, iloader 명령에 SSL 관련 옵션이 지정된다.
SSL 관련 옵션 값은 프로퍼티(SSL_CA, SSL_CAPATH, SSL_CERT, SSL_KEY, SSL_CIPHER, SSL_VERIFY)로 명시할 수 있다.
각 프로퍼티의 역할은 aexport 접속 파라미터와 동일하므로 해당 절을 참조한다. SSL_ENABLE 프로퍼티 설정에 대한 예제는 SSL 프로퍼티 설정을 참고한다.
ILOADER_GEOM = WKB#
iLoader로 공간 데이터를 다운로드 할 때, 공간 데이터를 Well-Known Binary(WKB) 포맷으로 처리하도록 지정하는 옵션이다. run_il_out.sh 파일에 -geom WKB 옵션이 추가된다.
사용 예제#
전체 DB 모드로 실행#
$ aexport -s 127.0.0.1 -u sys -p manager
-----------------------------------------------------------------
Altibase Export Script Utility.
Release Version 7.3.0.0.0
Copyright 2000, ALTIBASE Corporation or its subsidiaries.
All Rights Reserved.
-----------------------------------------------------------------
#### TBS #####
#### USER #####
#### SYNONYM #####
#### DIRECTORY #####
#### TABLE #####
#### QUEUE #####
#### SEQUENCE #####
#### DATABASE LINK #####
#### VIEW #####
#### MATERIALIZED VIEW #####
#### STORED PROCEDURE #####
#### STORED PACKAGE #####
#### TRIGGER #####
#### LIBRARY #####
#### REPLICATION #####
#### JOB #####
-------------------------------------------------------
#### The following script files were generated. #####
1. run_il_out.sh : [ iloader formout, data-out script ]
2. run_is.sh : [ isql table-schema script ]
3. run_il_in.sh : [ iloader data-in script ]
4. run_is_refresh_mview.sh : [ isql materialized view refresh script ]
5. run_is_index.sh : [ isql table-index script ]
6. run_is_fk.sh : [ isql table-foreign key script ]
7. run_is_repl.sh : [ isql replication script ]
8. run_is_job.sh : [ isql job script ]
9. run_is_alt_tbl.sh : [ isql table-alter script ]
-------------------------------------------------------
$ ls -l
ALL_ALT_TBL.sql
ALL_CRT_DIR.sql
ALL_CRT_FK.sql
ALL_CRT_INDEX.sql
ALL_CRT_JOB.sql
ALL_CRT_LIB.sql
ALL_CRT_LINK.sql
ALL_CRT_REP.sql
ALL_CRT_SEQ.sql
ALL_CRT_SYN.sql
ALL_CRT_TBL.sql
ALL_CRT_TBS.sql
ALL_CRT_TRIG.sql
ALL_CRT_USER.sql
ALL_CRT_VIEW_PROC.sql
ALL_REFRESH_MVIEW.sql
run_il_in.sh
run_il_out.sh
run_is.sh
run_is_alt_tbl.sh
run_is_fk.sh
run_is_index.sh
run_is_job.sh
run_is_refresh_mview.sh
run_is_repl.sh
사용자 모드로 실행#
iSQL> CREATE USER user1 IDENTIFIED BY user1;
Create success.
$ aexport -s 127.0.0.1 -u user1 -p user1
-----------------------------------------------------------------
Altibase Export Script Utility.
Release Version 7.3.0.0.0
Copyright 2000, ALTIBASE Corporation or its subsidiaries.
All Rights Reserved.
-----------------------------------------------------------------
#### USER #####
#### SYNONYM #####
#### TABLE #####
#### QUEUE #####
#### SEQUENCE #####
#### DATABASE LINK #####
#### VIEW #####
#### MATERIALIZED VIEW #####
#### STORED PROCEDURE #####
#### STORED PACKAGE #####
#### TRIGGER #####
#### LIBRARY #####
-------------------------------------------------------
#### The following script files were generated. #####
1. run_il_out.sh : [ iloader formout, data-out script ]
2. run_is.sh : [ isql table-schema script ]
3. run_il_in.sh : [ iloader data-in script ]
4. run_is_refresh_mview.sh : [ isql materialized view refresh script ]
5. run_is_index.sh : [ isql table-index script ]
6. run_is_fk.sh : [ isql table-foreign key script ]
7. run_is_repl.sh : [ isql replication script ]
8. run_is_job.sh : [ isql job script ]
9. run_is_alt_tbl.sh : [ isql table-alter script ]
-------------------------------------------------------
$ ls -l
USER1_ALT_TBL.sql
USER1_CRT_DIR.sql
USER1_CRT_FK.sql
USER1_CRT_INDEX.sql
USER1_CRT_LIB.sql
USER1_CRT_LINK.sql
USER1_CRT_SEQ.sql
USER1_CRT_SYN.sql
USER1_CRT_TBL.sql
USER1_CRT_TRIG.sql
USER1_CRT_USER.sql
USER1_CRT_VIEW_PROC.sql
USER1_REFRESH_MVIEW.sql
run_il_in.sh
run_il_out.sh
run_is.sh
run_is_alt_tbl.sh
run_is_fk.sh
run_is_index.sh
run_is_job.sh
run_is_refresh_mview.sh
run_is_repl.sh
객체 모드로 실행#
iSQL> CREATE USER user1 IDENTIFIED BY user1;
Create success.
iSQL> CONNECT user1/user1;
iSQL> CREATE TABLE t1(i1 INTEGER);
Create success.
iSQL> CREATE VIEW v1 AS SELECT i1 FROM t1;
Create success.
iSQL> CREATE MATERIALIZED VIEW m1 AS SELECT * FROM t1;
Create success.
iSQL> CREATE OR REPLACE PROCEDURE proc1(p1 IN INTEGER)
AS a INTEGER;
BEGIN
SELECT * INTO a FROM t1 WHERE i1 = 1;
END;
/
Create success.
$ aexport -s 127.0.0.1 -u user1 -p user1 -object user1.t1
-----------------------------------------------------------------
Altibase Export Script Utility.
Release Version 7.3.0.0.0
Copyright 2000, ALTIBASE Corporation or its subsidiaries.
All Rights Reserved.
-----------------------------------------------------------------
#### TABLE #####
$ ls
user1_t1_CRT.sql
$ aexport -s 127.0.0.1 -u user1 -p user1 -object user1.m1
-----------------------------------------------------------------
Altibase Export Script Utility.
Release Version 7.3.0.0.0
Copyright 2000, ALTIBASE Corporation or its subsidiaries.
All Rights Reserved.
-----------------------------------------------------------------
#### MATERIALIZED VIEW #####
$ ls
user1_m1_CRT.sql
$ aexport -s 127.0.0.1 -u user1 -p user1 -object user1.t1,user1.v1,user1.proc1
-----------------------------------------------------------------
Altibase Export Script Utility.
Release Version 7.3.0.0.0
Copyright 2000, ALTIBASE Corporation or its subsidiaries.
All Rights Reserved.
-----------------------------------------------------------------
#### TABLE #####
#### VIEW #####
#### STORED PROCEDURE #####
$ ls
user1_proc1_CRT.sql
user1_t1_CRT.sql
user1_v1_CRT.sql
SSL 프로퍼티 설정#
SSL_ENABLE = ON # OFF
SSL_CA = ${ALTIBASE_HOME}/cert/ca-cert.pem
#SSL_CAPATH = ${ALTIBASE_HOME}/cert
SSL_CERT = ${ALTIBASE_HOME}/cert/client-cert.pem
SSL_KEY = ${ALTIBASE_HOME}/cert/client-key.pem
SSL_CIPHER = RC4-SHA:RC4-MD5
SSL_VERIFY = ON # OFF