Oracle Databaseは世界的シェアを持つリレーショナルデータベース管理システムであり、「Oracle SQL*Plus」はOracle Databeseに付属しているソフトです。本記事では、SQL*Plusの概要や利用できるコマンド、使い方、接続方法について解説します。
Oracle SQL*Plusとは
「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で利用できるコマンド一覧
ここでは、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の使い方
ここでは、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の運用・管理を快適にするうえで押さえておきたいツールなので、ひと通りの基礎知識は備えておきましょう。
- カテゴリ:
- キーワード: