제1장 tbSQL

내용 목차

1.1. 개요
1.2. 빠른 시작
1.2.1. 실행
1.2.2. 데이터베이스 접속
1.2.3. 인터페이스
1.2.4. 환경설정
1.2.5. 종료
1.3. 시스템 변수
1.3.1. AUTOCOMMIT
1.3.2. AUTOTRACE
1.3.3. BLOCKTERMINATOR
1.3.4. COLSEP
1.3.5. CONCAT
1.3.6. DDLSTATS
1.3.7. DEFINE
1.3.8. DESCRIBE
1.3.9. ECHO
1.3.10. EDITFILE
1.3.11. ESCAPE
1.3.12. EXITCOMMIT
1.3.13. FEEDBACK
1.3.14. HEADING
1.3.15. HEADSEP
1.3.16. HISTORY
1.3.17. INTERVAL
1.3.18. LINESIZE
1.3.19. LONG
1.3.20. NEWPAGE
1.3.21. NUMFORMAT
1.3.22. NUMWIDTH
1.3.23. PAGESIZE
1.3.24. PAUSE
1.3.25. RECSEP
1.3.26. RECSEPCHAR
1.3.27. ROWS
1.3.28. SERVEROUTPUT
1.3.29. SQLPROMPT
1.3.30. SQLTERMINATOR
1.3.31. SUFFIX
1.3.32. TERMOUT
1.3.33. TIME
1.3.34. TIMEOUT
1.3.35. TIMING
1.3.36. TRIMOUT
1.3.37. TRIMSPOOL
1.3.38. UNDERLINE
1.3.39. VERIFY
1.3.40. WRAP
1.4. 기본 기능
1.4.1. 명령어의 입력
1.4.2. 명령어의 실행
1.4.3. 기타 기능
1.5. 고급 기능
1.5.1. 스크립트 기능
1.5.2. DBA를 위한 기능
1.5.3. 사용자 접근 제어 기능
1.5.4. 접속 정보 암호화 기능
1.6. 명령어
1.6.1. !
1.6.2. %
1.6.3. @, @@
1.6.4. /
1.6.5. ACCEPT
1.6.6. APPEND
1.6.7. ARCHIVE LOG
1.6.8. CHANGE
1.6.9. CLEAR
1.6.10. COLUMN
1.6.11. CONNECT
1.6.12. DEFINE
1.6.13. DEL
1.6.14. DESCRIBE
1.6.15. DISCONNECT
1.6.16. EDIT
1.6.17. EXECUTE
1.6.18. EXIT
1.6.19. EXPORT
1.6.20. HELP
1.6.21. HISTORY
1.6.22. HOST
1.6.23. INPUT
1.6.24. LIST
1.6.25. LOADFILE
1.6.26. LOOP
1.6.27. LS
1.6.28. PASSWORD
1.6.29. PAUSE
1.6.30. PING
1.6.31. PRINT
1.6.32. PROMPT
1.6.33. QUIT
1.6.34. RESTORE
1.6.35. RUN
1.6.36. SAVE
1.6.37. SET
1.6.38. SHOW
1.6.39. SPOOL
1.6.40. START
1.6.41. TBDOWN
1.6.42. UNDEFINE
1.6.43. VARIABLE
1.6.44. WHENEVER
1.7. 컬럼 포맷
1.7.1. 문자형
1.7.2. 숫자형

본 장에서는 tbSQL 유틸리티를 소개하고 사용 방법을 설명한다.

1.1. 개요

tbSQLTibero®(이하 Tibero)에서 제공하는 SQL 문장을 처리하는 대화형 유틸리티이다. 이 유틸리티로 SQL 질의, 데이터 정의어(DDL: Data Definition Language), 트랜잭션과 관련된 SQL 문장을 실행할 수 있다. 또한, PSM 프로그램을 생성하고 실행할 수 있으며 DBA는 Tibero의 시스템 관리를 위한 명령을 실행할 수 있다.

tbSQL은 이러한 기본 기능 외에도 자동 커밋을 설정하거나 운영체제 관련 명령어의 실행, 출력 저장, 스크립트 기능 등을 제공한다. 특히 스크립트 기능은 여러 SQL 문장 및 PSM 프로그램, tbSQL 유틸리티의 명령어를 하나의 스크립트 파일로 생성할 수 있어 편리하다.

tbSQL 유틸리티는 Tibero의 유틸리티 중에서 가장 빈번히 사용되는 것 중의 하나이며, SQL 문장의 실행이외에 다음과 같은 기능을 제공한다.

  • 일반적인 SQL 문장 및 PSM 프로그램의 입력, 편집, 저장, 실행

  • 트랜잭션의 설정 및 종료

  • 스크립트를 통한 일괄 작업의 실행

  • DBA에 의한 데이터베이스 관리

  • 데이터베이스의 기동 및 종료

  • 외부 유틸리티 및 프로그램의 실행

  • tbSQL 유틸리티의 환경설정

1.2. 빠른 시작

tbSQL 유틸리티는 Tibero를 설치하는 과정에서 함께 설치되며, Tibero를 제거하면 함께 제거된다.

1.2.1. 실행

tbSQL 유틸리티를 실행하는 방법은 다음과 같다.

[예 1.1] tbSQL 유틸리티의 실행

$ tbsql

tbSQL 6

TmaxData Corporation Copyright (c) 2008-. All rights reserved.  

tbSQL 유틸리티가 정상적으로 실행되면 위 예제처럼 SQL 프롬프트가 나타난다. 이 프롬프트에서 데이터베이스 사용자는 SQL 문장을 실행할 수 있다.

tbSQL 유틸리티를 실행하는 명령어의 문법은 다음과 같다.

  • 사용법

    tbsql [[options]|[connect_string]|[start_script]]
    • options

      항목설명
      -h, --help도움말 화면을 출력한다.
      -v, --version버전을 출력한다.
      -s, --silent화면에 시작 메시지와 프롬프트를 출력하지 않는다.
      -i, --ignore로그온 스크립트(tbsql.logon)를 실행하지 않는다.
    • connect_string

      Tibero에 접속하려는 사용자의 계정에 대한 정보를 포함하며, 다음과 같은 형식으로 지정한다.

      username[/password[@connect_identifier]]

      다음은 connect_string에 사용할 수 있는 항목이다.

      항목설명
      username사용자명으로 대소문자를 구분하지 않는다. 만약 대소문자를 구분해야 한다면 이스케이프 문자(\)를 포함한 큰따옴표(" ")로 감싸야 한다.
      password패스워드로 대소문자를 구분하지 않는다. 단, 작은따옴표(' ')에 패스워드를 입력하는 경우는 예외이다.
      connect_identifier데이터베이스에 대한 접속 정보를 가진 DSN(Data Source Name)이거나 정해진 규칙의 연결명세서이다.
    • start_script

      tbSQL 유틸리티의 시작과 함께 실행할 스크립트 파일을 설정할 수 있으며, 다음과 같은 형식으로 지정한다.

      @filename[.ext] [parameter ...]

      다음은 start_script에 사용할 수 있는 항목이다.

      항목설명
      filename파일명이다.
      ext파일의 확장자로, 지정하지 않을 경우 SUFFIX 시스템 변수에 지정된 확장자가 기본값이다.
      parameter파일에 사용된 치환변수 값이다.

1.2.2. 데이터베이스 접속

tbSQL 유틸리티를 실행한 후 SQL 프롬프트가 나타나면 데이터베이스에 접속할 수 있는 상태가 된다.

tbSQL 유틸리티는 데이터베이스의 세션을 시작하기 전에 수행해야 할 작업이 있을 경우 tbsql.login 파일을 작성하면 된다. 이 파일이 현재 디렉터리에 있는 경우에는 바로 실행하고, 그렇지 않은 경우에는 환경변수 TB_SQLPATH에 설정된 디렉터리에서 찾는다.

tbSQL 유틸리티를 이용하여 데이터베이스에 접속하는 방법은 다음과 같다.

[예 1.2] tbSQL 유틸리티를 이용한 데이터베이스 접속

$ tbsql SYS/syspassword

tbSQL 6

TmaxData Corporation Copyright (c) 2008-. All rights reserved.

Connected. 

위 예에서는 UNIX 셸 프롬프트에서 tbSQL 유틸리티의 실행과 함께 사용자명과 패스워드를 입력한다.

사용자명패스워드를 입력할 때에는 다음과 같은 규칙이 있다.

항목설명
사용자명스키마 객체의 이름과 마찬가지로 대소문자를 구분하지 않는다. 단, 큰따옴표(" ")에 사용자명을 입력하는 경우는 예외다.
패스워드패스워드로, 대소문자를 구분하지 않는다. 단, 작은따옴표(' ')에 패스워드를 입력하는 경우는 예외이다.

[예 1.2]와 같이 connect_identifier를 생략하는 경우엔 디폴트 데이터베이스에 접속이 된다. 만약 특정 데이터베이스에 접속하고자 하는 경우엔 connect_identifier를 명시하면 되고, 다음과 같은 두가지 형식으로 사용할 수 있다.

  • DSN(Data Source Name)

    DSN은 tbdsn.tbr 파일이나 Windows에서의 데이터 원본(ODBC)에 정의된 이름을 명시하는 방법이다.

    다음은 tbdsn.tbr 파일의 설정 예이다.

    tibero6=(
        (INSTANCE=(HOST=192.168.36.42)
                  (PORT=8629)
                  (DB_NAME=tibero6)
        )
    ) 

    위와 같이 정의된 경우 접속하는 방법은 다음과 같다.

    $ tbsql tibero/tmax@tibero6
    
  • 연결 명세서

    연결 명세서는 tbdsn.tbr 파일을 사용하지 않고, 직접 접속 정보를 명시하는 방법으로 다음 두 가지 형식으로 사용할 수 있다.

    • 방법1

      (INSTANCE=(HOST=host)(PORT=port)(DB_NAME=dbname))

      사용 예는 다음과 같다.

      $ tbsql 'tibero/tmax@(INSTANCE=(HOST=192.168.36.42)(PORT=8629)(DB_NAME=tibero6))'
      
    • 방법2

      host:port/dbname

      사용 예는 다음과 같다.

      $ tbsql 'tibero/tmax@192.168.36.42:8629/tibero6'
      

1.2.3. 인터페이스

다음은 tbSQL 유틸리티를 실행했을 때의 화면이다.

$ tbsql

tbSQL 6

TmaxData Corporation Copyright (c) 2008-. All rights reserved.

SQL> CONNECT dbuser
Enter password : dbuserpassword
Connected to Tibero. 

위의 예에서는 tbSQL 유틸리티를 실행한 뒤 CONNECT 명령어를 통해 dbuser라는 사용자명으로 데이터베이스에 접속했다. tbSQL 유틸리티는 이처럼 텍스트 모드의 화면에서 입력을 받고, 사용자의 요구에 따라 결과를 출력한다.

참고

본 안내서에서는 특별한 경우를 제외하고는 모든 SQL 문장과 PSM 프로그램, tbSQL 유틸리티의 명령어를 대문자로 표현한다. 명령어의 파라미터로 소문자가 사용된 경우는 다른 파라미터로 확장될 수 있는 경우이다.

tbSQL 유틸리티는 다음과 같은 특성을 가진 인터페이스로 실행한다.

  • tbSQL 유틸리티가 정상적으로 실행되면 SQL 프롬프트가 출력된다.

    프롬프트에서 SQL 문장, PSM 프로그램, tbSQL 유틸리티의 명령어를 입력할 수 있다.

  • 여러 라인에 걸쳐 입력할 수 있다.

    SQL 문장과 PSM 프로그램은 입력과 실행을 분리할 수 있다. 하지만 tbSQL 유틸리티의 명령어는 입력과 동시에 실행된다.

  • 대소문자를 구분하지 않는다.

    SQL 문장 내의 문자열 데이터처럼 특별한 경우를 제외하고는 대소문자를 구분하지 않는다.

    예를 들어 다음의 두 문장은 서로 같은 의미이다.

    SQL> SET AUTOCOMMIT ON 
    SQL> set autocommit on

1.2.4. 환경설정

tbSQL 유틸리티의 사용 환경을 설정하려면 SET 명령어를 사용해야 한다. SET 명령어를 통해 SQL 질의를 수행한 결과의 출력 형태, 트랜잭션의 커밋 여부 등을 설정할 수 있다.

다음은 SET 명령어의 문법이다.

SET [system_variable] [system_variable_value]

참고

자세한 내용은 “1.3. 시스템 변수”를 참고한다.

1.2.5. 종료

tbSQL 유틸리티를 종료하려면 SQL 프롬프트 에서 EXIT 또는 QUIT 명령어를 입력해야 한다.

SQL> EXIT

참고

tbSQL 유틸리티에서 제공하는 명령어에 대한 자세한 내용은 “1.6. 명령어”를 참고한다.

1.3. 시스템 변수

본 절에서는 tbSQL 유틸리티의 시스템 변수에 대하여 설명한다. tbSQL 유틸리티의 시스템 변수에 설정할 값은 SET 명령어로 설정하고, SHOW 명령어로 출력한다.

다음은 SET 명령어에서 설정할 수 있는 시스템 변수를 요약한 표이다.

시스템 변수기본값설명
AUTOCOMMITOFF자동 커밋 여부를 설정하는 시스템 변수이다.
AUTOTRACEOFF수행 중인 질의의 플랜이나 통계 정보를 출력할지를 설정하는 시스템 변수이다.
BLOCKTERMINATOR"." (0x2E)PSM 문장에서 입력의 마지막을 나타내는 문자를 설정하는 시스템 변수이다.
COLSEP" " (0x20)SQL 문장 중 조회 쿼리에 대한 수행 결과를 보여줄 때 컬럼사이를 구분하는 문자를 지정하는 시스템 변수이다.
CONCAT"." (0x2E)치환 변수 이름의 끝을 나타내는 문자를 설정하는 시스템 변수이다.
DDLSTATSOFFDDL 문장의 플랜이나 통계 정보를 보여줄지를 설정하는 시스템 변수이다.
DEFINE"&" (0x26)치환 변수를 정의할 때 사용할 문자를 지정하는 시스템 변수이다.
DESCRIBEDEPTH 10DESCRIBE 명령어에서 보여줄 객체 명세의 단계를 지정하는 시스템 변수이다.
ECHOOFF@ 또는 START 명령으로 스크립트 파일을 실행시킬 때 스크립트 내에서 실행되는 쿼리를 화면에 출력할지 결정하는 시스템 변수이다.
EDITFILE".tbedit.sql"EDIT 명령어에서 사용하는 파일 이름의 기본값을 설정하는 시스템 변수이다.
ESCAPEOFF이스케이프 문자를 설정하는 시스템 변수이다.
EXITCOMMITON유틸리티 종료시에 커밋 여부를 설정하는 시스템 변수이다.
FEEDBACK0SQL 문장의 수행 결과를 화면에 출력할지를 설정하는 시스템 변수이다.
HEADINGON쿼리 실행 결과를 출력할 때 컬럼의 머릿글을 표시할지를 결정하는 시스템 변수이다.
HEADSEP"|" (0x7C)머릿글의 줄바꿈 문자를 설정하는 시스템 변수이다.
HISTORY50명령어 히스토리의 크기를 설정하는 시스템 변수이다.
INTERVAL1LOOP 명령어에서 각 문장을 수행한 후 대기하는 시간을 설정하는 시스템 변수이다.
LINESIZE80한 라인에 출력할 문자 수를 설정하는 시스템 변수이다.
LONG80VARCHAR보다 큰 문자형 타입의 데이터를 표시하기 위해 사용할 문자 수를 설정하는 시스템 변수이다.
NEWPAGE1각 페이지 시작 부분에 추가할 빈 줄 수를 설정하는 시스템 변수이다.
NUMFORMAT""숫자형 데이터의 기본 컬럼 포맷을 설정하는 시스템 변수이다.
NUMWIDTH10숫자형 데이터의 기본 출력 길이를 설정하는 시스템 변수이다.
PAGESIZE24한 화면에 출력할 라인 수를 설정하는 시스템 변수이다.
PAUSEOFF한 페이지를 출력한 후 다음 페이지를 출력하기 전에 사용자 입력을 기다릴지를 지정하는 시스템 변수이다.
RECSEPWRAPPED로우 구분자를 출력할 단위를 지정하는 시스템 변수이다.
RECSEPCHAR" " (0x20)로우 구분자로 사용할 문자를 설정하는 시스템 변수이다.
ROWSON질의문의 결과를 화면에 출력할 것인지를 설정하는 시스템 변수이다.
SERVEROUTPUTOFFDBMS_OUTPUT 패키지의 결과를 출력할 것인지를 설정하는 시스템 변수이다.
SQLPROMPT"SQL> "화면상의 프롬프트 문자를 설정하는 시스템 변수이다.
SQLTERMINATOR";" (0x3B)SQL 문장을 종료하는 문자를 설정하는 시스템 변수이다.
SUFFIX"sql"파일 확장자의 기본값을 설정하는 시스템 변수이다.
TERMOUTON스크립트에서 수행된 명령어의 결과를 화면에 출력할 것인지를 설정하는 시스템 변수이다.
TIMEOFF현재 시간을 화면에 출력할 것인지를 설정하는 시스템 변수이다.
TIMEOUT3PING 명령어에서 서버가 응답할 때까지 기다릴 시간을 설정하는 시스템 변수이다.
TIMINGOFFSQL, PSM 문장의 결과를 출력할 때마다 수행 시간을 출력할 것인지를 설정하는 시스템 변수이다.
TRIMOUTON화면에 출력되는 라인 뒤에 오는 공백을 제거할 것인지를 설정하는 시스템 변수이다.
TRIMSPOOLOFF스풀링 중인 라인 뒤에 오는 공백을 제거할 것인지를 설정하는 시스템 변수이다.
UNDERLINE"-" (0x2D)머릿글의 밑줄로 사용할 문자를 설정하는 시스템 변수이다.
VERIFYON명령을 실행할 때 치환변수가 적용된 내역에 대한 출력 여부를 설정하는 시스템 변수이다.
WRAPON출력할 라인이 긴 경우 나머지를 다음 라인에 출력할 것인지를 설정하는 시스템 변수이다.

다음은 시스템 변수를 설정하는 예이다.

SET AUTOCOMMIT ON
SET PAGESIZE 32
SET TRIMSPOOL ON

1.3.1. AUTOCOMMIT

INSERT, UPDATE, DELETE, MERGE 혹은 PSM 블록 등의 SQL 문장을 실행한 후 자동으로 커밋을 수행하도록 설정한다.

AUTOCOMMIT의 세부 내용은 다음과 같다.

  • 문법

    SET AUTO[COMMIT] {ON|OFF|n}
    항목설명
    ON자동 커밋을 수행한다.
    OFF

    자동 커밋을 수행하지 않는다. (기본값)

    OFF로 설정한 경우에는 명시적으로 커밋을 수행해야 한다.

    n

    n개의 INSERT, UPDATE, DELETE, MERGE 혹은 PSM 블록을 성공적으로 수행한 후에 커밋을 수행한다.

    n이 0이면 OFF와 동일하고, 1이면 ON과 동일하다.

1.3.2. AUTOTRACE

수행 중인 질의의 플랜이나 통계 정보를 보여준다. DBA 권한 또는 PLUSTRACE 권한이 있어야 사용할 수 있다. PLUSTRACE는 AUTOTRACE에 필요한 특권들이 포함된 권한으로 DBA 권한을 가진 사용자가 생성하여 다른 사용자에게 부여할 수 있다. 생성 스크립트는 $TB_HOME/scripts/plustrace.sql이다.

AUTOTRACE의 세부 내용은 다음과 같다.

  • 문법

    SET AUTOT[RACE] {ON|OFF|TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]] [PLANS[TAT]]
    • 입력 항목

      항목설명
      ON질의의 결과 및 추가 옵션에 따라 플랜 정보나 통계 정보를 출력한다.
      OFF플랜 및 통계정보를 출력하지 않는다. (기본값)
      TRACE[ONLY]질의의 결과를 보여주지 않으며, 추가 옵션에 따라 플랜 정보나 통계 정보를 출력한다.
    • 옵션

      다음은 플랜이나 통계 정보를 보여줄지를 지정하는 옵션이다.

      옵션설명
       아무것도 명시하지 않으면 플랜과 통계 정보를 모두 보여준다.
      EXP[LAIN]플랜 정보를 보여준다.
      STAT[ISTICS]통계 정보를 보여준다.
      PLANS[TAT]질의에 대한 노드 별 수행 정보(수행 시간, 처리 로우 수, 수행 횟수 등)을 보여준다.

1.3.3. BLOCKTERMINATOR

PSM 문장에서 입력의 마지막을 나타내는 문자를 설정한다.

BLOCKTERMINATOR의 세부 내용은 다음과 같다.

  • 문법

    SET BLO[CKTERMINATOR] {c|ON|OFF}
    항목설명
    cPSM 프로그램 입력을 마치는 것을 나타내는 문자이다. (기본값: ".")
    ONBLOCKTERMINATOR를 활성화한다. (기본값)
    OFFBLOCKTERMINATOR를 비활성화한다.

1.3.4. COLSEP

SELECT 문장을 실행한 후 출력되는 여러 컬럼 사이의 구분을 나타내는 문자를 설정한다.

COLSEP의 세부 내용은 다음과 같다.

  • 문법

    SET COLSEP {text}
    항목설명
    text컬럼 사이를 구분짓는 문자이다. (기본값: " ")

1.3.5. CONCAT

치환 변수 이름의 끝을 나타내는 문자를 설정한다.

CONCAT의 세부 내용은 다음과 같다.

  • 문법

    SET CON[CAT] {c|ON|OFF}
    항목설명
    c치환 변수 이름에 대한 종료 문자이다. (기본값: ".")
    ONCONCAT을 활성화한다. (기본값)
    OFFCONCAT을 비활성화한다.

1.3.6. DDLSTATS

수행 중인 DDL 문장의 플랜이나 통계 정보를 보여준다. 단, 주의할 점은 AUTOTRACE 기능도 반드시 활성화시켜야 한다.

DDLSTATS의 세부 내용은 다음과 같다.

  • 문법

    SET DDLSTAT[S] {ON|OFF}
    항목설명
    ONDDLSTATS를 활성화한다.
    OFFDDLSTATS를 비활성화한다. (기본값)

1.3.7. DEFINE

치환 변수를 정의할 때 사용할 문자를 설정한다.

DEFINE의 세부 내용은 다음과 같다.

  • 문법

    SET DEF[INE] {c|ON|OFF}
    항목설명
    c치환 변수를 나타내는 문자이다. (기본값 : "&")
    ONDEFINE을 활성화한다. (기본값)
    OFFDEFINE을 비활성화한다.

1.3.8. DESCRIBE

DESCRIBE 명령어를 통한 객체 명세를 어느 단계까지 보여줄지를 설정한다.

DESCRIBE의 세부 내용은 다음과 같다.

  • 문법

    SET DESCRIBE DEPTH {n}
    항목설명
    n재귀적으로 출력할 단계이다. (기본값: 10)

1.3.9. ECHO

@ 또는 START 명령으로 스크립트 파일을 실행시킬 때 스크립트 내에서 실행되는 쿼리를 화면에 출력할지를 설정한다.

ECHO의 세부 내용은 다음과 같다.

  • 문법

    SET ECHO {ON|OFF}
    항목설명
    ONECHO를 활성화한다.
    OFFECHO를 비활성화한다. (기본값)

1.3.10. EDITFILE

EDIT 명령어에서 사용할 파일 이름의 기본값을 설정한다. 확장자를 생략할 경우 SUFFIX에 설정된 값을 사용한다.

EDITFILE의 세부 내용은 다음과 같다.

  • 문법

    SET EDITF[ILE] filename[.ext]
    항목설명
    filename[.ext]EDIT 명령어에서 사용할 파일 이름이다. (기본값: .tbedit.sql)

1.3.11. ESCAPE

DEFINE에서 정의한 치환 변수 문자를 무시하도록 하는 이스케이프 문자를 설정한다. 이스케이프를 활성화한 뒤 설정한 이스케이프 문자를 '&<문자열>' 앞에 붙여 쓰면, 치환 변수로 인식되지 않는다.

ESCAPE의 세부 내용은 다음과 같다.

  • 문법

    SET ESC[APE] {c|ON|OFF}
    항목설명
    c이스케이프 문자이다. (기본값: "\")
    ONESCAPE를 활성화한다.
    OFFESCAPE를 비활성화한다. (기본값)

1.3.12. EXITCOMMIT

유틸리티 종료시에 커밋을 할지 여부를 설정한다.

EXITCOMMIT의 세부 내용은 다음과 같다.

  • 문법

    SET EXITC[OMMIT] {ON|OFF}
    항목설명
    ONEXITCOMMIT을 활성화한다. (기본값)
    OFFEXITCOMMIT을 비활성화한다.

1.3.13. FEEDBACK

SQL 문장의 수행 결과를 화면에 출력할지 설정한다.

FEEDBACK의 세부 내용은 다음과 같다.

  • 문법

    SET FEED[BACK] {n|ON|OFF}
    항목설명
    n수행 결과를 화면에 출력하기 위한 최소 로우 개수이다. (기본값: 0)
    ONFEEDBACK을 활성화한다. (기본값)
    OFFFEEDBACK을 비활성화한다.

1.3.14. HEADING

쿼리 실행 결과를 출력할 때 컬럼의 머릿글을 표시할지를 결정한다.

HEADING의 세부 내용은 다음과 같다.

  • 문법

    SET HEA[DING] {ON|OFF}
    항목설명
    ONHEADING을 활성화한다. (기본값)
    OFFHEADING을 비활성화한다.

1.3.15. HEADSEP

머릿글의 줄바꿈 문자를 설정한다.

HEADSEP의 세부 내용은 다음과 같다.

  • 문법

    SET HEADS[EP] {c|ON|OFF}
    항목설명
    c줄바꿈 문자이다. (기본값: "|")
    ONHEADSEP을 활성화한다. (기본값)
    OFFHEADSEP을 비활성화한다.

1.3.16. HISTORY

명령어 히스토리의 크기를 설정한다.

HISTORY의 세부 내용은 다음과 같다.

  • 문법

    SET HIS[TORY] {n}
    항목설명
    n명령어 히스토리의 크기이다. (기본값: 50)

1.3.17. INTERVAL

LOOP 명령어에서 각 수행이 끝난 후 대기하는 시간을 설정한다.

INTERVAL의 세부 내용은 다음과 같다.

  • 문법

    SET INTER[VAL] {n}
    항목설명
    n대기 시간으로 단위는 초다. (기본값: 1)

1.3.18. LINESIZE

화면상의 한 라인의 길이를 설정한다. 라인 길이의 최소값은 1이며, 최댓값은 운영체제에 따라 다르다.

LINESIZE의 세부 내용은 다음과 같다.

  • 문법

    SET LIN[ESIZE] {n}
    항목설명
    n화면상의 한 라인의 길이이다. (기본값: 80)

1.3.19. LONG

CLOB이나 BLOB, NCLOB, LONG, XML 타입의 데이터를 읽어 와서 출력할 길이를 설정한다. 길이는 2,000,000,000을 넘을 수 없다.

LONG의 세부 내용은 다음과 같다.

  • 문법

    SET LONG {n}
    항목설명
    n대용량 데이터의 기본 출력 길이이다. (기본값: 80)

1.3.20. NEWPAGE

각 페이지의 시작 부분에 추가할 빈 줄 개수를 설정한다.

NEWPAGE의 세부 내용은 다음과 같다.

  • 문법

    SET NEWP[AGE] {1|n|NONE}
    항목설명
    n빈 줄 개수이다. (기본값: 1)

1.3.21. NUMFORMAT

NUMBER 타입의 기본 컬럼 포맷을 설정한다. COLUMN 명령으로 FORMAT이 정의된 것을 제외한 숫자형 컬럼에 적용된다.

NUMFORMAT의 세부 내용은 다음과 같다.

  • 문법

    SET NUMF[ORMAT] {fmt_str}
    항목설명
    fmt_str

    NUMBER 타입 데이터의 기본 컬럼 포맷이다. (기본값: "")

    자세한 내용은 “1.7. 컬럼 포맷”의 숫자형에 대한 설명을 참조한다.

1.3.22. NUMWIDTH

NUMBER 타입을 출력할 길이를 설정한다. LINESIZE를 넘을 수 없다.

NUMWIDTH의 세부 내용은 다음과 같다.

  • 문법

    SET NUM[WIDTH] {n}
    항목설명
    nNUMBER 타입 데이터의 기본 출력 길이이다. (기본값: 10)

1.3.23. PAGESIZE

tbSQL 유틸리티에서 출력하는 내용이 포함되는 각 페이지 내의 라인 개수를 설정한다.

PAGESIZE의 세부 내용은 다음과 같다.

  • 문법

    SET PAGES[IZE] {n}
    항목설명
    n한 페이지의 라인 개수이다. (기본값: 24)

1.3.24. PAUSE

한 페이지를 출력한 뒤 다음 페이지를 출력하기 전에 사용자 입력을 기다릴지를 설정한다.

PAUSE의 세부 내용은 다음과 같다.

  • 문법

    SET PAU[SE] {ON|OFF}
    항목설명
    ONPAUSE를 활성화한다.
    OFFPAUSE를 비활성화한다. (기본값)

1.3.25. RECSEP

로우 구분자를 출력하는 단위를 설정한다.

RECSEP의 세부 내용은 다음과 같다.

  • 문법

    SET RECSEP {WR[APPED]|EA[CH]|OFF}
    항목설명
    WRAPPED로우가 WRAPPING되는 경우 구분자를 출력한다. (기본값)
    EACH모든 로우 단위로 구분자를 출력한다.
    OFFRECSEP을 비활성화한다.

1.3.26. RECSEPCHAR

로우 구분자로 사용할 문자를 설정한다. 이 구분자는 LINESIZE 값만큼 반복해서 출력된다.

RECSEPCHAR의 세부 내용은 다음과 같다.

  • 문법

    SET RECSEPCHAR {c}
    항목설명
    c로우 구분자이다. (기본값: " ")

1.3.27. ROWS

질의문의 결과를 화면에 출력할지를 설정한다.

ROWS의 세부 내용은 다음과 같다.

  • 문법

    SET ROWS {ON|OFF}
    항목설명
    ONROWS를 활성화한다. (기본값)
    OFFROWS를 비활성화한다.

1.3.28. SERVEROUTPUT

DBMS_OUTPUT 패키지의 결과를 출력할 것인지 설정한다.

SERVEROUTPUT의 세부 내용은 다음과 같다.

  • 문법

    SET SERVEROUT[PUT] {ON|OFF} [SIZE n]
    항목설명
    ONSERVEROUTPUT을 활성화한다.
    OFFSERVEROUTPUT을 비활성화한다. (기본값)
    nSERVEROUTPUT 버퍼 크기를 지정한다. (기본값: 1000000)

1.3.29. SQLPROMPT

화면상의 프롬프트 문자를 설정한다.

SQLPROMPT의 세부 내용은 다음과 같다.

  • 문법

    SET SQLP[ROMPT] {prompt_string}
    항목설명
    prompt_string

    프롬프트로 사용할 문자열이다. (기본값: "SQL>")

    이 문자열을 중괄호({ })로 감싸면 환경변수로 인식된다.

    예를 들어 '{ISQL_PROMPT}'이라고 지정하면 환경변수 $ISQL_PROMPT의 값이 치환되어 프롬프트로 사용된다. 이때 환경변수의 이름은 대소문자를 구분한다.

    문자열의 최대 길이는 128자로 제한된다.

1.3.30. SQLTERMINATOR

SQL 문장을 종료하는 문자를 설정한다.

SQLTMINATOR의 세부 내용은 다음과 같다.

  • 문법

    SET SQLT[MINATOR} {c|ON|OFF}
    항목설명
    cSQL 문장의 종료를 알리는 문자이다. (기본값: ";")
    ONSQLTERMINATOR를 활성화한다.
    OFFSQLTERMINATOR를 비활성화한다.

1.3.31. SUFFIX

파일 확장자를 생략했을 때 사용할 파일 확장자를 설정한다.

SUFFIX의 세부 내용은 다음과 같다.

  • 문법

    SET SUF[FIX] {extension}
    항목설명
    extension기본으로 사용할 파일 확장자이다. (기본값: sql)

1.3.32. TERMOUT

스크립트에서 수행된 명령어의 결과를 화면에 출력할 것인지 설정한다.

TERMOUT의 세부 내용은 다음과 같다.

  • 문법

    SET TERM[OUT] {ON|OFF}
    항목설명
    ONTERMOUT을 활성화한다. (기본값)
    OFFTERMOUT을 비활성화한다.

1.3.33. TIME

프롬프트에 현재 시간을 출력할 것인지 설정한다.

TIME의 세부 내용은 다음과 같다.

  • 문법

    SET TI[ME] {ON|OFF}
    항목설명
    ONTIME을 활성화한다.
    OFFTIME을 비활성화한다. (기본값)

1.3.34. TIMEOUT

PING 명령어에서 서버가 응답할 때까지 기다릴 시간을 설정한다. 단위는 초다.

TIMEOUT의 세부 내용은 다음과 같다.

  • 문법

    SET TIMEOUT {n}
    항목설명
    n서버의 응답을 기다리는 시간이다. (기본값: 3)

1.3.35. TIMING

SQL, PSM 문장의 실행 결과를 출력할 때마다 수행 시간을 출력할 것인지 설정한다.

TIMING의 세부 내용은 다음과 같다.

  • 문법

    SET TIMI[NG] {ON|OFF}
    항목설명
    ONTIMING을 활성화한다.
    OFFTIMING을 비활성화한다. (기본값)

1.3.36. TRIMOUT

SQL, PSM 문장의 실행 결과를 출력할 때마다 모든 라인의 뒤에 오는 공백을 제거할 것인지 설정한다.

TRIMOUT의 세부 내용은 다음과 같다.

  • 문법

    SET TRIM[OUT] {ON|OFF}
    항목설명
    ONTRIMOUT을 활성화한다. (기본값)
    OFFTRIMOUT을 비활성화한다.

1.3.37. TRIMSPOOL

SQL, PSM 문장의 실행 결과를 스풀링할 때마다 모든 라인의 뒤에 오는 공백을 제거할 것인지 설정한다.

TRIMSPOOL의 세부 내용은 다음과 같다.

  • 문법

    SET TRIMS[POOL] {ON|OFF}
    항목설명
    ONTRIMSPOOL을 활성화한다.
    OFFTRIMSPOOL을 비활성화한다. (기본값)

1.3.38. UNDERLINE

머릿글의 밑줄로 사용할 문자를 설정한다.

UNDERLINE의 세부 내용은 다음과 같다.

  • 문법

    SET UND[ERLINE] {c|ON|OFF}
    항목설명
    c밑줄 문자이다. (기본값: "-")
    ONUNDERLINE을 활성화한다. (기본값)
    OFFUNDERLINE을 비활성화한다.

1.3.39. VERIFY

치환 변수가 포함된 명령을 실행할 때 치환 변수가 값으로 치환되는 결과의 출력 여부를 설정한다.

VERIFY의 세부 내용은 다음과 같다.

  • 문법

    SET VER[IFY] {ON|OFF}
    항목설명
    ONVERIFY를 활성화한다. (기본값)
    OFFVERIFY를 비활성화한다.

1.3.40. WRAP

화면에서 출력된 라인이 LINESIZE 변수로 설정된 값보다 긴 경우 나머지를 다음 라인에 출력할 것인지 아니면 LINESIZE 만큼만 출력할 것인지 설정한다.

WRAP의 세부 내용은 다음과 같다.

  • 문법

    SET WRA[P] {ON|OFF}
    항목설명
    ONWRAP을 활성화한다. (기본값)
    OFFWRAP을 비활성화한다.

1.4. 기본 기능

tbSQL 유틸리티에서 주로 사용하는 기능은 SQL 문장이나 PSM 프로그램을 직접 입력하여 실행하는 것이다. 본 절에서는 명령어의 입력과 실행에 관하여 설명한 후 기타 기능에 대해서 설명한다.

1.4.1. 명령어의 입력

tbSQL 유틸리티의 명령 프롬프트에서의 입력은 크게 SQL 문장, PSM 프로그램, 유틸리티 명령어의 세 가지로 구분할 수 있다. 명령어의 입력 방법은 대체로 서로 유사하다. 각 명령어를 입력하는 방법에 대하여 차례로 설명한다.

SQL 문장의 입력

다음은 SQL 문장을 입력하는 방법이다.

  • 일반적인 입력

    일반적인 SQL 문장은 tbSQL 유틸리티의 프롬프트에서 입력한다. 하나의 SQL 문장을 여러 라인에 걸쳐 입력할 수 있으며, SQL 문장의 입력을 취소하려면 빈 라인을 입력한다.

  • 줄 바꿈

    하나의 SQL 문장을 여러 라인에 걸쳐 입력할 경우 연속된 문자열이 아닌 어떤 곳에서도 줄 바꿈을 할 수 있다. 대개의 경우 읽기에 편하고 변경하기에 용이하도록 절 단위로 줄 바꿈을 하여 입력한다.

  • 주석(comment)의 삽입

    SQL 문장을 입력하는 중간에 주석을 삽입할 수 있다. 주석은 두 개의 마이너스 부호(--)로 시작되며, 그 라인의 마지막까지 포함한다. 주석은 그 자체만으로 하나의 라인을 형성할 수 있으며, 한 라인에서 다른 문자열의 뒤에 올 수도 있다.

  • 이전에 저장된 문장을 이용하여 입력

    입력한 SQL 문장은 tbSQL 유틸리티의 SQL 버퍼에 저장된다. 따라서, 같거나 유사한 SQL 문장을 입력하기 위하여 이전에 저장된 문장을 이용할 수 있다. 이전 문장을 필요에 따라 변경하면 새로운 문장으로 입력되어 SQL 버퍼에 저장된다.

    SQL 버퍼에는 하나의 SQL 문장 또는 PSM 프로그램이 저장된다. 운영체제에 따라서 키보드의 위쪽 방향키(↑)나 아래쪽 방향키(↓)를 누르면 이전에 입력한 문장을 다시 불러올 수 있다. 키를 누를 때마다 이전에 저장된 문장이 한 라인씩 나타나므로 이전에 저장된 SQL 문장 전체뿐만 아니라 일부를 불러올 수 있다.

다음은 tbSQL 유틸리티에서 SQL 문장을 입력하는 예이다.

SQL> SELECT ENAME, SALARY, ADDR
    FROM EMP
    -- this is a comment.
    WHERE DEPTNO = 5;
SQL>

PSM 프로그램의 입력

PSM 프로그램은 다수의 SQL 문장 또는 PSM 문장으로 이루어지며, 각 SQL 문장은 세미콜론(;)으로 마친다. PSM 프로그램을 입력하기 시작하면 tbSQL 유틸리티는 자동으로 PSM 프로그램 입력 모드로 전환한다. PSM 프로그램 입력 모드에서는 SQL 문장의 입력이 완료되었을 때 SQL 문장이 개별적으로 실행되지 않는다.

tbSQL 유틸리티가 PSM 프로그램 입력 모드로 전환하도록 만드는 문장에는 DECLARE, BEGIN 등 이름없는 블록(anonymous block)과 각각 프러시저, 함수, 트리거를 생성하는 CREATE (OR REPLACE) PROCEDURE, FUNCTION, TRIGGER가 있다.

PSM 프로그램에서의 입력 방법은 일반 SQL 문장의 경우와 유사하다.

다음은 PSM 프로그램을 입력하는 방법이다.

  • 일반적인 입력

    PSM 프로그램을 여러 라인에 걸쳐서 입력할 수 있다. SQL 문장의 입력을 취소하려면 빈 라인을 입력하였으나, PSM 프로그램의 입력을 취소하려면 블록종료 문자(BLOCKTERMINATOR)를 입력한다. 블록종료 문자의 기본값은 마침표(.)이다. 블록종료 문자는 해당 문자만 한 라인에 입력해야 하며, 다른 문자열과 함께 입력하면 안 된다.

  • 이전에 저장된 문장을 이용하여 입력

    한번 입력된 프로그램은 SQL 버퍼에 저장되어 다시 사용할 수 있다.

  • 주석의 삽입

    SQL 문장과 같은 방식으로 주석을 삽입한다.

다음은 tbSQL 유틸리티에서 이름 없는 블록을 입력하는 예이다.

SQL> DECLARE
    deptno NUMBER(2);
    BEGIN
        deptno := 5;
        UPDATE EMP SET SALARY = SALARY * 1.05
        WHERE DEPTNO = deptno;
        -- this is a comment.
    END;
    .
SQL>

위의 예에서는 블록 내에 한 라인의 주석이 삽입되었으며, END 문장 아래의 9번째 라인에 블록종료 문자로 마침표(.)를 입력하여 PSM 프로그램의 입력을 마쳤다. 마지막 라인에서 다른 문자나 문자열 없이 오직 블록종료 문자만 단독으로 한 라인을 형성하고 있는 것을 확인할 수 있다.

참고

PSM 사용에 대한 자세한 내용은 "Tibero tbPSM 안내서"를 참고한다.

tbSQL 유틸리티의 명령어 입력

tbSQL 유틸리티의 명령어에는 SQL 수행과 관련된 명령어나 기타 Tibero 데이터베이스 관리를 위한 명령어 등이 포함된다. tbSQL 유틸리티의 명령어에 대한 자세한 내용은 “1.6. 명령어”를 참고한다.

1.4.2. 명령어의 실행

tbSQL 유틸리티의 명령 프롬프트에 입력된 명령어를 실행하는 방법은 다음과 같은 세 가지가 있다.

  • SQL 버퍼에 저장된 SQL 문장이나 PSM 프로그램의 실행

    SQL 버퍼에는 가장 최근에 입력된 SQL 문장이나 PSM 프로그램 하나만 저장되어 있다. 이러한 SQL 문장이나 PSM 프로그램을 실행하기 위해서는 공통적으로 RUN 또는 / 명령어를 입력한다.

  • SQL 문장의 실행

    전체 문장을 입력하고 세미콜론(;)으로 종료하면 SQL 문장이 바로 실행된다.

  • SQL 버퍼에 저장과 동시에 실행

    SQL 문장이나 PSM 프로그램 입력을 마치고, SQL 버퍼에 저장함과 동시에 바로 실행하려면 / 명령어를 입력한다. 이때 마침표(.)와 마찬가지로 그 자체만으로 하나의 라인이 되어야 한다.

tbSQL 유틸리티의 명령어는 SQL 문장이나 PSM 프로그램과 달리 실행을 위한 명령어가 따로 없으며, SQL 버퍼에도 저장되지 않는다. tbSQL 유틸리티의 명령어는 입력을 마침과 동시에 실행된다.

다음은 SQL 버퍼에 저장된 SQL 문장을 실행하는 예이다.

SQL> SELECT ENAME, SALARY, ADDR
    FROM EMP
    -- this is a comment.
    WHERE DEPTNO = 5;
......실행 결과 ①......
SQL> /
......실행 결과 ②......
SQL>

위의 예에서는 첫 번째 SQL 프롬프트에서 SQL 문장을 입력하고 세미콜론(;)으로 종료하여 바로 실행하였다. 그리고 두 번째 SQL 프롬프트에서는 /를 입력하여 SQL 버퍼에 저장된 SQL 문장을 실행하였다. SQL 버퍼에는 가장 최근에 입력된 SQL 문장이 저장되어 있으므로, 첫 번째 SQL 프롬프트에서 입력한 SQL 문장과 동일한 문장이 다시 실행된다. 따라서 실행 결과 ①과 실행 결과 ②는 동일한 결과를 출력한다.

다음은 앞에서 보인 SQL 문장을 슬래시(/)를 이용하여 실행하는 예이다. 이때 SQL 문장의 맨 마지막에 세미콜론(;)을 입력하지 않는다.

SQL> SELECT ENAME, SALARY, ADDR
    FROM EMP
    -- this is a comment.
    WHERE DEPTNO = 5
    /
......실행 결과......
SQL>

1.4.3. 기타 기능

본 절에서는 tbSQL 유틸리티의 기본 기능 중에서 주로 사용되는 주석의 삽입, 자동 커밋, 운영체제 명령어 실행, 출력 내용을 저장하는 기능에 대하여 차례로 설명한다.

주석 삽입

주석은 다음의 두 가지 방법으로 삽입할 수 있다.

  • /* … */를 이용

    /* … */를 이용하는 방법은 C나 C++ 프로그래밍 언어에서 사용하는 방법과 동일하다. tbSQL 유틸리티에서는 /*와 */로 둘러싸인 부분은 주석으로 인식하여 처리하지 않는다.

    이 주석은 중첩하여 사용할 수 없다. 즉, /* …… */ 주석 내에 또 다른 /* …… */ 주석이 포함될 수 없다.

  • 두 개의 마이너스 부호(--)를 이용

    두 개의 마이너스 부호(--)를 이용하면, 각 라인에서 두 개의 마이너스 부호(--) 다음부터 라인의 마지막까지를 주석으로 인식하여 무시된다.

    이 주석은 /* …… */를 이용하는 방법과 마찬가지로 어떤 위치에도 올 수 있으나, PSM 프로그램 입력을 종료하기 위한 마침표(.)와는 같은 라인에 올 수 없다.

    따라서, 다음과 같이 작성된 스크립트 파일은 실행 중에 에러를 발생한다.

    (PSM 프로그램)
    .-- 잘못된 주석 
    RUN

자동 커밋

SQL 문장으로 갱신된 내용은 트랜잭션이 커밋되기 전에는 데이터베이스에 영구적으로 반영되지 않는다. 하나의 트랜잭션은 대개 여러 개의 SQL 문장으로 이루어지며, SQL 문장으로 갱신된 내용은 데이터베이스에 바로 반영되지 않는다.

tbSQL 유틸리티에서는 SQL 문장이 실행될 때마다 COMMIT 문장을 자동으로 실행하도록 설정하거나 이 기능을 정지시킬 수 있다. 디폴트는 자동 커밋을 사용하지 않는 것이다.

SET AUTOCOMMIT 명령어로 이러한 설정을 할 수 있으며, 현재의 자동 커밋 설정을 출력하여 확인하려면 SHOW AUTOCOMMIT 명령어를 이용한다.

운영체제 명령어 실행

tbSQL 유틸리티를 시작한 상태에서 운영체제 명령어를 실행하려면 HOST 명령어를 입력한다.

다음은 확장자가 .sql인 모든 스크립트 파일을 나열하는 예이다. HOST 명령어 대신에 ! 명령어를 사용해도 같은 동작을 수행한다.

SQL> HOST dir *.sql
..... 운영체제 명령어 실행 결과 .....
SQL>

운영체제 명령어를 실행한 후에는 다시 tbSQL 유틸리티의 프롬프트가 나타나며, 계속하여 tbSQL 유틸리티의 명령어를 입력할 수 있다.

HOST 명령어나 ! 명령어 다음 문장을 생략할 경우 운영체제 명령 프롬프트가 출력된다. 다시 tbSQL 유틸리티로 돌아오기 위해서는 EXIT를 입력한다.

SQL> !
$ dir *.sql
..... 운영체제 명령어 실행 결과 .....
$ EXIT
SQL>

출력 내용 저장

tbSQL 유틸리티에서 입력하거나 출력한 모든 내용을 텍스트 파일로 저장하려면 SPOOL 명령어를 사용한다. SPOOL 명령어를 사용하면, 사용자가 입력한 SQL 문장이나 PSM 프로그램, tbSQL 유틸리티의 명령어는 물론, 질의 결과 및 프로그램 실행 결과, tbSQL 유틸리티 프롬프트까지도 파일에 저장된다.

SPOOL 명령어를 실행하면 바로 다음 라인부터 파일에 저장된다. 이 기능을 정지하려면 SPOOL OFF를 입력한다. SPOOL OFF를 입력하면 그 다음 라인부터는 파일에 저장되지 않는다.

다음은 SPOOL 명령어를 사용하는 예이다. 만약 SPOOL 명령에서 사용되는 save.txt 파일이 이미 존재한다면 이전 파일 위에 덮어 쓰게 되므로 이전의 내용은 사라진다.

SQL> SPOOL save.txt
Spooling is started.
SQL> SELECT
    *
    FROM DUAL;

DUMMY
-----
X

1 row selected.

SQL> SPOOL OFF
Spooling is stopped: save.txt

다음은 앞의 예에서 save.txt 파일에 저장된 내용이다.

SQL> SELECT
    *
    FROM DUAL;

DUMMY
-----
X

1 row selected.

SQL> SPOOL OFF

사용자가 입력한 SQL 문장, 질의 결과, 마지막의 SPOOL OFF 명령까지도 파일에 저장되어 있다.

1.5. 고급 기능

본 절에서는 tbSQL 유틸리티의 기본 기능에 비하여 좀 더 고급 사용자가 사용하는 기능으로 스크립트를 이용한 일괄 작업 실행과 Tibero 시스템을 관리하는 DBA를 위한 기능에 대하여 설명한다.

1.5.1. 스크립트 기능

스크립트란 한 번의 명령으로 일괄적으로 작업을 실행하기 위한 SQL 문장과 PSM 프로그램, tbSQL 유틸리티의 명령어의 모임이다. tbSQL 유틸리티에서 스크립트를 실행하면 그 안에 포함된 모든 명령어가 차례로 실행된다.

스크립트 생성

스크립트 파일은 외부에서 생성, 편집하여 tbSQL 유틸리티 내에서 실행할 수도 있고, tbSQL 유틸리티를 실행한 후에 외부 편집기를 호출하여 생성, 편집할 수도 있다. 외부 편집기를 호출할 경우 어떤 편집기를 이용할 것인지 설정할 수 있다.

다음은 외부 편집기로 vi를 이용하는 예이다.

$ export TB_EDITOR=vi

외부 편집기를 이용하여 특정 스크립트 파일을 편집하기 위해서는 EDIT 명령어를 사용한다. EDIT 명령어와 함께 파일명을 제시해야 하며, 확장자가 SUFFIX 시스템 변수와 같은 경우에는 생략할 수 있다.

다음은 스크립트 파일 run.sql을 편집하기 위하여 외부 편집기를 호출하는 예이다.

SQL> EDIT run

다음은 스크립트 파일 내에 SQL 문장, PSM 프로그램, tbSQL 유틸리티의 명령어를 입력하는 방법이다.

  • 일반적인 입력 방법

    tbSQL 유틸리티의 명령 프롬프트에서 입력하는 방법과 거의 동일하며, 여러 라인에 걸쳐서 입력할 수 있다.

  • SQL 문장과 PSM 프로그램의 종료

    SQL 문장은 반드시 항상 세미콜론(;)을 문장 끝에 입력해야 하며, PSM 프로그램은 마지막 라인을 마침표(.)만으로 마쳐야 한다.

  • 주석의 삽입

    스크립트 파일 내에 주석을 삽입할 수 있다.

스크립트를 실행하면 SQL 문장은 바로 실행되며, PSM 프로그램은 RUN 또는 / 명령어를 입력하여 실행한다.

다음은 테이블 EMP에 대한 몇 가지 작업을 수행하는 스크립트 파일의 예이다. 라인 사이에 공백이 들어갈 수 있다.

-- SQL 문장
SELECT ENAME, SALARY, ADDR FROM EMP
    WHERE DEPTNO = 5;
UPDATE EMP SET SALARY = SALARY * 1.05
    WHERE DEPTNO = 5;

-- PSM 프로그램
DECLARE
    deptno NUMBER(2);
BEGIN
    deptno := 20;
    UPDATE EMP SET SALARY = SALARY * 1.05
    WHERE DEPTNO = deptno;
END;

RUN -- PSM 프로그램 실행
/* 최종으로 갱신된 내용을 반영한다. */
COMMIT;

스크립트 실행

스크립트 파일을 실행하려면 START 또는 @ 명령어를 사용한다. 명령어와 함께 파일명을 지정하며 확장자가 SUFFIX 시스템 변수(sql)와 동일한 경우에는 생략해도 무방하다.

다음의 두 라인은 스크립트 파일 run.sql을 실행하는 예이며 결과는 동일하다.

SQL> START run
SQL> @run

스크립트 파일 내에서 하나 이상의 다른 스크립트 파일을 실행할 수도 있다. 즉, 스크립트 파일 내에 START 또는 @ 명령어를 포함할 수 있다. 스크립트 파일을 재귀적으로 실행할 때 무한 루프에 빠지지 않도록 해야 한다. tbSQL 유틸리티를 시작할 때 @ 명령어를 사용하면 시작과 동시에 스크립트 파일을 실행할 수 있다. 이러한 방법은 운영체제에서 배치 프로그램을 실행할 때 필요하다.

다음은 tbSQL 유틸리티를 시작하면서 동시에 스크립트 파일 run.sql을 실행하는 예이다.

$ tbsql dbuser/dbuserpassword @run

또는 다음과 같이 셸의 리다이렉션 명령을 이용하여 스크립트를 실행시키는 것도 가능하다.

$ tbsql dbuser/dbuserpassword < run.sql

1.5.2. DBA를 위한 기능

tbSQL 유틸리티로 DBA 기능을 수행할 수 있다. tbSQL 유틸리티로 DBA 기능을 수행하려면 먼저 DBA 권한을 가진 사용자로 Tibero에 로그인 한다.

다음은 DBA 권한을 가지고 있는 SYS 사용자로 로그인을 하는 예이다.

$ tbsql sys/syspassword

tbSQL 유틸리티를 시작한 후에도 DBA로 연결할 수 있다. 이때 CONNECT 명령어를 사용하며 앞에서와 마찬가지로 DBA 권한을 가진 사용자로 연결하면 된다.

다음은 CONNECT 명령어를 이용하여 DBA로 연결하는 예이다.

SQL> CONNECT sys/syspassword

다음은 DBA가 tbSQL 유틸리티로 수행할 수 있는 기능이다.

  • Tibero의 종료

    DBA 권한을 가진 사용자는 tbSQL 명령어인 TBDOWN으로 Tibero를 종료한다.

1.5.3. 사용자 접근 제어 기능

tbSQL 유틸리티는 특정 사용자가 수행하는 명령어를 제한할 수 있는 기능을 제공한다.

이 기능을 위해 tbSQL 유틸리티는 SYS 사용자에 생성된 CLIENT_ACCESS_POLICY 테이블을 참조하며, 이 테이블은 DBA로 하여금 특정 사용자가 수행하는 명령어에 대한 접근 정책을 정의할 수 있게 한다.

tbSQL 유틸리티는 사용자가 데이터베이스에 접속할 때 해당 테이블에 있는 정보를 로딩하고, 사용자가 명령어를 수행할 때마다 권한 체크를 통해 수행 가능 여부를 판단한다. 한번 로딩된 정보는 사용자가 접속을 종료할 때 해제된다.

참고

SYS 사용자로 접속할 경우엔 권한 체크를 수행하지 않는다.

접근 제어 테이블 생성

접근 제어 테이블은 SYS 사용자로 접속하여 $TB_HOME/scripts/client_policy.sql 파일을 실행시켜 생성한다.

참고

만약 테이블이 존재하지 않거나 제대로 생성되지 않은 경우엔 권한 체크를 하지 않는다.

CLIENT_ACCESS_POLICY 테이블의 세부 내용은 다음과 같다.

CLIENT  VARCHAR2(32)   NOT NULL
USERID  VARCHAR2(128)
ACTION  VARCHAR2(256)
POLICY  VARCHAR2(64)
항목설명
CLIENT

클라이언트 프로그램 이름이다.

대소문자를 구분하며, tbSQL을 사용한다.

USERID

제한할 사용자 이름이다.

다음과 같이 사용할 수 있으며 와일드 카드(%)를 허용한다.

  • TIBERO
  • T% (T로 시작하는 모든 사용자)
  • % (모든 사용자)
ACTION제한할 명령어다.
POLICY

제한 정책이다.

DISABLED를 사용한다.

명령어 제한 설정

tbSQL 명령어나 SQL, PSM 명령어를 제한하기 위해선 다음 예제와 같이 CLIENT_ACCESS_POLICY 테이블에 로우를 삽입한다. 만약 다시 명령어를 허용하기 위해선 해당 로우를 삭제한다.

CLIENT   USERID       ACTION            POLICY
-------- ------------ ----------------  ----------
tbSQL    TIBERO       HOST              DISABLED
tbSQL    %            INSERT            DISABLED 
tbSQL    PUBLIC       UPDATE            DISABLED

다음은 제한할 수 있는 명령어 목록이다.

  • tbSQL 명령어

    ACCEPT           APPEND           ARCHIVE           CHANGE
    CLEAR            COLUMN           CONNECT           DEFINE
    DEL              DESCRIBE         DISCONNECT        EDIT
    EXECUTE          EXIT             EXPORT            HELP (?)
    HISTORY          HOST (!)         INPUT             LIST
    LOADFILE         LOOP             LS                PASSWORD
    PAUSE            PING             PRINT             PROMPT
    QUIT             REMARK           RESTORE           RUN
    SAVE             SET              SHOW              SPOOL
    START (@, @@)    TBDOWN           UNDEFINE          VARIABLE
    WHENEVER 
  • SQL 명령어

    ALTER             ANALYZE          AUDIT             CALL
    COMMENT           COMMIT           CREATE            DELETE
    DROP              EXPLAIN          FLASHBACK         GRANT
    INSERT            LOCK             MERGE             NOAUDIT
    PURGE             RENAME           REVOKE            ROLLBACK
    SAVEPOINT         SELECT           SET CONSTRAINTS   SET ROLE
    SET TRANSACTION   TRUNCATE         UPDATE 
  • PSM 명령어

    BEGIN              DECLARE 

다음은 사용자 접근 제어 기능을 사용한 예제이다.

..... SYS 사용자로 접속 .....
SQL> CONNECT SYS
..... 접근 제어 설정 .....
SQL> INSERT INTO CLIENT_ACCESS_POLICY VALUES ('tbSQL', 'TIBERO', 'SELECT', 'DISABLED'); 
..... TIBERO 사용자로 접속 .....
SQL> CONNECT TIBERO
SQL> SELECT * FROM DUAL;
TBS-70082: The 'SELECT' command has been disabled.

1.5.4. 접속 정보 암호화 기능

tbSQL 유틸리티는 데이터베이스 접속 정보(connect_string)를 암호화 파일(wallet)로 저장하고 사용하는 기능을 제공한다. 환경변수인 ISQL_WALLET_PATH에 지정한 경로의 파일에 tbSQL 유틸리티에서 접속한 데이터베이스의 정보를 암호화 파일로 만들거나 다음 접속 시 사용할 수 있다.

암호화 파일 생성

tbSQL 유틸리티를 이용해서 특정 데이터베이스에 접속한 후 SAVE CREDENTIAL 명령어를 통해서 암호화 파일을 생성할 수 있다.

다음은 ISQL_WALLET_PATH의 값을 현재 경로의 wallet.dat 파일로 설정한 후 접속한 데이터베이스 정보를 암호화하여 생성하는 예이다.

$ export ISQL_WALLET_PATH=./wallet.dat
$ tbsql

tbSQL 6

TmaxData Corporation Copyright (c) 2008-. All rights reserved.

Can't login with the wallet file.
Login the database and SAVE CREDENTIAL again.

Enter Username: dbuser
Enter Password: dbuserpassword
Connected to Tibero.

SQL> SAVE CREDENTIAL
Complete to generate the wallet file.

tbSQL 유틸리티를 실행하기에 앞서 ISQL_WALLET_PATH 환경변수를 설정했기 때문에 ./wallet.dat 파일의 내용을 복호화하려고 시도하지만 해당 파일이 존재하지 않을 경우 위와 같은 에러가 발생한다.

데이터베이스에 정상적으로 다시 접속 후 SAVE CREDENTIAL 명령어를 통해서 ./wallet.dat 파일이 생성된다.

다음은 ISQL_WALLET_PATH 환경변수 설정없이 현재 경로의 wallet.dat 파일에 접속한 데이터베이스 정보를 암호화하여 생성하는 예이다.

$ tbsql

tbSQL 6

TmaxData Corporation Copyright (c) 2008-. All rights reserved.

SQL> CONN dbuser/dbuserpassword
Connected to Tibero.

SQL> SAVE CREDENTIAL "./wallet.dat"
Complete to generate the wallet file.

SAVE CREDENTIAL의 파라미터로 ./wallet.dat 파일 경로를 주면, 데이터베이스 접속한 정보를 암호화하여 ./wallet.dat 파일을 생성한다.

암호화 파일 사용

tbSQL 유틸리티 실행 전 환경변수 ISQL_WALLET_PATH의 값으로 위에서 생성한 암호화 파일(wallet)을 지정하면 암호화 파일 생성 전 접속한 정보를 다시 이용할 수 있다.

다음은 ISQL_WALLET_PATH의 값의 파일을 사용해서 데이터베이스에 접속하는 예이다.

$ tbsql

tbSQL 6

TmaxData Corporation Copyright (c) 2008-. All rights reserved.

Connected to Tibero.

참고

암호화 파일을 사용하기 위해서는 반드시 환경변수 ISQL_WALLET_PATH를 설정해야 한다.

암호화된 파일은 암호화 파일을 생성한 tbSQL 유틸리티에서만 사용이 가능하다. 해당 파일을 다른 tbSQL 유틸리티에서 사용하고 싶다면 위 과정을 통해서 암호화 파일을 다시 생성해야만 한다.

Windows 환경에서는 위의 암호화 파일 생성 및 사용 기능은 사용할 수 없다.

1.6. 명령어

본 절에서는 tbSQL 유틸리티가 제공하는 명령어를 자세히 설명한다.

다음은 tbSQL 유틸리티의 명령어를 표현하는 문법의 예이다.

COM[MAND] param {choice1|choice2} [option] [arg]*

위의 예를 기준으로 tbSQL 유틸리티에서 사용하는 명령어의 문법을 해석하는 방법은 다음과 같다.

항목설명
대괄호([ ])

대괄호([ ])에 포함된 내용은 입력하지 않아도 명령어를 실행할 수 있다.

위의 예에서 COMMAND 명령어의 뒷부분(MAND)과 option, arg는 명령 프롬프트에 포함되지 않을 수 있다.

중괄호({ })

중괄호({ })에 포함된 내용은 반드시 입력해야 명령어를 실행할 수 있다.

위의 예에서 choice1과 choice2는 중괄호({ }) 내에 있고 버티컬 바(|)로 분리되어 있으므로 둘 중 하나는 명령 프롬프트에 포함되어야 한다.

버티컬 바(|)버티컬 바(|)로 분리된 내용은 그 중 하나를 선택한다.
애스터리스크(*)

애스터리스크(*)로 표시된 내용은 포함되지 않을 수도 있고, 여러 번 포함될 수도 있다.

위의 예에서 arg는 대괄호([ ]) 바로 뒤에 애스터리스크(*)가 있으므로 포함되지 않을 수도 있고, 한 번 이상 여러 번 포함될 수도 있다.

이탤릭체이탤릭체로 표시된 내용은 명령어에 따라 적절한 문자열로 대체되어야 한다.
대소문자명령어는 대소문자를 구분하지 않는다.

다음에 나열된 세 개의 명령어는 위의 명령어 문법 표현에 따라 모두 유효하다.

COMMAND param choice1
COM param choice1 option
COM param choice2 arg1 arg2 arg3

tbSQL 유틸리티의 명령어에는 SQL 문장의 수행 또는 데이터베이스 관리에 필요한 명령어가 포함되어 있다. 각 명령어를 알파벳 순으로 나열하고, 문법(syntax), 파라미터, 예제의 순서로 설명한다.

tbSQL 유틸리티에서 사용할 수 있는 명령어는 다음과 같다.

명령어설명
!

운영체제의 명령어를 실행하는 명령어이다.

HOST 명령어와 동일하다.

%히스토리 버퍼에 저장된 명령어를 재수행하는 명령어이다.
@, @@

스크립트를 실행하는 명령어이다.

START 명령어와 동일하다.

/

현재 SQL 버퍼 내의 SQL 문장 또는 PSM 프로그램을 실행하는 명령어이다.

RUN 명령어와 동일하다.

ACCEPT사용자의 입력을 받아 치환 변수의 값을 설정하는 명령어이다.
APPENDSQL 버퍼에 특정 텍스트 혹은 statement를 덧붙이는 명령어이다.
ARCHIVE LOGRedo 로그 파일 정보를 출력하는 명령어이다.
CHANGESQL 버퍼의 현재 라인에서 패턴 문자를 찾아 주어진 문자로 변환하는 명령어이다.
CLEAR설정된 옵션을 초기화하거나 지우는 명령어이다.
COLUMN컬럼의 출력 속성을 설정하는 명령어이다.
CONNECT특정 사용자 ID로 데이터베이스에 접속하는 명령어이다.
DEFINE치환 변수를 정의하거나 출력하는 명령어이다.
DELSQL 버퍼에 저장된 라인을 지우는 명령어이다.
DESCRIBE지정된 객체의 컬럼 정보를 출력하는 명령어이다.
DISCONNECT현재 데이터베이스로부터 접속을 해제하는 명령어이다.
EDIT특정 파일 또는 SQL 버퍼의 내용을 외부 편집기를 이용하여 편집하는 명령어이다.
EXECUTE단일 PSM 문장을 수행하는 명령어이다.
EXIT

tbSQL 유틸리티를 종료하는 명령어이다.

QUIT 명령어와 동일하다.

EXPORTSELECT 문장의 수행 결과나 테이블 데이터를 파일로 출력하는 명령어이다.
HELP도움말을 출력하는 명령어이다.
HISTORY실행한 명령어의 히스토리를 출력하는 명령어이다.
HOST

운영체제 명령어를 실행하는 명령어이다.

! 명령어와 동일하다.

INPUTSQL 버퍼의 현재 라인 뒤에 새로운 라인을 추가하는 명령어이다.
LISTSQL 버퍼 내의 특정 내용을 출력하는 명령어이다.
LOADFILETibero의 테이블을 Oracle의 SQL*Loader 툴이 인식할 수 있는 형식으로 저장하는 명령어이다.
LOOP단일 명령어를 무한 반복 수행하는 명령어이다.
LS현재 사용자가 생성한 데이터베이스 객체를 출력하는 명령어이다.
PASSWORD사용자 패스워드를 변경하기 위한 명령어이다.
PAUSE사용자가 <Enter> 키를 누를 때까지 실행을 멈추는 명령어이다.
PING특정 데이터베이스에 대해 접속가능한 상태인지를 출력하는 명령어이다.
PRINT사용자가 정의한 바인드 변수의 값을 출력하는 명령어이다.
PROMPT사용자가 정의한 SQL 문장이나 빈 라인을 그대로 화면에 출력하는 명령어이다.
QUIT

tbSQL 유틸리티를 종료하는 명령어이다.

EXIT 명령어와 동일하다.

RESTORE선택한 정보를 파일로부터 복원하는 명령어이다.
RUN

현재 SQL 버퍼 내의 SQL 문장이나 PSM 프로그램을 실행하는 명령어이다.

/ 명령어와 동일하다.

SAVE선택한 정보를 파일에 저장하는 명령어이다.
SETtbSQL 유틸리티의 시스템 변수를 설정하는 명령어이다.
SHOWtbSQL 유틸리티의 시스템 변수를 출력하는 명령어이다.
SPOOL화면에 출력되는 내용을 모두 외부 파일에 저장하는 과정을 시작하거나 종료하는 명령어이다.
START

스크립트 파일을 실행하는 명령어이다.

@ 명령어와 동일하다.

TBDOWNTibero를 종료하는 명령어이다.
UNDEFINE하나 이상의 치환 변수를 삭제하는 명령어이다.
VARIABLE사용자가 정의한 바인드 변수를 선언하는 명령어이다.
WHENEVER에러가 발생한 경우의 동작을 정의하는 명령어이다.

1.6.1. !

tbSQL 유틸리티 내에서 운영체제의 명령어를 실행한다. ! 명령어 대신에 HOST 명령어를 사용할 수 있다.

! 명령어의 세부 내용은 다음과 같다.

  • 문법

    ! [command]
    옵션설명
     

    운영체제의 명령어 없이 ! 명령어만 입력하면 운영체제의 명령 프롬프트로 나가서 운영체제의 명령어를 여러 번 입력할 수 있다.

    이때 다시 tbSQL 유틸리티로 돌아오려면 EXIT 명령어를 입력한다.

    command운영체제의 명령어이다.
  • 예제

    SQL> ! dir *.sql
    SQL> !

1.6.2. %

tbSQL 유틸리티 내에서 히스토리 버퍼에 저장된 명령어를 다시 입력할 필요없이 재수행한다.

% 명령어의 세부 내용은 다음과 같다.

  • 문법

    % number
    옵션설명
    number히스토리 버퍼에 저장된 명령어 번호이다.
  • 예제

    SQL> history
      1: set serveroutput on
      2: set pagesize 40
      3: select 1 from dual;
    SQL> %3
    
              1
    -----------
              1
    
    1 row selected.
    

1.6.3. @, @@

스크립트 파일을 실행한다. 스크립트 파일이 SUFFIX 시스템 변수에 등록된 확장자를 가지면 스크립트 파일의 이름을 확장자 없이 지정할 수 있다. tbSQL 유틸리티는 지정된 스크립트 파일을 현재 디렉터리 내에서 찾는다.

스크립트 파일의 실행 전에 SET 명령어로 설정된 시스템 변수는 스크립트 파일을 실행하는 중에도 유효하다. 스크립트 파일 내에서 EXIT 또는 QUIT 명령어를 실행하면 tbSQL 유틸리티를 종료한다.

@ 명령어 대신에 START 명령어를 사용할 수 있다.

@ 명령어의 세부 내용은 다음과 같다.

  • 문법

    @ {filename}
    항목설명
    filename스크립트 파일의 이름이다.
  • 예제

    SQL> @ run
    SQL> @ run.sql

1.6.4. /

현재 SQL 버퍼 내의 SQL 문장 또는 PSM 프로그램을 실행한다.

/ 명령어 대신에 RUN 명령어를 사용할 수 있다.

/ 명령어의 세부 내용은 다음과 같다.

  • 문법

    /
  • 예제

    SQL> SELECT * FROM DUAL;
    ..... SQL문장 실행 결과 .....
    SQL> /
    ..... 위와 동일한 결과 .....

1.6.5. ACCEPT

사용자의 입력을 받아 치환 변수의 값을 설정한다. 이때 설정된 치환 변수의 값은 이후에 사용자가 입력하는 SQL 문장이나 PSM 프로그램에서 &variable과 일치하는 단어가 있을 경우 자동으로 치환된다.

ACCEPT 명령어의 세부 내용은 다음과 같다.

  • 문법

    ACC[EPT] variable [FOR[MAT] format] [DEF[AULT] default] 
    [PROMPT statement|NOPR[OMPT]]
    • 입력 항목

      항목설명
      variable저장할 치환 변수의 이름이다. 만약 존재하지 않을 경우 새로 생성한다.
    • 옵션

      옵션설명
      FOR[MAT] format치환 변수의 포맷이다. 만약 치환 변수의 값과 포맷이 일치하지 않을 경우 에러가 발생한다.
      DEF[AULT] default사용자로부터 입력값이 없을 경우 대신 사용할 치환 변수 값이다.
      PROMPT statement사용자로부터 치환 변수의 값을 입력 받기 전에 프롬프트를 화면에 출력한다.
      NOPR[OMPT]프롬프트를 출력하지 않고 사용자의 입력을 기다린다.
  • 예제

    SQL> ACCEPT name PROMPT 'Enter name : '
    Enter name : 'John'
    SQL> SELECT &name FROM DUAL;
    At line 1, column 8
    old value : SELECT &name FROM DUAL
    new value : SELECT 'John' FROM DUAL
    
    'JOHN'
    ------
    John
    
    1 row selected.
    
    SQL>

1.6.6. APPEND

SQL 버퍼에 사용자가 입력한 텍스트 혹은 statement를 덧붙인다.

APPEND 명령어의 세부 내용은 다음과 같다.

  • 문법

    A[PPEND] statement
    • 입력 항목

      항목설명
      statementSQL 버퍼에 덧붙일 텍스트를 의미한다.
  • 예제

    SQL> LIST 2
    ..... 두 번째 라인을 선택한다. .....
    SQL> APPEND text
    ..... 두 번째 라인에 text를 추가한다. .....
                

1.6.7. ARCHIVE LOG

Redo 로그 파일 정보를 출력한다.

ARCHIVE LOG 명령어의 세부 내용은 다음과 같다.

  • 문법

    ARCHIVE LOG LIST
  • 예제

    SQL> ARCHIVE LOG LIST
    
    NAME                            VALUE
    ------------------------------- ------------------------------------------------
    Database log mode               Archive Mode
    Archive destination             /home/tibero/database/tibero/archive
    Oldest online log sequence      300
    Next log sequence to archive    302
    Current log sequence            302
    
    SQL>

1.6.8. CHANGE

SQL 버퍼에 있는 문장의 현재 라인에서 첫 번째 old 패턴을 찾아 new 패턴으로 변환한다. 일반적으로 마지막으로 실행된 SQL 문장의 현재 라인은 가장 마지막 라인이다. 현재 라인을 변경하려면 예제를 참고한다.

CHANGE 명령어의 세부 내용은 다음과 같다.

  • 문법

    C[HANGE] delim old [delim [new [delim [option]]]]
    • 입력 항목

      항목설명
      delim

      숫자를 제외한 구분자이다.

      반드시 old나 new 패턴에 없는 문자를 사용해야 한다.

      old

      바꾸려고 하는 패턴이다.

      대소문자를 구분하지 않는다. 이때 사용되는 단어는 일반적인 단어(예: dual, ksc911 등) 외에도 임의의 패턴을 나타내는 '...'을 사용할 수 있다.

      사용방법은 예제를 참조한다.

    • 옵션

      다음은 CHANGE 명령어의 옵션에 대한 설명이다.

      옵션설명
      delim

      숫자를 제외한 구분자이다.

      반드시 old나 new 패턴에 없는 문자를 사용해야 한다.

      new새로 치환할 패턴이다.
      option
      • g: 현재 라인에서 전체 패턴을 바꾼다.

      • c: 현재 라인에서 사용자의 선택에 따라 바꾼다.

      • a: 전체 문장에서 전체 패턴을 바꾼다.

  • 예제

    현재 라인은 디폴트로 항상 마지막 라인을 가리키므로 두 번째 라인에 있는 DUAL이 T로 변환된다.

    SQL> SELECT *
        FROM DUAL;
    ..... SQL 실행결과 .....
    SQL> C/DUAL/T
        FROM T
    SQL>

    현재 라인을 바꾸기 위해서는 원하는 라인 번호를 입력한다.

    SQL> 5
        5 WHERE ROWNUM < 5 AND

    임의의 패턴을 나타내기 위해서 '...'을 사용할 수 있다. 이때 '...'은 앞, 뒤, 가운데에 올 수 있다.

    SQL> CHANGE /RE...AND/RE ROWNUM >= 5 AND/
        5 WHERE ROWNUM >= 5 AND
    SQL> CHANGE /...AND/WHERE ROWNUM < 3/
        5 WEHRE ROWNUM < 3
    SQL> CHANGE /WHE.../WHERE ROWNUM < 5 AND/
        5 WHERE ROWNUM < 5 AND

    a 옵션을 지정할 경우 전체 문장에서 주어진 패턴을 찾아 전부 바꾼다. 따라서 첫 번째 라인에 있는 '*'가 문자열로 변환된다.

    SQL> SELECT *
        FROM DUAL;
    ..... SQL 실행결과 .....
    SQL> C/*/'replaced'/a
        SELECT 'replaced'
        FROM DUAL;
    SQL>

1.6.9. CLEAR

설정된 옵션을 초기화하거나 지운다.

CLEAR 명령어의 세부 내용은 다음과 같다.

  • 문법

    CL[EAR] [option]
    • 옵션

      옵션설명
      BUFF[ER]SQL 버퍼에 있는 모든 내용을 삭제한다.
      SCR[EEN]화면에 있는 모든 내용을 삭제한다.
      COL[UMNS]등록된 모든 컬럼의 출력 속성을 초기화한다.
  • 예제

    SQL> CLEAR BUFFER
    SQL buffer is cleared
    SQL> CLEAR SCREEN
    SQL> CLEAR COLUMNS

1.6.10. COLUMN

컬럼의 출력 속성을 지정한다. 컬럼의 이름만 명시했을 경우에는 해당 컬럼의 속성을 출력하고, 컬럼의 이름을 명시하지 않을 경우에는 등록된 모든 컬럼을 출력한다.

COLUMN 명령어의 세부 내용은 다음과 같다.

  • 문법

    COL[UMN] [name [option]]
    • 입력 항목

      항목설명
      name속성을 지정할 컬럼 이름이다.
    • 옵션

      항목설명
      CLE[AR]컬럼의 출력 속성을 초기화한다.
      FOR[MAT] text컬럼의 포맷을 지정한다. 자세한 내용은 “1.7. 컬럼 포맷”을 참고한다.
      HEA[DING] text컬럼의 머리글을 설정한다.
      NEW_V[ALUE] variable컬럼값을 저장할 변수를 설정한다.
      WRA[PPED]컬럼 데이터의 길이가 너무 길 경우 초과되는 데이터를 두 라인으로 나눈다.
      TRU[NCATED]컬럼 데이터의 길이가 너무 길 경우 초과되는 데이터를 자른다.
      ON컬럼의 출력 속성을 켠다.
      OFF컬럼의 출력 속성을 끈다.
  • 예제

    SQL> COLUMN
    SQL> COLUMN empno
    SQL> COLUMN empno CLEAR
    SQL> COLUMN empno FORMAT 999,999
    SQL> COLUMN ename FORMAT A10
    SQL> COLUMN sal HEADING the salary of this month
    SQL> COLUMN sal OFF
    SQL> COLUMN job WRAPPED
    SQL> COLUMN job TRUNCATED

1.6.11. CONNECT

다른 사용자로 Tibero 데이터베이스에 접속한다. 만약 사용자의 이름 또는 패스워드를 입력하지 않은 경우에는 tbSQL 유틸리티에서 프롬프트를 출력하고 입력을 요구한다.

CONNECT 명령어를 실행하면 이전에 실행되던 트랜잭션을 커밋시키고, 이전 접속을 해제하고 나서 새로운 접속을 시도한다. 만약 새로운 접속이 실패하더라도 이전의 접속을 복구하지 않는다.

CONNECT 명령어의 세부 내용은 다음과 같다.

  • 문법

    CONN[ECT] {username[/password[@connect_identifier]]}
    • 입력 항목

      항목설명
      username사용자의 이름이다.
    • 옵션

      다음은 CONNECT 명령어에 지정할 수 있는 옵션에 대한 설명이다.

      옵션설명
      password사용자의 패스워드이다.
      connect_identifier

      데이터베이스에 접속하기 위한 접속 정보이다.

      $TB_HOME/client/config 디렉터리의 tbdsn.tbr 파일에서 지정할 수 있으며 HOST, PORT, DB_NAME 정보로 구성되어 있다. Windows에서는 데이터 원본(ODBC)에도 지정할 수 있으며 이를 가장 먼저 검색한다.

  • 예제

    SQL> CONNECT dbuser/dbuserpassword@db_id

1.6.12. DEFINE

치환 변수를 정의하거나 출력한다.

DEFINE 명령어의 세부 내용은 다음과 같다.

  • 문법

    DEF[INE] [variable]|[variable = value]
    항목설명
     치환 변수의 이름을 지정하지 않으면, 전체 치환 변수를 출력한다.
    variable지정한 치환 변수를 출력한다.
    variable = value정의할 치환 변수의 이름과 기본값이다.
  • 예제

    SQL> DEFINE NAME
    ..... NAME이라는 이름을 갖는 치환 변수를 화면에 출력한다. .....
    SQL> DEFINE NAME = 'SMITH'
    ..... NAME이라는 이름을 갖는 치환 변수와 SMITH라는 기본값을 정의한다. .....
    SQL> DEFINE
    ..... 전체 치환 변수를 화면에 출력한다. .....

1.6.13. DEL

SQL 버퍼에 설정된 라인을 지운다. 만약 라인 번호를 생략할 경우 전체 라인을 삭제한다.

DEL 명령어의 세부 내용은 다음과 같다.

  • 문법

    DEL [number|number number|number LAST|LAST]
    항목설명
    number지정된 번호의 라인을 삭제한다.
    number number첫 번째로 지정된 번호의 라인부터 두 번째로 지정된 번호의 라인까지 삭제한다.
    number LAST첫 번째로 지정된 번호의 라인부터 마지막 라인까지 삭제한다.
    LAST마지막 라인을 삭제한다.
  • 예제

    SQL> DEL 1
    ..... 첫 번째 라인을 삭제한다. .....
    SQL> DEL 1 3
    ..... 첫 번째부터 세 번째 라인까지 삭제한다. .....
    SQL> DEL 1 LAST
    ..... 첫 번째부터 마지막 라인까지 삭제한다. .....
    SQL> DEL LAST
    ..... 마지막 라인을 삭제한다. .....

1.6.14. DESCRIBE

지정된 객체의 컬럼 정보를 출력한다. 여기에서 객체는 테이블, 뷰, 동의어, 함수, 프러시저, 패키지가 될 수 있다.

  • 테이블, 뷰의 경우에는 컬럼 이름, 데이터 타입, 제약조건 및 인덱스 정보 등이 출력되며, 최대 길이, 정밀도, 스케일 등 데이터 타입에 따른 것도 포함한다.

  • 함수, 프러시저의 경우에는 파라미터의 정보(이름, 데이터 타입, IN/OUT)가 출력되며, 패키지의 경우에는 소속된 모든 함수 및 프러시저의 정보가 출력된다.

  • 다른 사용자가 소유한 객체의 컬럼 정보도 출력할 수 있다. 이때 소유자의 이름을 명시하며, 소유자 이름이 명시되어 있지 않으면 디폴트로 현재 사용자 소유의 객체에 해당된다.

DESCRIBE 명령어의 세부 내용은 다음과 같다.

  • 문법

    DESC[RIBE] [schema.]object_name[@dblink]
    항목설명
    schema대상 객체를 포함하는 스키마(또는 소유자)이다.
    object_name컬럼 정보를 출력할 객체이다.
    dblink대상 객체를 포함하는 데이터베이스 링크이다.
  • 예제

    SQL> DESCRIBE emp
    SQL> DESC scott.emp 
    SQL> DESC scott.emp@gateway

1.6.15. DISCONNECT

현재 데이터베이스로부터 접속을 종료한다. 진행 중이던 트랜잭션을 커밋하지만 tbSQL 유틸리티를 종료하지는 않는다.

스크립트 파일 내에서 CONNECT 명령어를 실행하고 그대로 종료한 경우 데이터베이스와 접속된 상태가 계속 유지된다. 따라서, 스크립트 파일 내에 CONNECT 명령어가 포함되고 있다면, 마지막에 DISCONNECT 명령어를 실행하는 것이 안전하다.

DISCONNECT 명령어의 세부 내용은 다음과 같다.

  • 문법

    DISCONN[ECT]

1.6.16. EDIT

특정 파일 또는 SQL 버퍼의 내용을 외부 편집기를 이용하여 편집한다. 어떤 외부 편집기를 사용할 것인지는 환경변수 $TB_EDITOR에서 설정할 수 있다.

$TB_EDITOR가 등록되지 않았다면 환경변수 $EDITOR를 참조하고, $EDITOR도 등록되지 않았다면 vi 편집기를 사용하여 편집한다. 이때 SQL 버퍼가 비어 있다면 에러를 반환한다.

편집할 파일의 확장자가 SUFFIX 시스템 변수로 지정된 디폴트 확장자이면 확장자 없이 파일의 이름을 지정할 수 있다. SUFFIX 시스템 변수의 기본값은 .sql이며, SET 명령어를 이용하여 변경할 수 있다. tbSQL 유틸리티는 현재 디렉터리에서 지정된 파일을 찾는다.

EDIT 명령어의 세부 내용은 다음과 같다.

  • 문법

    ED[IT] [filename]
    항목설명
     파일 이름을 지정하지 않고 EDIT 명령어를 실행하면 현재 SQL 버퍼에 저장되어 있는 내용을 편집하며 디폴트 파일인 .tbedit.sql를 사용한다. 기본 파일은 tbSQL 유틸리티가 종료될 때 자동으로 삭제된다.
    filename편집할 파일의 이름(대개 스크립트 파일의 이름)이다.
  • 예제

    SQL> EDIT run.sql
    SQL> EDIT run
    SQL> ED

1.6.17. EXECUTE

단일 PSM 문장을 수행한다. 사용할 수 있는 PSM 문장은 CALL 문장과 이름 없는 블록뿐이다. 사용자가 입력한 문장의 제일 끝에는 반드시 세미콜론(;)이 있어야 한다.

EXECUTE 명령어의 세부 내용은 다음과 같다.

  • 문법

    EXEC[UTE] {statement}
    항목설명
    statement단일 PSM 프로그램의 문장이다.
  • 예제

    SQL> EXECUTE begin dbms_output.put_line('success'); end;
    success
    
    PSM completed
    
    SQL> EXECUTE call proc1();

    또한 사용자가 정의한 바인드 변수에 값을 할당할 때에도 유용하게 사용할 수 있다.

    SQL> VAR x NUMBER;
    SQL> EXEC :x := 5;
    
    PSM completed
    
    SQL> 

1.6.18. EXIT

tbSQL 유틸리티를 종료한다. 현재 진행 중이던 모든 트랜잭션을 커밋하며 데이터베이스와의 모든 접속을 종료한다.

EXIT 명령어의 세부 내용은 다음과 같다.

  • 문법

    EXIT [SUCCESS|FAILURE|WARNING|n|variable|:variable] [COMMIT|ROLLBACK]
    항목설명
    SUCCESS정상 종료 코드 0을 반환한다.
    FAILURE실패 종료 코드 1을 반환한다.
    WARNING경고 종료 코드 2를 반환한다.
    n종료 코드로 사용할 정수형 숫자를 직접 지정할 수 있으며, 사용할 수 있는 값의 범위는 운영체제에 따라 다르다.
    variableDEFINE 명령으로 정의한 사용자 변수나 SQL.SQLCODE와 같은 시스템 변수의 값을 반환한다. 단, 사용한 변수는 숫자형이어야 한다.
    :variableVARIABLE 명령으로 정의한 바인드 변수를 이용하여 종료 코드를 지정할 수 있다. 단, 사용한 바인드 변수는 숫자형이어야 한다.
    COMMIT종료하기 전 COMMIT을 수행한다.
    ROLLBACK종료하기 전 ROLLBACK을 수행한다.

1.6.19. EXPORT

SELECT 문장의 수행 결과나 테이블 데이터를 파일로 출력한다. 고정형 포맷으로 출력하거나 각 컬럼과 로우 구분자를 지정하여 가변형 포맷으로 출력할 수 있다.

EXPORT 명령어의 세부 내용은 다음과 같다.

  • 문법

    EXP[ORT] {QUERY filename|TABLE [schema.]table} [variable_fmt|FIXED]
    
    variable_fmt:
      [FIELDS {TERM[INATED] BY {,|text}|ENCL[OSED] BY {"|text}}]
      [LINES TERM[INATED] BY {\n|text}]
    항목설명
    filename출력할 파일 이름이다.
    [schema.]table출력할 테이블 이름이다.
    FIELDS ...가변형 포맷 컬럼 구분자이다.
    LINES ...가변형 포맷 로우 구분자이다.
    FIXED고정형 포맷 지시자이다.
  • 예제

    SQL> EXPORT QUERY 't.csv'
    Ready to export to 't.csv'
    
    SQL> SELECT * FROM t;
    
    10 rows exported.
    

    가변형 포맷을 지정할 수 있다.

    SQL> EXPORT QUERY 't.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
    SQL> EXPORT QUERY 't.csv' FIEDLS ENCLOSED BY '*'
    

1.6.20. HELP

지정된 단어를 포함하는 모든 항목에 대한 도움말을 화면에 출력한다.

HELP 명령어의 세부 내용은 다음과 같다.

  • 문법

    H[ELP] [topic]
    항목설명
     옵션을 지정하지 않으면 tbSQL 유틸리티에서 사용할 수 있는 전체 명령어를 출력한다.
    topic도움말을 출력할 단어를 지정한다.
  • 예제

    SQL> HELP SET

1.6.21. HISTORY

히스토리 버퍼에 저장된 명령어를 화면에 출력한다.

HISTORY 명령어의 세부 내용은 다음과 같다.

  • 문법

    HIS[TORY]
  • 예제

    SQL> HISTORY
    ..... 전체 명령어를 출력한다. .....

1.6.22. HOST

! 명령어와 동일하다.

HOST 명령어의 세부 내용은 다음과 같다.

  • 문법

    HO[ST] [command]
    항목설명
     

    명령어 없이 HOST만 입력하면 운영체제의 명령 프롬프트로 나가서 운영체제 명령어를 여러 번 입력할 수 있다.

    이때 다시 tbSQL 유틸리티로 돌아오려면 EXIT를 입력한다.

    command운영체제의 명령어이다.

1.6.23. INPUT

SQL 버퍼에 저장된 제일 마지막 라인 뒤에 사용자가 입력한 문장을 추가한다.

INPUT 명령어의 세부 내용은 다음과 같다.

  • 문법

    I[NPUT] [statement]
    항목설명
     statement를 생략하면 여러 라인에 걸쳐 문장을 추가한다.
    statement추가할 SQL 문장이다.
  • 예제

    SQL> select * from dual;
    ..... 결과 출력 .....
    SQL> LIST
         select * from dual
    SQL> INPUT where rownum < 2
         select * from dual
         where rownum < 2
    SQL>

    다음은 statement 옵션을 생략한 것이다. 단, 위의 경우와 달리 입력이 끝남과 동시에 SQL 문장이 실행된다.

    SQL> select * from dual;
    ..... 결과 출력 ..... 
    SQL> INPUT
         select * from dual
         ... 여기에 입력하면 된다. ... 

1.6.24. LIST

SQL 버퍼 내의 특정 내용을 화면에 출력한다.

LIST 명령어의 세부 내용은 다음과 같다.

  • 문법

    L[IST] [number|number number|number LAST|LAST]
    항목설명
     라인의 번호를 생략할 경우 전체 라인을 출력한다.
    number지정된 번호의 라인을 출력한다.
    number number첫 번째로 지정된 번호부터 두 번째로 지정된 번호까지의 라인을 출력한다.
    number LAST지정된 번호의 라인부터 마지막 라인까지 출력한다.
    LAST마지막 라인을 출력한다.
  • 예제

    SQL> LIST 1
    ..... 첫 번째 라인을 출력한다. .....
    SQL> LIST 2 3
    ..... 두 번째부터 세 번째 라인까지 출력한다. .....
    SQL> LIST 2 LAST
    ..... 두 번째부터 마지막 라인까지 출력한다. ......
    SQL> LIST LAST
    ..... 마지막 라인을 출력한다. .....

1.6.25. LOADFILE

Tibero 테이블을 Oracle의 SQL*Loader가 인식할 수 있는 형식으로 저장한다.

LOADFILE 명령어의 세부 내용은 다음과 같다.

  • 문법

    LOAD[FILE] {filename}
    항목설명
    filename확장자를 제외한 파일의 이름이다.
  • 예제

    EMP라는 이름의 테이블을 Oracle의 SQL*Loader가 인식할 수 있는 파일로 저장하려면 다음과 같은 명령어를 입력한다. 이 명령을 수행하면 emp.ctl과 emp.dat라는 2개의 파일이 생성된다.

    SQL> LOADFILE emp
    SQL> select * from emp;

1.6.26. LOOP

임의의 문장을 무한 반복 수행하는 명령어이다. 수행을 종료하기 위해선 <Ctrl>+C를 누른다.

LOOP 명령어의 세부 내용은 다음과 같다.

  • 문법

    LOOP stmt
    항목설명
    stmt반복 수행할 문장이다.
  • 예제

    SQL> LOOP select count(*) from v$session
    ..... SQL을 1초 간격으로 반복 수행한다. .....
    SQL> SET INTERVAL 10
    SQL> LOOP ls
    ..... LS를 10초 간격으로 반복 수행한다. .....
    

1.6.27. LS

현재 사용자가 생성한 특정 타입이나 이름의 데이터베이스 객체의 정보를 출력한다.

LS 명령어의 세부 내용은 다음과 같다.

  • 문법

    LS [object_type|object_name]
    항목설명
     object_type이나 object_name을 생략하면 사용자가 소유한 모든 객체를 출력한다.
    object_type

    다음 중에 하나를 설정한다.

    • FUNCTION, INDEX, PACKAGE, PROCEDURE, SEQUENCE, SYNONYM, TABLE, TABLESPACE, TRIGGER, USER, VIEW

    object_name

    출력할 객체의 이름이다.

    임의의 패턴을 나타내는 퍼센트(%) 문자를 사용할 수 있다.

  • 예제

    SQL> LS
    NAME                           SUBNAME       OBJECT_TYPE
    ------------------------------ ------------- --------------------
    SYS_CON100                                   INDEX
    SYS_CON400                                   INDEX
    SYS_CON700                                   INDEX
    _DD_CCOL_IDX1                                INDEX
    ......중간 생략......
    UTL_RAW                                      PACKAGE
    DBMS_STATS                                   PACKGE BODY
    TB_HIDDEN2                         PACKGE BODY
    
    SQL>
    ..... 전체 객체를 출력한다. .....
    
    SQL> LS TABLESPACE
    TABLESPACE_NAME
    ------------------------------
    SYSTEM
    UNDO
    TEMP
    USR
    ..... 타입이 TABLESPACE인 모든 객체를 출력한다. .....
    
    SQL> LS USER
    USERNAME
    ------------------------------
    SYS
    ..... 현재 시스템에 접속하고 있는 사용자를 조회한다. .....

1.6.28. PASSWORD

사용자의 패스워드를 바꾸기 위한 명령어이다.

PASSWORD 명령어의 세부 내용은 다음과 같다.

  • 문법

    PASSW[ORD] [username]
    항목설명
    username패스워드를 변경할 사용자 이름이다. 이 값이 생략된 경우 현재 접속된 사용자의 패스워드를 변경한다.
  • 예제

    SQL> PASSWORD
    Changing password for 'TIBERO'
    
    Enter old password: ...기존 패스워드를 입력한다...
    Enter new password: ...새로운 패스워드를 입력한다...
    Confirm new password: ...확인을 위해 한번 더 입력한다...
    
    Password changed successfully.
    SQL>

1.6.29. PAUSE

사용자가 <Enter> 키를 누를 때까지 잠시 수행을 멈춘다. 메시지를 입력할 경우 해당 메시지를 화면에 나타낸다.

PAUSE 명령어의 세부 내용은 다음과 같다.

  • 문법

    PAU[SE] [message]
    항목설명
    message사용자가 <Enter> 키를 누를 때 화면에 보여줄 메시지이다.
  • 예제

    SQL> PAUSE please enter...
    please enter...
    ..... <Enter>키를 누른다. .....
    SQL>

1.6.30. PING

특정 데이터베이스에 대해 접속가능한 상태인지를 출력한다.

PING 명령어의 세부 내용은 다음과 같다.

  • 문법

    PING connect_identifier
    항목설명
    connect_identifier접속할 데이터베이스 이름이다.
  • 예제

    SQL> PING tibero6
    Server is alive.
    
    SQL>

1.6.31. PRINT

사용자가 정의한 바인드 변수의 이름과 값을 출력한다.

PRINT 명령어의 세부 내용은 다음과 같다.

  • 문법

    PRI[NT] [variable...]
    항목설명
     variable을 생략할 경우 모든 바인드 변수를 출력한다.
    variable출력할 바인드 변수 이름의 목록이다.
  • 예제

    SQL> VARIABLE x NUMBER
    SQL> EXECUTE :x := 5;
    SQL> PRINT x
    
             x
    ----------
             5
    
    SQL>

1.6.32. PROMPT

특정 메시지나 빈 라인을 화면에 출력한다.

PROMPT 명령어의 세부 내용은 다음과 같다.

  • 문법

    PRO[MPT] [message]
    항목설명
     message를 생략할 경우 빈 라인을 출력한다.
    message화면에 보여 줄 메시지이다.
  • 예제

    다음은 외부에서 작성한 SQL 파일의 예이고, 이름은 PromptUsage.sql 이다.

    PROMPT >>> Test is started.
    CREATE TABLE T (c1 NUMBER);
    INSERT INTO T VALUES (1);
    PROMPT Value 1 is inserted.
    COMMIT;
    PROMPT <<< Test is ended.

    다음은 위의 PromptUsage.sql을 실행한 결과를 보여준다.

    SQL> @PromptUsage
    >>> Test is started.
    Table 'T' created.
    1 row inserted.
    Value 1 is inserted.
    Commit succeeded.
    <<< Test is ended.
    File finished.
    
    SQL>

1.6.33. QUIT

EXIT 명령어와 동일하다.

QUIT 명령어의 세부 내용은 다음과 같다.

  • 문법

    Q[UIT] [SUCCESS|FAILURE|WARNING|n|variable|:variable] [COMMIT|ROLLBACK]

1.6.34. RESTORE

사용자가 선택한 정보를 지정한 파일로부터 복원한다.

RESTORE 명령어의 세부 내용은 다음과 같다.

  • 문법

    REST[ORE] HIST[ORY] filename[.ext]
    항목설명
    filename[.ext]읽을 파일 이름이다. 만약 확장자가 생략된 경우 SUFFIX에 설정된 값을 사용한다.
  • 예제

    SQL> RESTORE HISTORY history.sql
    

1.6.35. RUN

/ 명령어와 동일하지만, 이 명령어를 사용할 경우 SQL 버퍼에 저장된 문장을 화면에 출력한다.

RUN 명령어의 세부 내용은 다음과 같다.

  • 문법

    R[UN]
  • 예제

    SQL> select 1 from dual;
    
             1
    ----------
             1
    
    1 row selected.
    
    SQL> RUN
       1 select 1 from dual
    
             1
    ----------
             1
    
    1 row selected.

1.6.36. SAVE

사용자가 선택한 정보를 지정한 파일에 저장한다. SAVE CREDENTIAL에 대한 사용법은 “1.5.4. 접속 정보 암호화 기능”에서 구체적으로 설명한다.

SAVE 명령어의 세부 내용은 다음과 같다.

  • 문법

    SAVE CRED[ENTIAL] [filename]
    SAVE HIST[ORY] filename[.ext] [CRE[ATE]|REP[LACE]|APP[END]]
    항목설명
    CREDENTIAL

    데이터베이스 접속 정보를 암호화한다.

    filename을 생략하면 환경변수 ISQL_WALLET_PATH에 설정된 파일에 저장한다.

    HISTORY

    히스토리에 저장된 명령어들을 지정한 파일로 저장한다. 만약 확장자가 생략된 경우 SUFFIX에 설정된 값을 사용한다.

    • CREATE: 파일이 없을 경우엔 새로 생성하며, 이미 존재할 경우엔 에러가 발생한다. (기본값)

    • REPLACE: 파일이 없을 경우엔 새로 생성하며, 이미 존재할 경우엔 덮어 쓴다.

    • APPEND: 파일이 없을 경우엔 새로 생성하며, 이미 존재할 경우엔 이어 쓴다.

    filename저장할 파일 이름이다.
  • 예제

    SQL> SAVE CREDENTIAL
    SQL> SAVE CREDENTIAL "./wallet.dat"
    SQL> SAVE HISTORY history.sql
    SQL> SAVE HISTORY history.sql APPEND
    

1.6.37. SET

tbSQL 유틸리티의 시스템 변수를 설정한다. SET 명령어로 설정된 시스템 변수는 SHOW 명령어를 사용하여 출력한다. 단, 변경된 시스템 변수는 현재 세션 내에서만 유효하다. 각각의 시스템 변수에 대해서는 “1.3. 시스템 변수”에서 구체적으로 설명한다.

SET 명령어의 세부 내용은 다음과 같다.

  • 문법

    SET {parameter} {value}
    항목설명
    parametertbSQL 유틸리티 시스템 변수의 이름이다.
    valuetbSQL 유틸리티 시스템 변수의 값이다.
  • 예제

    SQL> SET AUTOCOMMIT ON

1.6.38. SHOW

tbSQL 유틸리티의 시스템 변수를 출력한다. 출력할 정보를 파라미터를 사용하여 선택할 수 있으며, 모든 정보를 출력할 수 있다.

SHOW 명령어의 세부 내용은 다음과 같다.

  • 문법

    SHO[W] {option}

    • 옵션

      다음은 option에 입력할 수 있는 항목에 대한 설명이다.

      항목설명
      system_parameter주어진 이름에 해당하는 tbSQL 유틸리티의 시스템 변수를 출력한다.
      ALL모든 tbSQL 유틸리티 시스템 변수를 출력한다.
      ERROR앞서 발생한 PSM 프로그램의 에러를 출력한다.
      PARAM[ETERS] [name]

      주어진 이름에 해당하는 데이터베이스 시스템 변수를 출력한다.

      단, 이름이 생략될 경우에는 모든 시스템 변수를 출력한다.

      RELEASEtbSQL 유틸리티의 릴리즈 정보를 출력한다.
      SQLCODE가장 최근에 수행한 SQL에 대한 SQLCODE를 출력한다.
  • 예제

    SQL> SHOW autocommit
    SQL> SHOW all
    SQL> SHOW error
    SQL> SHOW param db_name
    SQL> SHOW release
    SQL> SHOW SQLCODE

1.6.39. SPOOL

화면에 출력되는 모든 내용에 대해 현재 디렉터리 내 파일로 생성한다. 단, HOST 명령어와 ! 명령어의 결과는 제외된다.

SPOOL 명령어의 세부 내용은 다음과 같다.

  • 문법

    SP[OOL] [filename [APP[END]]|OFF]
    항목설명
     SPOOL 명령어만을 입력하면 SPOOL 명령어의 현재 실행 상태를 출력한다.
    filename출력을 저장할 파일의 이름이다.
    APP[END]출력 파일의 끝에 이어붙일지 여부이다.
    OFF출력 파일의 저장을 중지한다.
  • 예제

    SQL> SPOOL report.txt
    SQL> SPOOL OFF

1.6.40. START

@ 명령어와 동일하다.

START 명령어의 세부 내용은 다음과 같다.

  • 문법

    STA[RT] {filename}
    항목설명
    filename스크립트 파일의 이름이다.

1.6.41. TBDOWN

Tibero 데이터베이스를 종료한다. 긴급성에 따라 종료 옵션을 선택할 수 있으며 옵션에 따라 데이터베이스를 재시동할 때 복구 과정이 필요할 수 있다.

이 명령어를 실행하려면 SYSDBA 또는 SYSOPER로 데이터베이스에 접속해야 한다.

TBDOWN 명령어의 세부 내용은 다음과 같다.

  • 문법

    TBDOWN [NORMAL|POST_TX|IMMEDIATE|ABORT]
    항목설명
    NORMAL현재 접속 중인 모든 사용자가 접속을 종료할 때까지 기다린 후 종료한다. (기본값)
    POST_TX현재 진행 중인 트랜잭션이 종료될 때까지 기다린 후 종료한다.
    IMMEDIATE현재 진행 중인 트랜잭션을 롤백한 후 강제 종료한다.
    ABORT현재 진행 중인 트랜잭션을 롤백하지 않고 즉시 종료한다.
  • 예제

    SQL> TBDOWN
    SQL> TBDOWN ABORT

1.6.42. UNDEFINE

ACCEPT 명령어 등으로 정의된 치환 변수를 삭제한다.

UNDEFINE 명령어의 세부 내용은 다음과 같다.

  • 문법

    UNDEF[INE] [variable...]
    항목설명
     [variable...]를 생략할 경우 모든 치환 변수를 삭제한다.
    variable...치환 변수 이름의 목록이다.
  • 예제

    SQL> UNDEFINE x
    SQL> UNDEFINE x y z

1.6.43. VARIABLE

PSM 프로그램이나 SQL 문장에서 사용할 수 있는 사용자가 정의한 바인드 변수를 선언한다.

VARIABLE 명령어의 세부 내용은 다음과 같다.

  • 문법

    VAR[IABLE] [variable [datatype]]
    항목설명
     VARIABLE 명령어만 사용할 때에는 전체 바인드 변수를 화면에 출력한다.
    variable바인드 변수의 이름이다.
    datatype

    데이터 타입이다.

    현재는 다음의 타입을 지원한다.

    • NUMBER, CHAR(n), VARCHAR(n), VARCHAR2(n), NCHAR(n), NVARCHAR2(n), RAW(n), BLOB, CLOB, NCLOB, DATE, TIMESTAMP, REFCURSOR

  • 예제

    SQL> VARIABLE x NUMBER
    SQL> EXEC :x := 1;
    
    PSM completed.
    
    SQL> SELECT :x FROM DUAL;
            :x
    ----------
             1
    1 row selected.
    SQL>

1.6.44. WHENEVER

오류가 발생한 경우 tbSQL의 동작을 정의한다.

WHENEVER 명령어의 세부 내용은 다음과 같다.

  • 문법

    WHENEVER {OSERROR|SQLERROR} 
      {EXIT [SUCCESS|FAILURE|WARNING|n|variable|:variable] |
       CONTINUE [NONE|COMMIT|ROLLBACK]}
    • clause1

      항목설명
      OSERRORtbSQL이 실행 중인 환경의 운영체제로부터 발생한 오류에 대해 지정한 동작을 수행한다.
      SQLERRORSQL 문장을 수행하는 중에 발생한 오류에 대해 지정한 동작을 수행한다. 단, tbSQL에서 발생한 오류는 무시한다.
    • clause2 (기본값: CONTINUE)

      항목설명
      EXIT오류가 발생할 때 프로그램을 종료한다. 반환 코드에 대한 정의는 EXIT 명령어를 참조한다.
      CONTINUE

      오류가 발생하더라도 계속 다음 명령을 수행한다.

      • NONE: 트랜잭션에 대하여 아무 처리도 하지 않는다. (기본값)

      • COMMIT: COMMIT을 수행한다.

      • ROLLBACK: ROLLBACK을 수행한다.

  • 예제

    SQL> whenever sqlerror exit failure rollback
    SQL> select 1 from no_such_table;
    TBR-8033: Specified schema object was not found.
    at line 1, column 16:
    select 1 from no_such_table
    
    $ echo exit code: $?
    exit code: 1
    $

1.7. 컬럼 포맷

본 절에서는 tbSQL 유틸리티의 컬럼 포맷을 데이터 타입에 따라 설정하는 방법을 설명한다.

tbSQL 유틸리티의 컬럼 포맷은 이전 절에서 설명한 COLUMN 명령어를 통해 설정하고, COLUMN 명령어를 이용하여 출력한다.

1.7.1. 문자형

CHAR, NCHAR, VARCHAR, NVARCHAR 타입의 경우 데이터베이스 컬럼의 길이를 디폴트 길이로 가진다. 데이터의 값이 컬럼의 길이보다 클 때 데이터가 다음 라인에 기록되거나 잘릴 수 있는데, 문자형 포맷을 이용할 경우에는 이를 쉽게 처리할 수 있다.

문자형의 컬럼 포맷을 설정하는 세부 내용은 다음과 같다.

  • 문법

    COL[UMN] {name} FOR[MAT] A{n}

    A는 소문자 a로도 사용할 수 있으며, n은 문자열 데이터의 길이를 의미한다.

  • 예제

    SQL> SELECT 'Tibero is the best choice' test FROM DUAL;
    
    TEST
    -------------------------
    Tibero is the best choice
    
    1 row selected.
    
    SQL> COL test FORMAT a10
    SQL> SELECT 'Tibero is the best choice' test FROM DUAL;
    
    TEST
    ----------
    Tibero is 
    the best c
    hoice
    
    1 row selected.
    
    SQL>

1.7.2. 숫자형

숫자형의 컬럼 포맷을 설정하는 세부 내용은 다음과 같다.

  • 문법

    COL[UMN] {col_name} FOR[MAT] {fmt_str}
    • 입력 항목

      항목설명
      col_name컬럼 이름을 지정한다.
      fmt_str다음 표에서 설명한 컬럼 포맷을 지정한다.
    • fmt_str 포맷

      다음은 fmt_str에 지정할 수 있는 포맷이다.

      포맷설정 예설명
      쉼표(,)9,999주어진 위치에 쉽표(,)를 출력한다.
      점(.)9.999정수 부분과 소수 부분을 분리하는 위치에 점(.)을 출력한다.
      $$9999$를 맨 앞에 출력한다.
      00999, 99900을 맨 앞이나 뒤에 출력한다.
      99999주어진 자릿수만큼 숫자를 출력한다.
      BB9999정수 부분이 0일 경우 공백으로 치환한다.
      CC9999주어진 위치에 ISO currency symbol을 출력한다.
      D9D999실수의 정수와 소수를 분리하기 위해 decimal 문자를 출력한다.
      EEEE9.99EEEE과학적 기수법에 의해 출력한다.
      G9G999정수부분의 주어진 위치에 그룹 분리자를 출력한다.
      LL9999주어진 위치에 local currency symbol을 출력한다.
      MI9999MI음수 뒤에 마이너스 기호를 출력하고, 양수 뒤에 공백을 출력한다.
      PR9999PR음수인 경우에 '<'와 '>'로 감싸서 출력하고, 양수인 경우에 양쪽에 공백을 출력한다.
      RNRN대문자 로마숫자로 출력한다.
      rnrn소문자 로마숫자로 출력한다.
      SS9999, 9999S양수/음수 기호를 맨 앞이나 뒤에 출력한다.
      TMTM가능한 작은 수를 출력한다.
      UU9999주어진 위치에 dual currency symbol을 출력한다.
      V99V999

      10n만큼 곱한 값을 출력한다.

      여기서 n은 V뒤에 오는 9의 개수이다.

      XXXXX, xxxx16진수 형태로 출력한다.
  • 예제

    SQL> COLUMN x FORMAT 999,999
    SQL> SELECT 123456 x FROM DUAL;
    
               X
     --------
       123,456
    
    1 row selected.