세션 명령어

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_minscheckpoint_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