tnsnames.ora ファイル
tnsnames.ora はデータベースに接続する側(クライアント)に配備しておくファイルである。tnsname.ora ファイルと良く間違える。
その役割は「ネットサービス名」を「接続記述子」に変換して Oracle クライアントからデータベースサーバに接続することができるようにする。
データベースサーバ側に tnsnames.ora ファイルを配備することがある。
これは DBサーバにおいてプログラムやターミナルからOracle Net 経由で(自分自身または他のデータベースに)接続する=クライアントになる。 ということである。
データベースリンクなどでも参照されることがある。
UNIX で言うとホスト名からIPアドレスにローカルで変換する /etc/hosts ファイルと同じようなイメージである。
hosts ファイル ⇔ DNS (Domain Name System)
補足:DNS 関連の host.conf や nsswitch.conf に相当するものもあり sqlnet.ora ファイル内の NAMES.DIRECTORY_PATH が該当する。
mydb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dbserver.rivus.jp)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = mydb)
)
)
ローカル・ネーミング・パラメータ
ローカル・ネーミング・パラメータとは、tnsnames.ora に書かれているパラメータをあらわす。ローカル・ネーミング・パラメータ・ファイル ≒ tnsnames.ora ファイル
tnsnames.ora 書き方の基本 (TCP)
net_service_name=
( DESCRIPTION=
( ADDRESS=(protocol_address_port))
( CONNECT_DATA= (SERVICE_NAME=service_name))
)
設定ポイント: ネットコンフィグアシスタント(netca) や ネットマネージャ(netmgr) などのツールを使わずにエディタでエントリーを作成する場合、見やすさを考慮して括弧の前後や=の前後にスペースを置くことは控えておくことをおススメする。(全角スペースの混入やパーサー自体もがあまり賢くないので、わかりにくいトラブルで悩まされる可能性がある)
ネットサービス名
net_service_name
SQL*Plus などでネット経由でデータベースに接続する場合にデータベースを特定する名前
C:\>sqlplus rivus/rivus_pass@NET_SERVICE_NAME
^^^^^^^^^^^^^^^^^
接続記述子
DESCRIPTION
プロトコル・アドレス・セクション
protocol_address_port
接続する方法によって記述する書式が異なる。 TCP による接続の場合には
ADDRESS=( (PROTOCOL=TCP)(HOST=ホスト名または IPアドレス)(PORT=リスナのポート番号) ) の書式を用いる。
プロトコル・アドレス・セクションの設定例
ADDRESS=((PROTOCOL=TCP)(HOST=dbserver.rivus.jp)(PORT=1521))
サービス名
service_name
1つインスタンス、または、同じ機能を提供(=サービス)する複数インスタンスの集合体を特定する名称
参考 データベースを特定する名前 (SERVICE_NAMES)
tnsnames.ora ファイルの場所
tnsnames.ora ファイルは TNS_ADMIN 環境変数 で指定されたディレクトリに存在するものを参照する。
TNS_ADMIN 環境変数が設定されていない場合には $ORACLE_HOME/network/admin ディレクトリにあるものを参照する。
Windows で Oracle 11g の代表例としては
C:\oracle\product\11.1.0\db_1\NETWORK\ADMIN
となる。
関連事項