接続情報を設定するファイル
tnsnames.ora は、ローカルネーミングパラメータで、
以下のようなネットサービスの接続が定義されているファイル。
接続定義サンプル
ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = DBSERVER)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL) ) )
1行目の ORCL。
「 SQL> sqlplus hoge/hoge@ORCL 」 のようにアットマークの後に指定する。
SERVICE_NAME と分けて定義することもあるが、同じ値で統一していることが多い。
2行目の DESCRIPTION はネットサービス毎のパラメータをくくった枠と考えればよい。
使用する ADDRESS や CONNECT_DATA などを記載する。上記以外にも LOAD_BALANCE、FAILOVER、ADDRESS_LIST などの様々なパラメータがある。
3行目の ADDRESS は TCP/IP などのプロトコルや DB サーバのホスト名、ポート番号。
4行目の CONNECT_DATA は接続モードやサービスを識別するパラメータをくくった枠と考えればよい。
5行目の SERVER は接続モードを記載する。DEDICATED なら専用サーバーモード、
SHARED なら、ディスパッチャを使用する共有サーバーモード。
6行目の SERVICE_NAME は接続識別子。
格納先ディレクトリ
tnsnames.ora は、Windows なら %ORACLE_HOME%\network\admin 。
または、環境変数 TNS_ADMIN やレジストリで指定したフォルダも可能。
Unix/Linux なら $ORACLE_HOME/network/admin 。
tnsping コマンドで定義を確認
tnsnames.ora に定義が有効であるかを確認する場合、tnsping コマンドを使用するとよい。
% tnsping ORCL パラメータ・ファイルを使用しました: エイリアスを解決するためにTNSNAMESアダプタを使用しました。 Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = DBSERVER)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL))) OK (10ミリ秒)
接続できない場合はTNSエラー
失敗したら、”TNS-“から始まるエラー番号が返されるが、原因は tnsnames.ora の
定義不備や、リスナー側の問題など様々。切り分けを行い、原因を特定しよう。
【関連するエラー例】
TNS-03505: 名前の決定に失敗しました。
TNS-12154: 指定された接続識別子を解決できませんでした。
TNS-12170: 接続タイムアウトが発生しました。
TNS-12514: リスナーは接続記述子で要求されたサービスを現在認識していません。
TNS-12535: 操作はタイム・アウトしました。
TNS-12541: リスナーがありません。