4 SQL*Plusの管理

この章では、SQL*Plusの管理方法について説明します。内容は次のとおりです。

4.1 コマンドラインSQL*Plusの管理

この項では、コマンドラインSQL*Plusの管理方法について説明します。例では、SQL*Plusにより、疑問符(?)は環境変数ORACLE_HOMEの値に置き換えられています。

4.1.1 設定ファイルの使用

SQL*Plusを起動すると、最初にサイト・プロファイル設定ファイルglogin.sqlが実行され、次にユーザー・プロファイル設定ファイルlogin.sqlが実行されます。

サイト・プロファイル・ファイルの使用

グローバルなサイト・プロファイル・ファイルは、$ORACLE_HOME/sqlplus/admin/glogin.sqlです。この場所にサイト・プロファイル・ファイルがすでに存在する場合は、SQL*Plusのインストール時にそのファイルが上書きされます。SQL*Plusを削除すると、そのサイト・プロファイル・ファイルも削除されます。

ユーザー・プロファイル・ファイルの使用

ユーザー・プロファイル・ファイルは、login.sqlです。SQL*Plusは、最初に現行のディレクトリを検索し、次に環境変数ORACLEPATHで指定したディレクトリを検索してこのファイルを検出します。この環境変数の値は、ディレクトリをコロンで区切ったリストです。SQL*Plusでは、これらのディレクトリを環境変数ORACLEPATHにリストされている順序で検索し、login.sqlファイルを検出します。

login.sqlファイルに設定されているオプションは、glogin.sqlファイルに設定されているオプションよりも優先されます。

関連項目:

プロファイル・ファイルの詳細は、『SQL*Plusユーザーズ・ガイドおよびリファレンス』を参照してください。

4.1.2 Oracle Databaseサンプル・スキーマの使用

Oracle Databaseをインストールするか、またはOracle Database Configuration Assistantを使用してデータベースを作成する場合は、Oracle Databaseサンプル・スキーマをインストールできます。

4.1.3 SQL*Plusのコマンドライン・ヘルプのインストールと削除

この項では、SQL*Plusのコマンドライン・ヘルプのインストール方法と削除方法について説明します。

4.1.3.1 SQL*Plusのコマンドライン・ヘルプのインストール

SQL*Plusのコマンドライン・ヘルプは、次の3つの方法でインストールできます。

  • 事前構成済データベースのインストールを完了します。

    インストールの一部として事前構成済データベースをインストールすると、SQL*Plusのコマンドライン・ヘルプがSYSTEMスキーマに自動的にインストールされます。

  • $ORACLE_HOME/bin/helpinsシェル・スクリプトを使用して、SYSTEMスキーマにコマンドライン・ヘルプを手動でインストールします。

    helpinsスクリプトは、SYSTEMパスワードを要求するプロンプトを表示します。プロンプトを表示せずにこのスクリプトを実行する場合は、環境変数SYSTEM_PASSにSYSTEMユーザー名とパスワードを設定します。次に例を示します。

    • Bourne、BashまたはKornシェル:

      $ SYSTEM_PASS=SYSTEM/system_password; export SYSTEM_PASS
      
    • Cシェルの場合:

      % setenv SYSTEM_PASS SYSTEM/system_password
      
  • $ORACLE_HOME/sqlplus/admin/help/helpbld.sqlスクリプトを使用して、SYSTEMスキーマにコマンドライン・ヘルプを手動でインストールします。

    たとえば、次のコマンドを実行します。system_passwordは、SYSTEMユーザーのパスワードです。

    $ sqlplus 
    SQL> CONNECT SYSTEM
    Enter password: system_password
    SQL> @?/sqlplus/admin/help/helpbld.sql ?/sqlplus/admin/help helpus.sql
    

    注意:

    helpinsシェル・スクリプトおよびhelpbld.sqlスクリプトは、新しい表を作成する前に、既存のコマンドライン・ヘルプの表を削除します。

4.1.3.2 SQL*Plusのコマンドライン・ヘルプの削除

SYSTEMスキーマからSQL*Plusのコマンドライン・ヘルプの表を手動で削除するには、$ORACLE_HOME/sqlplus/admin/help/helpdrop.sqlスクリプトを実行します。このスクリプトには、次のコマンドを実行します。system_passwordは、SYSTEMユーザーのパスワードです。

$ sqlplus 
SQL> CONNECT SYSTEM
Enter password: system_password
SQL> @?/sqlplus/admin/help/helpdrop.sql

4.2 コマンドラインSQL*Plusの使用

この項では、コマンドラインSQL*Plusの使用方法について説明します。次の項目が含まれます。

4.2.1 SQL*Plusからのシステム・エディタの使用

SQL*PlusプロンプトでEDまたはEDITコマンドを実行すると、edemacsnedviなどのオペレーティング・システム・エディタが起動します。ただし、環境変数PATHには、エディタの実行可能ファイルが格納されているディレクトリを指定する必要があります。

HISTORYコマンドを使用すると、以前使用したSQL*Plus、SQLまたはPL/SQLコマンドを現在のセッションの履歴リストから、実行、編集または削除できます。現在のSQL*Plusセッションで発行されたコマンドの履歴を有効または無効にできます。

エディタを起動すると、現行のSQLバッファがエディタに格納されます。エディタを終了すると、変更されたSQLバッファがSQL*Plusに戻されます。

SQL*Plusの_EDITOR変数を定義することにより、起動するエディタを指定できます。この変数は、glogin.sqlサイト・プロファイルまたはlogin.sqlユーザー・プロファイルに定義できます。また、SQL*Plusセッション時に定義することもできます。たとえば、デフォルト・エディタをviに設定するには、次のコマンドを実行します。

SQL> DEFINE _EDITOR=vi

_EDITOR変数を設定しない場合は、環境変数EDITORまたはVISUALのいずれかの値が使用されます。両方の環境変数が設定されている場合は、環境変数EDITORの値が使用されます。_EDITOREDITORおよびVISUALのいずれも指定されていない場合、デフォルト・エディタはviになります。定義されたエディタは、HISTORYコマンドの編集オプションで使用されます。次のSQL文について考えてみます。

SQL> hist
1 select * from dual;
2 desc dual

前述のSQL文の最初のエントリをviエディタで開くには、次のコマンドを使用します。

SQL> hist 1 edit

エディタを起動すると、SQL*Plusは一時ファイルafiedt.bufを使用してエディタにテキストを渡します。SET EDITFILEコマンドを使用すると、別のファイル名を指定できます。次に例を示します。

SQL> SET EDITFILE /tmp/myfile.sql

SQL*Plusは、一時ファイルを削除しません。

4.2.2 SQL*Plusからのオペレーティング・システム・コマンドの実行

SQL*Plusプロンプトの後の最初の文字としてHOSTコマンドまたは感嘆符(!)を使用すると、後続の文字がサブシェルに渡されます。オペレーティング・システム・コマンドを実行するときに使用するシェルは、環境変数SHELLによって設定されます。デフォルト・シェルはBourneシェルです。シェルが実行できない場合は、SQL*Plusによりエラー・メッセージが表示されます。

SQL*Plusに戻るには、exitコマンドを実行するか、[Ctrl]+[D]を押します。

たとえば、1つのコマンドを実行するには、次のコマンド構文を使用します。

SQL> ! command

この例のcommandは、実行するオペレーティング・システム・コマンドです。

SQL*Plusから複数のオペレーティング・システム・コマンドを実行するには、HOSTまたは!コマンドを実行します。オペレーティング・システム・プロンプトに戻るには、[Enter]を押します。

4.2.3 SQL*Plusへの割込み

SQL*Plusの実行中、[Ctrl]+[C]を押すと、レコードのスクロール表示を停止したり、SQL文を終了できます。

4.2.4 SPOOLコマンドの使用

SPOOLコマンドで生成されるファイルのデフォルトのファイル名拡張子は、.lstです。この拡張子を変更するには、ピリオド(.)を含めたスプール・ファイル名を指定します。次に例を示します。

SQL> SPOOL query.txt

4.3 SQL*Plusの制限事項

この項では、次のSQL*Plusの制限事項を説明します。

4.3.1 ウィンドウのサイズ変更

SQL*Plusのシステム変数LINESIZEおよびPAGESIZEのデフォルト値では、ウィンドウのサイズは自動的に調整されません。ウィンドウのサイズが変更された場合は、LINESIZEおよびPAGESIZEシステム変数を設定する必要があります。

4.3.2 リターン・コード

オペレーティング・システムのリターン・コードは1バイトですが、Oracleエラー・コードを返すには、1バイトでは不十分です。リターン・コードの範囲は、0から255です。

4.3.3 パスワードの非表示

コマンドラインでパスワードを渡したり、SYSTEM_PASS環境変数をSYSTEMユーザーのユーザー名とパスワードに設定すると、この情報がpsコマンドの出力に表示される場合があります。権限のないアクセスを防ぐため、SQL*Plusによってプロンプトが表示された場合のみSYSTEMパスワードを入力してください。

スクリプトを自動的に実行する場合は、パスワードの格納が不要な認証方法の使用を考慮してください。たとえば、Oracle Databaseへの外部認証ログインなどがあります。セキュリティの低い環境では、スクリプト・ファイルにオペレーティング・システム・パイプを使用して、パスワードをSQL*Plusに渡すことを検討する必要があります。次に例を示します。

$ echo system_password | sqlplus SYSTEM @MYSCRIPT

あるいは、次のコマンドを実行します。

$ sqlplus <<EOF
SYSTEM/system_password
SELECT ...
EXIT
EOF

この例のsystem_passwordは、SYSTEMユーザーのパスワードです。