NLS_LANG、ORACLE_HOME、ORACLE_SID などの設定

使用しているシェルが bash の場合 ホームディレクトリの .bashrc / .bash_profile などに設定する。

パラメータ設定値(設定内容の例)必須/オプション
EDITORvi
NLS_LANGAmerican_Japan.JA16EUCTILDE
ORA_NLS10
ORA_NLS33
ORA_SDTZJapan、+09:00、OS_TZ、DB_TZ
ORACLE_BASE/u01/app/oracle (UNIIX系)
C:\oracle\product\10.1.0 (Windows系)
OFA 推奨 (※1)
ORACLE_HOME$ORACLE_BASE/product/10.1.0/db_1必須(※2)
ORACLE_PATH
ORACLE_SIDORCL必須(※2)
SQLPATH-
TNS_ADMIN-
TWO_TASK-
LD_LIBRARY_PATH$ORACLE_HOME/lib を追加
PATH$ORACLE_HOME/bin を追加必須(※2)

(※1) Oracle 11g から OFA 推奨の傾向が強くなり ORACLE_BASE から ORACLE_HOME が導出されるなどの変化がおきているので要注意。

(※2) インストール時には Universal Installer が必要な環境変数を自動で補完するので環境変数を設定せずにインストール作業を行なう。
(過去の記憶では…既にに環境変数が設定してあるとインストーラによるデフォルト値よりも環境変数を優先して採用していたと思うので気をつけて)

Windows の場合には環境変数はレジストリに設定されているために改めてコントロールパネルなどから設定する必要はない。 特に、別途設定したい場合にはコントロールパネル「システム」プロパティの「詳細」タブの環境変数で上書きするか、レジストリを直接変更する方法がある。

環境変数の再読み込みは、すべてのプログラムに即座に反映されるものではないため一旦ログアウト、または、環境変数が設定されているターミナル(コンソールやコマンドプロンプト)からプログラムの再起動などを行なう。環境変数は子プロセスに継承されるなどの環境変数の仕組みをあまり理解していない場合は、安心料として単純にコンピュータを再起動する方が良いだろう。

環境変数の内容

  • NLS_LANG
Syntax
language_territory.characterset

データベースへ接続する端末の言語、テリトリ、キャラクタセットを一度に設定するための環境変数
DB サーバーコンソールでは LANGUAGE = American / TERRITORY = Japan にしておくとエラーメッセージが文字化けしない。

EUC_JP の 場合
export NLS_LANG=American_Japan.JA16EUC
export NLS_LANG=American_Japan.JA16EUCTILDE (9iR2〜)

LANGUAGE 部は American でなく English でもよい。
Japanese でなく American にする理由:Oracle のインストールには X-Window がインストールしてある環境で行われるものの、データベース専用機の場合にはリモート接続による管理で X サーバーを動作させていない事が結構多い。
そのためキャラクタベースのサーバーコンソールでは漢字が読めない。 そのために管理ユーザー(USER=oracle) の初期状態はメッセージを英語にする方が都合がよい。

関連事項

  • ORA_NLS10 (旧 ORA_NLS33) Oracle 10g
Syntax
directory_path

言語とテリトリの定義ファイルが保存されているディレクトリパス。SQL*Plus のバージョンが関係しているように見えるが、何故 10 に減ったのかは不明。PL/SQL のバージョン(確か v8 あたりから)のように方向転換したのでしょう。 10g から仕切り直しをしたのかもしれない。

export ORA_NLS10=$ORACLE_HOME/nls/data (デフォルト値)

$ORACLE_HOME/nls/data/old/README.txt と data_changes.htm にちょっとしたドキュメントがあります。

  • ORA_NLS33 Oracle 9i
Syntax
directory_path

言語とテリトリの定義ファイルが保存されているディレクトリパス。10g では 'ORA_NLS10' (Oracle のバージョンによって ORA_NLS、ORA_NLS32、ORA_NLS33、ORA_NLS10 という歴史があるようです。Oracle 11 ではどうなるのでしょう)

export ORA_NLS33=$ORACLE_HOME/ocommon/nls/data(デフォルト値)
  • ORA_SDTZ (Session Default Time-Zone?)
Syntax
タイムゾーン
タイムゾーンの代表例意味
OS_TZOS のタイムゾーンを継承
DB_TZDB のタイムゾーンを継承
Japan、Asia/Tokyo日本や東京のタイムゾーン
+09:00+09:00 のオフセット

ORA_SDTZ=Japan に設定したときの TIMESTAMP 関数の結果

SQL> select current_timestamp, systimestamp from dual;
 
CURRENT_TIMESTAMP                 SYSTIMESTAMP
--------------------------------- ---------------------------------
07-07-07 13:08:56.062000 JAPAN    07-07-07 13:08:56.062000 +09:00
  • ORACLE_BASE
Syntax
directory_path

Optimal Flexible Architecture(OFA) というガイドラインにおいてインストールのディレクトリ構造のベース(基点)
必須ではないが、設定してあると何かと便利。

export ORACLE_BASE=/u01/app/oracle

(OFAでは、/u01 /u02 /u03 がマウントポイントの名前として記載されている。)

Oracle 11g から OFA 推奨の傾向が強くなり ORACLE_BASE から ORACLE_HOME が導出されるなどの変化がおきているので要注意。

Windows の場合レジストリに埋め込まれており、デフォルト設定では ORACLE_BASE に C:\oracle\product\10.1.0 などのようにバージョンまでを含んで定義されている。

  • ORACLE_HOME
Syntax(必須)
directory_path

Oracle ソフトウェアのホーム。マルチホーム(マルチバージョン)などにも使用される。

export ORACLE_HOME=$ORACLE_BASE/product/10.1.0/db_1 (デフォルトインストール時)

クライアント環境であっても間違った設定がされている場合には SQL*Plus などのソフトが動作しなくなるので注意する。

SQL*Plus の場合に誤った ORACLE_HOME が設定されていると
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory
のエラーメッセージが表示されて起動しない。

Windows の場合には SQLPLUS という Windows 固有?な環境変数が SQL*Plus のメッセージディレクトリを示すために利用できるようである。

  • ORACLE_PATH
Syntax
directory_path1:directory_path2:...

Oracle のアプリケーションが使用するファイルの検索パス。
SQL*Plus の @コマンドの検索パスにも使用される。

export ORACLE_PATH=~/myscripts
  • ORACLE_SID
Syntax (必須)
oracle_sid

インスタンス識別子、接続するインスタンスを設定する。

  • SQLPATH
Syntax
directory_path1:directory_path2:...

SQL*Plus の起動時に指定したスクリプト、SQL*Plus コマンド のSTART で指定したスクリプト、および、ユーザー・プロファイル(login.sql) の検索パス。

  • TNS_ADMIN
Syntax
directory_path

Net Service 関連構成ファイルを格納しているディレクトリ。(TNSNAMES.ORA、LISTENER.ORA、SQLNET.ORA など)
テスト運用などでデフォルトディレクトリはパーミッションなどから変更が面倒な場合などにも利用できる。

  • TWO_TASK (Windows系では LOCAL)
Syntax
接続識別子

デフォルトの接続識別子を設定する。 TWO_TASK=connect_string の場合
sqlplus hoge/hoge_pass ⇒ sqlplus hoge/hoge_pass@connect_string と同じ意味になる。

  • EDITOR (UNIX 系のみ?)
Syntax
editor_path

SQLPlusedit コマンド を使用した場合に起動するエディタファイル
デフォルトは ed ラインエディタに設定されているため SQL*Plus で edit してエディタから抜け出せない入門者が必ず出る。 vi にしておくと無難 ⇒ vi の使い方

export EDITOR=vi

vi の環境ファイル ~/.exrc の設定例

set autoindent
set ignorecase
set number
set showmatch
set showmode
set tabstop=4

オートインデントあり、検索時の大文字小文字無視、行番号表示あり、
括弧の対応付け確認あり、モードの表示あり、タブサイズ 4

 


関連事項

bash シェル

(ドット).bash_profile

ログイン時に読み込まれる。

.bashrc

シェルの起動毎に読み込まれる。( xxxrc の rc は Run Command(起動コマンド) の略 )

環境を変更することが多い場合は、.bashrc に設定する方が便利である。 ファイルを変更した場合には source コマンドや ドット(.) を使用して設定を再読み込みすることもできるが、 PATH 環境変数などは既存の環境変数に追記する方法で記述することが多いので、念のため新しいターミナルを起動するなどした方がよいと思います。

日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ Oracle Web セミナー