ヘッダーをスキップ
Oracle Database Net Services管理者ガイド
11g リリース1(11.1)
E05725-04
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

13 Oracle Net Servicesの拡張機能の使用

この章では、拡張接続データ・パラメータ、ロード・バランシングフェイルオーバーおよび非データベース・サービスへの接続など、Oracle Net Servicesの拡張機能の構成方法を説明します。

この章の内容は、次のとおりです。

13.1 拡張ネットワーク・アドレスおよび接続データ情報の構成

この項で説明する、拡張接続記述子に関する項目は、次のとおりです。

13.1.1 リスナー・プロトコル・アドレスのリスト作成

データベース・サービスは、複数のネットワーク・ルートまたはプロトコル・アドレスからアクセスできます。 次の例では、sales1-serverまたはsales2-serverのいずれかのリスナーを使用して、sales.us.example.comに接続します。

sales.us.example.com=
 (DESCRIPTION=
  (ADDRESS_LIST=
    (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-server)(PORT=1521))
    (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-server)(PORT=1521)))
  (CONNECT_DATA=
    (SERVICE_NAME=sales.us.example.com)))

既存のネット・サービス名やデータベース・サービスにネットワーク・プロトコル・アドレスを追加するには、Oracle Enterprise ManagerまたはOracle Net Managerのいずれかを使用します。

Oracle Enterprise Manager

  1. Oracle Enterprise Managerの「ディレクトリ・ネーミング」または「ローカル・ネーミング」ページにアクセスします。

    1. Oracle Enterprise Managerの「Net Services管理」ページにアクセスします。

    2. 「管理」リストから「ローカル・ネーミング」または「ディレクトリ・ネーミング」を選択し、次にディレクトリ・サーバーまたはローカル構成ファイルの場所を選択します。

    3. 「実行」をクリックします。

      「ディレクトリ・ネーミング」または「ローカル・ネーミング」ページが表示されます。

  2. ディレクトリ・サービス名またはネット・サービス名を選択します。

    「ディレクトリ・ネーミング」の場合、簡易検索セクションでネット・サービス名を検索し、「結果」リストからネット・サービスまたはデータベース・サービスを選択し、次に「編集」をクリックします。「ローカル・ネーミング」の場合、リストからネット・サービスを選択し、「編集」をクリックします。

  3. アドレス・セクションで、「追加」をクリックします。

    「アドレスの追加」ページが表示されます。

  4. 「プロトコル」リストからリスナーがリスニングするように構成されているプロトコルを選択します。このプロトコルも、クライアント上にインストールする必要があります。

  5. 提供されたフィールドで選択したプロトコルに対して適切なパラメータ情報を入力します。


    関連項目:


    プロトコル・パラメータの設定については、『Oracle Database Net Servicesリファレンス』を参照してください。

  6. オプションで、拡張パラメータ・セクションを使用して、このセッションにおける送受信操作に必要なI/Oバッファ・スペース制限を「合計送信バッファ・サイズ」および「合計受信バッファ・サイズ」フィールドに指定します。


    関連項目:


    詳細は、「I/Oバッファ・スペースの構成」を参照してください。

  7. 「OK」をクリックします。

    プロトコル・アドレスは、アドレス・セクションに追加されます。

  8. アドレス情報を更新するには、「OK」をクリックします。

Oracle Net Manager

  1. Oracle Net Managerを起動します。

  2. ナビゲータ・ペインで、「ディレクトリ」または「ローカル」「サービス・ネーミング」を展開します。

  3. ネット・サービス名またはデータベース・サービスのいずれかを選択します。

    右ペインには、現行の宛先サービスおよびアドレス・リストが表示されます。

  4. 「アドレスの構成」ボックスで、プラス(+)をクリックして、新規アドレスを追加します。

    新規の「アドレス」タブが表示されます。

    1. プロトコルを選択し、必要なアドレス情報を入力します。


      関連項目:


      プロトコル・アドレス・パラメータの詳細は、『Oracle Database Net Servicesリファレンス』を参照してください。

    2. オプションで、「アドレス」タブ内の「詳細」をクリックし、このセッションにおける送受信操作に必要なI/Oバッファ・スペース制限を「合計送信バッファ・サイズ」および「合計受信バッファ・サイズ」フィールドに指定します。


      関連項目:


      詳細は、「I/Oバッファ・スペースの構成」を参照してください。

    3. 左矢印ボタンと右矢印ボタンを使用して、プロトコル・アドレスをプロトコル・アドレス・リスト内の適切な場所に配置します。複数のアドレス・オプションが構成されていない場合、リスト先頭のアドレスに対して通信が行われます。


      関連項目:


      アドレス・リスト・オプションについては、「アドレス・リスト・パラメータの構成」を参照してください。

  5. 「ローカル」フォルダに対してこれらの変更を行う場合は、「ファイル」「ネットワーク構成の保存」を選択します。

13.1.2 アドレス・リスト・パラメータの構成

データベース・サービスに複数のリスナー・プロトコル・アドレスからアクセスできる場合は、アドレスの使用順序を指定します。アドレスはランダムに選択することも、連続的に接続を試行することもできます。

1つのネット・サービス名またはデータベース・サービスに複数のプロトコル・アドレスが構成されている場合は、表13-1に示されるパラメータを構成できます。

表13-1 アドレス・リスト・パラメータ

パラメータ 説明

SOURCE_ROUTE(ソース・ルーティング)

onに設定すると、Oracle Netでは、各アドレスを提供された順序で、接続先に到達するまで使用します。特定のルート、すなわち特定のコンピュータを使用して接続先に到達するには、このパラメータが必要です。このパラメータは、Oracle Connection Managerへの接続を使用可能にするために使用されます。

関連項目: 「Oracle Connection Managerを使用する場合のクライアントの構成」

FAILOVER(接続時フェイルオーバー

onに設定した場合、最初のリスナーへの接続に失敗するとOracle Netは別のリスナーにフェイルオーバーします。接続を試行する回数は、リスト内のアドレス数で決まります。offに設定した場合は、接続を試行するアドレスは1つのみです。

複数のアドレス・リスト(ADDRESS_LIST)、接続記述子(DESCRIPTION)および複数の接続記述子(DESCRIPTION_LIST)がある場合、接続時フェイルオーバーはデフォルトでonになっています。

重要:

接続記述子をSERVICE_NAMEとともに使用する場合、値がSID_DESCエントリのGLOBAL_DBNAMEではなく、またGLOBAL_DBNAMEセットのないSID_DESCエントリのSID_NAMEでもないことを確認してください。

LOAD_BALANCE(クライアント・ロード・バランシング)

onに設定すると、プロトコル・アドレスのリストを順不同に選択して、複数のリスナーに対する負荷を均衡化します。offに設定した場合、Oracle Netは接続が成功するまでアドレスを順番に試行します。

複数の接続記述子(DESCRIPTION_LIST)がある場合、クライアント・ロード・バランシングはデフォルトでonになっています。



注意:


クライアント・ロード・バランシングや接続時フェイルオーバーをソース・ルーティングと併用することはできません。接続時フェイルオーバーとクライアント・ロード・バランシングではリストから1つのアドレスを選択しますが、ソース・ルーティングではリスト内の各アドレスに順に接続します。

ソース・ルーティングには別の構成が必要となりますが、この項では取り上げません。


関連項目:


ソース・ルーティングに関するクライアントの構成については、「Oracle Connection Managerを使用する場合のクライアントの構成」を参照してください。

接続時フェイルオーバーまたはクライアント・ロード・バランシングを構成するには、次の手順に従います。

  1. 「リスナー・プロトコル・アドレスのリスト作成」の手順を実行してください。

  2. Oracle Enterprise ManagerまたはOracle Net Managerのいずれかを使用して、アドレス・リスト・オプションを構成します。

    Oracle Enterprise Managerでは、接続時フェイルオーバーとクライアント・ロード・バランシング・セクションの適切なオプションを選択します。

    Oracle Net Managerで、「アドレスの構成」ボックスの「詳細」をクリックします。「アドレス・リスト・オプション」ダイアログ・ボックスが表示されます。適切なオプションを選択します。

    表13-2では、アドレス・リスト・オプションについて説明しています。

表13-2 「アドレス・リスト・オプション」ダイアログ・ボックス

オプション パラメータ設定

「接続に成功するまで各アドレスを順番に試行」

FAILOVER=on

「接続に成功するまで各アドレスをランダムに試行」

注意: 「オプションのNet8 8.0 Clientとの互換を使用」が選択されている場合は、このオプションを使用できません。

LOAD_BALANCE=on

FAILOVER=on

「ランダムに選択した1つのアドレスを試行」

注意: 「オプションのNet8 8.0 Clientとの互換を使用」が選択されている場合は、このオプションを使用できません。

LOAD_BALANCE=on

「各アドレスを、接続先に達するまで順番に使用します。」

SOURCE_ROUTE=ON

「最初のアドレスのみを使用します」

注意: 「オプションのNet8 8.0 Clientとの互換を使用」が選択されている場合は、このオプションを使用できません。

LOAD_BALANCE=off

FAILOVER=off

SOURCE_ROUTE=off


次の例は、クライアント・ロード・バランシング用に構成されたtnsnames.oraファイルです。

sales.us.example.com=
 (DESCRIPTION=
  (ADDRESS_LIST=
  (LOAD_BALANCE=on)
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-server)(PORT=1521))
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-server)(PORT=1521)))
  (CONNECT_DATA=
    (SERVICE_NAME=sales.us.example.com)))

次の例は、接続時フェイルオーバー用に構成されたtnsnames.oraファイルです。

sales.us.example.com=
 (DESCRIPTION=
  (ADDRESS_LIST=
   (LOAD_BALANCE=off)
   (FAILOVER=ON)
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-server)(PORT=1521))
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-server)(PORT=1521)))
  (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)))

13.1.3 拡張接続データ・パラメータの構成

接続記述子のCONNECT_DATAセクションは、接続先データベース・サービスを定義します。 次の例では、SERVICE_NAMEsales.us.example.comというサービスを定義します。

sales.us.example.com=
 (DESCRIPTION=
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))
   (CONNECT_DATA=
    (SERVICE_NAME=sales.us.example.com)))

サービス名の他にも、オプションで、表13-3に示されるパラメータを使用して、接続データ情報を構成できます。

表13-3 拡張接続データ設定

Oracle Enterprise Manager/Oracle Net Managerオプション tnsnames.oraファイルのパラメータ 説明

「インスタンス名」

INSTANCE_NAME

アクセスするデータベース・インスタンスを識別するために使用します。

インスタンス名は、初期化パラメータ・ファイルのINSTANCE_NAMEパラメータから取得できます。

注意: 「Oracle8リリース8.0互換識別子を使用」が選択されている場合は、このパラメータを使用できません。

関連項目: 「接続記述子の理解」

「セッション・データ・ユニット・サイズ(バイト)」

SDU

ネットワークを介して送信されるデータ・パケットの転送レートを最適化するには、セッション・データ・ユニット(SDU)・サイズを指定して、ネットワークで送信されるパケット関連のパフォーマンス特性を変更します。

関連項目: 「セッション・データ・ユニットの構成」

「異機種間サービスに使用」

HS

Oracleデータベース・サーバーで異機種間サービスを使用して非Oracleシステムにアクセスする場合は、このオプションをオンにします。

関連項目: 「Oracle異機種間サービスを使用する場合のOracle Net Servicesの構成」

「Oracle Rdb設定」

 


 


Oracle RDBデータベース

RDB_DATABASE

Oracle Rdbデータベースのファイル名を指定します。

関連項目: 「Oracle Rdbデータベースを使用する場合のOracle Net Servicesの構成」

サービスのタイプ

TYPE_OF_SERVICE

Oracle Rdbデータベースで使用するサービスの種類を指定します。

関連項目: 「Oracle Rdbデータベースを使用する場合のOracle Net Servicesの構成」

グローバル・データベース名

GLOBAL_NAME

Oracle Rdbデータベースを識別するために使用します。

関連項目: 「Oracle Rdbデータベースを使用する場合のOracle Net Servicesの構成」


ネット・サービス名またはデータベース・サービスの拡張CONNECT_DATAパラメータを構成するには、次の手順に従います。

既存のネット・サービス名やデータベース・サービスにネットワーク・プロトコル・アドレスを追加するには、Oracle Enterprise ManagerまたはOracle Net Managerのいずれかを使用します。

Oracle Enterprise Manager

  1. Oracle Enterprise Managerの「ディレクトリ・ネーミング」または「ローカル・ネーミング」ページにアクセスします。

    1. Oracle Enterprise Managerの「Net Services管理」ページにアクセスします。

    2. 「管理」リストから「ローカル・ネーミング」または「ディレクトリ・ネーミング」を選択し、次にディレクトリ・サーバーまたはローカル構成ファイルの場所を選択します。

    3. 「実行」をクリックします。

      「ディレクトリ・ネーミング」または「ローカル・ネーミング」ページが表示されます。

  2. ディレクトリ・サービス名またはネット・サービス名を選択します。

    「ディレクトリ・ネーミング」の場合、簡易検索セクションでネット・サービス名を検索し、「結果」リストからネット・サービスまたはデータベース・サービスを選択し、次に「編集」をクリックします。「ローカル・ネーミング」の場合、リストからネット・サービスを選択し、「編集」をクリックします。

  3. 「詳細」タブをクリックします。

  4. 必要に応じてフィールドの入力やオプションの選択を行い、「OK」をクリックします。


    関連項目:


    フィールドおよびオプションの説明は、表13-3「拡張接続データ設定」を参照してください。

  5. 接続データ情報を更新するには、「OK」をクリックします。

Oracle Net Manager

  1. Oracle Net Managerを起動します。

  2. ナビゲータ・ペインで、「ディレクトリ」または「ローカル」「サービス・ネーミング」を展開します。

  3. ネット・サービス名またはデータベース・サービスのいずれかを選択します。

    右ペインには、現行の宛先サービスおよびアドレス・リストが表示されます。

  4. 「サービスの識別」ボックスの「詳細」ボタンをクリックします。

    「詳細サービス・オプション」ダイアログ・ボックスが表示されます。


    関連項目:


    フィールドおよびオプションの説明は、表13-3「拡張接続データ設定」を参照してください。

  5. 必要に応じてフィールドの入力やオプションの選択を行い、「OK」をクリックします。

  6. 「ローカル」フォルダに対してこれらの変更を行う場合は、「ファイル」「ネットワーク構成の保存」を選択します。

13.2 接続ロード・バランシングの構成

接続ロード・バランシング機能を利用すると、複数のディスパッチャ間のアクティブな接続数を均衡化することによって、接続時のパフォーマンスが向上します。Oracle Real Application Clusters環境では、接続プール・ロード・バランシングによって、複数のインスタンス間のアクティブな接続数を均衡化することも可能です。

PMONプロセスはリモート・リスナーを登録できるので、リスナーは、すべてのインスタンスおよびディスパッチャを、それらのある場所にかかわらず常に認識できます。リスナーは、着信したクライアント要求の送信先となるインスタンスを、また共有サーバーが構成されている場合は送信先となるディスパッチャを、ロード情報に応じて判別します。

共有サーバー構成では、リスナーは次の順序でディスパッチャを選択します。1)最小負荷のノード、2)最小負荷のインスタンス、3)そのインスタンスに対する最小負荷のディスパッチャ。専用サーバー構成では、リスナーは次の順序でインスタンスを選択します。1)最小負荷ノード、2)最小負荷インスタンス。

データベース・サービスが複数のノード上に複数のインスタンスを持つ場合、リスナーはロード量が最も少ないノード上にある、ロード量が最も少ないインスタンスを選択します。共有サーバーが構成されている場合、選択したインスタンスの中でロード量が最小のディスパッチャが選択されます。

Oracle9i Real Application Clusters環境では、各インスタンスのディスパッチャは、他のノード上にある他のリスナーにも相互登録される必要があります。これを行うには、DISPATCHERSパラメータのLISTENER属性を使用します。


関連項目:



注意:


接続プール・ロード・バランシングで最適な結果を得るには、同じデータベース・サービスに属するインスタンスを、等価なハードウェアおよびソフトウェア構成上に存在するようにしてください。

この項では、次の2つの例を示しています。

13.2.1 例: 共有サーバーの構成のための接続プール・ロード・バランシング

図13-1は、同じサービスsales.us.example.comの2つのインスタンスsales1およびsales2を持つ、Oracle Real Application Clustersの共有サーバー・データベースを示しています。インスタンスsales1およびsales2は、コンピュータsales1-serverおよびsales2-serverに常駐し、sales1は1つのディスパッチャ、sales2は2つのディスパッチャをそれぞれ持ちます。listenerという名前のリスナーは、それぞれノード1および2上で稼働しています。DISPATCHERSパラメータのlistener属性が構成され、両方のリスナーに対して情報のサービス登録が可能になっています。

図13-1 共有サーバーの構成のためのロード・バランシング環境

図13-1の説明は次にあります。
画像の説明

(LISTENER=listeners_sales)listeners_salesの値は、両方のサーバー上に存在するローカルのtnsnames.oraファイルによって、次のように決定します。

listeners_sales=
 (DESCRIPTION=
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-server)(PORT=1521))
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-server)(PORT=1521)))

環境に応じて、次のような処理が実行されます。次の各処理に付いている番号は、図13-2に示す矢印の番号に対応しています。

  1. PMON プロセスは、インスタンスsales1およびsales2を、両方のリスナーに登録します。リスナーは、インスタンスおよびディスパッチャのロード時に動的に更新されます。次のロード情報が登録されます。

    各インスタンスの1分当たりのロード量平均は、sales1の場合600sales2の場合400になります。

    各インスタンスへの接続数は、sales1の場合200sales2の場合300になります。

    各インスタンスへのディスパッチャ接続数は、dispatcher1の場合200dispatcher2の場合100dispatcher3の場合200になります。

    sales2-serverのロード量平均(400)は、sales1-serverのロード量平均(600)より少なくなります。これは、sales1-serverに必要な処理が多い場合に発生する可能性があります。sales1への接続数(200)は、その唯一のディスパッチャであるdispatcher1への接続数と同じです。sales2の接続数(300)は、その2つのディスパッチャであるdispatcher2の接続数(100)とdispatcher3の接続数(200)の合計になります。したがって、sales2にはsales1より多くの接続が存在します。この例では、sales2-serverがロード量が最小のノード、sales2がロード量が最小のインスタンス、dispatcher2がロード量が最小のディスパッチャです。

  2. クライアントが接続要求を送信します。

    接続記述子が構成されプロトコル・アドレスが1つ成功するまで、各プロトコル・アドレスがランダムに試行されます。

    sales.us.example.com=
     (DESCRIPTION=
      (LOAD_BALANCE=on)
      (FAILOVER=on)
      (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-server)(PORT=1521))
      (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-server)(PORT=1521))
      (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)))
    

    sales1-server上のリスナーがランダムに選択されて、クライアント接続要求を受信します。

    sales1-server上のリスナーは、インスタンスsales1およびsales2のロード量を比較します。この比較では、ノードsales1-serverおよびsales2-server上のロード量がそれぞれ考慮されます。sales2-serverのロード量はsales1-serverのロード量より少ないため、リスナーは、sales1-serverよりsales2-serverを選択します。

  3. リスナーは、ディスパッチャdispatcher2のロード量とdispatcher3のロード量を比較します。dispatcher2のロード量はdispatcher3のロード量より少ないため、リスナーはクライアント接続要求をdispatcher2にリダイレクトします。

  4. クライアントは、dispatcher2に直接接続します。

図13-2 共有サーバーの構成のためのロード・バランシングの例

図13-2の説明は次にあります。
画像の説明

13.2.2 例: 専用サーバーの構成のための接続プール・ロード・バランシング

図13-3は、同じサービスsales.us.example.comの2つのインスタンスsales1およびsales2を持つ、Oracle Real Application Clustersの専用サーバー・データベースを示しています。インスタンスsales1およびsales2は、それぞれコンピュータsales1-serverおよびsales2-serverに常駐します。listenerという名前のリスナーは、それぞれノード1および2上で稼働しています。REMOTE_LISTENERパラメータが構成され、両方のリスナーに対して情報のサービス登録が可能になっています。

図13-3 専用サーバーの構成のためのロード・バランシング環境

図13-3の説明は次にあります。
画像の説明

(REMOTE_LISTENER=listener_sales2)listener_sales2の値は、sales1-server上に存在するローカルのtnsnames.oraファイルによって、次のように決定します。

listener_sales2=
 (DESCRIPTION=
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-server)(PORT=1521)))

(REMOTE_LISTENER=listener_sales1)listener_sales1 の値は、sales2-server上に存在するローカルのtnsnames.oraファイルによって、次のように決定します。

listener_sales1=
 (DESCRIPTION=
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-server)(PORT=1521)))

環境に応じて、次のような処理が実行されます。次の各処理に付いている番号は、図13-4に示す矢印の番号に対応しています。

  1. PMON プロセスは、インスタンスsales1およびsales2を、両方のリスナーに登録します。リスナーは、インスタンスのロード時に動的に更新されます。表13-4のロード情報が登録されます。

    表13-4 リスナーが更新される際のインスタンスのロード情報

    サーバーまたはインスタンス 1分当たりのノードのロード量平均 インスタンスへの接続数

    sales1-server

    450

     


    sales2-server

    200

     


    sales1

     


    200

    sales2

     


    150


    表13-4では、sales2-serverがロード量が最小のノード、sales2がロード量が最小のインスタンスです。

  2. クライアントが接続要求を送信します。

    接続記述子が構成されプロトコル・アドレスが1つ成功するまで、各プロトコル・アドレスがランダムに試行されます。

    sales.us.example.com=
     (DESCRIPTION=
      (LOAD_BALANCE=on)
      (FAILOVER=on)
      (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-server)(PORT=1521))
      (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-server)(PORT=1521))
      (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)))
    

    sales1-server上のリスナーがランダムに選択されて、クライアント接続要求を受信します。

    sales1-server上のリスナーは、インスタンスsales1およびsales2のロード量を比較します。この比較では、ノードsales1-serverおよびsales2-server上のロード量がそれぞれ考慮されます。sales2-serverのロード量はsales1-serverのロード量より少ないため、リスナーは、sales1-serverよりsales2-serverを選択します。

  3. sales1-server上のリスナーが、クライアント接続要求をsales2-serverのリスナーにリダイレクトします。

  4. クライアントがsale2-server上のリスナーに接続します。リスナーが専用サーバー・プロセスを開始し、専用サーバー・プロセスがリスナーから接続要求を継承します。

図13-4 専用サーバーの構成のためのロード・バランシングの例

図13-4の説明は次にあります。
画像の説明

13.3 透過的アプリケーション・フェイルオーバーの構成


注意:


透過的アプリケーション・フェイルオーバー(TAF)はOracle Database 11g Enterprise Editionとともに使用できます。

TAFは、Oracle Netが失敗した接続を、別のリスナーにフェイルオーバーするように指示します。これによりユーザーは、最初の接続に障害が発生したことを意識せずに、新しい接続で作業を続行できます。

TAFを使用する場合は、ネット・サービス名の構成において接続記述子のCONNECT_DATAセクションにFAILOVER_MODEパラメータを手動で設定する必要があります。

この項で説明する項目は、次のとおりです。

13.3.1 TAFについて

透過的アプリケーション・フェイルオーバー(TAF)は、データベース・インスタンスに障害が発生した場合、クライアントが存続しているデータベースに再接続できるようにするクライアント側の機能です。サーバーは通知を使用して、クライアント側でTAFコールバックをトリガーします。

TAFは、クライアント側で指定されたTNS接続文字列、またはサーバー側のサービス属性を使用して構成されます。ただし、両方の方法を使用してTAFが構成される場合、サーバー側のサービス属性がクライアント側の設定に優先されます。サーバー側のサービス属性は、TAFの設定で優先されます。

TAFは、セッション・フェイルオーバーと選択フェイルオーバーの2つのモードのいずれかで動作します。 セッション・フェイルオーバーは、失われた接続およびセッションを再作成します。選択フェイルオーバーは、処理中だった問合せを再実行します。

障害が発生すると、OCIコールバックを使用してクライアント側でコールバック機能が開始されます。これは、標準のOCI接続、および接続プール接続とセッション・プール接続を使用します。コールバック、接続プールおよびセッション・プールの詳細は、OCIのマニュアルを参照してください。

TAFはRACを使用します。詳細および推奨構成は、『Oracle Real Application Clusters管理者ガイド』を参照してください。

TAFはPhysical Data Guardで動作して、自動フェイルオーバーを提供します。

13.3.2 TAFのリストア対象

TAFは、アクティブなデータベース接続に関連する次の要素の、いくつかまたはすべてを自動的にリストアします。ただし、TAFによって接続をリカバリするには、他の要素をアプリケーション・コードに埋め込む必要があることもあります。

13.3.2.1 クライアント/サーバー・データベース接続

TAFは、同じ接続文字列、またはフェイルオーバーを構成するときに指定する代替接続文字列を使用して、自動的に接続を再確立します。

13.3.2.2 ユーザーのデータベース・セッション

TAFは、障害発生前と同じユーザーIDで自動的にユーザーをログインします。複数のユーザーが接続を使用していて、これらのユーザーがデータベース・コマンドを処理しようとすると、TAFはこれらのユーザーを自動的にログインします。残念ながら、TAFは他のセッション・プロパティを自動的にリストアできません。ただし、これらのプロパティは、コールバック関数をコールすることによりリストアできます。

13.3.2.3 実行されたコマンド

接続失敗の時点でコマンドが完全に実行され、データベースの状態が変更された場合は、TAFはこのコマンドを再送しません。データベースを変更した可能性があるコマンドに応答してTAFが再接続した場合は、TAFはアプリケーションにエラー・メッセージを発行します。

13.3.2.4 フェッチに使用されるオープン・カーソル

TAFは、フェイルオーバー前にカーソルからの行のフェッチを開始したアプリケーションが、フェイルオーバー後に行のフェッチを継続することを可能にします。これは検索フェイルオーバーと呼ばれます。これは、同じスナップショットを使用してSELECT文を再度実行し、すでにフェッチされた行を廃棄し、最初フェッチされなかった行を取得することにより行われます。TAFは、廃棄された行が最初に戻された行であることを確認し、そうでない場合はエラー・メッセージを返します。

13.3.2.5 アクティブ・トランザクション

TAFはフェイルオーバー後にアクティブ・トランザクションを保つことができないため、障害発生時にはアクティブ・トランザクションはすべてロールバックされます。このため、アプリケーションは、ROLLBACKが発行されるまでエラー・メッセージを受け取ることになります。

13.3.2.6 サーバー側プログラム変数

PL/SQLパッケージの状態などのサーバー側プログラム変数は、障害発生時に消失します。TAFはこれらをリカバリできません。これらは、フェイルオーバー・コールバックからコールすることにより初期化できます。


関連項目:


『Oracle Call Interfaceプログラマーズ・ガイド』

13.3.3 TAFデータベース構成

TAFは次のデータベース構成を使用して、データベース障害を効果的に隠ぺいします。

  • Oracle Real Application Clusters

  • レプリケート・システム

  • スタンバイ・データベース

  • シングル・インスタンスのOracleデータベース


    関連項目:


    『Oracle Real Application Clustersインストレーションおよび構成』

13.3.4 FAILOVER_MODEパラメータ

FAILOVER_MODEパラメータは、接続記述子のCONNECT_DATAセクションに含まれている必要があります。FAILOVER_MODEには、表13-5で説明するサブパラメータを含めることができます。

表13-5 FAILOVER_MODEパラメータのサブパラメータ

FAILOVER_MODEサブパラメータ 説明

BACKUP

バックアップ接続として別のネット・サービス名を指定します。バックアップは、preconnectを使用して事前に接続を確立する場合に指定します。

TYPE

フェイルオーバーの種類を指定します。デフォルトでは、Oracle Call Interface(OCI)アプリケーションに対して、3種類のOracle Netフェイルオーバー機能を利用できます。

  • session: セッションをフェイルオーバーに設定します。ユーザーの接続が失われた場合に、新しいセッションを自動的に作成して、ユーザーをバックアップします。このフェイルオーバーでは、SELECTはリカバリされません。

  • select: 障害発生後もユーザーはカーソルを継続してオープンし、フェッチできるようにします。ただしこのモードでは、通常の検索操作を行うクライアント側にオーバーヘッドが生じます。

  • none: これがデフォルトです。フェイルオーバー機能は使用されません。フェイルオーバーが実行されないように、明示的に指定することもできます。

METHOD

プライマリ・ノードからバックアップ・ノードにフェイルオーバーされる速さを決定します。

  • basic: フェイルオーバー時に接続を確立します。フェイルオーバー時まで、バックアップ・サーバーはほとんど何もする必要はありません。

  • preconnect: 接続を事前に確立します。フェイルオーバーは高速に行われますが、バックアップ・インスタンスはサポートされた各インスタンスからの接続すべてをサポートできる必要があります。

RETRIES

フェイルオーバー後に接続を行う回数を指定します。DELAYが指定されている場合、RETRIESのデフォルトは、5回再試行するように設定されています。

注意: コールバック関数が登録されていると、このサブパラメータは無視されます。

DELAY

次に接続を試みるまでの待機時間を秒数で指定します。RETRIESが指定されると、DELAYはデフォルトで1秒に設定されます。

注意: コールバック関数が登録されていると、このサブパラメータは無視されます。



注意:


Oracle Net Manager では、TAFパラメータはサポートされません。これらのパラメータは、手動で追加する必要があります。

13.3.5 TAF実装


重要:

listener.oraSID_LIST_listener_nameセクションのGLOBAL_DBNAMEパラメータは設定しないでください。静的に構成されたグローバル・データベース名は、TAFを使用禁止にします。

TAFは、FAILOVER_MODEパラメータの設定次第で何とおりにでも実装できます。オラクル社では、次の方法をお薦めします。

13.3.5.1 例: 接続時フェイルオーバーおよびクライアント・ロード・バランシングのTAF

複数のアドレスについて接続時フェイルオーバーおよびクライアント・ロード・バランシングを行うようにTAFを実装します。次の例では、Oracle Netはsales1-serverまたはsales2-serverのいずれかのプロトコル・アドレスにランダムに接続します。接続後にインスタンスに障害が発生した場合は、TAFアプリケーションが他のノードのリスナーにフェイルオーバーし、実行中のSELECT文があればその文を保持します。

sales.us.example.com=
 (DESCRIPTION=
  (LOAD_BALANCE=on)
  (FAILOVER=on) 
  (ADDRESS=
       (PROTOCOL=tcp)
       (HOST=sales1-server)
       (PORT=1521))
  (ADDRESS=
       (PROTOCOL=tcp)
       (HOST=sales2-server)
       (PORT=1521))
  (CONNECT_DATA=
     (SERVICE_NAME=sales.us.example.com)
     (FAILOVER_MODE=
       (TYPE=select) 
       (METHOD=basic))))

13.3.5.2 例: 接続再試行のTAF

TAFでは、RETRIESおよびDELAYパラメータを使用して、最初の接続試行が失敗した場合に自動的に接続を再試行できます。次の例では、Oracle Netはsales1-serverのリスナーへの再接続を試行します。このフェイルオーバー接続に失敗した場合は、15秒待機してから再び再接続を試行します。Oracle Netは最大20回まで再接続を試行します。

sales.us.example.com=
 (DESCRIPTION=
  (ADDRESS=
       (PROTOCOL=tcp)
       (HOST=sales1-server)
       (PORT=1521))
  (CONNECT_DATA=
     (SERVICE_NAME=sales.us.example.com)
     (FAILOVER_MODE=
       (TYPE=select) 
       (METHOD=basic)
       (RETRIES=20)
       (DELAY=15))))

13.3.5.3 例: 接続事前確立のTAF

バックアップ接続は事前に確立できます。初期接続およびバックアップ接続は明示的に指定する必要があります。 次の例では、ネット・サービス名sales1.us.example.comを使用してsales1-serverのリスナーに接続するクライアントが、sales2-serverにも事前接続されます。接続後にsales1-serverに障害が発生した場合は、sales2-serverにフェイルオーバーし、実行中のSELECT文があればその文を保持します。 同様に、sales2-serverのリスナーに、sales2.us.example.comを使用して接続するクライアントのために、Oracle Netはsales1-serverに事前に接続します。

sales1.us.example.com=
 (DESCRIPTION=
  (ADDRESS=
       (PROTOCOL=tcp)
       (HOST=sales1-server)
       (PORT=1521))
  (CONNECT_DATA=
     (SERVICE_NAME=sales.us.example.com)
     (INSTANCE_NAME=sales1)
     (FAILOVER_MODE=
       (BACKUP=sales2.us.example.com)
       (TYPE=select) 
       (METHOD=preconnect))))
sales2.us.example.com=
 (DESCRIPTION=
  (ADDRESS=
       (PROTOCOL=tcp)
       (HOST=sales2-server)
       (PORT=1521))
  (CONNECT_DATA=
     (SERVICE_NAME=sales.us.example.com)
     (INSTANCE_NAME=sales2)
     (FAILOVER_MODE=
       (BACKUP=sales1.us.example.com)
       (TYPE=select) 
       (METHOD=preconnect))))

13.3.6 TAF検証

V$SESSIONビューでFAILOVER_TYPEFAILOVER_METHODおよびFAILED_OVER列を問い合せて、TAFが正しく構成されているかを確認できます。

V$SESSIONビューを使用して、接続されたクライアントおよびクライアントのTAFステータスに関する情報を取得します。たとえば次のSQL文のように、FAILOVER_TYPEFAILOVER_METHODおよびFAILED_OVER列の問合せを行い、正しくTAFを構成したことを確認します。

SELECT MACHINE, FAILOVER_TYPE, FAILOVER_METHOD, FAILED_OVER, COUNT(*)
FROM V$SESSION
GROUP BY MACHINE, FAILOVER_TYPE, FAILOVER_METHOD, FAILED_OVER;

フェイルオーバー前の出力は次のようになります。

MACHINE              FAILOVER_TYPE FAILOVER_M FAI   COUNT(*)
-------------------- ------------- ---------- --- ----------
sales1               NONE          NONE       NO          11
sales2               SELECT        PRECONNECT NO           1

フェイルオーバー後の出力は次のようになります。

MACHINE              FAILOVER_TYPE FAILOVER_M FAI   COUNT(*)
-------------------- ------------- ---------- --- ----------
sales2               NONE          NONE       NO          10
sales2               SELECT        PRECONNECT YES          1

注意:


TAFの各ステップは、適切に構成されたOCI TAF CALLBACKファンクションを使用して監視できます。


関連項目:

  • 『Oracle Call Interfaceプログラマーズ・ガイド』

  • V$SESSIONビューの詳細は、『Oracle Databaseリファレンス』を参照してください。


13.4 プライマリおよびセカンダリ・インスタンス構成のインスタンス・ロールの指定

INSTANCE_ROLEパラメータは、接続記述子のCONNECT_DATAセクションのためのオプションのパラメータです。これにより、Oracle Real Application Clusters構成のプライマリ・インスタンスおよびセカンダリ・インスタンスへの接続を指定できます。

このパラメータは次の場合に役立ちます。

INSTANCE_ROLEは次の値をサポートします。

primary: プライマリ・インスタンスへの接続を指定します。

secondary: セカンダリ・インスタンスへの接続を指定します。

any: プライマリ・インスタンス・ロールかセカンダリ・インスタンス・ロールかにかかわらず、ロード量が最小のインスタンスへの接続を指定します。

例: インスタンス・ロール・タイプへの接続

次の例では、ネット・サービス名sales_primaryがプライマリ・インスタンスへの接続を使用可能にします。また、ネット・サービス名sales_secondaryがセカンダリ・インスタンスへの接続を使用可能にします。

sales_primary=
 (DESCRIPTION=
  (ADDRESS=
       (PROTOCOL=tcp)
       (HOST=sales1-server)
       (PORT=1521))
  (ADDRESS=
       (PROTOCOL=tcp)
       (HOST=sales2-server)
       (PORT=1521))
  (CONNECT_DATA=
     (SERVICE_NAME=sales.us.example.com)
     (INSTANCE_ROLE=primary)))
sales_secondary=
 (DESCRIPTION=
  (ADDRESS=
       (PROTOCOL=tcp)
       (HOST=sales1-server)
       (PORT=1521))
  (ADDRESS=
       (PROTOCOL=tcp)
       (HOST=sales2-server)
       (PORT=1521))
  (CONNECT_DATA=
     (SERVICE_NAME=sales.us.example.com)
     (INSTANCE_ROLE=secondary)))

例: 特定のインスタンスへの接続

Oracle Enterprise Managerおよびその他のシステム管理製品が、管理タスクを実行するロールにかかわらず、特定のインスタンスに接続する必要がある場合があります。このような接続の場合は、(INSTANCE_NAME=instance_name)および(INSTANCE_ROLE=any)を構成して、ロールにかかわらずインスタンスに接続します。

次の例では、ネット・サービス名sales1sales1-serverのインスタンスへの接続を使用可能にします。また、sales2sales2-serverのインスタンスへの接続を使用可能にします。(SERVER=dedicated)は、専用サーバー接続を強制するために指定します。

sales1=
 (DESCRIPTION=
  (ADDRESS=
       (PROTOCOL=tcp)
       (HOST=sales1-server)
       (PORT=1521))
  (CONNECT_DATA=
     (SERVICE_NAME=sales.us.example.com)
     (INSTANCE_ROLE=any)
     (INSTANCE_NAME=sales2)
     (SERVER=dedicated)))
sales2=
 (DESCRIPTION=
  (ADDRESS=
       (PROTOCOL=tcp)
       (HOST=sales2-server)
       (PORT=1521))
  (CONNECT_DATA=
     (SERVICE_NAME=sales.us.example.com)
     (INSTANCE_ROLE=any)
     (INSTANCE_NAME=sales2)
     (SERVER=dedicated)))

例: 接続事前確立のTAF

透過的アプリケーション・フェイルオーバー(TAF)が構成された場合、セカンダリ・インスタンスにバックアップ接続を事前に確立できます。初期接続およびバックアップ接続は明示的に指定する必要があります。次の例では、Oracle Netがsales1-serverのリスナーに接続し、セカンダリ・インスタンスのsales2-serverに事前に接続します。接続後にsales1-serverに障害が発生した場合は、TAFアプリケーションがセカンダリ・インスタンスのsales2-serverにフェイルオーバーし、実行中のSELECT文があればその文を保持します。

sales1.example.com=
 (DESCRIPTION=
  (ADDRESS=
       (PROTOCOL=tcp)
       (HOST=sales1-server)
       (PORT=1521))
  (CONNECT_DATA=
     (SERVICE_NAME=sales.us.example.com)
     (INSTANCE_ROLE=primary) 
     (FAILOVER_MODE=
       (BACKUP=sales2.example.com)
       (TYPE=select)
       (METHOD=preconnect))))
sales2.example.com=
 (DESCRIPTION=
  (ADDRESS=
       (PROTOCOL=tcp)
       (HOST=sales2-server)
       (PORT=1521))
  (CONNECT_DATA=
     (SERVICE_NAME=sales.us.example.com)
     (INSTANCE_ROLE=secondary)))

13.5 非Oracle Databaseサービスへの接続の構成

次の項目では、非Oracleデータベース・サービスへの接続の構成方法を説明します。

13.5.1 外部プロシージャのデフォルト構成

外部プロシージャは、別のプログラムからコールされる、異なる言語で記述されたプロシージャです。特定目的の処理実行に必要な1つ以上のCルーチンをコールするPL/SQLプログラムは、その一例です。

アプリケーションが外部プロシージャをコールすると、Oracle Databaseはextprocという名前の外部プロシージャ・エージェントを開始します。Oracle Databaseによって確立されたネットワーク接続を使用して、アプリケーションがエージェントに次の情報を渡します。

  • DLLまたは共有ライブラリの名前

  • 外部プロシージャ名

  • 任意のパラメータ

次に、エージェントはDLLや共有ライブラリをロードして外部プロシージャを実行し、外部プロシージャから戻された値をアプリケーションに戻します。

エージェントは、外部プロシージャをコールするアプリケーションと同じコンピュータに常駐している必要があります。


注意:


外部プロシージャのデフォルト構成では、ネットワーク・リスナーがOracle Databaseおよびextprocエージェントを使用する必要はありません。extprocエージェントはOracle Databaseによって直接生成されるため、Oracleリスナーによって予期せずextprocが生成される恐れはありません。最大限のセキュリティを確保するため、このデフォルト構成が推奨されています。

外部プロシージャのデフォルト構成を変更し、Oracleリスナーによってextprocエージェントを生成できます。ただし、このためには、追加のネットワーク構成手順を実行する必要があります。

次のものを使用する場合、Oracleリスナーによってextprocエージェントを生成する必要があります。

  • マルチスレッド・エージェント

  • MTSモードのOracle Database(Windows)

  • 外部プロシージャを別のextprocエージェントにリダイレクトできるような、LIBRARY指定のAGENT句またはPROCEDURE指定のAGENT IN


外部プロシージャのデフォルト構成を使用する場合、extprocエージェントはOracle Databaseによって直接生成されます。listener.oraまたはtnsnames.oraに必要な構成の変更はありません。

外部プロシージャのデフォルト構成を使用する場合、外部プロシージャで使用される環境変数を、$ORACLE_HOME/hs/adminディレクトリ(UNIXオペレーティング・システムの場合)または%ORACLE_HOME%\hs\adminディレクトリ(Windowsの場合)にあるextproc.oraファイルで定義します。

13.5.1.1 外部プロシージャを使用する場合のOracle Net Servicesの構成

外部プロシージャのデフォルト構成を変更し、旧リリースのOracle Databaseに類似したリスナーによってextprocエージェントを生成できます。

このためには、デフォルト構成を次のように変更します。

  1. 外部プロシージャを処理するための別のリスナーまたは既存のリスナーを構成および実行します。

    Oracle Net Configuration Assistantは、データベース・サーバーのインストール時に、データベースと外部プロシージャの両方の接続を受け入れるようにリスナーを構成します。さらに、Oracle Net Configuration Assistantは、データベース・サーバーのtnsnames.oraファイルに外部プロシージャのネット・サービス名を構成します。外部プロシージャ・エージェントでロードできるのは、ORACLE_HOMEbinディレクトリまたはlibディレクトリからのDLLのみです。

    例13-1では、listener.oraファイルの構成例を示します。

    例13-1 サンプルの外部プロシージャを設定したlistener.oraファイル

    LISTENER=
      (DESCRIPTION=
        (ADDRESS_LIST=
          (ADDRESS=(PROTOCOL=tcp)(HOST=sale-server)(PORT=1521))
          (ADDRESS=(PROTOCOL=ipc)(KEY=extproc))))
    SID_LIST_LISTENER=
      (SID_LIST=
        (SID_DESC=
          (GLOBAL_DBNAME=sales.us.example.com)
          (ORACLE_HOME=/oracle)
          (SID_NAME=sales))
        (SID_DESC=
          (SID_NAME=plsextproc)
          (ORACLE_HOME=/oracle)
          (PROGRAM=extproc)))
    

    例13-2では、tnsnames.oraファイルの構成例を示します。

    例13-2 サンプルの外部プロシージャを設定したtnsnames.oraファイル

    EXTPROC_CONNECTION_DATA=
     (DESCRIPTION=
       (ADDRESS=(PROTOCOL=ipc)(KEY=extproc))
       (CONNECT_DATA=
        (SID=plsextproc)))
    

    リスナーによって生成されたextprocエージェントは、リスナーのオペレーティング・システム権限を継承します。そのため、別のリスナーを構成する場合、データベースのリスナーのオペレーティング・システム権限よりも低い権限で実行します。

  2. extprocエージェントがロードできるDLLは、listener.oraファイルに明示的にリストして制限します。

作業の詳細は次のとおりです。

外部プロシージャのデフォルト構成を変更するには、外部プロシージャを処理するための別のリスナーまたは既存のリスナーを構成および実行します。

  1. 外部プロシージャを処理するための既存のリスナーを構成するには、既存のリスナーを選択し、Oracle Net Configuration Assistantを使用してこれを構成します。

    ほとんどのインストールの場合、このリスナーの名前はLISTENERです。

    1. Oracle Enterprise ManagerのOracle Netの管理ページにアクセスします。

    2. 「管理」リストから「リスナー」を選択し、構成ファイルの場所を含むOracleホームを選択します。

    3. 「実行」をクリックします。

      「リスナー」ページが表示されます。

    4. Oracle Net Configuration Assistantによって生成された既存のリスナーを選択し、「編集」をクリックします。

      リスナーの編集ページが表示されます。

    5. アドレス・セクションで外部プロシージャのプロトコル・アドレスを選択し、「追加」をクリックします。

    6. 「その他のサービス」タブをクリックします。

    7. 外部プロシージャのサービス情報を表す行を選択し、「追加」をクリックします。

  2. 表13-6に示されるパラメータを含めたextprocに関するサービス情報を、listener.oraファイルに追加します。

外部プロシージャを処理するための別のリスナーを構成および実行するには、Oracle Net Configuration Assistantを使用して別のリスナーの外部プロシージャ・エントリを削除します。

  1. 外部プロシージャを排他的に処理する別のリスナーを作成します。

    1. 「リスナー」ページにナビゲートします。

    2. 「作成」をクリックします。

      「リスナーを作成」ページが表示されます。

    3. 一意のリスナー名を「リスナー名」フィールドに入力します(「リスナー名」フィールドにLISTENEREXTPROCなど)。

  2. アドレス・セクションに、IPCプロトコル・アドレスを構成します。

    1. 「追加」をクリックします。

      「アドレスの追加」ページが表示されます。

    2. 「プロトコル」リストからIPCを選択します。

    3. 「キー」フィールドに、extprocのキー値を入力します。


      関連項目:


      リスナー・プロトコル・アドレスの構成の詳細は、「リスニング用プロトコル・アドレスの構成」を参照してください。

    4. 「OK」をクリックします。

  3. 表13-6に示されるパラメータを含めたextprocに関するサービス情報を、listener.oraファイルに追加します。

表13-6 listener.oraファイルの外部プロシージャ設定

Oracle Enterprise Managerのフィールド listener.oraファイルのパラメータ 説明

プログラム名

PROGRAM

実行可能な外部プロシージャ・エージェントの名前を指定します。

注意: Windowsの場合、実行可能ファイルが、%ORACLE_HOME%\binディレクトリに存在している必要があります。

環境変数

ENVS

外部プロシージャのデフォルト構成を使用する場合、外部プロシージャで使用される環境変数を、$ORACLE_HOME/hs/adminディレクトリ(UNIXオペレーティング・システムの場合)または%ORACLE_HOME%\hs\adminディレクトリ(Windowsの場合)にあるextproc.oraファイルで定義します。

注意: extproc.oraが使用されている場合、listener.oraの同じ環境変数ENVSより優先されます。

構文: SET name=value

例: SET EXTPROC_DLLS=ANY

環境変数EXTPROC_DLLSを指定して、extprocがロードできるDLLを制限します。環境変数EXTPROC_DLLSの指定がない場合、extprocは、UNIXオペレーティング・システムの場合は$ORACLE_HOME/libから、Windowsの場合は%ORACLE_HOME%\binからDLLをロードします。

EXTPROC_DLLSを次のいずれかの値に設定します。

  • DLLのコロン区切りリスト

    構文: "DLL:DLL"

    説明: この値に設定すると、extprocは指定されたDLLをロードしたり、またはUNIXオペレーティング・システムの場合$ORACLE_HOME/libから、Windowsの場合%ORACLE_HOME%\binからDLLをロードできます。DLLの完全なディレクトリ・パスとファイル名を入力する必要があります。

  • ONLY(セキュリティを最大にする場合に推奨)

    構文: "ONLY:DLL:DLL"

    説明: この値に設定すると、extprocは指定されたDLLのみロードできます。DLLの完全なディレクトリ・パスとファイル名を入力する必要があります。

  • ANY

    構文: "ANY"

    説明: この値に設定すると、extprocは任意のDLLをロードできます。ANYに設定すると、DLLチェックは無効になります。

例:

"EXTPROC_DLLS=/home/xyz/mylib.so:/home/abc/urlib.so,LD_LIBRARY_PATH=/private/xpm/lib:/private/mylibs,
MYPATH=/usr/ucb:/usr/local/packages,APL_ENV_FILE=/apl/conf/env.txt"

"EXTPROC_DLLS=ONLY:/home/xyz/mylib.so:/home/abc/urlib.so,LD_LIBRARY_PATH=/private/xpm/lib:/private/mylibs,
MYPATH=/usr/ucb:/usr/local/packages,APL_ENV_FILE=/apl/conf/env.txt"

"EXTPROC_DLLS=ANY,LD_LIBRARY_PATH=/private/xpm/lib:/private/mylibs,
MYPATH=/usr/ucb:/usr/local/packages,APL_ENV_FILE=/apl/conf/env.txt"

Oracleホーム・ディレクトリ

ORACLE_HOME

エージェントのOracleホームの場所を指定します。

SID

SID_NAME

外部プロシージャ・エージェントのシステム識別子を任意の名前で指定します。


extprocに関するサービス情報を構成する手順は次のとおりです。

  1. 「その他のサービス」タブをクリックします。

  2. 「追加」をクリックします。

    「その他のサービスの作成」ページが表示されます。

  3. extproc「プログラム名」フィールドに、extproc実行ファイルが存在するOracleホームを「Oracleホーム・ディレクトリ」フィールドに、extprocなどのシステム識別子を「SID」フィールドにそれぞれ入力します。

  4. 環境変数セクションで、「行の追加」をクリックします。

  5. EXTPROC_DLLS環境変数を「名前」フィールドに、DLLのディレクトリ・パスとファイル名を「値」フィールドに入力します。

  6. 「OK」をクリックします。

    「リスナーを作成」ページが表示されます。

  7. 「OK」をクリックしてリスナーを追加します。

    リスナーが「リスナー」ページに追加されます。

    listener.oraファイルの外部プロシージャに関する情報は、次の出力のように更新されます。

    LISTENEREXTPROC=
     (DESCRIPTION=
      (ADDRESS=
         (PROTOCOL=ipc)(KEY=extproc)))
    SID_LIST_LISTENEREXTPROC=
      (SID_LIST=
        (SID_DESC=
         (PROGRAM=extproc)
         (ENVS="EXTPROC_DLLS=ONLY:/home/xyz/mylib.so:/home/abc/urlib.so,
          LD_LIBRARY_PATH=/private/xpm/lib:/private/mylibs,
          MYPATH=/usr/ucb:/usr/local/packages,APL_ENV_FILE=/apl/conf/env.txt")
         (SID_NAME=extproc)
         (ORACLE_HOME=/oracle)))
    
  8. oracleユーザーより低い権限のユーザー・アカウントから、外部プロシージャのリスナーを起動します。

    このユーザー・アカウントに、oracleが所有するファイルへのアクセス権がないことを確認します。具体的には、このユーザーは、データベース・ファイルまたはOracleサーバーのアドレス空間に対する読取り権限または書込み権限を持つことはできません。さらに、このユーザーには、listener.oraファイルに対する読取り権限が必要ですが、書込み権限を持つことはできません。

    低い権限でリスナーを実行することによって、リスナー制御ユーティリティのSETコマンドを使用せずに、listener.oraファイルにあるこのリスナーの構成を変更できます。 このため、オラクル社では、リスナーの実行前にlistener.oraファイルの構成を完了することをお薦めします。


    関連項目:

    • リスナー制御ユーティリティのSTARTコマンドを使用してリスナーを起動する方法については、「タスク1: リスナーの起動」を参照してください。

    • 外部プロシージャ・コールを使用可能にする方法については、『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』を参照してください。


13.5.2 Oracle異機種間サービスを使用する場合のOracle Net Servicesの構成

異機種間サービスは、Oracleデータベース・サーバー内に統合されたコンポーネントで、Oracleデータベース・サーバーから非Oracleシステムにアクセスする汎用的なテクノロジを提供するものです。異機種間サービスを使用すると、次のことが可能になります。

  • Oracle SQLを使用して、Oracleデータベース・サーバーに存在するデータと同じように、非Oracleシステムに格納されているデータに透過的にアクセスすること

  • Oracleプロシージャ・コールを使用して、Oracle分散環境からOracle以外のシステム、サービスまたはApplication Program Interface(API)に透過的にアクセスすること

異機種間サービスはOracleデータベース・サーバーで汎用的なテクノロジを提供しますが、特定の非Oracleシステムにアクセスするには異機種間サービス・エージェントが必要です。

非Oracleシステムへの接続を開始する際、Oracleデータベース・サーバーはゲートウェイ上のリスナーを介してエージェント・プロセスを起動します。Oracleデータベース・サーバーがエージェントに接続できるようにするには、次の手順を実行します。

  1. ゲートウェイ上のリスナーが、Oracleデータベース・サーバーから受信した要求をリスニングし、異機種間サービス・エージェントを起動するように構成します。このために、次のパラメータをlistener.oraファイルに構成します。

    • PROGRAM: 実行可能エージェントの名前を指定します。

    • ORACLE_HOME: 実行可能エージェントのOracleホームの場所を指定します。

    • SID_NAME: Oracleシステム識別子(SID)を指定します。

  2. Oracle Enterprise Managerで、PROGRAMORACLE_HOMEおよびSIDパラメータを構成します。

    Oracle Enterprise ManagerのOracle Netの管理ページにアクセスします。

  3. 「管理」リストから「リスナー」を選択し、構成ファイルの場所を含むOracleホームを選択します。

  4. 「実行」をクリックします。

    「リスナー」ページが表示されます。

  5. Oracle Net Configuration Assistantによって生成されたリスナーを選択し、「編集」をクリックします。

    リスナーの編集ページが表示されます。

  6. アドレス・セクションで外部プロシージャのプロトコル・アドレスを選択し、「削除」をクリックします。

  7. 「その他のサービス」タブをクリックします。

  8. 「追加」をクリックします。

    「その他のサービスの作成」ページが表示されます。

  9. ゲートウェイの作成で実行するプログラム名を「プログラム名」フィールドに、実行可能エージェントが存在するOracleホームを「Oracleホーム・ディレクトリ」フィールドに、非OracleシステムのSIDまたはサービス名を「SID」フィールドに入力します。

  10. 「OK」をクリックします。

    リスナーの編集ページが表示されます。

  11. 「OK」をクリックしてリスナーを変更します。

    「リスナー」ページが表示されます。

    listener.oraファイルの異機種間サービスに関する情報は次のように更新されます。

    SID_LIST_LISTENER=
     (SID_LIST=
      (SID_DESC=
       (SID_NAME=sybasegw)
       (ORACLE_HOME=/oracle10g)
       (PROGRAM=tg4sybs)))
    

    関連項目:


    『Oracle Database Heterogeneous Connectivity管理者ガイド』

  12. Oracleデータベースが存在するコンピュータで、ゲートウェイ上のリスナーに接続するネット・サービス名を設定します。接続で異機種間サービスを利用できるように、接続記述子にもHS=ok句を設定する必要があります。

    1. Oracleデータベース・サーバーから非Oracleシステムへの接続に使用するネット・サービス名を作成します。


      関連項目:


      ローカル・ネーミングの方法については、「タスク1: ネット・サービス名の構成」、ディレクトリ・ネーミングの方法については、「タスク2: ネット・エントリの作成または変更」を参照してください。

    2. Oracle Enterprise ManagerまたはOracle Net Managerのいずれかを使用して、HS=okを構成します。

      Oracle Enterprise Managerの場合は、「ネット・サービス名の作成」ページの「詳細」タブをクリックし、次に「異機種間サービスを使用」をクリックしてください。

      Oracle Net Managerでは、「サービスの識別」ボックスの「詳細」をクリックします。「詳細サービス・オプション」ダイアログ・ボックスが表示されます。「異機種間サービスを使用」をクリックします。

    3. 「OK」をクリックして変更を確認します。

      tnsnames.oraファイルでは、異機種間サービス用に構成された新規ネット・サービス名が次のように更新されます。

      sybase_gtw=
       (DESCRIPTION=
        (ADDRESS=(PROTOCOL=tcp)(HOST=gate-server)(PORT=1521))
        (CONNECT_DATA=
          (SERVICE_NAME=sybasegw)
        )
          (HS=ok)))
       )
      

13.5.3 Oracle Rdbデータベースを使用する場合のOracle Net Servicesの構成

Oracle Rdbは、Digitalの64ビット・オペレーティング・システムで使用されるデータベースです。Oracle Rdbには独自のリスナーがあるため、クライアントはOracleデータベースと通信する場合と同じようにOracle Rdbと通信できます。

Oracle Rdbとの接続を開始するために、表13-7に示されるパラメータを使用して、Oracle Rdbデータベースに接続するネット・サービス名を設定します。

表13-7 接続記述子でのOracle Rdbデータベース設定

Oracle Enterprise Managerのフィールド tnsnames.oraファイルのパラメータ 説明

RDBデータベース

RDB_DATABASE

Oracle Rdbデータベースのファイル名を指定します。

サービスのタイプ

TYPE_OF_SERVICE

Oracle Rdbデータベースで使用するサービスの種類を指定します。このサービスはRDBインタフェース・ツールで使用します。この機能は、アプリケーションがOracle RdbサービスとOracleデータベース・サービスの両方をサポートし、そのアプリケーションでこの2つのサービス間のロード・バランス用にのみ使用します。

グローバル・データベース名

GLOBAL_NAME

(オプション)Oracle Rdbデータベースを指定します。



関連項目:


Oracle Rdbのマニュアルを参照してください。

Oracle Rdbデータベースを使用するようにクライアントを構成するには、Oracle Net Managerを使用します。

  1. Oracleサーバーから非Oracleシステムへの接続に使用するネット・サービス名を作成します。


    関連項目:


    ローカル・ネーミングの方法については、「タスク1: ネット・サービス名の構成」、ディレクトリ・ネーミングの方法については、「タスク2: ネット・エントリの作成または変更」を参照してください。

  2. Oracle Enterprise ManagerまたはOracle Net Managerのいずれかを、Oracle Rdbパラメータに対して使用します。

    Oracle Enterprise Managerの場合は、「ネット・サービス名の作成」ページの「詳細」タブをクリックします。

    Oracle Net Managerでは、「サービスの識別」ボックスの「詳細」をクリックします。「詳細サービス・オプション」ダイアログ・ボックスが表示されます。

  3. 「Rdbデータベース」フィールドにOracle Rdbデータベースのファイル名を入力します。

  4. オプションの「グローバル・データベース名」フィールドにグローバル・データベース名を入力し、必要な場合は「サービスのタイプ」フィールドにサービスの種類を指定して、「OK」をクリックします。

    tnsnames.oraファイルでは、Oracle Rdbデータベースのために構成された新規ネット・サービス名が次のように更新されます。

    alpha5=
      (DESCRIPTION=
        (ADDRESS=...)
        (CONNECT_DATA=
          (SERVICE_NAME=generic)
          (RDB_DATABASE=[.mf]mf_personnel.rdb)
         (GLOBAL_NAME=alpha5)))
    

    次の例では、TYPE_OF_SERVICEが、Oracle Rdbデータベース・サービスとOracleデータベース・サービスのロード・バランス用に使用されています。

    alpha5=
     (DESCRIPTION_LIST=
      (DESCRIPTION=
        (ADDRESS=...)
        (CONNECT_DATA=
         (SERVICE_NAME=generic)
         (RDB_DATABASE=[.mf]mf_personnel.rdb)
         (GLOBAL_NAME=alpha5)))
      (DESCRIPTION=
       (ADDRESS=...)
        (CONNECT_DATA=
         (SERVICE_NAME=sales.us.example.com))
       (TYPE_OF_SERVICE=oracle9_database))
    

    関連項目:


    Oracle Rdbのマニュアルを参照してください。