今回はOracleNetの共有方法について紹介します。
通常,Oracleでは1つのデータベースに対して1組のOracleNet定義ファイル1を作成する必要があります。

少数なら良いかもしれませんが,DBが複数あると管理も煩雑になりがちです。
そこで,今回紹介する設定を実施することで,OracleNet定義ファイルを1組に集約することができます。
ぜひとも参考にしていただけたら幸甚です。
設定方法
前提
例として,以下の3DB(≒3種類のインスタンス)を作成する体にします。
- ORCL
- SCBT
- DCTR
なお,集約先は「ORCL」として話を進めます。
設定方法
環境変数として${TNS_ADMIN}を設定します。
- TNS_ADMIN
OracleNet定義ファイルの格納先を定義する環境変数。
設定は任意。
デフォルトだと,OracleNet定義ファイル格納先は(各DBの)${ORACLE_HOME}/network/adminです。
何も設定していなければ,デフォルトの格納場所にあるOracleNet定義ファイルを参照してOracleへ接続します。
もしOracleNet定義ファイル格納先を変更する場合は,${TNS_ADMIN}を設定します。
今回の例では,「ORCL」においては設定する必要ありません。

意図をもった設定であることを示すために,あえて設定しても良いと思うよ!
「SCBT」と「DCTR」に(「ORCL」の)${ORACLE_HOME}/network/adminを設定することで,「ORCL」のOracleNet定義ファイルへ集約ができます。


なお,設定に際しては以下の注意点があります。
- DBCA2にてDBを作成する前に,あらかじめ${TNS_ADMIN}を設定しておくこと。
あらかじめ設定することで,DBCAが${TNS_ADMIN}の設定を読み取ってくれます。 - 集約先のOracleNet定義ファイルに書き込めるよう,権限を見直す(777にする等)こと。
DBを作成するユーザに対して適切な権限を付与しないと,OracleNet定義ファイルに定義できません。
まとめ
今回はOracleNetの共有方法について紹介しました。
本設定を実施することにより,1つのリスナーのみで全DBとの接続を確立することも可能となります。



つまり,仮にリスナーに障害が起きると?(汗)



お察しの通り,クライアントからは全DBへ接続できなくなるね(汗)
難点はあるものの,DB管理を容易にするうえで知っておいて損は無いかと思います。
それぞれの利点・難点を踏まえたうえで,管理方法を決めていただければ幸甚です。