10.2.7 Traffic DirectorモードのOracle Connection Managerのプロキシ常駐接続プーリングの構成

Traffic DirectorモードのOracle Connection Manager (CMAN-TDM)は、プロキシ常駐接続プーリング(PRCP)をサポートしています。PRCPは、データベース・サービスごと(デフォルト設定)、またはPDB全体に構成できます。

必要に応じて、暗黙的な接続プーリングをPRCPで有効にできます。
  1. PRCPをサービスごとかPDBごとで構成します。
    • サービスごとのPRCP:

      これがPRCPのデフォルト構成です。

      oraaccess.xmlファイル(CMAN-TDMサーバーのTNS_ADMINディレクトリ内にある)内の<session_pool>パラメータにより、サービスごとのPRCPを構成でき、関連する接続パラメータを指定できます。

      <default_parameters>セクションまたは<config_descriptions>セクションで、次の<session_pool>パラメータを指定できます。<default_parameters>セクションで指定すると、その設定がアプリケーション内のすべての接続プールに適用されます。

      パラメータ 説明

      <enable>

      セッション・プール構成を有効にするには、<enable>true(デフォルト設定)に設定する必要があります。

      これは必須パラメータです。つまり、<session_pool>を構成する場合は、<enable>も構成する必要があります。

      <min_size>

      プール内の最小接続数。

      デフォルト値は0です。CMAN-TDMは異機種間プール・シナリオであるため、他のすべての値は無視されます。

      <max_size>

      プールの最大接続数。

      これは必須パラメータです。つまり、<session_pool>パラメータを構成する場合は、<max_size>パラメータを構成する必要があります。

      デフォルト値は0です。

      <increment>

      プール拡張時のプール内の接続数の増分数。

      デフォルト値は1です。

      <inactivity_timeout>

      プール内でアイドル状態の接続が切断されるまでの最大時間(秒単位)。

      デフォルト値は0です。これは制限されていないことを意味します。

      <max_use_session>

      接続を取得してプールに解放できる最大回数。

      デフォルト値は0です。これは制限されていないことを意味します。

      <max_life_time_session>

      接続が作成されてからプール内に維持しておく必要のある時間(秒単位)。

      デフォルト値は0です。これは制限されていないことを意味します。

      oraaccess.xmlファイルを使用して、必要な接続サービスごとに接続プールを構成できます。

      次の例では、sales_configおよびhr_configという2つの接続パラメータのグループを示しています。これらのグループには、それぞれのconfig_aliasが関連付けられています。アプリケーションが使用する各接続文字列は、それぞれのconfig_aliasにマップされるため、2つのプロキシ常駐接続プールを用意しています。

      <oraaccess xmlns="http://xmlns.example.com/oci/oraaccess"
                  xmlns:oci="http://xmlns.example.com/oci/oraaccess"
                  schemaLocation="http://xmlns.example.com/oci/oraaccess
                  http://xmlns.example.com/oci/oraaccess.xsd">
        <default_parameters>
        </default_parameters>
          <!-- 
               Create configuration descriptions, which are  
               groups of connection parameters associated with
               a config_alias. 
          --> 
        <config_descriptions>
          <config_description>
            <config_alias> sales_config </config_alias> 
            <parameters>
               <session_pool>
                  <enable>true</enable>
                  <min_size> 10 </min_size>
                  <max_size> 100 </max_size>
                  <increment> 5 </increment>
               </session_pool>
            </parameters>
          </config_description>
          <config_description>
            <config_alias> hr_config </config_alias> 
            <parameters>
               <session_pool>
                 <enable>true</enable>       
                <max_size> 10 </max_size>
               </session_pool>
            </parameters>
          </config_description>
        </config_descriptions>
        <!--   
               Now map the connection string used by the application 
               with a config_alias.  
        --> 
        <connection_configs>
          <connection_config>
            <connection_string>sales.us.example.com</connection_string> 
            <config_alias>sales_config</config_alias> 
          </connection_config>
          <connection_config>
            <connection_string>hr.us.example.com</connection_string> 
            <config_alias>hr_config</config_alias> 
          </connection_config>
        </connection_configs>
      </oraaccess>
    • PDBごとのPRCP:

      要求されたすべてのサービスのための複数の専用プールを作成するのではなく、単一のマルチサービスPDBプールを構成すれば、そのPDBに登録されているすべてのサービスにわたり接続をサポートできます。PDBに割り当てられているOracle Compute Unit (OCPU)数、および指定した接続ファクタに基づいて、PRCPで動的に最大プール・サイズが計算されます。

      1. データベース・サーバーで、sqlnet.oraのパラメータTCP.ALLOWED_PROXIESを設定し、OCPU数のフェッチを許可する1つ以上のCMANインスタンス(IPアドレスまたはホスト名)を指定します。

        たとえば:
        TCP.ALLOWED_PROXIES=(10.1.1.1/24,cmanhost1.example.com)
      2. CMAN-TDMホストで、cman.oraのパラメータTDM_PERPDB_PRCP_CONNFACTORに、必要な接続ファクタ値を設定します。

        1以上の値で、PDBごとのPRCPが有効になります。

        たとえば:
        TDM_PERPDB_PRCP_CONNFACTOR=10

        ノート:

        cman.oraのパラメータMAX_CONNECTIONSで定義した最大接続制限内の接続ファクタ値を設定してください。
      3. (オプション)これらのプールの動作を監視するには、動的データベース・ビューV$TDM_STATSを問い合せます。そうするには、まずcman.oraのパラメータTDM_STATS_FREQUENCYに、必要な時間間隔値を設定することにより、統計アップロードを有効にします。

        1以上(定義した最大値まで)の値を指定すると、統計のアップロードが可能になります。

        たとえば:

        TDM_STATS_FREQUENCY=300

        指定した頻度に基づいて、CMAN-TDMが各CMAN-TDMゲートウェイからデータをフェッチしてPDBにアップロードします。

      4. (オプション)関連する接続パラメータをoraaccess.xmlファイルの<default_parameters>セクションで指定できます。

        たとえば:

        <default_parameters>
          <events>true</events>  
          <session_pool>
            <enable>true</enable>
            <max_size> 5 </max_size>    
            <max_life_time_session> 50 </max_life_time_session>
            <max_use_session> 5 </max_use_session>
            <inactivity_timeout> 5 </inactivity_timeout>
          </session_pool>
        </default_parameters>

        <enable>trueに設定して<default_parameters>セクションを指定した場合は、<max_size>パラメータ以外の、指定したすべてのパラメータが有効になります。PRCPによって自動的にプールの最大サイズが導出されます(TDM_PERPDB_PRCP_CONNFACTORおよびOCPU数を使用)。この導出された最大サイズ値は、oraaccess.xmlファイル内で構成されている<session_pool> <max_size>パラメータより優先されます。

        <default_parameters>セクションを指定しない場合や、<enable>falseに設定してそれを指定した場合は、そのセクション内の他のすべてのパラメータが無視されます。

        config_alias (アプリケーションに使用される各サービス名を接続パラメータにマップする)は機能しません。これは、プールが、PDBごとのPRCPモードでは単一サービスに限定されていないためです。

  2. (オプション)サービスごとまたはPDBごとのPRCPで暗黙的な接続プーリングを有効にするには、クライアント側で、tnsnames.oraファイル、簡易接続構文、またはコマンドライン接続文字列の一部として直接、POOL_BOUNDARYパラメータを設定します。

    暗黙的な接続プーリングでは、セッションの状態に基づいて、セッションのマッピングまたはマッピング解除が自動的に実行されます。これは、プールされたサーバーを最大限に使用し、サーバーのリソース使用量を削減するのに役立ちます。

    セッションをPRCPプールに解放するには、次のいずれかの時間境界を指定します:
    • STATEMENT: セッションが暗黙的にステートレスであるときにセッションを解放します。

      たとえば:
      inst1=
          (DESCRIPTION=
              (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))
              (CONNECT_DATA=
                  (SERVICE_NAME=sales.us.example.com)
                  (SERVER=POOLED)
                  (POOL_BOUNDARY=STATEMENT))
          ) 
    • TRANSACTION: トランザクションが暗黙的または明示的に終了した場合、またはトランザクションが使用不可でセッションがステートレスである場合にセッションを解放します。

      たとえば:
      inst1=
          (DESCRIPTION=
              (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))
              (CONNECT_DATA=
                  (SERVICE_NAME=sales.us.example.com)
                  (SERVER=POOLED)
                  (POOL_BOUNDARY=TRANSACTION))
          ) 

    プールへの解放により、アクティブなカーソル、一時表および一時LOBがクローズされます。

    ノート:

    POOL_BOUNDARYパラメータは、SERVER=POOLED設定とともに設定する必要があります。そうしないと、暗黙的な接続プーリングが無効になり、POOL_BOUNDARYディレクティブが無視されます。