SQL*Plusとは、OracleデータベースでSQLを対話的に実行するプログラムです。

スポンサーリンク

環境変数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>

NLS_LANGの設定

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

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

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

NLS_LANG
NLS_LANG 説明
Japanese_Japan.AL32UTF8 UTF-8
Japanese_Japan.JA16SJIS 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を戻す。
WARNING
SQL*Plusの終了コードとして2を戻す。
n
SQL*Plusの終了コードを表す数値を指定する。
variable
SQL*Plusの終了コードを表す変数を指定する。
: bind-variable
SQL*Plusの終了コードを表すバインド変数を指定する。
COMMIT
トランザクションをコミットしてからSQL*Plusを終了する。(デフォルト)
ROLLBACK
トランザクションをロールバックしてからSQL*Plusを終了する。
 SQL> quit
 $
 

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

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

DISC[ONNECT]

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

SQL> disconnect

データベースを起動する

データベースを起動するには、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
ユーザーやプロセスがデータベースから切断するのを待たず、即座に停止します。処理中のトランザクションはロールバックされないため、データに不整合が生じることがあります。
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コマンドである。

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

PROMPT text
PRO text
text

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

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

PROMPT
PRO

OSコマンドを実行する

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

ho[st] OSコマンド
    

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

SQL*Plusコマンドのヘルプを表示するには、HELPコマンドを使用します。

{ HELP | ? } [トピック]

STARTUPコマンドのヘルプを表示する例を次に示します。

SQL> help startup

エラー発生時の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を継続させる際、トランザクションのコミット及びロールバックは行わない。
スポンサーリンク