ネット・サービス名およびtnsnames.oraファイル

Oracle RACデータベースのインストール・プロセスでは、各ノードにtnsnames.oraファイルが作成されます。このファイルは、ネット・サービス名のリポジトリとして機能します。

各ネット・サービス名は、接続識別子に関連付けられています。接続識別子は、ユーザー定義の名前を接続記述子にマップする識別子です。接続記述子には、次の情報が含まれます。

  • プロトコル・アドレスを介するリスナーの位置を含む、サービスへのネットワーク・ルート

  • データベース・サービスの名前に設定される値を持つ、SERVICE_NAMEパラメータ

    ノート:

    指定できるサービス名は1つのみであるため、tnsnames.oraファイルで使用するSERVICE_NAMEパラメータは1つです。SERVICE_NAMEパラメータは、service_namesデータベース初期化パラメータとは別です。service_namesデータベース・パラメータにはデフォルトで、初期化パラメータ・ファイルのdb_namedb_domainパラメータからなるグローバル・データベース名が設定されています。SRVCTLまたはOracle Enterprise Manager Cloud Controlを使用してサービス名を追加すると、データベースに対して追加されたクラスタ管理サービスがリストされます。

通常、Oracle Database Configuration Assistant (DBCA)やOracle Net Configuration Assistant (NETCA)などのツールでは、tnsnames.oraファイルが、Oracle Databaseインストールの場合はORACLE_HOME/network/adminディレクトリ、Oracle Grid Infrastructureインストールの場合はGRID_HOME/network/adminディレクトリ、読取り専用Oracleホームの場合は対応するORACLE_BASE_HOME/network/adminディレクトリに作成されます。なお、複数のデータベースをインストールしてある場合は、このファイルは、DBCAまたはNETCAが実行されているOracleホームまたはGridホーム(または読取り専用インスタンスの場合はOracleベース・ホーム)に作成されます。

Oracle Netは、次の順序でtnsnames.oraファイルをチェックします:

  1. 環境変数TNS_ADMINで指定されたディレクトリ。

  2. TNS_ADMIN環境変数が設定されていないか、このファイルがTNS_ADMINディレクトリにない場合:

    • Oracle Databaseインストールの場合:

      ORACLE_HOME/network/adminディレクトリ(または読取り専用Oracleホームの場合はORACLE_BASE_HOME/network/adminディレクトリ)。

    • Oracle Grid Infrastructureインストールの場合:

      GRID_HOME/network/adminディレクトリ(または読取り専用Oracleホームの場合はORACLE_BASE_HOME/network/adminディレクトリ)。

  3. 読取り専用Oracleホームの場合に、このファイルがOracleベース・ホームに見つからないとき:

    • Oracle Databaseインストールの場合:

      ORACLE_HOME/network/adminディレクトリ。

    • Grid Infrastructureインストールの場合:

      GRID_HOME/network/adminディレクトリ。

Oracle Clusterware 11g リリース2以上では、リスナーの対応付けにtnsnames.oraファイルのエントリは必要ありません。リスナー対応付けは、次のように構成されます。

  • DBCAでは、LOCAL_LISTENERパラメータは設定されなくなりました。データベースを起動するOracle Clusterwareエージェントは、LOCAL_LISTENERパラメータを動的に設定し、このパラメータに別名ではなく実際の値を設定します。そのため、tnsnames.oraファイルのlistener_aliasエントリは不要になります。

  • REMOTE_LISTENERパラメータは、DBCAによって、SCANとSCANポートを参照するように構成され、tnsnames.oraのエントリは不要です。Oracle Clusterwareではscanname:scanportに簡易接続ネーミング・メソッドを使用するため、tnsnames.oraファイルにREMOTE_LISTENERパラメータに対するリスナーの関連付けは不要です。

たとえば、データベースを作成した後に、ポート2012をリスニングする2番目のリスナーを追加する場合は、次のコマンドと類似したコマンドを使用してデータベースを両方のリスナーに起動時に登録します。

SQL> alter system set local_listener='(DESCRIPTION=
(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.61)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.61)(PORT=2012))))' 
scope=BOTH SID='OCRL1';

関連項目: