SQL*Plus

SQL*Plusとは、OracleデータベースをCUIで対話的に操作するコマンドである。MySQLにおけるMySQLモニタやPostgreSQLにおけるpsqlに相当する。SQL*Plusを起動するとコマンドプロンプトが表示され、SQL文を実行できる。

ACCEPT

1行の入力を読み取り、所定の置換変数に格納する。

ACC[EPT] var [type] [FOR[MAT] format] [DEF[AULT] default] [prompt] [HIDE]
var
読み取った値を格納する変数
SQL> ACCEPT password
type
データ型
データ型
説明
NUM[BER] 数値
CHAR 文字
DATE 日付
BINARY_FLOAT 32ビットの浮動小数点数
BINARY_DOUBLE 64ビットの浮動小数点数
SQL> ACCEPT password CHAR
prompt
プロンプトを表示するかどうか
プロンプト
説明
PROMPT text 指定した文字列をプロンプトとして表示する
NOPR[OMPT] プロンプトを表示しない
SQL> ACCEPT password PROMPT パスワードを入力してください
HIDE
入力した文字をエコーバックしない
SQL> ACCEPT password HIDE

APPEND

指定したテキストをSQLバッファ内のカレント行の終わりに追加する。

A[PPEND] text

ARCHIVE LOG

REDOログ・ファイルに関する情報を表示する。

ARCHIVE LOG LIST

ATTRIBUTE

オブジェクト型列の特定の表示特性を指定する。

ATTR[IBUTE] [type_name.attribute_name [option ...]]

BREAK

レポート内での変更位置および実行する書式設定のアクションを指定する。

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

BTITLE

各レポート・ページの下部に、指定したタイトルを配置して書式設定する。または、現行のBTITLE定義を表示する。

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

CHANGE

バッファ内のカレント行で最初に一致した文字列を変更する。

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

CLEAR

指定したオプションの現行の値または設定をリセットまたは消去する。

CL[EAR] option ...

環境変数ORACLE_HOMEの設定

環境変数ORACLE_HOMEが設定されていないと、「指定された接続識別子を解決できませんでした」と表示され、接続に失敗する。

C:\> sqlplus user/password@setservice

ERROR:
ORA-12154: TNS: 指定された接続識別子を解決できませんでした

C:\> SET ORACLE_HOME=C:\app\user\product\11.2.0\client_1
C:\> sqlplus user/password@setservice

Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
に接続されました。
SQL>

文字化け

Oracle SQL*Plusで日本語を正しく表示するために、NLS_LANGを設定する必要がある。NLS_LANGが適正に設定されていないと、Oracle SQL*Plusが文字化けする。

Linuxの場合、NLS_LANGはシェルの環境変数として設定する。Windowsの場合、NLS_LANGはレジストリで設定するが、環境変数として設定することもできる。

NLS_LANGには、クライアント環境がサポートしているキャラクタセットを設定する。

NLS_LANG
NLS_LANG 説明
JAPANESE_JAPAN.AL32UTF8 UTF-8
JAPANESE_JAPAN.JA16SJIS Shift JIS
JAPANESE_JAPAN.JA16SJISTILDE Shift JIS ※チルダ(~)が文字化けしない
JAPANESE_JAPAN.JA16EUC EUC

SQLコマンドは複数行に渡って記述することができます。そのため、Enterキーを押しても改行されるだけで、SQLコマンドの入力は完了しません。SQLコマンドの入力を完了するには、末尾にセミコロン記号 (;) を付けるか、最後の行にスラッシュ記号 (/) だけを入力します。

SQL> SELECT *
2  FROM 従業員表;

番号 氏名
---- ----------
0001 梅田えりか
0002 矢島舞美

2行が選択されました。

SQL>
SQL> select *
2  from 従業員表
3  /

番号 氏名
---- ----------
0001 梅田えりか
0002 矢島舞美

2行が選択されました。

SQL>

sqlplusコマンド一覧

SQL*Plusを起動した後は、次の表に示すサブコマンドを入力して、対話的にデータベースを操作する。SQL*Plusコマンドは一部を除き、SQL Developerでも使用できる。

sqlplusコマンド一覧
コマンド 説明
/ 直前に実行したコマンドを再度実行する。
@ スクリプトを実行する。
@@ スクリプトを実行する。スクリプトを呼び出しているパスと同じパスを検索する。
COLUMN 列の表示属性を指定する。
CONNECT Oracleデータベースに接続する。
DEFINE ユーザ変数又は事前定義変数を表示・設定する。
DESCRIBE データベースオブジェクトの定義を表示する。
DISCONNECT Oracleデータベースと切断する。
EXECUTE PL/SQL文を実行する。
EXIT SQL*Plusを終了する。
HELP SQL*Plusの使い方を出力する。
HOST OSコマンドを実行する。
PRINT バインド変数の値を表示する。
PROMPT 指定したメッセージを画面に表示する。
QUIT SQL*Plusを終了する。
SET 変数を設定する。
SHOW 変数または環境を出力する。
SHUTDOWN Oracleデータベースを停止する。
SPOOL 出力をスプールする。
START SQLファイルを実行する。
STARTUP Oracleデータベースを起動する。
WHENEVER エラー発生時のSQL*Plusの動作を変更する。
VARIABLE PL/SQL及びSQL*Plusで参照できるバインド変数を宣言する。

SQL*Plus の終了

SQL*Plusを終了するには EXIT または QUIT と入力します。

{EXIT | QUIT} [SUCCESS | FAILURE | WARNING | n | variable | :bind-variable] [COMMIT | ROLLBACK]
SUCCESS
SQL*Plusの終了コードとして0を戻す。(デフォルト)
FAILURE
SQL*Plusの終了コードとして1を戻す。
SQL> exit failure
WARNING
SQL*Plusの終了コードとして2を戻す。
SQL> exit warning
n
SQL*Plusの終了コードを表す数値を指定する。
SQL> exit 1
variable
SQL*Plusの終了コードを表す変数を指定する。
: bind-variable
SQL*Plusの終了コードを表すバインド変数を指定する。
COMMIT
トランザクションをコミットしてからSQL*Plusを終了する。(デフォルト)
ROLLBACK
トランザクションをロールバックしてからSQL*Plusを終了する。
SQL> exit rollback
SQL> quit
$

Oracleデータベースと切断する

Oracleデータベースと切断するには、DISCONNECT(省略形はDISC)コマンドを使用する。DISCONNECTコマンドで明示的にOracleデータベースとの接続を切断しなくても、SQL*Plusを終了すると自動的にOracleデータベースと切断される。

DISC[ONNECT]

Oracleデータベースと切断する例を以下に示す。

SQL> disconnect
SQL> disconnec
SQL> disconne
SQL> disconn
SQL> discon
SQL> disco
SQL> disc

SQL*Plusコマンドのヘルプを表示する

SQL*Plusコマンドのヘルプを表示するには、HELP(省略形は?)コマンドを使用する。

{HELP | ?} [topic]

SQL*Plusのヘルプを表示する例を以下に示す。

SQL> help
SQL> ?

startupコマンドのヘルプを表示する例を以下に示す。

SQL> help startup
SQL> ? startup

OSのコマンドを実行する

SQL*Plusを終了させずにOSのコマンドを実行するには、HOST(省略形はHO)コマンドを使用する。

HO[ST] command
command
実行するOSのコマンド

Linuxlsコマンドを実行する例を次に示す。

SQL> host ls
SQL> hos ls
SQL> ho ls

データベースを起動する

データベースを起動するには、STARTUP コマンドを使用します。

STARTUP [ FORCE ] [ RESTRICT ]
[ PFILE=パラメータ・ファイルのパス ]
[ QUIET ]
[ MOUNT [dbname] | OPEN [open_options] [dbname] | NOMOUNT ]
FORCE
強制的にデータベースを起動します
RESTRICT
データベースを起動したユーザのみデータベースを使用できるよう制限します
MOUNT
データベースを起動してマウントしますが、オープンしません
NOMOUNT
データベースを起動しますが、マウントしません

Oracle Databaseのパッチセットをインストールした場合、データベースのアップグレードが必要な場合があります。その際はアップグレード・オプションを指定してデータベースを起動します。

STARTUP [PFILE=パラメータ・ファイルのパス] {UPGRADE|DOWNGRADE} [QUIET]
SQL> startup
ORACLEインスタンスが起動しました。
Total System Global Area  5133828096 bytes
Fixed Size                   2036016 bytes
Variable Size              973082320 bytes
Database Buffers           413972352 bytes
Redo Buffers                13737408 bytes
データベースがマウントされました。
データベースがオープンされました。
SQL>

データベースを停止する

データベースを停止するには、SHUTDOWN コマンドを使用します。

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

オプションを省略したときは、 NORMAL を指定したときと同じ動作になります。各オプションの違いを次に示します。

ABORT
ユーザーやプロセスがデータベースから切断するのを待たず、即座に停止します。処理中のトランザクションはロールバックされないため、データに不整合が生じることがあります。
SQL> shutdown abort
IMMEDIATE
ユーザーやプロセスがデータベースから切断するのを待たず、即座に停止します。処理中のトランザクションはロールバックされます。
SQL> shutdown immediate
NORMAL
すべてのユーザーやプロセスがデータベースから切断するのを待ちます。
TRANSACTIONAL
ユーザーやプロセスがデータベースから切断するのを待ちませんが、すべてのトランザクションが終了するまで待ちます。
SQL> shutdown

直前に実行したSQL文を再実行する

「/」は直前に実行したSQL文を再実行するSQL*Plusコマンドである。再実行できるのはSQL文のみであり、SQL*Plusコマンドは再実行の対象とならない。

/

SQL> SHOW SPOOL
spool OFF
SQL> /
SP2-0103: SQLバッファ内に実行対象がありません。
SQL> SELECT * FROM DUAL;

D
-
X

SQL> /

D
-
X

SQL>

PROMPT

PROMPT(省略形はPRO)は、指定したメッセージを画面に表示するSQL*Plusコマンドである。

指定したメッセージを画面に表示する。

PRO[MPT] [text]
text
画面に表示するテキストを指定する。text を省略した場合は、空白行を表示する。

テキストを画面に表示する例を以下に示す。

SQL> prompt Please enter
SQL> promp Please enter
SQL> prom Please enter
SQL> pro Please enter

空白行を画面に表示する例を以下に示す。

SQL> prompt

エラー発生時のSQL*Plusの動作を変更する

SQLコマンド又はOSのエラーが発生した場合、SQL*Plusは終了する。エラー発生時のSQL*Plusの動作はWHENEVER文で変更することができる。

WHENEVER {SQLERROR | OSERROR} EXIT code [COMMIT | ROLLBACK]
WHENEVER {SQLERROR | OSERROR} CONTINUE [COMMIT | ROLLBACK | NONE]
SQLERROR
SQLコマンド又はPL/SQLブロックでエラーが発生した場合のSQL*Plusの動作を変更する。
OSERROR
オペレーティングシステムでエラーが発生した場合のSQL*Plusの動作を変更する。
EXIT
エラーが発生した場合、SQL*Plusを終了させる。パラメータについては「SQL*Plus の終了」を参照。
CONTINUE
エラーが発生した場合でも、SQL*Plusの処理を継続させる。
COMMIT
SQL*Plusを終了又は継続させる前に、トランザクションをコミットする。
ROLLBACK
SQL*Plusを終了又は継続させる前に、トランザクションをロールバックさせる。
NONE
SQL*Plusを継続させる際、トランザクションのコミット及びロールバックは行わない。