콘텐츠로 이동

1.iSQL 이용방법#

iSQL의 개요#

iSQL은 Altibase에 접속하여 SQL 문과 부가적인 여러 명령어를 통해 서버에 저장되어 있는 자료를 얻고, 수정하는 작업을 수행할 수 있는 사용자 도구이다.

iSQL의 주요 기능#

  • Altibase의 구동 및 종료 기능
    Altibase 서버의 구동 및 종료 등의 데이터베이스 관리를 위해 여러 개의 커맨드라인 명령어를 사용하는 대신에, iSQL 하나의 도구만을 사용하면 된다.

  • 데이터베이스 접속 및 해제 기능
    Altibase 구동 이후 데이터베이스 접속 시 다양한 사용자명으로의 접속 및 해제가 가능하다.

  • 데이터베이스 객체 정보 조회 기능
    iSQL에서는 데이터베이스 객체에 대한 모든 정보를 SQL문으로 조회할 수 있으며, 주요 객체에 대해서는 간편한 조회 명령어를 지원한다.

  • SQL문 수행을 통한 데이터베이스 관리 기능
    iSQL을 사용해 모든 SQL문을 수행할 수 있도록 지원하므로 트랜잭션 제어, 데이터베이스 변경 등을 빠르고 간편하게 수행할 수 있다.

  • 사용자 편의 기능
    위의 기능을 쉽고 편리하게 수행할 수 있도록 파일 처리 기능, 에디터 기능, iSQL상에서의 쉘 명령어 수행 기능, HISTORY 기능 등을 지원한다.

iSQL 설정#

iSQL은 서버에 접속하기 위해서 다음과 같은 정보가 필요하다.

  • ALTIBASE_HOME
    서버 혹은 클라이언트가 설치된 경로

  • server_name
    Altibase 서버가 구동되어 있는 컴퓨터 서버의 이름(또는 IP 주소)

  • port_no
    TCP, IPC 또는 IPCDA로 접속할 때 사용할 포트 번호

  • user_id
    데이터베이스에 등록된 사용자 ID

  • password
    사용자 ID와 일치하는 암호

  • NLS_USE
    데이터 검색 시, 사용자에게 보여주는 문자 집합

ALTIBASE_HOME은 환경 변수로 설정하도록 되어있으며, 나머지는 커맨드 라인 옵션을 통해서 설정할 수 있도록 되어 있다. (자세한 내용은 “iSQL 커맨드 라인 옵션”을 참고한다.)

ALTIBASE_HOME은 iSQL을 사용하기 위해서 반드시 설정해야 하는 환경 변수이다. 일반적으로 서버가 설치될 때 자동으로 설정되지만, 클라이언트의 경우에는 사용자가 직접 설정해야 한다. 설정되지 않았을 경우에는 올바르게 동작하지 않을 수 있으므로 실행 전에 올바르게 설정되어 있는지 확인할 것을 권한다.

port_no와 NLS_USE는 환경 변수 또는 서버 설정 파일(altibase.properties)을 이용해서 설정할 수도 있다. 세 가지 방법으로 모두 설정되어 있을 경우 적용 우선 순위는 다음과 같다.

  1. 커맨드 라인 옵션

  2. 환경 변수(ALTIBASE_PORT_NO, ALTIBASE_NLS_USE)

  3. 서버 설정 파일(altibase.properties)

그러므로 이미 설정된 값과 다른 옵션으로 연결하고자 할 경우, 커맨드 라인 옵션을 사용하면 서버 설정 파일이나 환경 변수를 변경하지 않아도 된다.

옵션이 설정되어 있지 않을 경우에는 iSQL이 처음 실행될 때 옵션 입력 프롬프트를 띄우고 사용자에게서 해당 값을 입력 받는다. 이 때 바르지 않은 형식이나 유효하지 않은 값을 입력할 경우, iSQL은 올바르게 동작하지 않을 수도 있다.

특히 NLS_USE 옵션은 사용자가 설정하지 않았더라도 실행 시에 입력 프롬프트가 나타나지 않는다. 만약 사용자가 NLS_USE 옵션을 설정하지 않았다면 기본값인 US7ASCII를 이용해 접속을 시도한다. 이 때 데이터베이스의 캐릭터 셋이 US7ASCII이 아닐 경우에는 바르게 실행되지 않거나 사용자 데이터가 일부 깨질 수 있으므로 반드시 NLS_USE를 사용 환경에 맞는 값으로 설정해야 한다.

원활한 iSQL 사용을 위해 다음 환경 변수를 설정할 것을 권장한다.

  • ALTIBASE_HOME : 서버 혹은 클라이언트가 설치된 경로

  • ALTIBASE_PORT_NO : 서버에 접속할 때 사용할 포트 번호

  • ALTIBASE_NLS_USE : 데이터 검색 시, 사용자에게 보여주는 문자 집합

  • PATH : 실행 파일이 있는 경로인 \$ALTIBASE_HOME/bin 추가

iSQL 커맨드 라인 옵션#

iSQL을 실행하기 위해서는 반드시 Altibase 서버를 먼저 구동 시켜야 한다. 옵션은 대문자 또는 소문자 모두 사용할 수 있다.

isql
[-H]
[-S server_name]
[-PORT port_no]
[-U user_id] [-P password] [/NOLOG]
[-SYSDBA] [-KEEP_SYSDBA]
[-UNIXDOMAIN-FILEPATH filepath]
[-IPC-FILEPATH filepath]
[-SILENT]
[-F infile_name [param1 [param2]...]] [-O outfile_name] [-NLS_USE nls_name]
[-NLS_NCHAR_LITERAL_REPLACE 0|1]
[-prefer_ipv6] [-TIME_ZONE timezone]
[-ssl_ca CA_file_path | -ssl_capath CA_dir_path]
[-ssl_cert certificate_file_path]
[-ssl_key key_file_path]
[-ssl_verify]
[-ssl_cipher cipher_list]
  • -S server_name Altibase 서버가 구동되어 있는 컴퓨터 서버의 이름(또는 IP 주소)을 명시한다. 만약 ISQL_CONNECTION 환경 변수가 IPC 또는 UNIX로 설정되어 있을 때, 이 옵션에 원격 서버를 명시해서 접속을 시도하면, iSQL은 ISQL_CONNECTION의 설정을 무시하고 TCP로 원격 서버에 접속할 것이다. 이 때, ISQL_CONNECTION 설정이 무시되었다는 경고 메시지가 출력된다. IPv4 주소 또는 IPv6 주소를 사용할 수 있다. IPv6 주소는 “[“과 “]”로 에워싸여야 한다. 예를 들어, localhost 를 명시하고자 할 때, 가능한 값은 다음과 같다. localhost (호스트 이름), 127.0.0.1 (IPv4주소), [::1] (IPv6주소) IPv6 주소 표기법에 대한 자세한 내용은 Administrator’s Manual을 참고하기 바란다.
  • -PORT port_no TCP, IPC 또는 IPCDA로 접속할 때 해당 포트 번호를 명시한다. 단 유닉스 환경에서 IPC로 접속시 이 옵션은 명시하지 않아야 한다. 만약 명시하면 경고 메시지가 출력된 후, 서버에 접속한다. TCP로 접속하려면 먼저 클라이언트에서 환경 변수 ‘ISQL_CONNECTION=TCP’를 설정하고, 옵션에 PORT_NO를 입력한다. ISQL_CONNECTION 환경 변수의 값이 IPC가 아니고 –PORT 옵션을 생략한다면 ALTIBASE_PORT_NO와 PORT_NO 프로퍼티를 차례로 참조하고, 모두 설정되어 있지 않다면 포트 번호 입력 프롬프트가 출력된다.
  • -U user_id 데이터베이스에 등록된 사용자 ID를 명시한다.
  • -P password 사용자 ID와 일치하는 암호를 명시한다.
  • /NOLOG 데이터베이스에 접속하지 않고 iSQL을 실행한다.
  • -SYSDBA SYS 사용자가 관리자 모드로 iSQL 유틸리티를 사용하기 위해서 -SYSDBA 옵션을 사용할 수 있다. 서버가 구동되어 있지 않다면, iSQL은 idle 인스턴스로 접속할 것이며, 그 상태에서 서버를 구동할 수 있다.
  • -KEEP_SYSDBA 사용자가 -sysdba 옵션으로 관리자 모드 접속 시, 서버 구동 후에는 서비스 세션으로 재접속 된다. -keep_sydba 옵션은 서버 구동 후 서비스 세션으로 재접속하지 않고 관리자 모드를 유지하게 한다.
  • -UNIXDOMAIN-FILEPATH filepath
    유닉스 환경에서 서버와 클라이언트가 유닉스 도메인 소켓으로 접속할 때 (ISQL_CONNECTION=UNIX), ALTIBASE_HOME이 서로 다르다면 유닉스 도메인의 소켓 경로가 다르게 되어 접속이 불가능하다. 이 때 서버와 클라이언트가 같은 파일 (e.g. ALTIBASE_HOME/trc/cm-unix)을 사용하도록 하면, 유닉스 도메인 통신이 가능해진다.
  • -IPC-FILEPATH filepath
    유닉스 환경에서 서버와 클라이언트가 IPC로 접속 (ISQL_CONNECTION=IPC)할 때, ALTIBASE_HOME이 서로 다르다면 유닉스 도메인의 소켓 경로가 다르게 되어 접속이 불가능하다. 이 때 ALTIBASE_HOME/trc/cm-ipc 파일을 이용하면, 유닉스 도메인 통신이 가능해져 공유 메모리의 정보를 가져올 수 있다. 그러나 이 옵션은 환경변수 ALTIBASE_IPC_FILEPATH를 설정하였다면 생략해도 된다.
  • -IPCDA-FILEPATH filepath
    유닉스 환경에서 서버와 클라이언트가 IPCDA로 접속 (ISQL_CONNECTION=IPCDA)할 때, ALTIBASE_HOME이 서로 다르다면 유닉스 도메인의 소켓 경로가 다르게 되어 접속이 불가능하다. 이 때 ALTIBASE_HOME/trc/cm-ipcda 파일을 이용하면, 유닉스 도메인 통신이 가능해져 공유 메모리의 정보를 가져올 수 있다. 그러나 이 옵션은 환경변수 IPCDA_FILEPATH를 설정하였다면 생략해도 된다.
  • -F infile_name [param1 [param2]...]
    iSQL 실행 후 바로 실행할 스크립트 파일을 명시한다.
    파일 이름에 특수 문자 또는 공백이 포함된 경우 큰따옴표를 사용해야 한다.
    예) -F \" file name\"
    스크립트 파일의 치환 변수에 대입할 값을 파라미터로 지정할 수 있다. 치환 변수에 대한 설명은 'START 명령에 파라미터 전달'을 참조하기 바란다.
  • -O outfile_name iSQL 실행 후 실행한 명령들에 대한 결과들을 저장할 파일을 명시한다. 이 파일은 현재 디렉터리에 생성된다. 파일이 기존에 존재할 경우, 기존 내용 위에 겹쳐 쓴다.
    파일 이름에 특수 문자 또는 공백이 포함된 경우 큰따옴표를 사용해야 한다.
    예) -O \" file name\"
  • -H iSQL의 실행 방법을 보여준다.
  • -SILENT silent 모드를 켜는 옵션이다. silent 모드를 켜면 Copyright 등의 부가적인 설명들을 보여주지 않는다.
  • -NLS_USE 데이터 검색 시, 사용자에게 보여주는 문자 집합(Character Set)이다. iSQL을 실행하는 터미널의 encoding을 명시하여 준다. 생략 시 환경변수 ALTIBASE_NLS_USE, altibase.properties를 차례로 참조하며, 설정되지 않았을 경우에는 기본 문자 집합 (US7ASCII)을 사용한다.
  • US7ASCII
  • KO16KSC5601
  • MS949
  • BIG5
  • GB231280
  • MS936
  • UTF8
  • SHIFTJIS
  • MS932
  • EUCJP-NLS_NCHAR_LITERAL_REPLACE
    0 : “N” 문자가 있는지 검사하지 않고 쿼리 문 전체를 데이터베이스 문자 셋으로 변환한다.
    1 : “N” 문자가 붙어있는 NCHAR 리터럴은 데이터베이스 문자 셋으로 변환하지 않는다.
  • -prefer_ipv6 -S 옵션으로 호스트 이름을 입력했을 때, 접속할 IP 주소의 버전을 결정하는 옵션이다.
    이 옵션을 명시하면, 호스트 이름을 IPv6 주소로 바꾸어 접속한다.
    이 옵션을 명시하지 않으면, iSQL은 IPv4 주소로 접속한다.
    선호하는 버전의 IP 주소로의 접속이 실패하면, 다른 IP 버전 주소로 접속을 다시 시도한다.
    예를 들어, -S 옵션에 “localhost”를 입력하고 이 옵션을 명시하면, iSQL 은 처음에 IPv6 주소인 [::1]로 접속하고, 이 접속이 실패하면 IPv4 주소인 127.0.0.1로 접속을 다시 시도한다.
  • -TIME_ZONE timezone
    클라이언트의 타임 존을 설정하는 옵션이다. 이 옵션에 DB_TZ를 지정하면 데이터베이스 서버와 동일한 타임 존이 사용된다. Asia/Seoul과 같은 타임 존의 이름이나 KST 같은 약어를 사용해서 지정할 수 있으며, +09:00 같은 UTC 오프셋 값을 지정할 수도 있다.
    이 옵션을 생략하면 ALTIBASE_TIME_ZONE 환경 변수에 설정된 타임 존이 클라이언트의 타임 존으로 설정되며, 환경 변수도 설정되지 않았다면 데이터베이스 서버와 동일한 타임 존으로 설정된다.
  • -ssl_ca CA_file_path
    접속할 알티베이스 서버의 공개키(public key)가 포함된 CA(인증 기관, Certification Authority) 인증서 파일의 위치를 지정한다.
  • -ssl_capath CA_dir_path
    접속할 알티베이스 서버의 공개키가 포함된 CA 인증서 파일이 저장되어 있는 디렉토리를 지정한다.
  • -ssl_cert certificate_file_path
    클라이언트 인증서 파일의 위치를 지정한다.
  • -ssl_key key_file_path
    클라이언트 개인키 파일의 위치를 지정한다.
  • -ssl_verify 이 옵션을 지정하면 클라이언트가 서버로부터 전달받은 인증서를 검증한다.
  • -ssl_cipher cipher_list
    SSL 암호화를 위해 사용할 알고리즘의 이름 후보들을 지정한다. General Reference에서 SSL_CIPHER_LIST 프로퍼티를 참고한다.

위의 커맨드 라인 중 -S, -U, -P 옵션이 빠져 있는 경우에는 입력 프롬프트가 출력되어 사용자에게 그 옵션 값을 받는다.

iSQL 명령어#

iSQL을 실행 시키면 iSQL 명령어 실행을 위한 프롬프트가 나오고, 이곳에 iSQL 명령어들을 입력하면 그 결과를 보여주는 형태로 프로그램이 동작한다. 아래의 표에 iSQL 각각의 명령에 대해 설명하였다.

분류종류명령어설명
iSQL 구동 및 종료구동 $ isql [option] 쉘 상에서 이 명령어를 수행하면 iSQL이 구동된다. 사용 가능한 옵션에 대해서는 iSQL 커맨드 라인 옵션 절의 내용을 참조한다.
프롬프트 iSQL> iSQL 프롬프트로 명령어 입력 후 ENTER 키를 입력한다.
종료 EXIT;
QUIT;
iSQL을 종료한다.
Altibase 구동 및 종료Altibase 구동 STARTUP PRE-PROCESS, PROCESS, CONTROL, META, SERVICE 중 하나의 옵션을 이용하여 Altibase의 다단계 구동을 수행한다.
Altibase 종료 SHUTDOWN NORMAL, IMMEDIATE, ABORT 중 하나의 옵션을 사용하여 Altibase를 종료한다.
데이터베이스 접속 및 해제다른 사용자로 서버에 접속CONNECT [logon] [nls] [AS sysdba];
logon:user1/pass1 nls: NLS=character_set
iSQL에서 데이터베이스 접속 후 다른 사용자로 접속하기 위한 명령어로 패스워드 pass1을 가진 user1이라는 사용자로 접속한다. 접속이 성공하면 이전 세션과 관련된 정보는 지워진다. AS 절은 SYS 사용자가 sysdba 관리자 모드로 서버에 접속하는 것을 허용한다. sysdba로 접속하는 것은 한 사용자만 허용된다. nls 옵션은 문자 집합을 설정한다. 문자집합에 대한 자세한 설명은 위의 절 iSQL 커맨드 라인 옵션: –NLS_USE 옵션을 참조하기 바란다.
접속해제DISCONNECT;현재 세션을 종료하고 서버와의 연결을 끊는다.
데이터베이스 객체 정보 조회성능 뷰 목록 보기SELECT * FROM V$TAB;시스템이 제공하는 모든 성능 뷰 목록을 보여준다. 이 명령어는 iSQL에서만 사용가능 하다.
테이블 목록 보기SELECT * FROM TAB;현재 생성된 테이블의 목록을 보여준다. 이 명령어는 iSQL에서만 사용가능 하다.
테이블 구조 보기DESC samp;samp 테이블의 구조를 보여준다.
시퀀스 정보 보기SELECT * FROM SEQ;SYS 계정으로 서버에 접속한 경우 모든 시퀀스 들의 정보를 보여준다. 일반 사용자로 서버에 접속한 경우는 그 사용자가 생성한 시퀀스들에 대한 정보만 보여준다. 이 명령어는 iSQL에서만 사용 가능하다.
파일 관리파일에 결과 저장SPOOL filename;iSQL에서 실행한 명령의 결과를 filename에 기록하기 시작한다.
SPOOL OFF;스풀링을 중지한다.
sql script의 실행START file_name;script 파일을 읽어, 파일 내의 SQL문들을 순차적으로 수행한다.
@ file_name;iSQL 프롬프트 상에서 수행 시 start와 동일한 기능을 갖는다.
@@ file_name;스크립트 파일 안에서 사용될 때 호출한 스크립트 파일이 위치하는 디렉터리에서 파일을 찾아 수행한다.
SQL문 파일 저장SAVE abc.sql;현재 iSQL 버퍼에 있는 명령어 중 가장 마지막 명령어가 파일로 저장된다.
SQL문의 loadLOAD abc.sql;파일에 저장되어 있는 명령어 중 가장 첫 번째 명령어가 명령어 버퍼의 마지막으로 로드된다.
DML문을 파일로 저장SET QUERYLOGGING ON;
SET QUERYLOGGING OFF;
INSERT, UPDATE, DELTE, MOVE 등의 DML문 실행 시 이를 $ALTIBASE_HOME/trc/isql_query.log에 기록한다. 단, DML문 중 SELECT를 실행한 경우에는 로그에 기록되지 않는다.
질의문 편집ED[IT]가장 최근에 실행된 질의문을 편집한다.
ED[IT] filename[.sql]기존 파일 또는 새로운 파일을 편집한다.
2ED[IT] 또는 2 ED[IT]히스토리 목록에 있는 번호가 2인 질의문을 편집한다.
출력 옵션 제어Select 결과 포맷팅SET LINESIZE 100;select 결과 출력 시 디스플레이 되는 한 라인의 사이즈를 설정한다. 10 에서 32767 사이의 값이어야 한다.
기본값: 80
SET LOBSIZE 10;CLOB 칼럼을 출력 시 디스플레이 되는 데이터의 길이를 설정한다.
기본값: 80
SET LOBOFFSET 3;CLOB 칼럼을 출력 시 디스플레이 되는 데이터의 오프셋을 설정한다.
기본값: 0
SET FEED[BACK] ON;
SET FEED[BACK] OFF;
SET FEED[BACK] n;
쿼리 실행결과 건수의 출력여부를 설정한다.
SET PAGESIZE 10; select 결과 레코드들을 몇 개 단위로 출력할지 결정하는 명령어로 `0`으로 설정할 경우 결과 레코드 전체를 한꺼번에 출력한다.
기본값: 0
SET HEADING ON;
SET HEADING OFF;
select 결과 출력 시 헤더 출력 유무
기본값: ON
SET COLSIZE N; CHAR, VARCHAR 타입 칼럼의 결과를 표시할 자릿수 설정.
COLSIZE가 LINESIZE보다 우선적으로 적용된다.
SET NUM[WIDTH] N; NUMERIC, DECIMAL, NUMBER, FLOAT 타입의 SELECT 결과를 표시할 자릿수 설정.
기본값: 11
CL[EAR] COL[UMNS] COLUMN으로 설정된 칼럼의 형식 해제
COL[UMN] [{column | expr} [option]] SELECT 대상(target)이 되는 칼럼의 표시 형식 설정 및 확인
SET NUMF[ORMAT] format;NUMERIC, DECIMAL, NUMBER, FLOAT 타입의 SELECT 결과를 표시할 형식 설정
SQL문 실행시간SET TIMING ON;
SET TIMING OFF;
SQL 명령 실행에 걸린 시간 출력 여부 설정.
기본값: OFF
SQL문 실행시간 출력 단위 설정SET TIMESCALE SEC;
SET TIMESCALE MILSEC;
SET TIMESCALE MICSEC;
SET TIMESCALE NANSEC;
SQL문의 쿼리 수행 시간 단위를 초, 밀리초, 마이크로초, 나노초 등으로 설정한다.
Check 제약조건 정보 출력의 유무SET CHKCONSTRAINTS ON;
SET CHKCONSTRAINTS OFF;
테이블 구조(DESC)를 볼 때 Check 제약조건 정보 포함 출력 여부 설정.
기본값: OFF
foreign key 정보 출력의 유무SET FOREIGNKEYS ON;
SET FOREIGNKEYS OFF;
테이블 구조(DESC)를 볼 때 외래 키 정보 포함 출력 여부 설정.
기본값: OFF
파티션 정보 출력의 유무SET PARTITIONS ON;
SET PARTITIONS OFF;
테이블 구조(DESC)를 볼 때 파티션 정보 포함 출력 여부 설정.
기본값: OFF
스크립트 실행 결과의 출력 유무SET TERM ON;
SET TERM OFF;
스크립트 파일의 실행 결과 및 명령어들의 출력 여부를 결정한다.
기본값: ON
스크립트 명령어 출력 유무SET ECHO ON;
SET ECHO OFF;
@으로 실행된 스크립트 파일 내의 명령어들의 출력 여부를 설정한다.
기본값 : ON
치환 변수 대체 여부SET DEFINE ON;
SET DEFINE OFF;
치환 변수가 있는 스크립트 파일 수행 시, 사용자가 입력한 파라미터 값으로 치환 변수를 대체할지 여부를 지정한다.
기본값: OFF
치환 변수 교체 전후내용 출력SET VERIFY ON;
SET VERIFY OFF;
치환 변수가 있는 스크립트 파일 수행 시, 치환 변수가 파라미터 값으로 교체되기 전후의 SQL문을 출력할지 여부를 지정한다.
기본값: ON
실행 계획 트리 출력ALTER SESSION SET EXPLAIN PLAN = ON;
ALTER SESSION SET EXPLAIN PLAN = ONLY;
ALTER SESSION SET EXPLAIN PLAN = OFF;
SELECT문에 대한 실행 계획의 출력 여부를 설정한다.
기본값: OFF
SELECT 결과 출력 방향SET VERTICAL ON;
SET VERTICAL OFF;
레코드를 조회할 때 이 값을 ON으로 설정하면, SELECT의 결과가 세로로 출력된다.
기본값: OFF
MULTIERROR 출력 여부SET MULTIERROR ON;
SET MULTIERROR OFF;
SQL 수행시 이 값을 ON으로 설정하면, 다중에러가 표시될 수 있다.
기본값: OFF 이고 이때는 다중에러가 발생해도 하나의 에러만 표시된다.
iSQL 화면 설정 값 보기SHOW LINESIZE현재의 LINESIZE 값을 보여준다.
SHOW COLSIZE현재의 COLSIZE 값을 보여준다.
SHOW MULTIERROR현재의 MULTIERROR 값을 보여준다.
SHOW LOBOFFSET현재의 LOBOFFSET 값을 보여준다.
SHOW LOBSIZE현재의 LOBSIZE 값을 보여준다.
SHOW PAGESIZE현재의 PAGESIZE 값을 보여준다.
SHOW PLANCOMMITAUTOCOMMIT OFF 모드에서 명령어를 수행할 때 자동으로 커밋되는지의 여부를 보여준다.
SHOW QUERYLOGGINGDML 문이 실행될 때 $ALTIBASE_HOME/trc/isql_query.log에 기록되는지의 여부를 보여준다.
SHOW FEEDBACK현재 설정된 FEEDBACK 값을 보여준다.
SHOW HEADING현재의 HEADING 설정 여부를 보여준다.
SHOW TERM현재 TERM 설정 여부를 보여준다.
SHOW ECHO현재 ECHO 설정 여부를 보여준다.
SHOW TIMING현재의 TIMING 설정 여부를 보여준다.
SHOW TIMESCLAE 현재 SQL문의 쿼리 수행 시간 단위가 무엇으로 설정되었는지를 보여준다.
SHOW USER현재 사용자를 보여준다.
SHOW CHKCONSTRAINTS현재의 Check 제약조건 설정 여부를 보여준다.
SHOW FOREIGNKEYS현재의 외래 키 설정 여부를 보여준다.
SHOW PARTITIONS현재의 파티션 출력 여부 설정을 보여준다.
SHOW VERTICAL현재의 SELECT 결과가 세로로 출력되는지 여부를 보여준다.
SHOW ALL현재 세션의 화면 설정 값을 보여준다.
변수 및 Prepared SQL문변수 선언VAR p1 INTEGER;INTEGER 타입의 변수 p1을 선언한다.
VARIABLE p2 CHAR(10);CHAR 타입의 변수 p2를 선언한다.
변수에 값 할당EXECUTE :p1 := 100;변수 p1에 100을 할당한다.
EXEC :p2 := 'abc';변수 p2에 ‘abc’를 할당한다.
변수 보기PRINT VAR[IABLE];현재 선언된 변수들을 보여준다.
PRINT p1;변수 p1의 타입과 값을 보여준다.
Prepared SQL문 수행PREPARE SQL문;Prepared SQL문으로 질의 최적화 과정과 실행 과정을 나누어 수행하게 한다. iSQL에서의 SQL문 수행은 기본적으로 최적화와 실행을 한번에 수행하는 Direct Execution 방법이다. iSQL 상에서 두 가지 수행 방법에 대한 결과에는 차이가 없으며 Prepared SQL문의 경우 변수를 사용해 값을 바인딩 하여 SQL문 수행이 가능하다.
사용자 편의 기능히스토리 목록 보기HISTORY;
H;
현재 iSQL buffer에 저장되어 있는 명령어들의 목록을 보여준다.
반복 실행/현재 iSQL buffer의 명령어를 반복하여 실행한다. 가장 최근에 수행한 명령어가 다시 실행된다.
2/HISTORY 명령에 의해 나타난 목록의 번호가 2인 명령어가 실행된다.
쉘 명령 실행! shell command느낌표 다음에 쉘 명령을 입력하면 iSQL에서 바로 쉘 명령이 실행된다.
명령 프롬프트 변경SET SQLP[ROMPT] {text}iSQL 명령 프롬프트를 설정한다.
주석 /* comment */
-- comment
여러 라인 주석
한 라인 주석
도움말 HELP;
HELP INDEX;
HELP EXIT;
도움말 사용법
명령어 리스트 출력
EXIT 명령어에 대한 설명

iSQL 관련 환경변수#

ALTIBASE_HOME#

패키지가 설치된 디렉터리의 위치이다.

ALTIBASE_HOME은 iSQL을 사용하기 위해서 반드시 설정해야 하는 환경 변수이다. 일반적으로 서버가 설치될 때 자동으로 설정되지만 클라이언트의 경우에는 서버의 환경 변수와 충돌이 있을 수 있으므로 사용자가 직접 설정해야 한다.

ALTIBASE_PORT_NO#

접속할 서버의 포트 번호이다. -PORT 옵션 또는 altibase.properties 파일 내의 프로퍼티를 통해서 지정할 수도 있다.

포트 번호 설정의 우선 순위는 -PORT 옵션, 환경변수 ALTIBASE_PORT_NO, altibase.properties 파일 내의 프로퍼티 순이며 아무것도 설정되지 않았을 경우에는 포트 번호 입력 프롬프트가 출력된다.

ALTIBASE_SSL_PORT_NO#

iSQL이 SSL/TLS 통신으로 접속할 서버의 포트 번호이다.

SSL 포트 번호의 우선 순위는 -PORT 옵션, 환경변수, ALTIBASE_SSL_PORT_NO, altibase.properties 파일 내의 프로퍼티 순이며 만약 아무것도 설정되지 않았을 경우에는 포트 번호 입력 프롬프트가 출력된다.

ALTIBASE_NLS_USE#

데이터 검색 시 사용자에게 보여주기 위해 사용되는 문자 집합이다.

  • US7ASCII

  • KO16KSC5601

  • MS949

  • BIG5

  • GB231280

  • MS936

  • UTF8

  • SHIFTJIS

  • MS932

  • EUCJP

-NLS_USE 옵션 또는 altibase.properties파일 내의 프로퍼티를 통해서 지정할 수도 있다.

NLS_USE 설정의 우선 순위는 -NLS_USE 옵션, 환경 변수 ALTIBASE_NLS_USE, altibase.properties 파일 내의 프로퍼티 순이며 설정되지 않았을 경우에는 기본 문자 집합(US7ASCII)을 사용한다.

ALTIBASE_NLS_NCHAR_LITERAL_REPLACE#

기본적으로 클라이언트는 쿼리 문 전체를 데이터베이스 문자 셋으로 변환하여 전송한다. 그러나, 특정 리터럴에 대해 이런 동작을 막으려면, 이 환경 변수의 값을 1로 설정하고 그 리터럴 앞에 “N” 문자를 덧붙이면 된다. 즉, NCHAR 리터럴로 만드는 것이다.

이 환경 변수의 값이 1일 때, 클라이언트는 쿼리 문 내의 모든 리터럴 앞에 “N” 문자가 있는지 찾는다. 만약 찾게 되면 클라이언트는 그 리터럴을 데이터베이스 문자 셋으로 변환하지 않고 그대로 전송하며 서버가 직접 내셔널 문자 셋으로 변환한다. 이것은 데이터베이스 문자 셋과는 다른 인코딩이 필요한 NCHAR 타입 데이터를 사용하고자 할 때 유용하다.

  • 0: “N” 문자가 있는지 검사하지 않고 쿼리 문 전체를 데이터베이스 문자 셋으로 변환한다.

  • 1: “N” 문자가 붙어있는 NCHAR 리터럴은 데이터베이스 문자 셋으로 변환하지 않는다.

이 값을 1로 설정하는 것은 클라이언트의 비용이 크게 발생하므로, 사용시 주의가 필요하다.

ISQL_CONNECTION#

Altibase를 클라이언트-서버 구조로 운영할 때, 사용자는 응용 시스템의 구성에 적합한 클라이언트-서버 프로토콜을 선택하여 환경 변수를 설정할 수 있다. Altibase는 TCP/IP, IPC, IPCDA와 UNIX DOMAIN 소켓, SSL/TLS 프로토콜, 인피니밴드(Infiniband)를 제공한다. Altibase 서버와 통신하기 위한 기본값은 TCP/IP 프로토콜이다.

  • TCP
  • UNIX
  • IPC
  • IPCDA
  • SSL
  • IB

단, IPC 또는 IPCDA 프로토콜을 이용할 경우엔 Altibase 프로퍼티들 중에서 IPC 채널과 관련된 프로퍼티들의 값(IPC_CHANNEL_COUNT 또는 IPCDA_CHANNEL_COUNT)도 함께 고려해야 한다.

예) IPC 사용시 환경 변수 설정

CSH: setenv ISQL_CONNECTION IPC
SH: ISQL_CONNECTION=IPC; export ISQL_CONNECTION

주의: ISQL_CONNECTION 환경 변수의 설정 값이 UNIX 또는 IPC인 경우, -s 옵션에 원격 서버를 명시해서 iSQL을 실행하면 ISQL_CONNECTION 설정이 무시되었다는 경고 메시지와 함께 TCP로 원격 서버에 접속한다.

ISQL_BUFFER_SIZE#

쿼리를 저장할 버퍼의 크기를 환경변수를 이용하여 지정할 수 있다.

CSH: setenv ISQL_BUFFER_SIZE 128000
SH: ISQL_BUFFER_SIZE = 128000; export ISQL_BUFFER_SIZE

ALTIBASE_DATE_FORMAT#

Date 데이터 타입인 data를 select 시 기본 날짜 형식인 YYYY/MM/DD HH:MI:SS을 환경변수 ALTIBASE_DATE_FORMAT을 설정하여 새로운 날짜 형식으로 나타낼 수 있다.

예) Born, Korn, 또는 Bash Shell의 경우

export ALTIBASE_DATE_FORMAT=’DD-MON-YYYY’

ISQL_EDITOR#

기본 편집기(예: /bin/vi )를 바꾸기 위한 환경변수를 설정할 수 있다.

CSH: setenv ISQL_EDITOR /usr/bin/ed
SH: ISQL_EDITOR=/usr/bin/ed; export ISQL_EDITOR

ALTIBASE_IPC_FILEPATH#

유닉스 환경에서 서버와 클라이언트가 IPC로 접속할 때 ALTIBASE_HOME이 다른 경우, 유닉스 도메인의 소켓 경로가 일치하지 않아 접속할 수 없다. 이 때 클라이언트 측의 ALTIBASE_IPC_FILEPATH 환경 변수 또는 iSQL 옵션인 –IPC-FILEPATH를 서버의 \$ALTIBASE_HOME/trc/cm-ipc파일로 설정하여 서버와 클라이언트가 같은 소켓 파일을 사용하도록 하면, IPC 접속이 가능하다.

IPCDA_FILEPATH#

유닉스 환경에서 서버와 클라이언트가 IPCDA로 접속할 때 ALTIBASE_HOME이 다른 경우, 유닉스 도메인의 소켓 경로가 일치하지 않아 접속할 수 없다. 이 때 클라이언트 측의 IPCDA_FILEPATH 환경 변수 또는 iSQL 옵션인 –IPCDA -FILEPATH를 서버의 \$ALTIBASE_HOME/trc/cm-ipcda파일로 설정하여 서버와 클라이언트가 같은 소켓 파일을 사용하도록 하면, IPCDA 접속이 가능하다.

ALTIBASE_TIME_ZONE#

클라이언트의 타임 존을 설정하는 환경 변수이다. 이 환경 변수에 DB_TZ를 지정하면 데이터베이스 서버와 동일한 타임 존이 사용된다.

이 환경 변수는 Asia/Seoul과 같은 타임 존의 이름이나 KST 같은 약어를 사용해서 설정할 수 있다. 또는 +09:00 같은 UTC 오프셋 값을 사용해서 설정할 수도 있다.

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;

위와 같이 ALTIBASE_UT_FILE_PERMISSION 값이 660, ISQL_FILE_PERMISSION 값이 600으로 설정된 환경에서 iSQL에서 생성되는 파일의 권한은 ISQL_FILE_PERMISSION의 값이 우선적으로 적용된어 user:rw, group:--, other:--으로 설정된다. 이 때, aexport, iloader가 생성하는 파일의 권한은 여전히 ALTIBASE_UT_FILE_PERMISSION=660에 따라 user:rw, group:rw, other:--으로 설정되는 것에 유의한다.

ISQL_FILE_PERMISSION#

iSQL이 생성하는 파일 권한을 설정하는 환경 변수이다. 값을 설정하지 않으면 666(user:rw, group:rw, other: rw)으로 설정된다.

예) user:rw, group:--, other:--로 설정하는 경우, export ISQL_FILE_PERMISSION=600

ISQL_SECURE_LOGIN_MSG#

보안을 강화하기 위해 iSQL에 잘못된 사용자 아이디 또는 암호로 접속을 시도할때, 상세한 접속 실패 이유를 표시하지 않도록 설정하는 환경변수이다. 값을 설정하지 않으면 0으로 설정된다.

  • 1로 설정하면 사용자 아이디 또는 암호가 틀린경우, "Invalid UserID or Password" 라는 에러메시지가 출력된다.

  • 0으로 설정하거나 환경 변수를 설정하지 않으면, 기존과 동일하게 명확한 접속 실패 이유가 출력된다.

  • 환경 변수 설정의 예

export ISQL_SECURE_LOGIN_MSG=1

export ISQL_SECURE_LOGIN_MSG=0

개인별 iSQL 환경 설정#

iSQL 사용자들은 특별한 방법으로 iSQL 환경을 설정하고 각 세션에서 그러한 설정을 다시 사용할 수 있다. 예를 들어, OS 파일을 통하여 질의 결과마다 현재 시간을 출력할 수 있도록 사용자가 원하는 출력 서식 형태로 만들 수 있다. 이러한 파일은 다음과 같이 두 가지로 나눌 수 있다.

glogin.sql#

iSQL 시작 시의 초기화 작업을 위하여 DB 관리자에 의해 생성된 전역 스크립트 파일인 glogin.sql의 사용을 지원한다. iSQL은 임의의 사용자가 iSQL을 기동할 때 마다 이 스크립트를 실행한다. 전역 파일은 DB 관리자가 모든 사용자들에게 특별한 사이트에서 iSQL 환경을 설정할 수 있도록 한다. 전역 스크립트 파일은 \$ALTIBASE_HOME/conf 밑에 위치한다.

login.sql#

iSQL은 또한 glogin.sql 후에 실행되는 login.sql 파일도 지원한다. 만약, glogin.sql 파일과 login.sql 파일이 모두 존재하는 경우 iSQL 구동 시 glogin.sql이 실행된 후 login.sql이 실행되므로 login.sql에 있는 명령어들로 우선수행 (override) 된다.

하나의 유닉스 계정을 여러 명이 사용할 경우에는 glogin.sql 파일을 개인적인 용도로 수정하는 것이 불가능할 수도 있다. 이런 경우 일반 사용자는 SQL 명령어들, 저장 프로시저, 또는 iSQL 명령어들을 각자의 개인용 작업 디렉터리 내의 login.sql 파일에 첨가할 수 있다. 사용자가 iSQL을 구동할 때, iSQL은 자동적으로 현재 디렉토리에서 login.sql 파일을 찾고, 그 안에 명령어들을 수행한다.

login.sql 파일은 iSQL 초기 설정이나 각각의 세션에 대한 동작을 조정할 수 없다.

LOGIN 파일 변경#

사용자는 임의의 다른 스크립트들처럼 LOGIN 파일을 변경할 수 있다. 다음은 임의의 사용자(user1)가 autocommit mode를 off로 변경하고 SQL 문들을 실행하기 위하여 LOGIN 파일을 작성한 예이다.

$ vi glogin.sql
AUTOCOMMIT ON
SET HEADING OFF
SELECT sysdate FROM dual;

$ vi login.sql
AUTOCOMMIT OFF;
SET HEADING ON
DROP TABLE savept;
CREATE TABLE savept(num INTEGER);
INSERT INTO savept VALUES(1);
SAVEPOINT sp1;
INSERT INTO savept VALUES(2);
SELECT * FROM savept;
ROLLBACK TO SAVEPOINT sp1;
SELECT * FROM savept;
COMMIT;

$ isql
-------------------------------------------------------
     Altibase Client Query utility.
     Release Version 7.3.0.0.1
     Copyright 2000, Altibase Corporation or its subsidiaries.
     All Rights Reserved.
-------------------------------------------------------
Write Server Name (default:127.0.0.1) :
Write UserID : user1
Write Password :
ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300
Set autocommit on success.  -> 먼저 glogin.sql을 실행

28-DEC-2004     -> heading off
1 row selected.
Set autocommit off success. -> glogin.sql이 실행된 후 사용자의 현재 작업 디렉터리에서 login.sql을 실행
Drop success.
Create success.
1 row inserted.
Savepoint success.  -> autocommit mode off 에서만 실행 가능
1 row inserted.
SAVEPT.NUM              -> heading on
--------------
1           
2           
2 rows selected.
Rollback success.
SAVEPT.NUM  
--------------
1           
1 row selected.
Commit success.

주의 사항#

LOGIN 파일에는 보안상의 이유로 사용자 이름과 비밀번호를 함께 입력하는 CONNECT 명령어를 사용할 수 없다. 만약 LOGIN 파일에 CONNECT 명령어가 포함된 경우 아래의 경고 메시지를 출력하고 해당 명령어는 실행되지 않는다.

WARNING: CONNECT command in glogin.sql file ignored