Oracle SQL*Plusとは?基本や利用できるコマンドや使い方について

 2021.08.17  株式会社システムインテグレータ

Oracle Databaseは世界的シェアを持つリレーショナルデータベース管理システムであり、「Oracle SQL*Plus」はOracle Databeseに付属しているソフトです。本記事では、SQL*Plusの概要や利用できるコマンド、使い方、接続方法について解説します。

Oracle SQL*Plusとは

Oracle SQL*Plusとは?基本や利用できるコマンドや使い方について 1

「Oracle SQL*Plus(以下SQL*Plus)」とは、Oracle DatabaseのSQLを実行するためのユーティリティーソフトで、クライアントツールとして標準装備されています。Oracle社が提供するデータベース管理システムであり、オペレーティングシステム(OS)のコマンドラインを使用して、即座に実行できるようインターフェイスで対話的に操作できるのが特徴です。データベース管理者(DBA:Database Administrator)がOracle Databaseを管理する際に使用するほか、データベース開発者が使うことも可能です。 

Oracle Database管理の基本ツール

現在、データベースを使いやすく操作するために、GUI(Graphical User Interface)ツールのさまざまなフリーソフトが登場しています。Oracle Databaseのほかにも、代表的なデータベースであるMySQLやPostgreSQLに特化したフリーソフトもあります。Oracle Databaseも含めMySQL/PostgreSQL/Microsoft SQL Serverなど、さまざまなデータベースにフリーツールで接続することも可能です。その中でもSQL*Plusは、本家Oracle社が提供するOracle Database管理の基本ツールであり、SQLを使いこなすために押さえておく必要があります。  

Oracle SQL*Plusでできること

SQL*Plusでは、データベースのプログラミング言語SQLによるコマンドや、PL/SQLサブプログラムの入力・実行・編集・格納・抽出が行えます。テーブルからデータを読み込み、追加したり上書きしたり、データベースの構造や設定を変更したり、データベース管理システムを起動・停止するなど全般的な管理が可能です。そのほか、問い合わせ結果の書式設定や計算の実行、データの処理速度を最適化するためのスプール、印刷、Webへの表示、データベース間のデータアクセスやコピー、キャラクタベースのレポート簡易作成機能などがあります。 

PL/SQLとは

Oracle Databaseのリレーショナルデータベース管理システム(RDBMS)に、情報の登録や検索を行うためのコマンド言語が「SQL(Structured Query Language)」です。SQLには主に、以下の3種類があります。 
 
・情報を定義するDDL(Data Definition Language) 
・情報を操作するDML(Data Manipulation Language) 
・情報操作を制御するDCL(Data Control Language) 
 
PL/SQL(Procedure Language/Structured Query Language)は、Oracle社が開発した独自の手続き型プログラミング言語です。非手続き型言語であるSQLを拡張したもので、簡易なプログラムをその場で入力・実行するなど、SQL単体では行えない一連の手続き処理を実行できる特徴があります。たとえば、特定のSQLを指定回数で繰り返し実行したり、テーブルから抽出したデータをもとにレコード更新の実行を判断したりするなどが可能です。 
 
PL/SQLはSQLとの親和性が高く、一緒に処理を行えるため、ネットワークトラフィックを削減し、処理を効率化することでパフォーマンスの向上が期待できます。また、ハードウェアやプラットフォームに依存しないため移植性に優れ、プログラムをデータベースに格納し、必要なときに呼び出すことも可能です。 

SQL*Plusで利用できるコマンド一覧

Oracle SQL*Plusとは?基本や利用できるコマンドや使い方について 2

ここでは、SQL*Plusで利用できるコマンド一覧と、それぞれの内容について見ていきましょう。SQL*Plusのコマンドには、主に「SQLコマンドの実行」「PL/SQLブロックの実行」「SQL*Plusコマンド」「問い合わせ結果の書式設定」「オプションパラメータの設定」などがあります。コマンド全体を整理して見やすいように、記号と頭文字のアルファベット順に4つに分類してご紹介します。 

記号

・@(アットマーク) 
ローカル・ファイル・システムまたはWebサーバーからコールされた指定プログラムのSQL*Plusテキストを実行します。 
 
・@@(二重アットマーク) 
プログラムの実行コマンドで、@(アットマーク)と同様です。プログラムをコールするパスと同じパス内に指定プログラムを検索するため、入れ子状態になっているプログラムを実行するときに最適です。 
 
・@?(アットマーク・クエスチョン) 
指定プログラムのSQL*Plus文を実行するコマンドです。「@?PRINTRPT」や「@?WKRPT.QRY」といった具合に使用します。 
 
・n 
今、参照しているデータのレコード(行)をnにするときに使用します。 
 
・/(スラッシュ) 
最後に実行したSQLコマンドまたはSQLバッファ領域に格納されている、PL/SQLブロックを実行します。

A~C

・ACCEPT 
任意のメッセージを表示し、ユーザーが入力した1行を読み取り、所定の置換変数に格納します。 
 
・APPEND 
所定テキストをバッファ領域内で参照しているデータのレコード(行)の最後に追加します。 
 
・ARCHIVE LOG 
一つひとつの更新履歴ファイルに関する情報を表示します。 
 
・ATTRIBUTE 
オブジェクト型のカラム(列)の特定属性を表示特性で指定します。1つまたはすべての属性で、現在の表示特性の表示が可能です。 
 
・BREAK 
作成したレポート内で書式設定の変更場所と方法を特定し、既定のブレーク定義を表示します。 
 
・BTITLE 
それぞれのレポートやページの下部に所定タイトルを配置し、書式を設定したり、既定の定義を表示したりします。 
 
・CHANGE 
SQLバッファ領域内で参照しているレコード(行)のうち、最初に一致したテキストを変更します。 
 
・CLEAR 
画面やバッファ領域、BREAKの書式、タイマーなどの既存の値や設定をリセットしたり、消去したりします。 
 
・COLUMN 
特定のカラム(列)の表示特性を指定し、1つまたはすべてのカラムで表示特性を表示します。 
 
・COMPUTE 
選択したレコード(行)に定義したサブセットで、さまざまな標準計算方法を使用し、サマリー行を計算・出力。COMPUTE定義をすべて表示します。 
 
・CONNECT 
指定したユーザーネームでOracle Databaseに接続するコマンドです。 
 
・COPY 
問い合わせ内容から同じデータベース内、または別の場所のテーブルにその結果をコピーします。 

D~P

・DEFINE 
置換変数を特定し、その変数に1文字を格納するCHAR型で値を割り当てたり、1つまたはすべての変数の値や変数型を表示したりします。 
 
・DEL 
バッファ領域内で1つ以上のレコード(行)を削除します。 
 
・DESCRIBE 
指定したテーブルやビュー、またはスキーマ/非スキーマオブジェクトのカラム(列)定義を表示したり、特定のファンクションや手続きの仕様を表示したりします。 
 
・DISCONNECT 
データベースで保留している変更を確定し、現在アクセスしているユーザーをOracle Databaseからログアウトします。SQL*Plusの使用は継続します。 
 
・EDIT 
所定ファイルまたはバッファ領域の内容を対象に、オペレーティングシステムのテキストエディタのアプリケーションを起動し、編集します。 
 
・EXCUTE 
PL/SQLのサブプログラムおよびブロックを実行します。 
 
・EXIT 
データベース管理システムのSQL*Plusを終了し、ハードウェアのオペレーティングシステムで制御を行うようにします。 
 
・GET 
オペレーティングシステムのファイルの内容を、SQLバッファ領域のメモリ上に読み込ませて記録します。 
 
・HELP 
SQL*Plusのオンライン・コマンドヘルプにアクセスします。 
 
・HOST 
SQL*Plusを終了せず、シェルを使用したオペレーティング・システム・コマンドを実行します。 
 
・INPUT 
SQLバッファ領域内の参照しているレコード(行)の後ろに、新しいレコードを1つ以上追加します。 
 
・LIST 
SQLバッファ領域内の1つ以上のレコード(行)を表示します。 
 
・PASSWORD 
入力デバイスにエコー表示することなくパスワードを変更します。 
 
・PAUSE 
ユーザーが「Return」を押すまで、処理を一時停止します。 
 
・PRINT 
バインド変数の現在の値を出力します。 
 
・PROMPT 
所定のメッセージをユーザーの画面に表示します。 

R~S

・RECOVER 
テーブル領域やデータファイルを1つ以上、またはデータベース全体のリカバリを実行します。 
 
・REMARK 
プログラム内でコメントを開始します。 
 
・REPFOOTER 
レポート・フッターの配置と書式設定、既定のREPFOOTER定義を表示します。 
 
・REPHEADER 
レポート・ヘッダーの配置と書式設定、既定のREPHEADER定義を表示します。 
 
・RUN 
SQLバッファ領域内のSQLまたはPL/SQLブロックを表示し、実行します。 
 
・SAVE 
SQLバッファ領域の内容をシステムファイルに保存します。 
 
・SET 
SQL*Plus環境を変更するシステム変数を設定します。 
 
・SHOW 
メモリやシステム変数、初期化パラメータなど、既定のSQL*Plus環境を表示します。 
 
・SHUTDOWN 
実行中のOracle Databaseインスタンスを停止します。 
 
・SPOOL 
問い合わせの結果をシステムファイルに格納し、必要なときにプリンタに送信します。 
 
・START 
ローカルファイルやWebサーバーからSQL*Plusコマンドでコールされた、所定ファイルのSQL文を実行します。 
 
・STORE 
既定のSQL*Plus環境の属性を、オペレーディングシステムのファイルに保存します。 

T~X

・TIMING 
タイマーの設定、経過時間の記録や既定タイトルとデータ、アクティブなタイマー数の表示と解除を行います。 
 
・TTITLE 
レポート上部に所定タイトルの配置や書式設定、既定TTITLE定義を表示します。 
 
・UNDEFINE 
DEFINEを使用した定義、またはSTARTコマンドの引数を使用した定義1つ以上の置換変数を削除します。 
 
・VARIABLE 
PL/SQLで参照できるバインド変数を定義します。 
 
・WHENEVER OSERROR 
OSコマンドでエラーが発生した場合にSQL*Plus終了を実行します。 
 
・WHENEVER SQLERROR 
SQLまたはPL/SQLコマンドでエラーが発生した場合にSQL*Plus終了を実行します。 
 
・XQUERY 
XQUERY1.0テキストを実行するコマンドです。 

SQL*Plusの使い方

Oracle SQL*Plusとは?基本や利用できるコマンドや使い方について 3

ここでは、SQL*Plusの基本的な使い方をご紹介します。一連の流れがわかるように、「接続・起動」「コマンドの実行」「終了」の3ステップに分けて見ていきましょう。 

SQL*Plusで接続・起動

Windows OSの場合は、システムツール内にあるコマンドプロンプトを起動させ、sqlplusコマンドを入力します。ユーザー名とパスワード、「tnsnames.ora」に設定された接続文字列をそれぞれ指定し、sqlplusを起動します。たとえば「ユーザー:user0」「パスワード:pass0」「接続文字列:Orcl」の場合、「sqlplus user0/pass0@orcl」となります。データベース管理者がOracle Databaseを管理するには、SYSDBA権限で接続することが多く、その場合は「sqlplus / as sysdba」といった具合にユーザー名・パスワードを無視します。 
 
Windowsをはじめ、一部OSでは大文字・小文字の区別がないため、「SQLPLUS」と入力しても構いません。ユーザー名とパスワードを使用する場合は、「sqlplus」の後ろに半角スペースを空け、ユーザー名とパスワードの間にはスラッシュを入れます。 
 
なお、SQL*Plusの内部からログオンする場合は、「/nolog」という引数を使う必要があります。SQLを使用すると、カーソルの先頭に「SQL」と表示されるのでチェックしましょう。 

SQL、PL/SQLの実行

○SQLコマンドを実行してデータベースにアクセス 
SQL*PlusのコマンドプロンプトからSQLを入力します。入力の最後にセミコロン「;」、またはスラッシュ「/」を入力して改行するとSQLが実行されます。エンターキーだけでは改行のみで実行されません。単一レコード(行)や複数行の入力も可能です。 
 
○PL/SQLブロックの実行 
SQL*PlusのコマンドプロンプトからPL/SQLを入力します。最終レコード(行)にスラッシュ「/」を入力して改行すると、PL/SQLが実行されます。PL/SQLで定義済みの手続きを実行する場合は「CALL」、またはEXCUTEテキストを実行します。PL/SQLファンクションを実行する場合は「CALL9i」、またはEXCUTEテキストを実行してください。 

SQL*Plusの終了

基本的には、「SQL>」のコマンドプロンプトから「exit」を入力して終了します。そのほか、「exit」の後ろに「rollback」を指定すると、トランザクションのロールバック後に終了します。ユーザー接続だけログオフする場合は、「disconnect」を選択します。 

SQL*Plusの接続方法

SQL*Plusの接続方法にはいくつか種類があります。以下では、そのうち「リモートマシン」「ネット・サービス名」「接続文字列以外」を用いた接続方法をご紹介します。 

リモートマシンからSQL*Plusに接続・起動する方法

リモートクライアントからSQL*Plusに接続・起動するためには、Oracle クライアント・ソフトウェア相当が必要ですが、データベースサーバーにすでに搭載されているため、インストールの必要はありません。 
 
リモートクライアントからの接続は、「Oracle Net Service」を経由する点がローカル接続と異なります。省略した接続識別子を使用する簡易接続ネーミングによる接続は、パスワードを記載しない場合、パスワード入力を要求されます。パスワード入力を省略する場合はダブルクォーテーションで括り、エスケープする必要があります。指定したユーザーネームで接続する「connect」で実行する場合、エスケープは不要です。 

ネット・サービス名からSQL*Plusに接続・起動する方法

こちらはローカル・ネーミングを使用して、SQL*Plusに接続・起動する方法です。データベース「tnsnames.ora」との接続文字列を管理した定義ファイルに格納されているネット・サービス名を利用し、ログインします。 

接続文字列以外でSQL*Plusに接続・起動する方法

接続文字列以外では、IPアドレスとインスタンス識別子「SID」での接続が可能です。たとえば「IP:182.166.2.20」「SID:file_db」「ユーザー名:user00」「パスワード:pass00」で接続する場合は、「sqlplus user00/pass00@182.166.2.20/file_db」と入力します。 

まとめ

今回は、Oracle Database管理の基本ツールであるOracle SQL*Plusの概要やコマンド一覧、使い方、接続方法の種類について解説しました。SQL*Plusは、Oracle Databaseの運用・管理を快適にするうえで押さえておきたいツールなので、ひと通りの基礎知識は備えておきましょう。

 


RELATED POST関連記事


RECENT POST「【DB入門】Oracle」の最新記事


【DB入門】Oracle

PL/SQL入門 ~概要から変数や処理の書き方を解説~

【DB入門】Oracle

マテリアライズドビューとは?作成やリフレッシュ方法も解説

【DB入門】Oracle

SQL*Loaderとは?基本的な使い方からオプションまで解説

【DB入門】Oracle

Oracle Cloud Infrastructure(OCI)とは?メリットや成功事例を紹介!

Oracle SQL*Plusとは?基本や利用できるコマンドや使い方について
新規CTA