この章では、SQL*Plusのコマンドライン環境の構成方法について説明します。 ここでは、次の項目について説明します。
ここで説明する環境変数は、SQL*Plusが使用するファイルの位置またはパスを指定します。 SQL*Plusの動作に影響する他の環境変数については、『Oracle Database管理者リファレンス』を参照してください。
表2-1 SQL*Plusに影響するパラメータまたは環境変数
パラメータまたは変数 | 説明 |
---|---|
UNIXおよびLinux上でライブラリの検索に使用するパスを指定する環境変数。 一部のオペレーティング・システムでは別の名前(Apple Mac OSでのDYLD_LIBRARY_PATH、IBM/AIX-5LでのLIBPATH、HP-UXでのSHLIB_PATHなど)である場合があります。 Windowsオペレーティング・システムでは使用できません。 例 $ORACLE_HOME/lib |
|
接続文字列を指定するWindows環境変数。 UNIXのTWO_TASKと同じ機能を実行します。 |
|
グローバリゼーション機能を指定する環境変数。 例 american_america.utf8 |
|
SQL*Plusのインストール先を指定する環境変数。 メッセージ・ファイルの格納場所を指定するために、SQL*Plusでも使用されます。 例: d:\oracle\10g /u01/app/oracle/product/v10g |
|
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でした。 |
|
SQLスクリプトの位置を指定する環境変数。 SQL*PlusがORACLE_PATHでスクリプト・ファイルを検出できない場合、またはORACLE_PATHが設定されていない場合は、現行の作業ディレクトリが検索されます。 Windowsでは使用しません。 |
|
データベース・インスタンスを指定する環境変数(オプション)。 |
|
実行可能ファイルおよびWindowsのDLLを検索するパスを指定する環境変数。 通常は、ORACLE_HOME/binを含めます。 |
|
SQLスクリプトの位置を指定する環境変数またはWindowsレジストリ・エントリ。 SQL*Plusでは、カレント・ディレクトリ、次にSQLPATHで指定されたディレクトリ、SQLPATHディレクトリのサブディレクトリの順に、SQLスクリプト(login.sqlを含む)が検索されます。 SQLPATHは、コロンで区切られたディレクトリのリストです。 UNIX版のインストールでは、デフォルト値は設定されません。 Windows版では、SQLPATHがインストール時にレジストリ・エントリに定義されます。 SQLPATHレジストリ・エントリの詳細は、「SQLPATHレジストリ・エントリ」を参照してください。 |
|
Windows版では、SQL*Plusメッセージ・ファイルの位置を指定する環境変数。 この環境変数は、インストール中に設定されます。 デフォルト値は次のとおりです。 ORACLE_HOME\SQLPLUS\MESG UNIXでは使用しません。 |
|
tnsnames.oraファイルの位置を指定する環境変数。 この環境変数を指定しない場合は、$ORACLE_HOME/network/adminが使用されます。 例 h:\network /var/opt/oracle |
|
接続文字列を指定するUNIX環境変数。 データベースを指定しない接続は、TWO_TASKに指定したデータベースに接続されます。 例 TWO_TASK=MYDB export TWO_TASK sqlplus hr これは、次のように解釈されます。 sqlplus hr@MYDB |
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\ora10\database;c:\oracle\ora10\dbs
各セッションで同じ設定を使用するように、SQL*Plus環境を設定できます。
この設定には、次の2つのオペレーティング・システム・ファイルを使用します。
glogin.sqlなどのサイト・プロファイル・ファイル。サイト全体の設定用です。
login.sqlなどのユーザー・プロファイル・ファイル。ユーザー固有の設定値を設定します。
これらのファイルの正確な名前は、システムによって異なります。
一部の権限での接続では、サイト・プロファイルまたはユーザー・プロファイルに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を起動すると、ユーザー・プロファイル・スクリプトが読み取られません。 |
サイト・プロファイル・スクリプトは、インストール中に作成されます。 このスクリプトは、SQL*Plusコマンドライン接続に対するセッション全体の動作を構成するために、データベース管理者が使用します。 インストール中にインストールされたサイト・プロファイル・スクリプトは、空のスクリプトです。
サイト・プロファイル・スクリプトは、通常、glogin.sqlという名前です。ユーザーが、SQL*Plusセッションを開始し、Oracle Databaseとの接続が正常に確立されるたびに、SQL*Plusはこのスクリプトを実行します。
サイト・プロファイルを使用すると、DBAは、特定のSQL*Plusをインストールするすべてのユーザーに対して、サイト全体にわたるSQL*Plus環境のデフォルト値を設定できます。
ユーザーはサイト・プロファイルに直接アクセスできません。
SQL*Plusのコマンドライン接続の場合、SQL*Plusはユーザー・プロファイル・スクリプトもサポートします。 ユーザー・プロファイルは、サイト・プロファイルの後に実行され、ユーザー・セッションの特別なカスタマイズを可能にします。 ユーザー・プロファイル・スクリプトは、通常、login.sqlという名前です。SQL*Plusでは、カレント・ディレクトリのユーザー・プロファイル、次に、環境変数SQLPATHで指定されたディレクトリが検索されます。 SQL*Plusでは、このコロンで区切られたディレクトリとそれらのサブディレクトリのリストが検索される際、ディレクトリとサブディレクトリがリストされている順で検索されます。
すべてのSQLコマンド、PL/SQLブロックまたはSQL*Plusコマンドをユーザー・プロファイルに追加できます。 SQL*Plusを起動すると、自動的にユーザー・プロファイルが検索され、ユーザー・プロファイル内のコマンドが実行されます。
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
STOREコマンドを使用すると、コマンドラインから、現行のSQL*Plusのシステム変数をスクリプトに格納できます。 変数を変更した場合は、このスクリプトを実行して元の値に戻すことができます。 この機能は、システム変数を変更するレポートを実行した後でシステム変数の値をリセットする場合に便利です。 また、SQL*Plusを起動するたびにこれらのシステム変数が設定されるように、このスクリプトをユーザー・プロファイル・スクリプトに含めることもできます。
すべてのシステム変数の現行の設定を格納するには、次のように入力します。
STORE SET file_name
ファイル名とファイル拡張子を入力するか、またはデフォルトの拡張子.SQLを使用する場合は、ファイル名のみを入力します。 SET SUF[FIX] {SQL | text}コマンドを使用して、デフォルトのファイル拡張子を変更することもできます。
格納済のシステム変数をリストアするには、次のように入力します。
START file_name
ファイルの拡張子がデフォルト(SET SUF[FIX] {SQL | text}コマンドで指定したもの)の場合は、ファイル名にピリオドおよび拡張子を追加する必要はありません。
@(アットマーク)または@@(二重アットマーク)コマンドを使用して、スクリプトを実行することもできます。
例2-1 SQL*Plusシステム変数の格納およびリストア
SQL*Plusシステム変数の現行の値を新しいスクリプトplusenv.sqlに格納するには、次のように入力します。
STORE SET plusenv
Created file plusenv |
この時点で、任意のシステム変数の値を変更できます。
SHOW PAGESIZE
PAGESIZE 24 |
SET PAGESIZE 60 SHOW PAGESIZE
PAGESIZE 60 |
その後、システム変数の元の値をスクリプトからリストアできます。
START plusenv SHOW PAGESIZE
PAGESIZE 24 |
通常、コマンドライン・ヘルプは、Oracle Databaseのインストール中にインストールされます。 インストールされていない場合は、データベース管理者がSQL*Plusコマンドライン・ヘルプ表を作成し、指定したSQLスクリプトをSQL*Plusから実行することによって、SQL*Plusヘルプ・データを作成した表に移入できます。
また、データベース管理者はSQL*PlusからSQLスクリプトを実行して、SQL*Plusコマンドライン・ヘルプ表を削除することもできます。
SQL*Plusヘルプをインストールまたは削除する前に、次のことを確認してください。
コマンドライン・ヘルプをロードするために提供されているSQLスクリプトHELPBLD.SQLを実行します。
SYSTEMユーザーとして次のように入力し、SQL*Plusにログインします。
SQLPLUS SYSTEM
SYSTEMユーザーに対して定義したパスワードの入力を求めるプロンプトが表示されます。
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スクリプトによって、ヘルプ表が作成されロードされます。
コマンドライン・ヘルプを削除するために提供されているSQLスクリプトHELPDROP.SQLを実行します。
SYSTEMユーザーとして次のように入力し、SQL*Plusにログインします。
SQLPLUS SYSTEM
SYSTEMユーザーに対して定義したパスワードの入力を求めるプロンプトが表示されます。
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スクリプトは、ヘルプ表を削除してから切断します。
デフォルト以外のデータベースに接続する場合、同一のコンピュータか別のコンピュータかに関係なく、Oracle Netがインストールされ、データベース・リスナーが構成されて実行中である必要があります。 Oracle Net Servicesは、SQL*Plusによって使用されます。
Oracle Net Servicesおよびデータベース・リスナーは、Oracle Databaseのインストール中に、デフォルトでインストールされます。 Oracle Netのインストールおよび構成の詳細は、http://otn.oracle.co.jp/document/
にあるOracle Databaseのドキュメントを参照してください。