Oracle SQLcl

 

1. SQLcl?

Oracle SQLcl (SQL Developer Command Line) 도구는 SQL * Plus의 Java 기반 대체 도구입니다.

2019년 12월 20일에 Release된 19.4 버전이 현재 최신버전입니다.

Oracle 12c R2 버전부터 Oracle Database에 탑재되었습니다.

SQLcl은 아래와 같은 특징을 가지고 있습니다.

 

1.1 In-Line 에디터

여러줄로 된 문장과 스크립트를 대화식으로 수정할 수 있습니다. MySQL이나 Postgres가 제공하는것 처럼 SQL 프롬프트내에서 커서 이동(←,↑,↓,→) 키를 이용해 sql 문장 작성중에도 원하는 곳으로 이동할 수 있습니다.

1.2 자동완성

Oracle Database 객체에 대한 자동 생성. 리눅스 Bash 쉘에서 tab 키를 누르면 PATH의 경로에 등록된 실행 명령어들이 자동완성 되듯이, SQL 프롬프트내에서 tab키를 통한 table 및 object들의 자동완성 기능을 지원합니다.

1.3 Command History

SQL 프롬프트에서 실행 했던 지난 쿼리들을 확인할 수 있습니다. History 커맨들을 이용해 100개까지 실행했던 쿼리 및 스크립트를 확인 가능하며, 다시 불러와서 실행시킬수 있습니다.

1.4 변경관리

Oracle Database 객체에 대한 자동 변경 로그 생성을 통한 기본 Liquibase 통합. Liguibase란 데이터베이스 변경관리를 체계적으로 자동화 해주는 오픈소스 (스키마 버전 관리) 입니다.

1.5 새로운 명령어

CTAS, DLL, Repeat, ALIAS, SCRIPT, FORMAT 등등 이보다 많은 새로운 명령어들이 추가되었습니다.

1.6 Client Side Scripting

자바 스크립트를 실행하여 쿼리 결과를 다룰수 있으며, 동적 명령 작성, 세션과의 상호 작용 등 자바를 직접사용할 수 있습니다.

1.7 SqlPlus 지원

sqlplus의 환경변수와 명령어, 그리고 동작을 지원합니다.

 

2. 설치 방법

12c R2 이상의 버전에는 기본적으로 탑재가 되어 있습니다. 하지만 최신 버전으로 업데이트 하기 위해서는 새로 설치 할 필요가 있습니다.

jdbc Driver를 사용하기 때문에 Oracle 클라이언트를 따로 설치할 필요가 없습니다.

12cR2, 19c를 설치해도, SQLcl버전은 19.1 버전이 기본이기 때문에 19.4 버전으로 업데이트가 필요 합니다. bin/sql lib 파일만 $ORACLE_HOME에 덮어 씌우면 동작합니다.

Windows 버전은 sql.exe를 클라이언트 홈 밑에 넣어 PATH와 JAVA_HOME을 잡아주면 됩니다.

2.1 설치

SQLcl을 기본적으로 Java를 필요로 합니다. openjdk도 사용가능합니다. (11버전 이상)

Download

 

2.1.1 Java 설치
# Install Java
wget <https://download.java.net/java/GA/jdk14.0.1/664493ef4a6946b186ff29eb326336a2/7/GPL/openjdk-14.0.1_linux-x64_bin.tar.gz>
mkdir ~/java
cd ~/java
tar -xvgf ../openjdk-14.0.1_linux-x64_bin.tar.gz
ln -s ./j* ./latest
2.1.2 Java 환경 변수 설정
export JAVA_HOME=${HOME}/java/latest
alias sql="${HOME}/sqlcl/bin/sql"
2.1.3 SQLcl 설치

SQLcl은 wget 말고 윈도우에서 직접 받아서 올립니다.

# Install SQLcl
cd ~/sqlcl
unzip -oq ../sqlcl-19.4.0.354.0937.zip

SQLcl 공홈에 있는 압축파일 그대로 올리면 CentOS 8에서 unzip으로 풀리지가 않습니다. Window에서 압출을 풀고 재압축해서 올리면 됩니다.

2.1.4 sql 접속
root@app-master:~/sqlcl/bin]# sql /nolog

SQLcl: Release 19.4 Production on Mon May 04 03:08:40 2020

Copyright (c) 1982, 2020, Oracle.  All rights reserved.

SQL>
2.1.5 TNS_AMDIN

EZ Connect 환경이라면

CONN scott/tiger@//myhost.example.com:1521/myservice

tnsnames.ora를 사용한다면 접속할 DB를 정의해 줍니다.

ora12c =
(DESCRIPTION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = ora12c)(PORT = 1521))
  (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = ora12c)
  )
)

환경변수에 TNS_ADMIN 추가

export TNS_ADMIN=${HOME}
2.1.6 TNS ping test
sql /nolog

SQLcl: Release 19.4 Production on Mon May 04 03:16:41 2020

Copyright (c) 1982, 2020, Oracle.  All rights reserved.

SQL> tnsping ora12c
 ping:94ms
2.1.7 SQLcl을 통한 Oracle DB 서버 접속
sql test/test01@ora12c

SQLcl: Release 19.4 Production on Mon May 04 03:18:35 2020

Copyright (c) 1982, 2020, Oracle.  All rights reserved.

Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL>

 

3. SQLcl 커맨드

3.1 새로 생긴 커맨드
  • ALIAS
  • APEX
  • BRIDGE
  • CD
  • CODESCAN
  • CTAS
  • DDL
  • FIND
  • FORMAT
  • HISTORY
  • INFORMATION
  • LB
  • LIQUIBASE
  • LOAD
  • NET
  • OERR
  • REPEAT
  • REST
  • SCRIPT
  • SODA
  • SSHTUNNEL
  • TNSPING
  • VAULT
  • WHICH

 

3.2 Alphabetic List of SQLcl Commands

@{url | file_name[.ext]} [arg ...]

지정된 스크립트에서 SQLcl 문을 실행합니다. 스크립트는 로컬 파일 시스템 또는 웹 서버에서 호출됩니다. sqlplus 처럼 sql에 접속한 경로에 있는 파일을 실행시키지 않습니다. 파일을 항상 절대 경로값으로 잡아줘야 합니다.

 

@@ { url | file_name[.ext] } [arg ...]

지정된 스크립트를 실행합니다. 이 명령은 @명령과 거의 동일합니다. 중첩된 스크립트가 실행될 때 유용하게 사용되므로 호출 스크립트와 동일한 URL 또는 경로에 있는 중첩된 스크립트를 찾는 기능이 추가되었습니다.

 

/ (slash)

가장 최근에 실행 했던 쿼리를 다시 실행시킵니다.

 

ACC[EPT] variable [NUM[BER] | CHAR | DATE | BINARY_FLOAT | BINARY_DOUBLE] [FOR[MAT] format] [DEF[AULT] default] [PROMPT text | NOPR[OMPT]] [HIDE]

입력 행을 읽고 지정된 대체 변수에 저장합니다.

 

ALIAS [<name>=<SQL statement>;| LOAD [<filename>]|SAVE [<filename>] | LIST [<NAME>] | DROP <name> | DESC <name> <Description String>]

alias 로 쿼리를 저장해서 읽어올 수 있습니다. bind 변수 처리나, PL/SQL을 alias 처리하는 것이 가능합니다.

1. SQL Example with Binds
  
  SQL> alias fred=select :one from dual;
  In this example, a bind variable can be set up in the alias.
  Running the alias is done like this below with any parameters
  to the alias being bound to a bind variable by SQLcl

  SQL> fred 1
  Command=fred
  :ONE
  ----
  >

2. PL/SQL example
  SQL> alias db= begin dbms_output.put_line('hi'); end;
  >  /
  Here the block of PLSQL is terminated by the '/' on a separate 
  line at which point it is accepted as a new alias.

  SQL> db
  Command=db
  PL/SQL procedure successfully completed.
  hi

 

APEX [export <application_id>]

apex-Application Express 응용 프로그램을 나열합니다.

apex export <app id> 파일에 쓰기 위해 스풀과 결합할 수 있는 응용 프로그램을 내보냅니다.

 

A[PPEND] text

SQL 버퍼에서 현재 행의 끝에 텍스트를 추가합니다.

 

ARCHIVE LOG LIST

아카이브의 사용 여부, 경로와 시퀀스 넘버를 확인합니다.

 

BRE[AK] [ON report_element [action [action]]] ...

보고서에서 변경이 발생하는 위치와 서식을 지정합니다.

수행 할 작업 (예 :

주어진 열에 대한 중복 값 표시 억제
주어진 열 값이 바뀔 때마다 줄을 건너 뜁니다.
주어진 열 값마다 계산 된 수치 인쇄

변경된 부분 또는 보고서의 끝부분.

현재 BREAK 정의를 나열하려면 절없이 BREAK를 입력하면 됩니다.

 

BRIDGE

주로 두 연결 / 스키마 간 데이터 이동을 스크립트하는 데 사용

또한 JDBC를 통해 수신되는 데이터에 “적합한”Oracle 테이블을 동적으로 작성하는 기능도 포함.

다음 기능을 사용할 수 있습니다

  1. 다른 연결의 쿼리 테이블
  2. 동일한 명령문에서 여러 연결의 쿼리 테이블
  3. 한 연결에서 다른 연결로 데이터 삽입
  4. 테이블을 생성하고 다른 연결에서 데이터를 테이블에 삽입
Syntax:
BRIDGE <targetTableName> as "<jdbcURL>"(<sqlQuery>);

Example:
BRIDGE table1 as "jdbc:oracle:thin:scott/tiger@localhost:1521:orcl"(select * from dept);
In the above example table1 is created in the current connection.
Table1 is defined using the metadata from the query run against the database connection defined using a SID.

Example:
BRIDGE table1 as "jdbc:oracle:thin:scott/tiger@localhost:1521/orcl"(select * from dept);
In the above example table1 is created in the current connection.
Table1 is defined using the metadata from the query run against the database connection defined using a Service Name.

The JDBC URL specified has to conform to the format defined by the driver.

BRIDGE new_table as "jdbc:oracle:thin:[USER/PASSWORD]@[HOST][:PORT]:SID"(select * from scott.emp);
BRIDGE new_table as "jdbc:oracle:thin:[USER/PASSWORD]@[HOST][:PORT]/SERVICE"(select * from scott.dept);

 

BTI[TLE] [printspec [text | variable] ...] | [ON | OFF]

각 보고서의 맨 아래에 지정된 제목을 배치하고 형식을 지정하거나 페이지 또는 현재 BTITLE 정의를 나열합니다.

 

CD [<directory>]

sql 프롬프트 안에서 os의 경로를 바꿀수 있습니다.

 

C[HANGE] sepchar old [sepchar [new [sepchar]]]

가장 최근의 SQL 버퍼 라인의 지정된 텍스트의 첫 항목을 변경합니다. 커맨드 히스토리에 남지 않으며 SQLcl 명령을 기록하지 않습니다.

 

CL[EAR] option ...

다음과 같은 옵션으로 여러가지 동작을 합니다.

  • BRE[AKS]
  • BUFF[ER]
  • COL[UMNS]
  • COMP[UTES]
  • CONTEXT
  • SCR[EEN]
  • SQL
  • TIMI[NG]

 

COL[UMN] [{column | expr} [option ...]]

주어진 열에 대한 표시 속성을 다음과 같이 지정합니다.

  • 열 머리글의 텍스트
  • 열 제목 정렬
  • NUMBER 데이터 형식
  • 열 데이터 래핑

단일 열 또는 모든 열의 현재 표시 속성도 나열합니다.

 

COMP[UTE] [function [LAB[EL] text] ... OF {expr | column | alias} ...ON {expr | column | alias | REPORT | ROW} ...]

BREAK 명령과 함께 다양한 표준 계산을 사용하여 요약 행을 계산하고 인쇄합니다. 모든 COMPUTE 정의도 나열합니다.

COMP[UTE] [function [LAB[EL] text] ...
OF {expr|column|alias} ...
ON {expr|column|alias|REPORT|ROW} ...]

 

CONN[ECT] [{<logon>| / |proxy} [AS {SYSOPER | SYSDBA | SYSASM}] [edition=value]]

주어진 사용자 이름을 Oracle Database에 연결합니다. CONNECT 명령을 실행하면 사이트 프로필 glogin.sql과 사용자 프로필 login.sql이 순서대로 처리됩니다. 초기 연결에 실패하면 CONNECT는 사용자 이름 또는 비밀번호를 표시하지 않습니다.

여기서 로그온의 구문은 다음과 같습니다.

username[/password][@connect_identifier]

프록시의 구문은 다음과 같습니다.

proxyuser[username][/password][@connect_identifier]

참고 : 프록시에서 사용자 이름을 괄호로 묶어야합니다.

 

CTAS table new_table

DBMS_METADATA를 사용하여 기존 테이블의 DDL을 추출합니다. create new_table as select * from 의 구문으로 추출합니다.

ctas table new_table

 

COPY {FROM database | TO database | FROM database TO database} {APPEND | CREATE | INSERT | REPLACE | APPEND_BYTE | CREATE_BYTE | REPLACE_BYTE} destination_table[(column, column, column, ...)] USING query

데이터베이스 간 및 동일한 데이터베이스의 테이블간에 CHAR, DATE, LONG, NUMBER 또는 VARCHAR2 데이터를 복사하는 COPY 명령 COPY 명령을 사용하면 다음 방법으로 데이터베이스간에 데이터를 복사 할 수 있습니다. 기본값은 CHAR입니다. varchar2 (1000 CHAR)) 및 LOB 지원합니다.

  • 원격 데이터베이스에서 로컬 데이터베이스로 데이터를 복사.
  • 로컬 (기본) 데이터베이스에서 원격 데이터베이스 (대부분의 시스템)로 데이터를 복사
  • 한 원격 데이터베이스에서 다른 원격 데이터베이스 (대부분의 시스템)로 데이터를 복사

일반적으로 COPY 명령은 Oracle과 Oracle 이외의 데이터베이스간에 데이터를 복사하는 데 사용되도록 설계되었습니다.

REPLACE, CREATE, INSERT 또는 APPEND의 네 가지 제어 절 중 하나를 입력하여 대상 테이블의 처리를 제어합니다.

  • REPLACE 절은 대상 데이터베이스에서 작성 될 테이블의 이름을 지정하고 다음 조치를 지정합니다.
    대상 테이블이 이미 존재하면 COPY는 기존 테이블을 삭제하고 복사 된 데이터가 포함 된 테이블로 바꿉니다.
    대상 테이블이 존재하지 않으면 COPY는 복사 된 데이터를 사용하여 작성합니다.
  • CREATE 절을 사용하여 기존 테이블을 실수로 덮어 쓰지 않도록 할 수 있습니다. CREATE는 다음 작업을 지정합니다.
    대상 테이블이 이미 존재하면 COPY는 오류를보고하고 중지합니다.
    목적지 테이블이 존재하지 않으면 COPY는 복사 된 데이터를 사용하여 테이블을 작성합니다.
  • INSERT를 사용하여 기존 테이블에 데이터를 삽입하십시오. INSERT는 다음 작업을 지정합니다.
    대상 테이블이 이미 존재하면 COPY는 복사 된 데이터를 대상 테이블에 삽입합니다.
    대상 테이블이 존재하지 않으면 COPY는 오류를보고하고 중지합니다.
  • 기존 테이블에 데이터를 삽입 할 때 APPEND를 사용하거나 대상 테이블이없는 경우 새 테이블을 작성하십시오. APPEND는 다음 조치를 지정합니다.
    대상 테이블이 이미 존재하면 COPY는 복사 된 데이터를 대상 테이블에 삽입합니다.
    테이블이 존재하지 않으면 COPY는 테이블을 작성한 후 복사 된 데이터를 테이블에 삽입합니다.

Remote DB에서 Local DB로 copy하는 예시

copy from hr/hr@ora12c create employees using select * from EMPLOYEES;
Array fetch/bind size is 15. (arraysize is 15)
Will commit when done. (copycommit is 0)
Maximum long size is 80. (long is 80)
Table EMPLOYEES created.
    107 rows selected from hr@ora12c.
    107 rows inserted into EMPLOYEES.
    107 rows committed into EMPLOYEES at DEFAULT HOST connection.

 

DDL [object_name [type] [SAVE filename]]

DDL은 나열된 개체를 재구성하는 코드를 생성합니다. 구체화 된 뷰에 유형 옵션을 사용하십시오. 저장 옵션을 사용하여 DDL을 파일에 저장할 수 있습니다.

 

DEL [n | n m | n * | n LAST | * | * n | * LAST | LAST]

SQL 버퍼의 하나 이상의 행을 삭제합니다. 버퍼에는 명령 히스토리 목록이 없으며 SQLcl 명령을 기록하지 않습니다.

 

DESC[RIBE] {[schema.]object[@connect_identifier]}

테이블, 뷰 또는 동의어에 대한 열 정의 또는 함수 또는 프로 시저에 대한 스펙을 나열합니다.

 

DISC[ONNECT]

보류중인 변경 사항을 데이터베이스에 커미트하고 현재 사용자를 Oracle에서 로그 아웃하지만 SQLcl을 종료하지는 않습니다.

SQLcl 명령 행에서 EXIT 또는 QUIT를 사용하여 Oracle에서 로그아웃하고 OS로 빠져나갑니다.

 

ED[IT] [file_name[.ext]]

지정된 파일의 내용이나 SQL 버퍼의 내용에서 운영 체제 텍스트 편집기를 호출합니다.

DEFINE 변수 _EDITOR를 사용하여 편집기를 사용하도록 설정할 수 있습니다.

SQLcl에서 _EDITOR를 “inline”으로 설정하면 편집기를 SQLcl 편집기로 설정합니다. SQLcl 편집기의 단축키는 아래와 같습니다.

  • ^ R-현재 버퍼를 실행
  • ^ W-버퍼 맨 위로 이동
  • ^ S-버퍼의 하단으로 이동
  • ^ A-줄의 시작으로 이동
  • ^ E-줄 끝으로 이동

 

EXEC[UTE] statement

단일 PL / SQL 문을 실행하거나 저장 프로 시저를 실행합니다.

 

{EXIT | QUIT} [SUCCESS | FAILURE | WARNING | n | variable | :BindVariable] [COMMIT | ROLLBACK]

보류중인 모든 변경 사항을 커밋하거나 롤백하고 Oracle에서 로그 아웃하며 SQLcl을 종료하고 운영 체제로 제어를 되돌립니다.

 

FIND [<filename>]

find는 SQLPATH에서 <filename>을 찾은 모든 위치를 나열하고 해당 경로 구조 내에서 모든 인스턴스를 찾습니다.

 

FORMAT [BUFFER | RULES <filename> | FILE <input_file> <output_file>]

  • FORMAT BUFFER – SQLcl 버퍼에서 스크립트를 형식화합니다.
  • FORMAT RULES <filename> – SQLDeveloper Formatter 규칙 파일을 포맷터로 로드합니다.
  • FORMAT FILE <input_file> <output_file>

Format은 기본값 또는 SQLcl에서 환경 변수를 설정하여 대해 선택할 수 있습니다. 포매터 옵션의 SQLDeveloper 내보내기 (.xml)를 가리키는 환경 변수를 설정하여 선택할 수 있습니다. 변수는 SQLFORMATPATH라고합니다. SQLDeveloper에서 형식 옵션은 기본 설정에서 선택된 기본값입니다.

 

GET [FILE] file_name[.ext] [LIST | NOLIST]

스크립트에서 SQL 버퍼로 SQL 문 또는 PL / SQL 블록을로드합니다. 버퍼에는 명령 히스토리 목록이 없으며 SQLcl 명령을 기록하지 않습니다.

 

HELP | ? [topic]

 

HISTORY [index | FULL | USAGE | SCRIPT | TIME | CLEAR (SESSION)?]

SQL>history full
  1  select 1 from dual;
  2  select 2
  >  from dual;
  3  select 3 from dual
  >  where 1=1;

SQL>history usage
  1  (2) select 1 from dual;
  2  (11) select 2 from dual;
  3  (2) select 3 from dual where 1=1;

SQL>history script
 select 1 from dual;
 select 2 from dual;
 select 3 from dual where 1=1;

SQL>history 3
  1  select 3 from dual
  2* where 1=1;

SQL>his time
  1           clear
  2           cl bre
  3  (00.201) select 1 from dual

 

HO[ST] [command]

SQL 프롬프트 내에서 OS 명령을 실행할 수 있습니다.

 

INFO[RMATION] {[schema.]object[@connect_identifier]}

해당 오브젝트의 모든 정보를 보여줍니다.

info EMPLOYEES;TABLE: EMPLOYEES
   LAST ANALYZED:2020-04-24 17:36:07.0
   ROWS         :107
   SAMPLE SIZE  :107
   INMEMORY     :DISABLED
   COMMENTS     :employees table. Contains 107 rows. References with departments,
                       jobs, job_history tables. Contains a self reference.

Columns
NAME             DATA TYPE           NULL  DEFAULT    COMMENTS
*EMPLOYEE_ID     NUMBER(6,0)         No               Primary key of employees table.
 FIRST_NAME      VARCHAR2(20 BYTE)   Yes              First name of the employee. A not null column.
 LAST_NAME       VARCHAR2(25 BYTE)   No               Last name of the employee. A not null column.
 EMAIL           VARCHAR2(25 BYTE)   No               Email id of the employee
 PHONE_NUMBER    VARCHAR2(20 BYTE)   Yes              Phone number of the employee; includes country
                                                      code and area code
 HIRE_DATE       DATE                No               Date when the employee started on this job. A not
                                                      null column.
 JOB_ID          VARCHAR2(10 BYTE)   No               Current job of the employee; foreign key to job_id
                                                      column of thejobs table. A not null column.
 SALARY          NUMBER(8,2)         Yes              Monthly salary of the employee. Must be
                                                      greaterthan zero (enforced by constraint
                                                      emp_salary_min)
 COMMISSION_PCT  NUMBER(2,2)         Yes              Commission percentage of the employee; Only
                                                      employees in salesdepartment elgible for
                                                      commission percentage
 MANAGER_ID      NUMBER(6,0)         Yes              Manager id of the employee; has same domain as
                                                      manager_id indepartments table. Foreign key to
                                                      employee_id column of employees table.(useful for
                                                      reflexive joins and CONNECT BY query)
 DEPARTMENT_ID   NUMBER(4,0)         Yes              Department id where employee works; foreign key to
                                                      department_idcolumn of the departments table

Indexes
             INDEX_NAME    UNIQUENESS    STATUS    FUNCIDX_STATUS                  COLUMNS
_______________________ _____________ _________ _________________ ________________________
HR.EMP_JOB_IX           NONUNIQUE     VALID                       JOB_ID
HR.EMP_NAME_IX          NONUNIQUE     VALID                       LAST_NAME, FIRST_NAME
HR.EMP_EMAIL_UK         UNIQUE        VALID                       EMAIL
HR.EMP_EMP_ID_PK        UNIQUE        VALID                       EMPLOYEE_ID
HR.EMP_MANAGER_IX       NONUNIQUE     VALID                       MANAGER_ID
HR.EMP_DEPARTMENT_IX    NONUNIQUE     VALID                       DEPARTMENT_ID

References
    TABLE_NAME    CONSTRAINT_NAME    DELETE_RULE     STATUS        DEFERRABLE    VALIDATED    GENERATED
______________ __________________ ______________ __________ _________________ ____________ ____________
DEPARTMENTS    DEPT_MGR_FK        NO ACTION      ENABLED    NOT DEFERRABLE    VALIDATED    USER NAME
EMPLOYEES      EMP_MANAGER_FK     NO ACTION      ENABLED    NOT DEFERRABLE    VALIDATED    USER NAME
JOB_HISTORY    JHIST_EMP_FK       NO ACTION      ENABLED    NOT DEFERRABLE    VALIDATED    USER NAME

 

I[NPUT] [text]

SQL 버퍼에서 현재 행 뒤에 하나 이상의 새 행 텍스트를 추가합니다. 버퍼에는 명령 히스토리 목록이 없으며 SQLcl 명령을 기록하지 않습니다.

 

L[IST] [n | n m | n * | n LAST | * | * n | * LAST | LAST]

SQL 버퍼에 저장된 가장 최근에 실행 된 SQL 명령 또는 PL/SQL 블록의 하나 이상의 행을 나열합니다. 모든 줄을 나열하려면 절없이 LIST를 입력하십시오. SQLcl 명령 줄에서 “;”을 사용할 수도 있습니다. SQL 버퍼의 모든 행을 나열합니다. 버퍼에는 명령 히스토리 목록이 없으며 SQLcl 명령을 기록하지 않습니다.

 

LOAD [schema.]table_name[@db_link] file_name

쉼표로 구분 된 값 (csv) 파일을 테이블에 로드합니다. 파일의 첫 번째 행은 헤더 행이어야합니다. 머리글 행의 열은 테이블에 정의 된 열과 일치해야 합니다.

열은 쉼표로 구분해야하며 선택적으로 큰 따옴표로 묶을 수 있습니다. 윈도우, 유닉스 또는 맥용 표준 라인 터미네이터로 라인을 종료 할 수 있습니다. 파일은 UTF8로 인코딩되어야합니다.

로드는 배치 당 50 행으로 처리됩니다. AUTOCOMMIT이 SQLcl에서 설정되면 commit은 10 개의 배치마다 수행됩니다. 50개 이상의 오류가 발견되면 로드가 종료됩니다.

 

OERR <facility> <error>

사용법: oerr facility error | oerr -v

기능은 오류 메시지에서 접두사 문자열로 식별됩니다. 예를 들어, ORA-7300을 얻는 경우 “ora”는 기능이고 “7300”은 오류입니다. 따라서 “oerr ora 7300″을 입력해야합니다.

tns-12533이 표시되면 “oerr tns 12533″등을 입력하십시오. (ora 및 tns 시설 만 해당) oerr -v는 Oracle Database 버전의 메시지 소스를 제공합니다.

 

PASSW[ORD] [username]

입력 장치에 암호를 표시하지 않고 암호를 변경할 수 있습니다.

 

PAU[SE] [text]

지정된 텍스트를 표시 한 다음 사용자가 RETURN을 누를 때까지 기다립니다.

 

PRINT [variable ...]

바인드 변수의 현재 값을 표시하거나 모든 바인드 변수를 나열합니다.

 

PRO[MPT] [text]

지정된 메시지 또는 빈 줄을 사용자 화면으로 보냅니다.

 

REM[ARK]

스크립트에서 주석을 시작합니다. SQLcl은 주석을 명령으로 해석하지 않습니다.

 

REPEAT <iterations> <sleep>

휴면 간격으로 지정된 시간을 버퍼에있는 현재 SQL을 반복합니다. 최대 휴면은 120 초입니다.

 

REST [export [<module_name> | <module_prefix>] | modules | privileges | schemas]

REST를 사용하면 ORDS 3.X 서비스를 내보낼 수 있습니다.

    REST export                  -	 All modules
    REST export <module_name>    -	 Export a specific module
    REST export <module_prefix>  -	 Export a specific module related to the given prefix
    REST modules                 -	 List the available modules
    REST privileges              -	 List the existing privileges
    REST schemas                 -	 List the available schemas

 

R[UN]

SQL 버퍼에 저장된 가장 최근에 실행 된 SQL 명령 또는 PL/SQL 블록을 나열하고 실행합니다. 버퍼에는 명령 히스토리 목록이 없으며 SQLcl 명령을 기록하지 않습니다.

 

SAV[E] [FILE] file_name[.ext] [CRE[ATE] | REP[LACE] | APP[END]]

SQL 버퍼의 내용을 스크립트에 저장합니다. 버퍼에는 명령 히스토리 목록이 없으며 SQLcl 명령을 기록하지 않습니다.

 

SCRIPT <script file>

 

SET system_variable value

현재 세션에 대한 SQLcl 환경 설정을 변경하도록 시스템 변수를 설정합니다.

예를 들면 다음과 같습니다.

  • 데이터의 표시 너비를 설정
  • HTML 형식을 사용자 정의
  • 열 머리글 인쇄 활성화 또는 비활성화
  • 페이지 당 줄 수 설정

system_variable value에 대한 자세한 내용은 help set를 조회하면 됩니다.

 

SHO[W] [option]

SQLcl 시스템 변수 또는 현재 SQLcl 환경의 값을 표시합니다. SHOW SGA에는 DBA 권한 로그인이 필요합니다.

 

SHUTDOWN [ABORT | IMMEDIATE | NORMAL | TRANSACTIONAL [LOCAL]]

DB를 종료합니다.

 

SODA

SODA는 JSON 데이터 모델을 사용하여 스키마 없는 애플리케이션 개발을 허용합니다.

 

SPO[OL] [filename[.ext] [CRE[ATE] | REP[LACE] | APP[END]] | OFF | OUT]

쿼리 결과를 파일로 저장하거나 선택적으로 파일을 프린터로 보냅니다.

 

SSHTUNNEL <username>@<hostname> -i <identity_file> [-LocalPort:Remotehost:RemotePort]

표준 ssh 옵션을 사용하여 터널을 만듭니다.

로컬 호스트에있는 주어진 포트의 옵션 -L과 같은 포트 포워딩과 같은 포트는 원격 호스트에있는 지정된 호스트와 포트로 전달됩니다.

또한 ssh -i 옵션을 사용하여 ID 파일을 지원합니다. 비밀번호가 필요한 경우 프롬프트가 표시됩니다.

 

STA[RT] { url | file_name[.ext] } [arg ...]

지정된 스크립트에서 SQLcl 문을 실행합니다. 로컬 파일 시스템 또는 웹 서버에서 스크립트를 호출 할 수 있습니다.

 

STARTUP db_options | cdb_options | upgrade_options

DB를 구동하는 명령입니다.

 

STORE {SET} file_name[.ext] [CRE[ATE] | REP[LACE] | APP[END]]

현재 SQLcl 환경의 속성을 스크립트에 저장합니다.

 

TNSPING <address>

TNSPING 명령을 사용합니다.

 

TTI[TLE] [printspec [text | variable] ...] | [ON | OFF]

각 보고서 페이지 상단에 제목을 배치하고 형식을 지정합니다. 현재 정의를 나열하려면 절 없이 TTITLE을 입력하십시오.

TTITLE의 이전 형식은 단일 단어나 따옴표로 묶은 문자열이 TTITLE 명령 뒤에 오는 경우에 사용됩니다.

 

UNDEF[INE] variable ...

DEFINE 명령으로 또는 START 명령 인수로 정의한 하나 이상의 대체 변수를 삭제합니다.

 

WHENEVER OSERROR {EXIT [SUCCESS | FAILURE | n | variable | :BindVariable] [COMMIT | OLLBACK] | CONTINUE[COMMIT | ROLLBACK | NONE]}

운영 체제 오류가 발생하면 지정된 조치를 수행합니다 (기본적으로 종료 됨).

 

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

SQL 명령 또는 PL/SQL 블록이 오류를 생성하면 지정된 조치를 수행합니다 (기본적으로 종료 됨).

 

WHICH <filename>

SQLPATH에서 찾은 첫 번째 <filename>을 나열합니다.

이 파일은 명령에서 사용해야하며 SQLPATH의 최상위 경로만 검색합니다.

 

XQUERY xquery_statement

지정된 데이터베이스에서 XQuery 1.0 쿼리를 수행합니다. Oracle Database 10g (릴리스 2) 이전의 데이터베이스에서 XQUERY를 사용하려고하면 오류가 발생합니다.

 

최근 보안을 이슈로 튜닝 업무나 오라클 작업을 터미널에서만 해야하는 경우도 종종 발생합니다. 3rd Party tool을 설치하지 못하게하는 경우가 제법 있지요.

SQLcl의 등장은 조금이나마 터미널을 통한 작업에 있어 많은 개선점을 가져올것이라고 봅니다.

 

You may also like...

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다