SQL*Plusとは、OracleデータベースをCUIで対話的に操作するコマンドである。MySQLにおけるMySQLモニタやPostgreSQLにおけるpsqlに相当する。SQL*Plusを起動するとコマンドプロンプトが表示され、SQL文を実行できる。
1行の入力を読み取り、所定の置換変数に格納する。
ACC[EPT] var [type] [FOR[MAT] format] [DEF[AULT] default] [prompt] [HIDE]
SQL> ACCEPT password
値 | 説明 |
---|---|
NUM[BER] | 数値 |
CHAR | 文字 |
DATE | 日付 |
BINARY_FLOAT | 32ビットの浮動小数点数 |
BINARY_DOUBLE | 64ビットの浮動小数点数 |
SQL> ACCEPT password CHAR
値 | 説明 |
---|---|
PROMPT text | 指定した文字列をプロンプトとして表示する |
NOPR[OMPT] | プロンプトを表示しない |
SQL> ACCEPT password PROMPT パスワードを入力してください
SQL> ACCEPT password HIDE
指定したテキストをSQLバッファ内のカレント行の終わりに追加する。
A[PPEND] text
REDOログ・ファイルに関する情報を表示する。
ARCHIVE LOG LIST
オブジェクト型列の特定の表示特性を指定する。
ATTR[IBUTE] [type_name.attribute_name [option ...]]
レポート内での変更位置および実行する書式設定のアクションを指定する。
BRE[AK] [ON report_element [action [action]]] ...
各レポート・ページの下部に、指定したタイトルを配置して書式設定する。または、現行のBTITLE定義を表示する。
BTI[TLE] [printspec [text | variable] ...] | [ON | OFF]
バッファ内のカレント行で最初に一致した文字列を変更する。
C[HANGE] sepchar old [sepchar [new [sepchar]]]
指定したオプションの現行の値または設定をリセットまたは消去する。
CL[EAR] option ...
環境変数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 | 説明 |
---|---|
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>
SQL*Plusを起動した後は、次の表に示すサブコマンドを入力して、対話的にデータベースを操作する。SQL*Plusコマンドは一部を除き、SQL Developerでも使用できる。
コマンド | 説明 |
---|---|
/ | 直前に実行したコマンドを再度実行する。 |
@ | スクリプトを実行する。 |
@@ | スクリプトを実行する。スクリプトを呼び出しているパスと同じパスを検索する。 |
COLUMN | 列の表示属性を指定する。 |
CONNECT | Oracleデータベースに接続する。 |
DEFINE | ユーザ変数又は事前定義変数を表示・設定する。 |
DESCRIBE | データベースオブジェクトの定義を表示する。 |
DISCONNECT | Oracleデータベースと切断する。 |
EXECUTE | PL/SQL文を実行する。 |
EXIT | SQL*Plusを終了する。 |
HELP | SQL*Plusの使い方を出力する。 |
HOST | OSコマンドを実行する。 |
バインド変数の値を表示する。 | |
PROMPT | 指定したメッセージを画面に表示する。 |
QUIT | SQL*Plusを終了する。 |
SET | 変数を設定する。 |
SHOW | 変数または環境を出力する。 |
SHUTDOWN | Oracleデータベースを停止する。 |
SPOOL | 出力をスプールする。 |
START | SQLファイルを実行する。 |
STARTUP | Oracleデータベースを起動する。 |
WHENEVER | エラー発生時のSQL*Plusの動作を変更する。 |
VARIABLE | PL/SQL及びSQL*Plusで参照できるバインド変数を宣言する。 |
SQL*Plusを終了するには EXIT または QUIT と入力します。
{EXIT | QUIT} [SUCCESS | FAILURE | WARNING | n | variable | :bind-variable] [COMMIT | ROLLBACK]
SQL> exit failure
SQL> exit warning
SQL> exit 1
SQL> exit rollback
SQL> quit
$
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コマンドのヘルプを表示するには、HELP(省略形は?)コマンドを使用する。
{HELP | ?} [topic]
SQL*Plusのヘルプを表示する例を以下に示す。
SQL> help
SQL> ?
startupコマンドのヘルプを表示する例を以下に示す。
SQL> help startup
SQL> ? startup
SQL*Plusを終了させずにOSのコマンドを実行するには、HOST(省略形はHO)コマンドを使用する。
HO[ST] command
SQL> host ls
SQL> hos ls
SQL> ho ls
データベースを起動するには、STARTUP コマンドを使用します。
STARTUP [ FORCE ] [ RESTRICT ]
[ PFILE=パラメータ・ファイルのパス ]
[ QUIET ]
[ MOUNT [dbname] | OPEN [open_options] [dbname] | 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 を指定したときと同じ動作になります。各オプションの違いを次に示します。
SQL> shutdown abort
SQL> shutdown immediate
SQL> shutdown
「/」は直前に実行した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(省略形はPRO)は、指定したメッセージを画面に表示するSQL*Plusコマンドである。
指定したメッセージを画面に表示する。
PRO[MPT] [text]
テキストを画面に表示する例を以下に示す。
SQL> prompt Please enter
SQL> promp Please enter
SQL> prom Please enter
SQL> pro Please enter
空白行を画面に表示する例を以下に示す。
SQL> prompt
SQLコマンド又はOSのエラーが発生した場合、SQL*Plusは終了する。エラー発生時のSQL*Plusの動作はWHENEVER文で変更することができる。
WHENEVER {SQLERROR | OSERROR} EXIT code [COMMIT | ROLLBACK]
WHENEVER {SQLERROR | OSERROR} CONTINUE [COMMIT | ROLLBACK | NONE]