CSQL 인터프리터에는 SQL 문 이외에 CSQL 인터프리터를 제어하는 특별한 명령어가 있으며 이를 세션 명령어라고 한다. 모든 세션 명령어는 반드시 세미콜론(;)으로 시작해야 한다.
;help를 입력하여 CSQL 인터프리터에서 지원되는 세션 명령어를 확인할 수 있다. 세션 명령어를 전부 입력하지 않고 대문자로 표시된 글자까지만 입력해도 CSQL 인터프리터는 세션 명령어를 인식한다. 세션 명령어는 대소문자를 구분하지 않는다.
CUBRID SQL Interpreter
Type `;help' for help messages.
csql> ;help
=== <Help: Session Command Summary> ===
All session commands should be prefixed by `;' and only blanks/tabs
can precede the prefix. Capitalized characters represent the minimum
abbreviation that you need to enter to execute the specified command.
;REAd [<file-name>] - read a file into command buffer.
;Write [<file-name>] - (over)write command buffer into a file.
;APpend [<file-name>] - append command buffer into a file.
;PRINT - print command buffer.
;SHELL - invoke shell.
;CD - change current working directory.
;EXit - exit program.
;CLear - clear command buffer.
;EDIT - invoke system editor with command buffer.
;List - display the content of command buffer.
;RUn - execute sql in command buffer.
;Xrun - execute sql in command buffer, and clear the command buffer.
;COmmit - commit the current transaction.
;ROllback - roll back the current transaction.
;AUtocommit [ON|OFF] - enable/disable auto commit mode.
;CHeckpoint - issue checkpoint.
;Killtran - kill transaction.
;REStart - restart database.
;SHELL_Cmd [shell-cmd] - set default shell, editor, print and pager
;EDITOR_Cmd [editor-cmd] command to new one, or display the current
;PRINT_Cmd [print-cmd] one, respectively.
;PAger_cmd [pager-cmd]
;DATE - display the local time, date.
;DATAbase - display the name of database being accessed.
;SChema class-name - display schema information of a class.
;SYntax [sql-cmd-name] - display syntax of a command.
;TRigger [`*'|trigger-name] - display trigger definition.
;Get system_parameter - get the value of a system parameter.
;SEt system_parameter=value - set the value of a system parameter.
;PLan [simple/detail/off] - show query execution plan.
;Info <command> - display internal information.
;TIme [ON/OFF] - enable/disable to display the query execution time.
;HISTORYList - display list of the executed queries.
;HISTORYRead <history_num> - read entry on the history number into command buffer.
;HElp - display this help message.
csql>
파일에서 SQL 구문 읽기(;REAd)
;REAd 명령어는 파일의 내용을 명령어 버퍼로 읽는 세션 명령어로 지정된 입력 파일에 저장된 SQL 명령어들을 실행하는데 사용할 수 있다. 버퍼에 올려진 파일 내용을 보기 위해서는 ;List 명령어를 사용한다.
csql> ;rea nation.sql
The file has been read into the command buffer.
csql> ;list
insert into "sport_event" ("event_code", "event_name", "gender_type", "num_player") values
(20001, 'Archery Individual', 'M', 1);
insert into "sport_event" ("event_code", "event_name", "gender_type", "num_player") values
20002, 'Archery Individual', 'W', 1);
....
파일에 SQL 구문 저장(;Write)
;Write는 명령어 버퍼의 내용을 파일에 저장하는 세션 명령어로 사용자가 CSQL 인터프리터에서 입력 혹은 수정한 SQL 명령어를 파일에 저장할 때 사용된다.
csql> ;w outfile
Command buffer has been saved.
파일에 덧붙이기(;APpend)
현재 명령어 버퍼의 내용을 출력 파일인 outfile에 추가한다.
csql> ;ap outfile
Command buffer has been saved.
셸 명령어를 실행(;SHELL)
;SHELL 세션 명령어로 외부 셸을 호출할 수 있다. CSQL 인터프리터가 실행된 환경에서 새로운 셸이 시작되고, 셸을 마치면 다시 CSQL 인터프리터로 돌아온다. 만약에 ;SHELL_Cmd 명령어로 수행할 셸 명령어가 지정되어 있다면 셸을 구동하여 지정된 명령어를 실행하고 CSQL 인터프리터로 복귀하게 된다.
csql> ;shell
% Is -al
total 2088
drwxr-xr-x 16 DBA cubrid 4096 Jul 29 16:51 .
drwxr-xr-x 6 DBA cubrid 4096 Jul 29 16:17 ..
drwxr-xr-x 2 DBA cubrid 4096 Jul 29 02:49 audit
drwxr-xr-x 2 DBA cubrid 4096 Jul 29 16:17 bin
drwxr-xr-x 2 DBA cubrid 4096 Jul 29 16:17 conf
drwxr-xr-x 4 DBA cubrid 4096 Jul 29 16:14 cubridmanager
% exit
csql>
셸 명령어 등록(;SHELL_Cmd)
;SHELL_Cmd를 사용하여 ;SHELL 세션 명령어로 실행할 셸 명령어를 등록한다. 등록된 명령어를 실행하기 위해서는 예제와 같이 ;shell 명령어를 입력한다.
csql> ;shell_c ls -la
csql> ;shell
total 2088
drwxr-xr-x 16 DBA cubrid 4096 Jul 29 16:51 .
drwxr-xr-x 6 DBA cubrid 4096 Jul 29 16:17 ..
drwxr-xr-x 2 DBA cubrid 4096 Jul 29 02:49 audit
drwxr-xr-x 2 DBA cubrid 4096 Jul 29 16:17 bin
drwxr-xr-x 2 DBA cubrid 4096 Jul 29 16:17 conf
drwxr-xr-x 4 DBA cubrid 4096 Jul 29 16:14 cubridmanager
csql>
현재 작업 디렉터리 변경(;CD)
CSQL 인터프리터를 실행한 현재 작업 디렉터리를 지정된 디렉터리로 변경한다. 경로를 지정하지 않으면 홈 디렉터리로 변경된다.
csql> ;cd /home1/DBA/CUBRID
Current directory changed to /home1/DBA/CUBRID.
CSQL 인터프리터 종료(;EXit)
CSQL 인터프리터를 종료한다.
csql> ;ex
명령어 버퍼 초기화(;CLear)
;CLear 세션 명령어는 명령어 버퍼의 내용을 초기화한다.
csql> ;cl
csql> ;list
명령어 버퍼의 내용 보여주기(;List)
현재까지 입력 수정된 명령어 버퍼의 내용을 화면에 출력하기 위해서는 ;List 세션 명령어를 사용한다. 명령어 버퍼는 사용자의 SQL 입력, ;REAd 명령어, ;EDIT 명령어 등으로 수정될 수 있다.
csql> ;l
SQL 문 실행(;RUn)
명령어 버퍼에 있는 SQL 문을 실행하는 명령어이다. 다음에서 설명하는 ;Xrun 세션 명령어와 달리 질의 실행 후에도 버퍼는 초기화되지 않는다.
csql> ;ru
SQL 문 실행 후 명령어 버퍼 초기화(;Xrun)
명령어 버퍼에 있는 SQL 문을 실행하는 명령어이다. 질의 실행 후 명령어의 버퍼는 초기화된다.
csql> ;x
트랜잭션 커밋(;COmmit)
현재 수행되고 있는 트랜잭션을 커밋(commit)하는 세션 명령어이다. 자동 커밋(auto-commit) 모드가 아닌 경우, 명시적으로 커밋 명령어를 입력해야 CSQL 인터프리터에서 수행 중이던 트랜잭션이 커밋된다. 자동 커밋(auto-commit) 모드인 경우는 ;RUn과 ;Xrun 세션 명령어를 실행할 때마다 트랜잭션이 자동으로 커밋된다.
csql> ;co
Current transaction has been committed.
트랜잭션 롤백(;ROllback)
현재 수행되고 있는 트랜잭션을 롤백(rollback)하는 세션 명령어이다. ;COmmit과 마찬가지로 자동 커밋(auto-commit) 모드가 아닐 경우(OFF)에만 의미가 있다.
csql> ;ro
Current transaction has been rolled back.
자동 커밋 모드 설정(;AUtocommit)
자동 커밋(auto-commit) 모드를 ON 또는 OFF로 설정하는 명령어이다. 만약, ON 또는 OFF를 지정하지 않으면 현재 설정된 값을 보여준다. 참고로 CSQL 인터프리터는 기본 값이 ON이다.
csql> ;au off
AUTOCOMMIT IS OFF
체크포인트 수행(;CHeckpoint)
CSQL 세션 내에서 체크포인트 수행을 지시하는 명령어이다. CSQL 인터프리터 접속 시 사용자 지정 옵션(-u user_name)에 DBA 그룹 멤버가 지정되고 시스템 관리자 모드(--sysadm)로 접속한 경우에만 수행할 수 있다.
체크포인트는 현재 데이터 버퍼에 존재하는 로그 파일(더티 페이지)을 디스크로 내려쓰기(flush)하는 작업이며, CSQL 세션 내에서 파라미터 값을 설정하는 명령어(;set parameter_name value)를 통해서도 체크포인트 주기를 변경할 수 있다. 체크포인트 수행 주기와 관련된 파라미터는 checkpoint_interval_in_mins와 checkpoint_every_npages가 있다. 이에 대한 자세한 내용은 로깅 관련 파라미터를 참고한다.
csql> ;ch
Checkpoint has been issued.
트랜잭션 모니터링 또는 종료(;Killtran)
CSQL 세션 내에서 트랜잭션 상태 정보를 확인하거나 특정 트랜잭션을 종료시키는 명령어이다. CSQL 인터프리터 접속 시 사용자 지정 옵션(-u user_name)에 DBA 그룹 멤버가 지정되고 시스템 관리자 모드(--sysadm)로 접속한 경우에만 수행할 수 있다.
인자가 생략되면 모든 트랜잭션 상태 정보를 화면 출력하고, 인자로 특정 트랜잭션 ID가 지정되면 해당 트랜잭션을 종료시킨다.
csql> ;k
Tran index User name Host name Process id Program name
-------------------------------------------------------------------------------
1(+) dba myhost 664 cub_cas
2(+) dba myhost 6700 csql
3(+) dba myhost 2188 cub_cas
4(+) dba myhost 696 csql
5(+) public myhost 6944 csql
csql> ;k 3
The specified transaction has been killed.
데이터베이스 재접속(;REStart)
CSQL 세션 내에세 대상 데이터베이스에 재접속을 시도하는 명령어이다. CSQL 인터프리터를 클라이언트/서버 모드(CS 모드)로 수행하는 경우에는 서버와의 접속이 해제되므로 유의한다. 이 명령어는 HA 환경에서 장애로 인해 다른 서버로 절체가 이루어짐에 따라 도중에 서버와의 연결이 해제되는 경우, 세션을 유지하면서 절체된 서버로 재접속할 때 유용하게 사용할 수 있다.
csql> ;res
The database has been restarted.
현재 날짜 출력(;DATE)
;DATE는 CSQL 인터프리터에서 현재 날짜 및 시간 정보를 출력한다.
csql> ;date
Tue July 29 18:58:12 KST 2008
대상 데이터베이스 정보 출력(;DATAbase)
CSQL 인터프리터에서 작업 중인 데이터베이스 이름 및 호스트 이름을 출력한다. 만약, 대상 데이터베이스가 HA모드로 동작 중이라면 현재 HA모드(active, standby, 또는 maintenance)도 함께 출력될 것이다.
csql> ;data
demodb@localhost (active)
지정한 테이블의 스키마 정보 출력(;SChema)
;SChema 세션 명령어로 지정한 테이블의 스키마 정보를 확인할 수 있다. 해당 테이블의 이름, 컬럼명, 제약 사항 등의 정보가 출력된다.
csql> ;sc event
=== <Help: Schema of a Class> ===
<Class Name>
event
<Attributes>
code INTEGER NOT NULL
sports CHARACTER VARYING(50)
name CHARACTER VARYING(50)
gender CHARACTER(1)
players INTEGER
<Constraints>
PRIMARY KEY pk_event_event_code ON event (code)
구문 규칙 출력(;SYntax)
지정한 SQL 구문의 규칙을 출력하는 명령어이다. 특정한 구문을 지정하지 않으면 정의된 모든 구문과 해당 구문의 규칙을 보여준다.
csql> ;sy alter
=== <Help: Command Syntax> ===
<Name>
ALTER
<Description>
Change the definition of a class or virtual class.
<Syntax>
<alter> ::= ALTER [ <class_type> ] <class_name> <alter_clause> ;
<class_type> ::= CLASS | TABLE | VCLASS | VIEW
<alter_clause> ::= ADD <alter_add> [ INHERIT <resolution_comma_list> ] |
DROP <alter_drop> [ INHERIT <resolution_comma_list> ] |
RENAME <alter_rename> [ INHERIT <resolution_comma_list> ] |
> CHANGE <alter_change> |
INHERIT <resolution_comma_list>
<alter_add> ::= [ ATTRIBUTE | COLUMN ] <class_element_comma_list> |
CLASS ATTRIBUTE <attribute_definition_comma_list> |
FILE <file_name_comma_list> |
METHOD <method_definition_comma_list> |
QUERY <select_statement> |
SUPERCLASS <class_name_comma_list>
......
트리거 출력(;TRigger)
지정한 트리거 명을 검색하여 출력하는 명령어이다. 트리거 명을 지정하지 않으면 정의된 모든 트리거를 보여준다.
csql> ;tr
=== <Help: All Triggers> ===
trig_delete_contents
파라미터 값 확인(;Get)
;Get 세션 명령어를 이용해 현재 CSQL 인터프리터에 설정된 파라미터 값을 확인할 수 있다. 지정된 파라미터 명이 정확하지 않으면 오류가 발생한다.
csql> ;g isolation_level
=== Get Param Input ===
isolation_level=4
파라미터 값 설정(;SEt)
특정 파라미터의 값을 설정하기 위해서는 ;Set 세션 명령어를 사용한다. 클라이언트 파라미터에 대해서만 값을 변경할 수 있으며, 서버 파라미터는 변경할 수 없다는 점에 주의한다.
csql> ;se block_ddl_statement=1
=== Set Param Input ===
block_ddl_statement=1
질의 실행 계획 보기 수준 설정(;PLan)
;PLan 세션 명령어는 질의 실행 계획 보기의 수준을 설정한다. 수준은 simple, detail, off로 지정한다. 각 설정값의 의미는 다음과 같다.
정보 출력(;Info)
;Info 세션 명령어는 스키마, 트리거, 작업 환경, 잠금, 통계 등의 정보를 확인할 수 있는 명령어이다.
csql> ;i lock
*** Lock Table Dump ***
Lock Escalation at = 100000, Run Deadlock interval = 1
Transaction (index 0, unknown, unknown@unknown|-1)
Isolation REPEATABLE CLASSES AND READ UNCOMMITTED INSTANCES
State TRAN_ACTIVE
Timeout_period -1
......
서버 실행 통계 정보 출력(;.Hist)
;.Hist 세션 명령어는 데이터베이스 서버 실행 통계 정보를 확인하기 위한 세션 명령어로서, 이 명령어가 입력된 이후부터 서버 실행 통계 정보를 추출한다. 따라서, 서버 실행 통계 정보를 화면에 출력하기 위해서는 ;.dump_hist 또는 ;.x 와 같은 실행 명령어를 입력해야 한다.
이는 cubrid.conf 파일에서 관련 파라미터(communication_histogram)를 yes로 설정한 경우에만 동작되며, cubrid statdump 유틸리티를 이용해서도 서버 실행 통계 정보를 확인할 수 있다. ;.hist 세션 명령어의 옵션으로 on, off, all을 제공하며, 각 옵션의 의미는 다음과 같다.
다음 예제는 서버 전체에 대한 실행 통계 정보를 확인하는 예제이며, 출력되는 통계 정보 항목에 관한 설명은 데이터베이스 서버 실행 통계 정보 출력을 참고한다.
csql> ;.hist all
…
--Executing queries
…
csql> ;.x
*** SERVER EXECUTION GLOBAL STATISTICS ***
Num_data_page_fetches = 938215
Num_data_page_dirties = 851792
Num_data_page_ioreads = 15050
Num_data_page_iowrites = 0
Num_iosynches = 15187
Num_log_page_ioreads = 0
Num_log_page_iowrites = 15187
Num_log_append_records = 625838
Num_log_archives = 0
Num_log_checkpoints = 0
Num_tran_commits = 40080
Num_tran_rollbacks = 40
Hit ratio of Page Buffer = 98.40%
csql> ;.h off
질의 수행 시간을 출력(;TIme)
;TIme 세션 명령어로 질의를 수행한 시간을 출력하도록 설정할 수 있다. ON 혹은 OFF로 지정하며 인자가 없을 경우에는 현재 설정값을 보여준다.
csql> ;ti ON
csql> ;ti
TIME IS ON
질의 수행 이력 확인(;HISTORYList)
이전에 수행된 명령어(입력 내용)을 수행 번호를 포함한 리스트로 보여준다.
csql> ;historyl
----< 1 >----
select * from nation;
----< 2 >----
select * from athlete;
지정된 수행 번호에 해당하는 입력 내용을 버퍼로 불러오기(;HISTORYRead)
;HISTORYRead 세션 명령어를 사용해 지정된 ;HISTORYList에서 확인한 수행 번호에 해당하는 내용을 명령어 버퍼로 불러올 수 있다. 해당 SQL 문을 직접 입력한 것과 같은 상태이므로 바로 ;ru 나 ;x를 입력할 수 있다.
csql> ;historyr 1
기본 편집기를 호출(;EDIT)
지정된 편집기를 호출하는 세션 명령어이다. 기본 편집기는 Linux에서는 vi이고, Windows에서는 메모장이다. 다른 편집기로 지정하려면 ;EDITOR_Cmd 명령어를 이용한다.
csql> ;edit
편집기 설정(;EDITOR_Cmd)
;EDIT 세션 명령어에서 사용될 편집기를 지정한다. 예제와 같이 기본 편집기인 vi 대신에 해당 시스템에 설치된 다른 편집기(예: emacs)를 설정할 수 있다.
csql> ;editor_c emacs
csql> ;edit