내용 목차
본 장에서는 tbSQL 유틸리티를 소개하고 사용 방법을 설명한다.
tbSQL은 Tibero®(이하 Tibero)에서 제공하는 SQL 문장을 처리하는 대화형 유틸리티이다. 이 유틸리티로 SQL 질의, 데이터 정의어(DDL: Data Definition Language), 트랜잭션과 관련된 SQL 문장을 실행할 수 있다. 또한, PSM 프로그램을 생성하고 실행할 수 있으며 DBA는 Tibero의 시스템 관리를 위한 명령을 실행할 수 있다.
tbSQL은 이러한 기본 기능 외에도 자동 커밋을 설정하거나 운영체제 관련 명령어의 실행, 출력 저장, 스크립트 기능 등을 제공한다. 특히 스크립트 기능은 여러 SQL 문장 및 PSM 프로그램, tbSQL 유틸리티의 명령어를 하나의 스크립트 파일로 생성할 수 있어 편리하다.
tbSQL 유틸리티는 Tibero의 유틸리티 중에서 가장 빈번히 사용되는 것 중의 하나이며, SQL 문장의 실행이외에 다음과 같은 기능을 제공한다.
일반적인 SQL 문장 및 PSM 프로그램의 입력, 편집, 저장, 실행
트랜잭션의 설정 및 종료
스크립트를 통한 일괄 작업의 실행
DBA에 의한 데이터베이스 관리
데이터베이스의 기동 및 종료
외부 유틸리티 및 프로그램의 실행
tbSQL 유틸리티의 환경설정
tbSQL 유틸리티는 Tibero를 설치하는 과정에서 함께 설치되며, Tibero를 제거하면 함께 제거된다.
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 | 파일에 사용된 치환변수 값이다. |
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'
다음은 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
tbSQL 유틸리티의 사용 환경을 설정하려면 SET 명령어를 사용해야 한다. SET 명령어를 통해 SQL 질의를 수행한 결과의 출력 형태, 트랜잭션의 커밋 여부 등을 설정할 수 있다.
다음은 SET 명령어의 문법이다.
SET [system_variable] [system_variable_value]
자세한 내용은 “1.3. 시스템 변수”를 참고한다.
tbSQL 유틸리티를 종료하려면 SQL 프롬프트 에서 EXIT 또는 QUIT 명령어를 입력해야 한다.
SQL> EXIT
tbSQL 유틸리티에서 제공하는 명령어에 대한 자세한 내용은 “1.6. 명령어”를 참고한다.
본 절에서는 tbSQL 유틸리티의 시스템 변수에 대하여 설명한다. tbSQL 유틸리티의 시스템 변수에 설정할 값은 SET 명령어로 설정하고, SHOW 명령어로 출력한다.
다음은 SET 명령어에서 설정할 수 있는 시스템 변수를 요약한 표이다.
시스템 변수 | 기본값 | 설명 |
---|---|---|
AUTOCOMMIT | OFF | 자동 커밋 여부를 설정하는 시스템 변수이다. |
AUTOTRACE | OFF | 수행 중인 질의의 플랜이나 통계 정보를 출력할지를 설정하는 시스템 변수이다. |
BLOCKTERMINATOR | "." (0x2E) | PSM 문장에서 입력의 마지막을 나타내는 문자를 설정하는 시스템 변수이다. |
COLSEP | " " (0x20) | SQL 문장 중 조회 쿼리에 대한 수행 결과를 보여줄 때 컬럼사이를 구분하는 문자를 지정하는 시스템 변수이다. |
CONCAT | "." (0x2E) | 치환 변수 이름의 끝을 나타내는 문자를 설정하는 시스템 변수이다. |
DDLSTATS | OFF | DDL 문장의 플랜이나 통계 정보를 보여줄지를 설정하는 시스템 변수이다. |
DEFINE | "&" (0x26) | 치환 변수를 정의할 때 사용할 문자를 지정하는 시스템 변수이다. |
DESCRIBE | DEPTH 10 | DESCRIBE 명령어에서 보여줄 객체 명세의 단계를 지정하는 시스템 변수이다. |
ECHO | OFF | @ 또는 START 명령으로 스크립트 파일을 실행시킬 때 스크립트 내에서 실행되는 쿼리를 화면에 출력할지 결정하는 시스템 변수이다. |
EDITFILE | ".tbedit.sql" | EDIT 명령어에서 사용하는 파일 이름의 기본값을 설정하는 시스템 변수이다. |
ESCAPE | OFF | 이스케이프 문자를 설정하는 시스템 변수이다. |
EXITCOMMIT | ON | 유틸리티 종료시에 커밋 여부를 설정하는 시스템 변수이다. |
FEEDBACK | 0 | SQL 문장의 수행 결과를 화면에 출력할지를 설정하는 시스템 변수이다. |
HEADING | ON | 쿼리 실행 결과를 출력할 때 컬럼의 머릿글을 표시할지를 결정하는 시스템 변수이다. |
HEADSEP | "|" (0x7C) | 머릿글의 줄바꿈 문자를 설정하는 시스템 변수이다. |
HISTORY | 50 | 명령어 히스토리의 크기를 설정하는 시스템 변수이다. |
INTERVAL | 1 | LOOP 명령어에서 각 문장을 수행한 후 대기하는 시간을 설정하는 시스템 변수이다. |
LINESIZE | 80 | 한 라인에 출력할 문자 수를 설정하는 시스템 변수이다. |
LONG | 80 | VARCHAR보다 큰 문자형 타입의 데이터를 표시하기 위해 사용할 문자 수를 설정하는 시스템 변수이다. |
NEWPAGE | 1 | 각 페이지 시작 부분에 추가할 빈 줄 수를 설정하는 시스템 변수이다. |
NUMFORMAT | "" | 숫자형 데이터의 기본 컬럼 포맷을 설정하는 시스템 변수이다. |
NUMWIDTH | 10 | 숫자형 데이터의 기본 출력 길이를 설정하는 시스템 변수이다. |
PAGESIZE | 24 | 한 화면에 출력할 라인 수를 설정하는 시스템 변수이다. |
PAUSE | OFF | 한 페이지를 출력한 후 다음 페이지를 출력하기 전에 사용자 입력을 기다릴지를 지정하는 시스템 변수이다. |
RECSEP | WRAPPED | 로우 구분자를 출력할 단위를 지정하는 시스템 변수이다. |
RECSEPCHAR | " " (0x20) | 로우 구분자로 사용할 문자를 설정하는 시스템 변수이다. |
ROWS | ON | 질의문의 결과를 화면에 출력할 것인지를 설정하는 시스템 변수이다. |
SERVEROUTPUT | OFF | DBMS_OUTPUT 패키지의 결과를 출력할 것인지를 설정하는 시스템 변수이다. |
SQLPROMPT | "SQL> " | 화면상의 프롬프트 문자를 설정하는 시스템 변수이다. |
SQLTERMINATOR | ";" (0x3B) | SQL 문장을 종료하는 문자를 설정하는 시스템 변수이다. |
SUFFIX | "sql" | 파일 확장자의 기본값을 설정하는 시스템 변수이다. |
TERMOUT | ON | 스크립트에서 수행된 명령어의 결과를 화면에 출력할 것인지를 설정하는 시스템 변수이다. |
TIME | OFF | 현재 시간을 화면에 출력할 것인지를 설정하는 시스템 변수이다. |
TIMEOUT | 3 | PING 명령어에서 서버가 응답할 때까지 기다릴 시간을 설정하는 시스템 변수이다. |
TIMING | OFF | SQL, PSM 문장의 결과를 출력할 때마다 수행 시간을 출력할 것인지를 설정하는 시스템 변수이다. |
TRIMOUT | ON | 화면에 출력되는 라인 뒤에 오는 공백을 제거할 것인지를 설정하는 시스템 변수이다. |
TRIMSPOOL | OFF | 스풀링 중인 라인 뒤에 오는 공백을 제거할 것인지를 설정하는 시스템 변수이다. |
UNDERLINE | "-" (0x2D) | 머릿글의 밑줄로 사용할 문자를 설정하는 시스템 변수이다. |
VERIFY | ON | 명령을 실행할 때 치환변수가 적용된 내역에 대한 출력 여부를 설정하는 시스템 변수이다. |
WRAP | ON | 출력할 라인이 긴 경우 나머지를 다음 라인에 출력할 것인지를 설정하는 시스템 변수이다. |
다음은 시스템 변수를 설정하는 예이다.
SET AUTOCOMMIT ON SET PAGESIZE 32 SET TRIMSPOOL ON
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과 동일하다. |
수행 중인 질의의 플랜이나 통계 정보를 보여준다. 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] | 질의에 대한 노드 별 수행 정보(수행 시간, 처리 로우 수, 수행 횟수 등)을 보여준다. |
PSM 문장에서 입력의 마지막을 나타내는 문자를 설정한다.
BLOCKTERMINATOR의 세부 내용은 다음과 같다.
문법
SET BLO[CKTERMINATOR] {c|ON|OFF}
항목 | 설명 |
---|---|
c | PSM 프로그램 입력을 마치는 것을 나타내는 문자이다. (기본값: ".") |
ON | BLOCKTERMINATOR를 활성화한다. (기본값) |
OFF | BLOCKTERMINATOR를 비활성화한다. |
SELECT 문장을 실행한 후 출력되는 여러 컬럼 사이의 구분을 나타내는 문자를 설정한다.
COLSEP의 세부 내용은 다음과 같다.
문법
SET COLSEP {text}
항목 | 설명 |
---|---|
text | 컬럼 사이를 구분짓는 문자이다. (기본값: " ") |
치환 변수 이름의 끝을 나타내는 문자를 설정한다.
CONCAT의 세부 내용은 다음과 같다.
문법
SET CON[CAT] {c|ON|OFF}
항목 | 설명 |
---|---|
c | 치환 변수 이름에 대한 종료 문자이다. (기본값: ".") |
ON | CONCAT을 활성화한다. (기본값) |
OFF | CONCAT을 비활성화한다. |
수행 중인 DDL 문장의 플랜이나 통계 정보를 보여준다. 단, 주의할 점은 AUTOTRACE 기능도 반드시 활성화시켜야 한다.
DDLSTATS의 세부 내용은 다음과 같다.
문법
SET DDLSTAT[S] {ON|OFF}
항목 | 설명 |
---|---|
ON | DDLSTATS를 활성화한다. |
OFF | DDLSTATS를 비활성화한다. (기본값) |
치환 변수를 정의할 때 사용할 문자를 설정한다.
DEFINE의 세부 내용은 다음과 같다.
문법
SET DEF[INE] {c|ON|OFF}
항목 | 설명 |
---|---|
c | 치환 변수를 나타내는 문자이다. (기본값 : "&") |
ON | DEFINE을 활성화한다. (기본값) |
OFF | DEFINE을 비활성화한다. |
DESCRIBE 명령어를 통한 객체 명세를 어느 단계까지 보여줄지를 설정한다.
DESCRIBE의 세부 내용은 다음과 같다.
문법
SET DESCRIBE DEPTH {n}
항목 | 설명 |
---|---|
n | 재귀적으로 출력할 단계이다. (기본값: 10) |
@ 또는 START 명령으로 스크립트 파일을 실행시킬 때 스크립트 내에서 실행되는 쿼리를 화면에 출력할지를 설정한다.
ECHO의 세부 내용은 다음과 같다.
문법
SET ECHO {ON|OFF}
항목 | 설명 |
---|---|
ON | ECHO를 활성화한다. |
OFF | ECHO를 비활성화한다. (기본값) |
EDIT 명령어에서 사용할 파일 이름의 기본값을 설정한다. 확장자를 생략할 경우 SUFFIX에 설정된 값을 사용한다.
EDITFILE의 세부 내용은 다음과 같다.
문법
SET EDITF[ILE] filename[.ext]
항목 | 설명 |
---|---|
filename[.ext] | EDIT 명령어에서 사용할 파일 이름이다. (기본값: .tbedit.sql) |
DEFINE에서 정의한 치환 변수 문자를 무시하도록 하는 이스케이프 문자를 설정한다. 이스케이프를 활성화한 뒤 설정한 이스케이프 문자를 '&<문자열>' 앞에 붙여 쓰면, 치환 변수로 인식되지 않는다.
ESCAPE의 세부 내용은 다음과 같다.
문법
SET ESC[APE] {c|ON|OFF}
항목 | 설명 |
---|---|
c | 이스케이프 문자이다. (기본값: "\") |
ON | ESCAPE를 활성화한다. |
OFF | ESCAPE를 비활성화한다. (기본값) |
유틸리티 종료시에 커밋을 할지 여부를 설정한다.
EXITCOMMIT의 세부 내용은 다음과 같다.
문법
SET EXITC[OMMIT] {ON|OFF}
항목 | 설명 |
---|---|
ON | EXITCOMMIT을 활성화한다. (기본값) |
OFF | EXITCOMMIT을 비활성화한다. |
SQL 문장의 수행 결과를 화면에 출력할지 설정한다.
FEEDBACK의 세부 내용은 다음과 같다.
문법
SET FEED[BACK] {n|ON|OFF}
항목 | 설명 |
---|---|
n | 수행 결과를 화면에 출력하기 위한 최소 로우 개수이다. (기본값: 0) |
ON | FEEDBACK을 활성화한다. (기본값) |
OFF | FEEDBACK을 비활성화한다. |
쿼리 실행 결과를 출력할 때 컬럼의 머릿글을 표시할지를 결정한다.
HEADING의 세부 내용은 다음과 같다.
문법
SET HEA[DING] {ON|OFF}
항목 | 설명 |
---|---|
ON | HEADING을 활성화한다. (기본값) |
OFF | HEADING을 비활성화한다. |
머릿글의 줄바꿈 문자를 설정한다.
HEADSEP의 세부 내용은 다음과 같다.
문법
SET HEADS[EP] {c|ON|OFF}
항목 | 설명 |
---|---|
c | 줄바꿈 문자이다. (기본값: "|") |
ON | HEADSEP을 활성화한다. (기본값) |
OFF | HEADSEP을 비활성화한다. |
명령어 히스토리의 크기를 설정한다.
HISTORY의 세부 내용은 다음과 같다.
문법
SET HIS[TORY] {n}
항목 | 설명 |
---|---|
n | 명령어 히스토리의 크기이다. (기본값: 50) |
LOOP 명령어에서 각 수행이 끝난 후 대기하는 시간을 설정한다.
INTERVAL의 세부 내용은 다음과 같다.
문법
SET INTER[VAL] {n}
항목 | 설명 |
---|---|
n | 대기 시간으로 단위는 초다. (기본값: 1) |
화면상의 한 라인의 길이를 설정한다. 라인 길이의 최소값은 1이며, 최댓값은 운영체제에 따라 다르다.
LINESIZE의 세부 내용은 다음과 같다.
문법
SET LIN[ESIZE] {n}
항목 | 설명 |
---|---|
n | 화면상의 한 라인의 길이이다. (기본값: 80) |
CLOB이나 BLOB, NCLOB, LONG, XML 타입의 데이터를 읽어 와서 출력할 길이를 설정한다. 길이는 2,000,000,000을 넘을 수 없다.
LONG의 세부 내용은 다음과 같다.
문법
SET LONG {n}
항목 | 설명 |
---|---|
n | 대용량 데이터의 기본 출력 길이이다. (기본값: 80) |
각 페이지의 시작 부분에 추가할 빈 줄 개수를 설정한다.
NEWPAGE의 세부 내용은 다음과 같다.
문법
SET NEWP[AGE] {1|n|NONE}
항목 | 설명 |
---|---|
n | 빈 줄 개수이다. (기본값: 1) |
NUMBER 타입의 기본 컬럼 포맷을 설정한다. COLUMN 명령으로 FORMAT이 정의된 것을 제외한 숫자형 컬럼에 적용된다.
NUMFORMAT의 세부 내용은 다음과 같다.
문법
SET NUMF[ORMAT] {fmt_str}
항목 | 설명 |
---|---|
fmt_str | NUMBER 타입 데이터의 기본 컬럼 포맷이다. (기본값: "") 자세한 내용은 “1.7. 컬럼 포맷”의 숫자형에 대한 설명을 참조한다. |
NUMBER 타입을 출력할 길이를 설정한다. LINESIZE를 넘을 수 없다.
NUMWIDTH의 세부 내용은 다음과 같다.
문법
SET NUM[WIDTH] {n}
항목 | 설명 |
---|---|
n | NUMBER 타입 데이터의 기본 출력 길이이다. (기본값: 10) |
tbSQL 유틸리티에서 출력하는 내용이 포함되는 각 페이지 내의 라인 개수를 설정한다.
PAGESIZE의 세부 내용은 다음과 같다.
문법
SET PAGES[IZE] {n}
항목 | 설명 |
---|---|
n | 한 페이지의 라인 개수이다. (기본값: 24) |
한 페이지를 출력한 뒤 다음 페이지를 출력하기 전에 사용자 입력을 기다릴지를 설정한다.
PAUSE의 세부 내용은 다음과 같다.
문법
SET PAU[SE] {ON|OFF}
항목 | 설명 |
---|---|
ON | PAUSE를 활성화한다. |
OFF | PAUSE를 비활성화한다. (기본값) |
로우 구분자를 출력하는 단위를 설정한다.
RECSEP의 세부 내용은 다음과 같다.
문법
SET RECSEP {WR[APPED]|EA[CH]|OFF}
항목 | 설명 |
---|---|
WRAPPED | 로우가 WRAPPING되는 경우 구분자를 출력한다. (기본값) |
EACH | 모든 로우 단위로 구분자를 출력한다. |
OFF | RECSEP을 비활성화한다. |
로우 구분자로 사용할 문자를 설정한다. 이 구분자는 LINESIZE 값만큼 반복해서 출력된다.
RECSEPCHAR의 세부 내용은 다음과 같다.
문법
SET RECSEPCHAR {c}
항목 | 설명 |
---|---|
c | 로우 구분자이다. (기본값: " ") |
질의문의 결과를 화면에 출력할지를 설정한다.
ROWS의 세부 내용은 다음과 같다.
문법
SET ROWS {ON|OFF}
항목 | 설명 |
---|---|
ON | ROWS를 활성화한다. (기본값) |
OFF | ROWS를 비활성화한다. |
DBMS_OUTPUT 패키지의 결과를 출력할 것인지 설정한다.
SERVEROUTPUT의 세부 내용은 다음과 같다.
문법
SET SERVEROUT[PUT] {ON|OFF} [SIZE n]
항목 | 설명 |
---|---|
ON | SERVEROUTPUT을 활성화한다. |
OFF | SERVEROUTPUT을 비활성화한다. (기본값) |
n | SERVEROUTPUT 버퍼 크기를 지정한다. (기본값: 1000000) |
화면상의 프롬프트 문자를 설정한다.
SQLPROMPT의 세부 내용은 다음과 같다.
문법
SET SQLP[ROMPT] {prompt_string}
항목 | 설명 |
---|---|
prompt_string | 프롬프트로 사용할 문자열이다. (기본값: "SQL>") 이 문자열을 중괄호({ })로 감싸면 환경변수로 인식된다. 예를 들어 '{ISQL_PROMPT}'이라고 지정하면 환경변수 $ISQL_PROMPT의 값이 치환되어 프롬프트로 사용된다. 이때 환경변수의 이름은 대소문자를 구분한다. 문자열의 최대 길이는 128자로 제한된다. |
SQL 문장을 종료하는 문자를 설정한다.
SQLTMINATOR의 세부 내용은 다음과 같다.
문법
SET SQLT[MINATOR} {c|ON|OFF}
항목 | 설명 |
---|---|
c | SQL 문장의 종료를 알리는 문자이다. (기본값: ";") |
ON | SQLTERMINATOR를 활성화한다. |
OFF | SQLTERMINATOR를 비활성화한다. |
파일 확장자를 생략했을 때 사용할 파일 확장자를 설정한다.
SUFFIX의 세부 내용은 다음과 같다.
문법
SET SUF[FIX] {extension}
항목 | 설명 |
---|---|
extension | 기본으로 사용할 파일 확장자이다. (기본값: sql) |
스크립트에서 수행된 명령어의 결과를 화면에 출력할 것인지 설정한다.
TERMOUT의 세부 내용은 다음과 같다.
문법
SET TERM[OUT] {ON|OFF}
항목 | 설명 |
---|---|
ON | TERMOUT을 활성화한다. (기본값) |
OFF | TERMOUT을 비활성화한다. |
프롬프트에 현재 시간을 출력할 것인지 설정한다.
TIME의 세부 내용은 다음과 같다.
문법
SET TI[ME] {ON|OFF}
항목 | 설명 |
---|---|
ON | TIME을 활성화한다. |
OFF | TIME을 비활성화한다. (기본값) |
PING 명령어에서 서버가 응답할 때까지 기다릴 시간을 설정한다. 단위는 초다.
TIMEOUT의 세부 내용은 다음과 같다.
문법
SET TIMEOUT {n}
항목 | 설명 |
---|---|
n | 서버의 응답을 기다리는 시간이다. (기본값: 3) |
SQL, PSM 문장의 실행 결과를 출력할 때마다 수행 시간을 출력할 것인지 설정한다.
TIMING의 세부 내용은 다음과 같다.
문법
SET TIMI[NG] {ON|OFF}
항목 | 설명 |
---|---|
ON | TIMING을 활성화한다. |
OFF | TIMING을 비활성화한다. (기본값) |
SQL, PSM 문장의 실행 결과를 출력할 때마다 모든 라인의 뒤에 오는 공백을 제거할 것인지 설정한다.
TRIMOUT의 세부 내용은 다음과 같다.
문법
SET TRIM[OUT] {ON|OFF}
항목 | 설명 |
---|---|
ON | TRIMOUT을 활성화한다. (기본값) |
OFF | TRIMOUT을 비활성화한다. |
SQL, PSM 문장의 실행 결과를 스풀링할 때마다 모든 라인의 뒤에 오는 공백을 제거할 것인지 설정한다.
TRIMSPOOL의 세부 내용은 다음과 같다.
문법
SET TRIMS[POOL] {ON|OFF}
항목 | 설명 |
---|---|
ON | TRIMSPOOL을 활성화한다. |
OFF | TRIMSPOOL을 비활성화한다. (기본값) |
머릿글의 밑줄로 사용할 문자를 설정한다.
UNDERLINE의 세부 내용은 다음과 같다.
문법
SET UND[ERLINE] {c|ON|OFF}
항목 | 설명 |
---|---|
c | 밑줄 문자이다. (기본값: "-") |
ON | UNDERLINE을 활성화한다. (기본값) |
OFF | UNDERLINE을 비활성화한다. |
치환 변수가 포함된 명령을 실행할 때 치환 변수가 값으로 치환되는 결과의 출력 여부를 설정한다.
VERIFY의 세부 내용은 다음과 같다.
문법
SET VER[IFY] {ON|OFF}
항목 | 설명 |
---|---|
ON | VERIFY를 활성화한다. (기본값) |
OFF | VERIFY를 비활성화한다. |
tbSQL 유틸리티에서 주로 사용하는 기능은 SQL 문장이나 PSM 프로그램을 직접 입력하여 실행하는 것이다. 본 절에서는 명령어의 입력과 실행에 관하여 설명한 후 기타 기능에 대해서 설명한다.
tbSQL 유틸리티의 명령 프롬프트에서의 입력은 크게 SQL 문장, PSM 프로그램, 유틸리티 명령어의 세 가지로 구분할 수 있다. 명령어의 입력 방법은 대체로 서로 유사하다. 각 명령어를 입력하는 방법에 대하여 차례로 설명한다.
다음은 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 프로그램은 다수의 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 유틸리티의 명령어에는 SQL 수행과 관련된 명령어나 기타 Tibero 데이터베이스 관리를 위한 명령어 등이 포함된다. tbSQL 유틸리티의 명령어에 대한 자세한 내용은 “1.6. 명령어”를 참고한다.
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>
본 절에서는 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 명령까지도 파일에 저장되어 있다.
본 절에서는 tbSQL 유틸리티의 기본 기능에 비하여 좀 더 고급 사용자가 사용하는 기능으로 스크립트를 이용한 일괄 작업 실행과 Tibero 시스템을 관리하는 DBA를 위한 기능에 대하여 설명한다.
스크립트란 한 번의 명령으로 일괄적으로 작업을 실행하기 위한 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
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를 종료한다.
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 | 제한할 사용자 이름이다. 다음과 같이 사용할 수 있으며 와일드 카드(%)를 허용한다.
|
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.
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 환경에서는 위의 암호화 파일 생성 및 사용 기능은 사용할 수 없다.
본 절에서는 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 | 사용자의 입력을 받아 치환 변수의 값을 설정하는 명령어이다. |
APPEND | SQL 버퍼에 특정 텍스트 혹은 statement를 덧붙이는 명령어이다. |
ARCHIVE LOG | Redo 로그 파일 정보를 출력하는 명령어이다. |
CHANGE | SQL 버퍼의 현재 라인에서 패턴 문자를 찾아 주어진 문자로 변환하는 명령어이다. |
CLEAR | 설정된 옵션을 초기화하거나 지우는 명령어이다. |
COLUMN | 컬럼의 출력 속성을 설정하는 명령어이다. |
CONNECT | 특정 사용자 ID로 데이터베이스에 접속하는 명령어이다. |
DEFINE | 치환 변수를 정의하거나 출력하는 명령어이다. |
DEL | SQL 버퍼에 저장된 라인을 지우는 명령어이다. |
DESCRIBE | 지정된 객체의 컬럼 정보를 출력하는 명령어이다. |
DISCONNECT | 현재 데이터베이스로부터 접속을 해제하는 명령어이다. |
EDIT | 특정 파일 또는 SQL 버퍼의 내용을 외부 편집기를 이용하여 편집하는 명령어이다. |
EXECUTE | 단일 PSM 문장을 수행하는 명령어이다. |
EXIT | tbSQL 유틸리티를 종료하는 명령어이다. QUIT 명령어와 동일하다. |
EXPORT | SELECT 문장의 수행 결과나 테이블 데이터를 파일로 출력하는 명령어이다. |
HELP | 도움말을 출력하는 명령어이다. |
HISTORY | 실행한 명령어의 히스토리를 출력하는 명령어이다. |
HOST | 운영체제 명령어를 실행하는 명령어이다. ! 명령어와 동일하다. |
INPUT | SQL 버퍼의 현재 라인 뒤에 새로운 라인을 추가하는 명령어이다. |
LIST | SQL 버퍼 내의 특정 내용을 출력하는 명령어이다. |
LOADFILE | Tibero의 테이블을 Oracle의 SQL*Loader 툴이 인식할 수 있는 형식으로 저장하는 명령어이다. |
LOOP | 단일 명령어를 무한 반복 수행하는 명령어이다. |
LS | 현재 사용자가 생성한 데이터베이스 객체를 출력하는 명령어이다. |
PASSWORD | 사용자 패스워드를 변경하기 위한 명령어이다. |
PAUSE | 사용자가 <Enter> 키를 누를 때까지 실행을 멈추는 명령어이다. |
PING | 특정 데이터베이스에 대해 접속가능한 상태인지를 출력하는 명령어이다. |
사용자가 정의한 바인드 변수의 값을 출력하는 명령어이다. | |
PROMPT | 사용자가 정의한 SQL 문장이나 빈 라인을 그대로 화면에 출력하는 명령어이다. |
QUIT | tbSQL 유틸리티를 종료하는 명령어이다. EXIT 명령어와 동일하다. |
RESTORE | 선택한 정보를 파일로부터 복원하는 명령어이다. |
RUN | 현재 SQL 버퍼 내의 SQL 문장이나 PSM 프로그램을 실행하는 명령어이다. / 명령어와 동일하다. |
SAVE | 선택한 정보를 파일에 저장하는 명령어이다. |
SET | tbSQL 유틸리티의 시스템 변수를 설정하는 명령어이다. |
SHOW | tbSQL 유틸리티의 시스템 변수를 출력하는 명령어이다. |
SPOOL | 화면에 출력되는 내용을 모두 외부 파일에 저장하는 과정을 시작하거나 종료하는 명령어이다. |
START | 스크립트 파일을 실행하는 명령어이다. @ 명령어와 동일하다. |
TBDOWN | Tibero를 종료하는 명령어이다. |
UNDEFINE | 하나 이상의 치환 변수를 삭제하는 명령어이다. |
VARIABLE | 사용자가 정의한 바인드 변수를 선언하는 명령어이다. |
WHENEVER | 에러가 발생한 경우의 동작을 정의하는 명령어이다. |
tbSQL 유틸리티 내에서 운영체제의 명령어를 실행한다. ! 명령어 대신에 HOST 명령어를 사용할 수 있다.
! 명령어의 세부 내용은 다음과 같다.
문법
! [command]
옵션 | 설명 |
---|---|
운영체제의 명령어 없이 ! 명령어만 입력하면 운영체제의 명령 프롬프트로 나가서 운영체제의 명령어를 여러 번 입력할 수 있다. 이때 다시 tbSQL 유틸리티로 돌아오려면 EXIT 명령어를 입력한다. | |
command | 운영체제의 명령어이다. |
예제
SQL> ! dir *.sql SQL> !
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.
스크립트 파일을 실행한다. 스크립트 파일이 SUFFIX 시스템 변수에 등록된 확장자를 가지면 스크립트 파일의 이름을 확장자 없이 지정할 수 있다. tbSQL 유틸리티는 지정된 스크립트 파일을 현재 디렉터리 내에서 찾는다.
스크립트 파일의 실행 전에 SET 명령어로 설정된 시스템 변수는 스크립트 파일을 실행하는 중에도 유효하다. 스크립트 파일 내에서 EXIT 또는 QUIT 명령어를 실행하면 tbSQL 유틸리티를 종료한다.
@ 명령어 대신에 START 명령어를 사용할 수 있다.
@ 명령어의 세부 내용은 다음과 같다.
문법
@ {filename}
항목 | 설명 |
---|---|
filename | 스크립트 파일의 이름이다. |
예제
SQL> @ run SQL> @ run.sql
현재 SQL 버퍼 내의 SQL 문장 또는 PSM 프로그램을 실행한다.
/ 명령어 대신에 RUN 명령어를 사용할 수 있다.
/ 명령어의 세부 내용은 다음과 같다.
문법
/
예제
SQL> SELECT * FROM DUAL; ..... SQL문장 실행 결과 ..... SQL> / ..... 위와 동일한 결과 .....
사용자의 입력을 받아 치환 변수의 값을 설정한다. 이때 설정된 치환 변수의 값은 이후에 사용자가 입력하는 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>
SQL 버퍼에 사용자가 입력한 텍스트 혹은 statement를 덧붙인다.
APPEND 명령어의 세부 내용은 다음과 같다.
문법
A[PPEND] statement
입력 항목
항목 | 설명 |
---|---|
statement | SQL 버퍼에 덧붙일 텍스트를 의미한다. |
예제
SQL> LIST 2 ..... 두 번째 라인을 선택한다. ..... SQL> APPEND text ..... 두 번째 라인에 text를 추가한다. .....
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>
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 |
|
예제
현재 라인은 디폴트로 항상 마지막 라인을 가리키므로 두 번째 라인에 있는 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>
설정된 옵션을 초기화하거나 지운다.
CLEAR 명령어의 세부 내용은 다음과 같다.
문법
CL[EAR] [option]
옵션
옵션 | 설명 |
---|---|
BUFF[ER] | SQL 버퍼에 있는 모든 내용을 삭제한다. |
SCR[EEN] | 화면에 있는 모든 내용을 삭제한다. |
COL[UMNS] | 등록된 모든 컬럼의 출력 속성을 초기화한다. |
예제
SQL> CLEAR BUFFER SQL buffer is cleared SQL> CLEAR SCREEN SQL> CLEAR COLUMNS
컬럼의 출력 속성을 지정한다. 컬럼의 이름만 명시했을 경우에는 해당 컬럼의 속성을 출력하고, 컬럼의 이름을 명시하지 않을 경우에는 등록된 모든 컬럼을 출력한다.
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
다른 사용자로 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
치환 변수를 정의하거나 출력한다.
DEFINE 명령어의 세부 내용은 다음과 같다.
문법
DEF[INE] [variable]|[variable = value]
항목 | 설명 |
---|---|
치환 변수의 이름을 지정하지 않으면, 전체 치환 변수를 출력한다. | |
variable | 지정한 치환 변수를 출력한다. |
variable = value | 정의할 치환 변수의 이름과 기본값이다. |
예제
SQL> DEFINE NAME ..... NAME이라는 이름을 갖는 치환 변수를 화면에 출력한다. ..... SQL> DEFINE NAME = 'SMITH' ..... NAME이라는 이름을 갖는 치환 변수와 SMITH라는 기본값을 정의한다. ..... SQL> DEFINE ..... 전체 치환 변수를 화면에 출력한다. .....
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 ..... 마지막 라인을 삭제한다. .....
지정된 객체의 컬럼 정보를 출력한다. 여기에서 객체는 테이블, 뷰, 동의어, 함수, 프러시저, 패키지가 될 수 있다.
테이블, 뷰의 경우에는 컬럼 이름, 데이터 타입, 제약조건 및 인덱스 정보 등이 출력되며, 최대 길이, 정밀도, 스케일 등 데이터 타입에 따른 것도 포함한다.
함수, 프러시저의 경우에는 파라미터의 정보(이름, 데이터 타입, 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
현재 데이터베이스로부터 접속을 종료한다. 진행 중이던 트랜잭션을 커밋하지만 tbSQL 유틸리티를 종료하지는 않는다.
스크립트 파일 내에서 CONNECT 명령어를 실행하고 그대로 종료한 경우 데이터베이스와 접속된 상태가 계속 유지된다. 따라서, 스크립트 파일 내에 CONNECT 명령어가 포함되고 있다면, 마지막에 DISCONNECT 명령어를 실행하는 것이 안전하다.
DISCONNECT 명령어의 세부 내용은 다음과 같다.
문법
DISCONN[ECT]
특정 파일 또는 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
단일 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>
tbSQL 유틸리티를 종료한다. 현재 진행 중이던 모든 트랜잭션을 커밋하며 데이터베이스와의 모든 접속을 종료한다.
EXIT 명령어의 세부 내용은 다음과 같다.
문법
EXIT [SUCCESS|FAILURE|WARNING|n|variable|:variable] [COMMIT|ROLLBACK]
항목 | 설명 |
---|---|
SUCCESS | 정상 종료 코드 0을 반환한다. |
FAILURE | 실패 종료 코드 1을 반환한다. |
WARNING | 경고 종료 코드 2를 반환한다. |
n | 종료 코드로 사용할 정수형 숫자를 직접 지정할 수 있으며, 사용할 수 있는 값의 범위는 운영체제에 따라 다르다. |
variable | DEFINE 명령으로 정의한 사용자 변수나 SQL.SQLCODE와 같은 시스템 변수의 값을 반환한다. 단, 사용한 변수는 숫자형이어야 한다. |
:variable | VARIABLE 명령으로 정의한 바인드 변수를 이용하여 종료 코드를 지정할 수 있다. 단, 사용한 바인드 변수는 숫자형이어야 한다. |
COMMIT | 종료하기 전 COMMIT을 수행한다. |
ROLLBACK | 종료하기 전 ROLLBACK을 수행한다. |
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 '*'
지정된 단어를 포함하는 모든 항목에 대한 도움말을 화면에 출력한다.
HELP 명령어의 세부 내용은 다음과 같다.
문법
H[ELP] [topic]
항목 | 설명 |
---|---|
옵션을 지정하지 않으면 tbSQL 유틸리티에서 사용할 수 있는 전체 명령어를 출력한다. | |
topic | 도움말을 출력할 단어를 지정한다. |
예제
SQL> HELP SET
히스토리 버퍼에 저장된 명령어를 화면에 출력한다.
HISTORY 명령어의 세부 내용은 다음과 같다.
문법
HIS[TORY]
예제
SQL> HISTORY
..... 전체 명령어를 출력한다. .....
! 명령어와 동일하다.
HOST 명령어의 세부 내용은 다음과 같다.
문법
HO[ST] [command]
항목 | 설명 |
---|---|
명령어 없이 HOST만 입력하면 운영체제의 명령 프롬프트로 나가서 운영체제 명령어를 여러 번 입력할 수 있다. 이때 다시 tbSQL 유틸리티로 돌아오려면 EXIT를 입력한다. | |
command | 운영체제의 명령어이다. |
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 ... 여기에 입력하면 된다. ...
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 ..... 마지막 라인을 출력한다. .....
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;
임의의 문장을 무한 반복 수행하는 명령어이다. 수행을 종료하기 위해선 <Ctrl>+C를 누른다.
LOOP 명령어의 세부 내용은 다음과 같다.
문법
LOOP stmt
항목 | 설명 |
---|---|
stmt | 반복 수행할 문장이다. |
예제
SQL> LOOP select count(*) from v$session ..... SQL을 1초 간격으로 반복 수행한다. ..... SQL> SET INTERVAL 10 SQL> LOOP ls ..... LS를 10초 간격으로 반복 수행한다. .....
현재 사용자가 생성한 특정 타입이나 이름의 데이터베이스 객체의 정보를 출력한다.
LS 명령어의 세부 내용은 다음과 같다.
문법
LS [object_type|object_name]
항목 | 설명 |
---|---|
object_type이나 object_name을 생략하면 사용자가 소유한 모든 객체를 출력한다. | |
object_type | 다음 중에 하나를 설정한다.
|
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 ..... 현재 시스템에 접속하고 있는 사용자를 조회한다. .....
사용자의 패스워드를 바꾸기 위한 명령어이다.
PASSWORD 명령어의 세부 내용은 다음과 같다.
문법
PASSW[ORD] [username]
항목 | 설명 |
---|---|
username | 패스워드를 변경할 사용자 이름이다. 이 값이 생략된 경우 현재 접속된 사용자의 패스워드를 변경한다. |
예제
SQL> PASSWORD Changing password for 'TIBERO' Enter old password: ...기존 패스워드를 입력한다... Enter new password: ...새로운 패스워드를 입력한다... Confirm new password: ...확인을 위해 한번 더 입력한다... Password changed successfully. SQL>
사용자가 <Enter> 키를 누를 때까지 잠시 수행을 멈춘다. 메시지를 입력할 경우 해당 메시지를 화면에 나타낸다.
PAUSE 명령어의 세부 내용은 다음과 같다.
문법
PAU[SE] [message]
항목 | 설명 |
---|---|
message | 사용자가 <Enter> 키를 누를 때 화면에 보여줄 메시지이다. |
예제
SQL> PAUSE please enter...
please enter...
..... <Enter>키를 누른다. .....
SQL>
특정 데이터베이스에 대해 접속가능한 상태인지를 출력한다.
PING 명령어의 세부 내용은 다음과 같다.
문법
PING connect_identifier
항목 | 설명 |
---|---|
connect_identifier | 접속할 데이터베이스 이름이다. |
예제
SQL> PING tibero6 Server is alive. SQL>
사용자가 정의한 바인드 변수의 이름과 값을 출력한다.
PRINT 명령어의 세부 내용은 다음과 같다.
문법
PRI[NT] [variable...]
항목 | 설명 |
---|---|
variable을 생략할 경우 모든 바인드 변수를 출력한다. | |
variable | 출력할 바인드 변수 이름의 목록이다. |
예제
SQL> VARIABLE x NUMBER SQL> EXECUTE :x := 5; SQL> PRINT x x ---------- 5 SQL>
특정 메시지나 빈 라인을 화면에 출력한다.
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>
EXIT 명령어와 동일하다.
QUIT 명령어의 세부 내용은 다음과 같다.
문법
Q[UIT] [SUCCESS|FAILURE|WARNING|n|variable|:variable] [COMMIT|ROLLBACK]
사용자가 선택한 정보를 지정한 파일로부터 복원한다.
RESTORE 명령어의 세부 내용은 다음과 같다.
문법
REST[ORE] HIST[ORY] filename[.ext]
항목 | 설명 |
---|---|
filename[.ext] | 읽을 파일 이름이다. 만약 확장자가 생략된 경우 SUFFIX에 설정된 값을 사용한다. |
예제
SQL> RESTORE HISTORY history.sql
/ 명령어와 동일하지만, 이 명령어를 사용할 경우 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.
사용자가 선택한 정보를 지정한 파일에 저장한다. 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에 설정된 값을 사용한다.
|
filename | 저장할 파일 이름이다. |
예제
SQL> SAVE CREDENTIAL SQL> SAVE CREDENTIAL "./wallet.dat" SQL> SAVE HISTORY history.sql SQL> SAVE HISTORY history.sql APPEND
tbSQL 유틸리티의 시스템 변수를 설정한다. SET 명령어로 설정된 시스템 변수는 SHOW 명령어를 사용하여 출력한다. 단, 변경된 시스템 변수는 현재 세션 내에서만 유효하다. 각각의 시스템 변수에 대해서는 “1.3. 시스템 변수”에서 구체적으로 설명한다.
SET 명령어의 세부 내용은 다음과 같다.
문법
SET {parameter} {value}
항목 | 설명 |
---|---|
parameter | tbSQL 유틸리티 시스템 변수의 이름이다. |
value | tbSQL 유틸리티 시스템 변수의 값이다. |
예제
SQL> SET AUTOCOMMIT ON
tbSQL 유틸리티의 시스템 변수를 출력한다. 출력할 정보를 파라미터를 사용하여 선택할 수 있으며, 모든 정보를 출력할 수 있다.
SHOW 명령어의 세부 내용은 다음과 같다.
문법
SHO[W] {option}
옵션
다음은 option에 입력할 수 있는 항목에 대한 설명이다.
항목 | 설명 |
---|---|
system_parameter | 주어진 이름에 해당하는 tbSQL 유틸리티의 시스템 변수를 출력한다. |
ALL | 모든 tbSQL 유틸리티 시스템 변수를 출력한다. |
ERROR | 앞서 발생한 PSM 프로그램의 에러를 출력한다. |
PARAM[ETERS] [name] | 주어진 이름에 해당하는 데이터베이스 시스템 변수를 출력한다. 단, 이름이 생략될 경우에는 모든 시스템 변수를 출력한다. |
RELEASE | tbSQL 유틸리티의 릴리즈 정보를 출력한다. |
SQLCODE | 가장 최근에 수행한 SQL에 대한 SQLCODE를 출력한다. |
예제
SQL> SHOW autocommit SQL> SHOW all SQL> SHOW error SQL> SHOW param db_name SQL> SHOW release SQL> SHOW SQLCODE
화면에 출력되는 모든 내용에 대해 현재 디렉터리 내 파일로 생성한다. 단, HOST 명령어와 ! 명령어의 결과는 제외된다.
SPOOL 명령어의 세부 내용은 다음과 같다.
문법
SP[OOL] [filename [APP[END]]|OFF]
항목 | 설명 |
---|---|
SPOOL 명령어만을 입력하면 SPOOL 명령어의 현재 실행 상태를 출력한다. | |
filename | 출력을 저장할 파일의 이름이다. |
APP[END] | 출력 파일의 끝에 이어붙일지 여부이다. |
OFF | 출력 파일의 저장을 중지한다. |
예제
SQL> SPOOL report.txt SQL> SPOOL OFF
Tibero 데이터베이스를 종료한다. 긴급성에 따라 종료 옵션을 선택할 수 있으며 옵션에 따라 데이터베이스를 재시동할 때 복구 과정이 필요할 수 있다.
이 명령어를 실행하려면 SYSDBA 또는 SYSOPER로 데이터베이스에 접속해야 한다.
TBDOWN 명령어의 세부 내용은 다음과 같다.
문법
TBDOWN [NORMAL|POST_TX|IMMEDIATE|ABORT]
항목 | 설명 |
---|---|
NORMAL | 현재 접속 중인 모든 사용자가 접속을 종료할 때까지 기다린 후 종료한다. (기본값) |
POST_TX | 현재 진행 중인 트랜잭션이 종료될 때까지 기다린 후 종료한다. |
IMMEDIATE | 현재 진행 중인 트랜잭션을 롤백한 후 강제 종료한다. |
ABORT | 현재 진행 중인 트랜잭션을 롤백하지 않고 즉시 종료한다. |
예제
SQL> TBDOWN SQL> TBDOWN ABORT
ACCEPT 명령어 등으로 정의된 치환 변수를 삭제한다.
UNDEFINE 명령어의 세부 내용은 다음과 같다.
문법
UNDEF[INE] [variable...]
항목 | 설명 |
---|---|
[variable...]를 생략할 경우 모든 치환 변수를 삭제한다. | |
variable... | 치환 변수 이름의 목록이다. |
예제
SQL> UNDEFINE x SQL> UNDEFINE x y z
PSM 프로그램이나 SQL 문장에서 사용할 수 있는 사용자가 정의한 바인드 변수를 선언한다.
VARIABLE 명령어의 세부 내용은 다음과 같다.
문법
VAR[IABLE] [variable [datatype]]
항목 | 설명 |
---|---|
VARIABLE 명령어만 사용할 때에는 전체 바인드 변수를 화면에 출력한다. | |
variable | 바인드 변수의 이름이다. |
datatype | 데이터 타입이다. 현재는 다음의 타입을 지원한다.
|
예제
SQL> VARIABLE x NUMBER
SQL> EXEC :x := 1;
PSM completed.
SQL> SELECT :x FROM DUAL;
:x
----------
1
1 row selected.
SQL>
오류가 발생한 경우 tbSQL의 동작을 정의한다.
WHENEVER 명령어의 세부 내용은 다음과 같다.
문법
WHENEVER {OSERROR|SQLERROR} {EXIT [SUCCESS|FAILURE|WARNING|n|variable|:variable] | CONTINUE [NONE|COMMIT|ROLLBACK]}
clause1
항목 | 설명 |
---|---|
OSERROR | tbSQL이 실행 중인 환경의 운영체제로부터 발생한 오류에 대해 지정한 동작을 수행한다. |
SQLERROR | SQL 문장을 수행하는 중에 발생한 오류에 대해 지정한 동작을 수행한다. 단, tbSQL에서 발생한 오류는 무시한다. |
clause2 (기본값: CONTINUE)
항목 | 설명 |
---|---|
EXIT | 오류가 발생할 때 프로그램을 종료한다. 반환 코드에 대한 정의는 EXIT 명령어를 참조한다. |
CONTINUE | 오류가 발생하더라도 계속 다음 명령을 수행한다.
|
예제
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 $
본 절에서는 tbSQL 유틸리티의 컬럼 포맷을 데이터 타입에 따라 설정하는 방법을 설명한다.
tbSQL 유틸리티의 컬럼 포맷은 이전 절에서 설명한 COLUMN 명령어를 통해 설정하고, COLUMN 명령어를 이용하여 출력한다.
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>
숫자형의 컬럼 포맷을 설정하는 세부 내용은 다음과 같다.
문법
COL[UMN] {col_name} FOR[MAT] {fmt_str}
입력 항목
항목 | 설명 |
---|---|
col_name | 컬럼 이름을 지정한다. |
fmt_str | 다음 표에서 설명한 컬럼 포맷을 지정한다. |
fmt_str 포맷
다음은 fmt_str에 지정할 수 있는 포맷이다.
포맷 | 설정 예 | 설명 |
---|---|---|
쉼표(,) | 9,999 | 주어진 위치에 쉽표(,)를 출력한다. |
점(.) | 9.999 | 정수 부분과 소수 부분을 분리하는 위치에 점(.)을 출력한다. |
$ | $9999 | $를 맨 앞에 출력한다. |
0 | 0999, 9990 | 0을 맨 앞이나 뒤에 출력한다. |
9 | 9999 | 주어진 자릿수만큼 숫자를 출력한다. |
B | B9999 | 정수 부분이 0일 경우 공백으로 치환한다. |
C | C9999 | 주어진 위치에 ISO currency symbol을 출력한다. |
D | 9D999 | 실수의 정수와 소수를 분리하기 위해 decimal 문자를 출력한다. |
EEEE | 9.99EEEE | 과학적 기수법에 의해 출력한다. |
G | 9G999 | 정수부분의 주어진 위치에 그룹 분리자를 출력한다. |
L | L9999 | 주어진 위치에 local currency symbol을 출력한다. |
MI | 9999MI | 음수 뒤에 마이너스 기호를 출력하고, 양수 뒤에 공백을 출력한다. |
PR | 9999PR | 음수인 경우에 '<'와 '>'로 감싸서 출력하고, 양수인 경우에 양쪽에 공백을 출력한다. |
RN | RN | 대문자 로마숫자로 출력한다. |
rn | rn | 소문자 로마숫자로 출력한다. |
S | S9999, 9999S | 양수/음수 기호를 맨 앞이나 뒤에 출력한다. |
TM | TM | 가능한 작은 수를 출력한다. |
U | U9999 | 주어진 위치에 dual currency symbol을 출력한다. |
V | 99V999 | 10n만큼 곱한 값을 출력한다. 여기서 n은 V뒤에 오는 9의 개수이다. |
X | XXXX, xxxx | 16진수 형태로 출력한다. |
예제
SQL> COLUMN x FORMAT 999,999 SQL> SELECT 123456 x FROM DUAL; X -------- 123,456 1 row selected.