製品
ソリューション
顧客事例
サービス
ORACLE
基礎から始めるデータベース入門セミナー
「そもそもデータベースって何だろう?」
第13回 SQL*Plusを使ってみよう

「基礎から始めるデータベース入門セミナー」は、これまでデータベースに触れたことのない方や、オープンな環境で動くリレーショナル・データベースに携わった経験のない方、また営業の方を対象とした入門講座です。「そもそもデータベースって何だろう?」というところから始まり、リレーショナル・データベースのしくみとOracleデータベースのアーキテクチャを基本から学んでいきます。

今回で13回目、そろそろ「難しいなぁ」と思い始めた方も多いのではないでしょうか?そんなときは、あまり細かいことを気にせずに、下図の「Oracleデータベースの基本構造」に立ち返り、現在どの部分の説明をしているのかを把握すれば、わかりやすくなると思います。

さて、前回まではデータベース・サーバー側を中心に扱ってきました。今回は、クライアント側(ユーザープロセス側)について説明します。

Oracleデータベースの基本構造
Oracleデータベースの基本構造
CHAPTER 1 SQL*Plus

先生:最近はOracleにSQLを発行するためのさまざまなツールが出ていますが、昔からもっとも広く使われているのがSQL*Plusです。

SQL*Plusは、インストール時にデフォルトでインストールされます。従来はおもにSQL文の発行に使われてきましたが、Oracle9iからはsvrmgr(サーバーマネージャー)の代わりにOracleの起動や停止といった管理機能もSQL*Plusが受け持つようになりました。データベース管理者であれば当然、SQL*Plusを使う機会は多いと思いますが、開発者の方もぜひ覚えておいてください。

CHAPTER 2 3種類のインタフェース

先生:SQL*Plusには、3種類のインタフェースがあります。1つ目は、DOSコマンドプロンプトやUNIXのターミナル、またはTELNETからコマンドラインで起動するタイプ(図1)。2つ目は、Windowsのクライアントとして起動するタイプ(図2)。そして3つ目は、インターネット上にサーバーを立ててブラウザを使って表示するタイプ(iSQL*Plus=図3)です。

それぞれの起動方法は下記のとおりです:
1の場合 コマンドプロンプトより、$ORACLE_HOME/bin/sqlplus
2の場合 「Windowsスタートメニュー」⇒
3の場合 http://<ホスト名>:<ポート番号>/isqlplus
 ポート番号のデフォルトは5560

今回は一般的によく使われているコマンドライン起動を中心に説明しますが、今後は、クライアントに特別なソフトウェアをインストールする必要がなく、遠隔からのアクセスも簡単なiSQL*Plusが主流になっていくかもしれません。

図1
図1:SQL*Plus(コマンドライン)
図2
図2:SQL*Plus(Windowsクライアント)
図3
図3:iSQL*Plus
CHAPTER 3 SQL*PLusの実行

先生:SQL*PLusを起動すると、ユーザー名、パスワード、接続文字列の入力を要求されます。接続文字列に関しては、まだ本セミナーでは説明していませんが、またの機会に紹介したいと思います。現段階では、便宜的に接続するデータベースの宛名、という程度で覚えておいてください。

さて、ログインが完了すると、いくつかのメッセージのあと
SQL>
というプロンプトが出てきます。このプロンプトに続いて、コマンドを実行します。
例)
SQL> SELECT * FROM emp;
すると、実行結果が返ってきます。

例にあるように、短いSQLの場合は再入力できますが、長いSQLの場合は大変です。そのような場合は、SQLを実行してからSAVEコマンドで保存し、GETコマンドで再取得します。
SQL> SAVE(GET) <ファイル名>
例)
SQL> save emp.sql
Created file emp.sql
SQL> get emp.sql
1* select * from emp

また、事前にSQL文をテキストファイルに準備しておき、SQL*Plusから実行することも可能です。その場合は、
@<パス名>
と指定することで、テキストファイル内に書かれているSQLどおりに実行されます。

生徒:SQLを実行すると、各列が長すぎたり短すぎたりして、見づらいことがあります。

先生:そのような場合は、
SQL> COL <カラム名> FOR <フォーマット>;
と入力すれば、列表示のフォーマットが調節できます。
また、
SQL> COL job FOR a20;
とすることで、調整をおこなえます。

生徒:SQLの実行結果がとても長く、実行履歴をとりたい場合はどうすればよいのでしょうか?

先生:そのようなときは、出力結果をテキストファイルに出すこと(スプール)も可能です。
SQL>SPOOL <ファイル名>
で、スプールがスタートします。
操作終了のあと、
SQL>SPOOL OFF
を実行すると、結果を書き出したファイルが作成されます。場合によっては、スプールで出された結果をさらにExcelなどで読み込んで分析する、といった使い方もあります。

SQL*Plusにはこれら以外にもさまざまな機能がありますので、興味のある方は、マニュアル(『SQL*Plus ユーザーズ・ガイドおよびリファレンス』『SQL*Plus クイック・リファレンス』)を参照してみてください。

CHAPTER 4 トラブル対応時

先生:トラブル時には、コマンドライン起動のSQL*Plusを知っていると便利です。なぜなら、SQL*Plusはデータベース管理や開発に特化したシンプルな機能ですから、問題の切り分けを容易におこなうことができます。たとえばCやVisual Basic、Javaなどで書いたアプリケーションがうまく動かない場合、デバッガなどを使用して原因を探り当てるのは大変な作業です。そのようなとき、まずはSQL*Plusを使ってOracleにきちんと接続できれば、少なくともデータベース接続は可能な環境であることがわかります。また、直接SQL文をSQL*Plusから実行することで、SQL自体の問題なのか、そのSQLを使っているアプリケーションの問題なのか、それともサーバー側の問題か、ということを切り分けていく際の支援ツールとしても有効に使えます。コマンドラインベースですこし面倒な部分もありますが、覚えておくととても便利なので、皆さんもぜひ使ってみてください。


東北支社
井上 学(いのうえ まなぶ)
これを書いている時期はちょうど支社で風邪が大流行で、私もダウンしてしまいました。感染元は山崎さんです。

山崎 政直(やまざき まさなお)
今年は全国的にスギ花粉が猛威を振るうとか。
この号が皆さんの手元に届く頃には、マスクとティッシュが手放せない生活を送っているかもしれません。

小松 斉一(こまつ まさかず)
2005年から東北支社に赴任しました。新しい土地なので 遊びに食事にと、私生活を楽しめるよう張り切っています。もちろん仕事も頑張ります。

お問い合わせ先
Oracle Direct TEL 0120-155-096
http://www.oracle.co.jp/contact/
目次へ戻る >>