主要な環境変数の説明と環境毎の設定および確認例です。個人的に普段から意識している環境変数を見繕っています。
主要な環境変数
No. | 環境変数 | 説明 |
1 | ORACLE_BASE | Oracle Databaseインストールの際に設定します。基本的に運用が始まった後に変更するような事はないと思われます。 https://docs.oracle.com/cd/E82638_01/ladbi/oracle-base-directory-naming-convention.html#GUID-3B198883-0AD1-4AB2-9007-059AE32240F0 |
2 | ORACLE_HOME |
Oracle Databaseインストールの際に設定。ここで指定されているフォルダにOracle Databaseはインストールされています。 |
3 | ORACLE_SID | サーバ側で利用。インスタンス名を指定する。sqlplus / as sysdbaで接続する場合こちらの環境変数に指定されているインスタンスが対象となります。sysdbaで接続する際はこちらの値十分注意しましょう。 |
4 | TNS_ADMIN | デフォルトは$ORACLE_HOME\network\adminが設定されます。tnsnames.oraが存在するフォルダを設定されます。 |
5 | NLS_LANG | クライアント側の重要な環境変数の一つ。私にとって文字化け発生時真っ先に確認すべき箇所の一つです。Windows環境であれば(利用アプリケーションによりますが)基本的にはJapanese_Japan.JA16SJISTILDE にしておけば良いでしょう。サーバ側がどんな文字コードを利用していたとしてもクライアント側で指定した文字コードにOracleが変換してくれるための変数です |
6 | NLS_DATE_FORMAT | DATE型を表示する際のフォーマットを指定します。 |
7 | SQLPATH | SQLスクリプトの配備場所を指定。SQL*Plusでは、カレント・ディレクトリ、次にSQLPATH指定されたディレクトリ、SQLPATHディレクトリのサブディレクトリの順に、SQLスクリプトが検索されます。(Windows版ではインストーラにてインストールした場合レジストリに記載される) |
8 | ORACLE_PATH |
SQLスクリプトの位置を指定する環境変数。login.sqlはここで指定するPATHへ配備する事 |
NLS_LANGについての補足説明
NLS_LANGに設定する文字列は3部構成になっています。
NLS_LANG=language(言語)_territory(地域).charset(文字セット)
1 | language(言語) | 言語と、その言語でメッセージ、曜日、月を示すための規則を指定します。以下例で「月曜日」と表示されるのはJapaneseと指定しているためです。 SELECT TO_CHAR(sysdate, ‘YYYY-MM-DD DAY’) FROM DUAL; TO_CHAR(SYSDATE,’YYYY-M 2022-01-10 月曜日 また、sqlplus等でログインした際出力されるバナーメッセージが日本語になっているのもこちらの値に依存しています。例えば set NLS_LANG=american_Japan.JA16SJISTILDE としてsqlplusでログインするとLast Successful login time: Sat Jan 22 2022 14:38:32 +09:00 こんな感じになります。 |
2 | territory(地域) | デフォルトの日付、通貨単位および数値書式などの規則を指定します。例えば set NLS_LANG=Japanese_america.JA16SJISTILDE でログインした場合 select TO_CHAR(1234,’L999G999′) from DUAL; $1,234 となります。これはログインセッションのNLS_CURRENCYに$が設定される事によるものですが、同様にNLS_TIME_FORMAT、NLS_TIMESTAMP_FORMATなどの値にも影響があります。 |
3 | charset(文字セット) | メッセージを表示するために使用されるキャラクタ・セットを制御します。 |
クライアント側で指定したNLS_LANG環境変数の値によってログインセッション内にもつNLSパラメータ値が変わってきます。以下SQLで確認できます。
set lin 100 set pages 100 COLUMN parameter FORMAT A24 COLUMN value FORMAT A30 select parameter,value from V$NLS_PARAMETERS ;
各環境での設定および確認方法
Linux環境での設定例
export ORACLE_SID=orau8
export NLS_DATE_FORMAT=YYYY/MM/DD HH24:MI:SS
export NLS_LANG=Japanese_Japan.AL32UTF8
--Linux(shell)環境での確認
$ env | grep ORA
ORACLE_SID=orau8
ORACLE_BASE=/usr/oracle/app
ORACLE_HOME=/usr/oracle/app/product/12.1.0/dbhome_1
NLS_DATE_FORMAT についてはalter sessionで適宜変更する事が多いです。
alter session set NLS_DATE_FORMAT = 'YYYY/MM/DD HH24:MI:SS';
Windows(dos)環境での設定例
set NLS_DATE_FORMAT=YYYY/MM/DD HH24:MI:SS
set NLS_LANG=Japanese_Japan.JA16SJISTILDE
set TNS_ADMIN=C:\tools\oracle_client\network\admin
-- Dosコマンドでの確認
>set NLS_LANG
NLS_LANG=Japanese_Japan.JA16SJISTILDE
>set TNS_ADMIN
TNS_ADMIN=C:\tools\oracle_client\network\admin
Windows(PowerShell)環境での設定例
$env:NLS_DATE_FORMAT="YYYY/MM/DD HH24:MI:SS"
$env:NLS_LANG="Japanese_Japan.JA16SJISTILDE"
$env:TNS_ADMIN="C:\tools\oracle_client\network\admin"
--PowerShell
PS C:\WINDOWS\system32> $env:TNS_ADMIN
C:\tools\oracle_client\network\admin
PS C:\WINDOWS\system32> $env:NLS_LANG
Japanese_Japan.JA16SJISTILDE