日本語PDF

2 SQL*Plusの構成

この章では、SQL*Plusのコマンドライン環境の構成方法について説明します。内容は次のとおりです。

2.1 SQL*Plusの環境変数

ここで説明する環境変数は、SQL*Plusが使用するファイルの位置またはパスを指定します。SQL*Plusの動作に影響する他の環境変数については、『Oracle Database管理者リファレンス』を参照してください。

表2-1 SQL*Plusに影響するパラメータまたは環境変数

パラメータまたは変数 説明

LD_LIBRARY_PATH

UNIXおよびLinux上のライブラリの検索に使用するパスを指定する環境変数。一部のオペレーティング・システムでは別の名前(Apple Mac OSでのDYLD_LIBRARY_PATH、IBM/AIX-5LでのLIBPATH、HP-UXでのSHLIB_PATHなど)である場合があります。Windowsオペレーティング・システムでは使用できません。

$ORACLE_HOME/lib 

LOCAL

接続文字列を指定するWindows環境変数。UNIXのTWO_TASKと同じ機能を実行します。

NLS_LANG

グローバリゼーション機能を指定する環境変数。

american_america.utf8

ORACLE_HOME

SQL*Plusのインストール場所を指定する環境変数。SQL*Plusにより、メッセージ・ファイルの配置場所を指定するためにも使用されます。

例:

d:\oracle\10g
/u01/app/oracle/product/v10g

ORA_EDITION

使用するデータベース・エディションを指定する環境変数。CONNECTまたはSQLPLUSコマンドのオプション(edition=value)を使用してエディションを指定した場合は、ORA_EDITIONではなくこのオプションが使用されます。CONNECTまたはSQLPLUSコマンドのオプションあるいはORA_EDITIONでエディションを指定しない場合、SQL*Plusはデフォルトのエディションに接続します。

ORA_EDITIONが設定されると、セッション内で後続のSTARTUPコマンドがORA-38802エラーとなります。これを修正するには、ORA_EDITIONを設定解除し、再度データベースに接続してこれを停止し、さらにもう一度データベースを起動する必要があります。

ORA_NLS10

SQL*Plusリリース2(10.2)のNLSデータおよびユーザーのブート・ファイルの位置を指定する環境変数。デフォルトの位置は$ORACLE_HOME/nls/dataです。Oracle9iおよびOracle10gの両方を使用するシステム、またはアップグレードされたシステムの場合は、10g用にORA_NLS10、9i用にORA_NLS33を設定する必要があります。Oracle9iでは、デフォルトのNLSの位置は$ORACLE_HOME/common/nls/admin/dataでした。

ORACLE_PATH

SQLスクリプトの位置を指定する環境変数。SQL*PlusがORACLE_PATHでスクリプト・ファイルを検出できない場合、またはORACLE_PATHが設定されていない場合は、現行の作業ディレクトリが検索されます。

Windowsでは使用しません。

ORACLE_SID

データベース・インスタンスを指定する環境変数(オプション)。

PATH

実行可能ファイルおよびWindowsのDLLを検索するパスを指定する環境変数。通常は、ORACLE_HOME/binを含めます。

SQLPATH

SQLスクリプトの位置を指定する環境変数またはWindowsレジストリ・エントリ。SQL*Plusは、login.sqlなどのSQLスクリプトを、SQLPATHで指定されたディレクトリ内で検索します。SQLPATHは、コロンで区切られたディレクトリのリストです。UNIX版のインストールでは、デフォルト値は設定されません。

Windows版では、SQLPATHがインストール時にレジストリ・エントリに定義されます。SQLPATHレジストリ・エントリの詳細は、「SQLPATHレジストリ・エントリ」を参照してください。

TNS_ADMIN

tnsnames.oraファイルの位置を指定する環境変数。この環境変数を指定しない場合は、$ORACLE_HOME/network/adminが使用されます。

h:\network 
/var/opt/oracle

TWO_TASK

接続文字列を指定するUNIX環境変数。データベースを指定しない接続は、TWO_TASKに指定したデータベースに接続されます。

TWO_TASK=MYDB
export TWO_TASK
sqlplus hr

これは、次のように解釈されます。

sqlplus hr@MYDB

2.1.1 SQLPATHレジストリ・エントリ

SQLPATHレジストリ・エントリは、SQLスクリプトの位置を指定します。SQL*Plusでは、カレント・ディレクトリ、次にSQLPATHレジストリ・エントリで指定されたディレクトリ、SQLPATHディレクトリのサブディレクトリの順に、SQLスクリプトが検索されます。

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0レジストリ・サブキー(または、ORACLE_HOMEに関連付けられているHOMEnディレクトリ)には、SQLPATHレジストリ・エントリが含まれます。SQLPATHは、デフォルト値ORACLE_HOME\DBSを使用して作成されます。SQLPATHの有効な値として、任意のドライブの任意のディレクトリを指定できます。

SQLPATHレジストリ・エントリを設定する場合に、ディレクトリをセミコロン(;)で区切って複数指定することもできます。次に例を示します。

c:\oracle\ora12\database;c:\oracle\ora12\dbs

SQLPATHレジストリ・エントリの編集方法の説明は、レジストリ・エディタのヘルプ・システムを参照してください。

2.2 SQL*Plusの構成

各セッションで同じ設定を使用するように、SQL*Plus環境を設定できます。

この設定には、次の2つのオペレーティング・システム・ファイルを使用します。

  • glogin.sqlなどのサイト・プロファイル・ファイル。サイト全体の設定用です。

  • login.sqlなどのユーザー・プロファイル・ファイル。ユーザー固有の設定値を設定します。

これらのファイルの正確な名前は、システムによって異なります。

ノート:

サイト・プロファイル・ファイルとユーザー・プロファイル・ファイルは、SQLPLUSまたはCONNECTコマンドでOracle Databaseに正常に接続した後で、あるいは/NOLOGを指定したときに実行されます。ALTER SESSION SET CONTAINERを使用して別のPDBに切り替えると、サイト・プロファイル・ファイルとユーザー・プロファイル・ファイルは実行されません。

一部の権限での接続では、サイト・プロファイルまたはユーザー・プロファイルにSET SERVEROUTPUTまたはSET APPINFOコマンドが入力されていると、エラーが生成される場合があります。

次の表に、プロファイル・スクリプトを示し、コマンドライン・ユーザー・インタフェースに影響する一部のコマンドと設定を示します。

表2-2 SQL*Plusユーザー・インタフェースの設定に影響するプロファイル・スクリプト

スクリプトの内容 コマンドラインで実行されるタイミング

サイト・プロファイル(glogin.sql)

SQL*Plusスクリプトに含めることができる内容(システム変数設定やDBAが実装する他のグローバル設定など)はすべて含めることができます。

SQLPLUSコマンドまたはCONNECTコマンドからOracle Databaseへの正常な接続後

/NOLOGが指定された場合

ユーザー・プロファイル(login.sql)

SQL*Plusスクリプトに含めることができる内容はすべて含めることができます。ただし、設定はユーザー・セッションにのみ適用可能です。

サイト・プロファイルの直後

表2-3 SQL*Plusユーザー・インタフェースの設定に影響するプロファイル・スクリプトのコマンド

プロファイル・スクリプト内のコマンド コマンドラインに影響する操作

SET SQLPLUSCOMPAT[IBILITY] {x.y[.z]}

SQL*Plus互換性マトリックス」を参照。

DBAがこのサイトで希望する動作を実現するために、SQL*Plusの互換モードを設定した場合

SQLPLUSコマンド COMPATIBILITYオプション

SET SQLPLUSCOMPATIBILITYコマンドが実行された場合(SQLPLUSコマンドのCOMPATIBILITYオプション付きで設定された場合以外)

SQLPLUSコマンド RESTRICTオプション

RESTRICTオプションを3に設定してSQL*Plusを起動すると、ユーザー・プロファイル・スクリプトが読み取られません。

2.2.1 サイト・プロファイル

サイト・プロファイル・スクリプトは、インストール中に作成されます。これは、SQL*Plusコマンドライン接続に対するサイト全体の動作を構成するために、データベース管理者が使用します。インストール中にインストールされたサイト・プロファイル・スクリプトは、空のスクリプトです。

サイト・プロファイル・スクリプトは、通常、glogin.sqlという名前です。ユーザーが、SQL*Plusセッションを開始し、Oracle Databaseとの接続が正常に確立されるたびに、SQL*Plusはこのスクリプトを実行します。

サイト・プロファイルを使用すると、DBAは、特定のSQL*Plusをインストールするすべてのユーザーに対して、サイト全体にわたるSQL*Plus環境のデフォルト値を設定できます。

ユーザーはサイト・プロファイルに直接アクセスできません。

2.2.1.1 デフォルトのサイト・プロファイル・スクリプト

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

2.2.2 ユーザー・プロファイル

SQL*Plusのコマンドライン接続の場合、SQL*Plusはユーザー・プロファイル・スクリプトもサポートします。ユーザー・プロファイルは、サイト・プロファイルの後に実行され、ユーザー・セッションの特別なカスタマイズを可能にします。ユーザー・プロファイル・スクリプトは、通常、login.sqlという名前です。SQL*Plusでは、ORACLE_PATH環境変数で指定されるディレクトリを検索します。SQL*Plusでは、このコロンで区切られたディレクトリとそれらのサブディレクトリのリストが検索される際、ディレクトリとサブディレクトリがリストされている順で検索されます。

ノート:

SQL*Plusでは、カレント・ディレクトリのlogin.sqlを検索しません。

すべてのSQLコマンド、PL/SQLブロックまたはSQL*Plusコマンドをユーザー・プロファイルに追加できます。SQL*Plusを起動すると、自動的にユーザー・プロファイルが検索され、ユーザー・プロファイル内のコマンドが実行されます。

2.2.2.1 LOGINファイルの変更

LOGINファイルは、他のすべてのスクリプトと同様に、変更が可能です。次のユーザー・プロファイル・スクリプトの例に、ユーザーが追加できる変更の一部を示します。

--   login.sql
--   SQL*Plus user login startup file.
--
--   This script is automatically run after glogin.sql
--
-- To change the SQL*Plus prompt to display the current user,
-- connection identifier and current time.
-- First set the database date format to show the time.
ALTER SESSION SET nls_date_format = 'HH:MI:SS';

-- SET the SQLPROMPT to include the _USER, _CONNECT_IDENTIFIER
-- and _DATE variables.
SET SQLPROMPT "_USER'@'_CONNECT_IDENTIFIER _DATE> "

-- To set the number of lines to display in a report page to 24.
SET PAGESIZE 24

-- To set the number of characters to display on each report line to 78.
SET LINESIZE 78

-- To set the number format used in a report to $99,999.
SET NUMFORMAT $99,999

関連項目:

  • SQL*PlusのLOGINファイルに設定できる各種のSETコマンド変数の詳細は、「SET」コマンドを参照してください。

  • 事前定義変数の詳細は、「事前定義変数の使用について」を参照してください。

2.2.3 SQL*Plusシステム変数の格納およびリストア

STOREコマンドを使用すると、コマンドラインから、現行のSQL*Plusのシステム変数をスクリプトに格納できます。変数を変更した場合は、このスクリプトを実行して元の値に戻すことができます。この機能は、システム変数を変更するレポートを実行した後でシステム変数の値をリセットする場合に便利です。また、SQL*Plusを起動するたびにこれらのシステム変数が設定されるように、このスクリプトをユーザー・プロファイル・スクリプトに含めることもできます。

すべてのシステム変数の現行の設定を格納するには、次のように入力します。

STORE SET file_name

ファイル名とファイル拡張子を入力するか、またはデフォルトの拡張子.SQLを使用する場合は、ファイル名のみを入力します。SET SUF[FIX] {SQL | text}コマンドを使用して、デフォルトのファイル拡張子を変更することもできます。

2.2.3.1 システム変数のリストア

格納済のシステム変数をリストアするには、次のように入力します。

START file_name

ファイルの拡張子がデフォルト(SET SUF[FIX] {SQL | text}コマンドで指定したもの)の場合は、ファイル名にピリオドおよび拡張子を追加する必要はありません。

@(アットマーク)または@@(二重アットマーク)コマンドを使用して、スクリプトを実行することもできます。

Created file plusenv

この時点で、任意のシステム変数の値を変更できます。

SHOW PAGESIZE
PAGESIZE 24
SET PAGESIZE 60
SHOW PAGESIZE
PAGESIZE 60

その後、システム変数の元の値をスクリプトからリストアできます。

START plusenv
SHOW PAGESIZE
PAGESIZE 24

例2-1 SQL*Plusシステム変数の格納およびリストア

SQL*Plusシステム変数の現行の値を新しいスクリプトplusenv.sqlに格納するには:

STORE SET plusenv

2.2.4 コマンドライン・ヘルプのインストールについて

通常、コマンドライン・ヘルプは、Oracle Databaseのインストール中にインストールされます。インストールされていない場合は、データベース管理者がSQL*Plusコマンドライン・ヘルプ表を作成し、指定したSQLスクリプトをSQL*Plusから実行することによって、SQL*Plusヘルプ・データを作成した表に移入できます。

また、データベース管理者はSQL*PlusからSQLスクリプトを実行して、SQL*Plusコマンドライン・ヘルプ表を削除することもできます。

SQL*Plusヘルプをインストールまたは削除する前に、次のことを確認してください。

  • SQL*Plusがインストールされている。

  • 環境変数ORACLE_HOMEが設定されている。

  • 次のSQL*Plusヘルプ・スクリプト・ファイルがある。

    • HLPBLD.SQL - 新しいヘルプ表の削除および作成

    • HELPDROP.SQL - 既存のヘルプ表の削除

    • HELPUS.SQL - ヘルプ・データへのヘルプ表の移入

2.2.4.1 hlpbld.sqlスクリプトを実行したコマンドライン・ヘルプのインストール

コマンドライン・ヘルプをロードするために提供されているSQLスクリプトHLPBLD.SQLを実行します。

  1. SYSTEMユーザーとして次のように入力し、SQL*Plusにログインします。
    SQLPLUS SYSTEM

    SYSTEMユーザーに対して定義したパスワードの入力を求めるプロンプトが表示されます。

  2. UNIXでは、SQL*Plusから次のように入力してSQLスクリプトHLPBLD.SQLを実行します。
    @$ORACLE_HOME/sqlplus/admin/help/hlpbld.sql helpus.sql

    Windowsでは、SQL*Plusから次のように入力してSQLスクリプトHLPBLD.SQLを実行します。

    @%ORACLE_HOME%\SQLPLUS\ADMIN\HELP\HLPBLD.SQL HELPUS.SQL

    HLPBLD.SQLスクリプトによって、ヘルプ表が作成されロードされます。

2.2.4.2 helpdrop.sqlスクリプトを実行したコマンドライン・ヘルプの削除

コマンドライン・ヘルプを削除するために提供されているSQLスクリプトHELPDROP.SQLを実行します。

  1. SYSTEMユーザーとして次のように入力し、SQL*Plusにログインします。
    SQLPLUS SYSTEM

    SYSTEMユーザーに対して定義したパスワードの入力を求めるプロンプトが表示されます。

  2. UNIXでは、SQL*Plusから次のように入力してSQLスクリプトHELPDROP.SQLを実行します。
    @$ORACLE_HOME/sqlplus/admin/help/helpdrop.sql

    Windowsでは、SQL*Plusから次のように入力してSQLスクリプトHELPDROP.SQLを実行します。

    @%ORACLE_HOME\SQLPLUS\ADMIN\HELP\HELPDROP.SQL

    HELPDROP.SQLスクリプトは、ヘルプ表を削除してから切断します。

2.2.5 Oracle Net Servicesの構成について

デフォルト以外のデータベースに接続する場合、同一のコンピュータか別のコンピュータかに関係なく、Oracle Netがインストールされ、データベース・リスナーが構成されて実行中である必要があります。Oracle Net Servicesは、SQL*Plusによって使用されます。

Oracle Net Servicesおよびデータベース・リスナーは、Oracle Databaseのインストール中に、デフォルトでインストールされます。Oracle Netのインストールおよび構成の詳細は、http://www.oracle.com/technology/documentationにあるOracle Databaseのドキュメントを参照してください。