10.2.7 Traffic DirectorモードのOracle Connection Managerのプロキシ常駐接続プーリングの構成
Traffic DirectorモードのOracle Connection Manager (CMAN-TDM)は、プロキシ常駐接続プーリング(PRCP)をサポートしています。PRCPは、データベース・サービスごと(デフォルト設定)、またはPDB全体に構成できます。
- 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で動的に最大プール・サイズが計算されます。
-
データベース・サーバーで、
sqlnet.ora
のパラメータTCP.ALLOWED_PROXIES
を設定し、OCPU数のフェッチを許可する1つ以上のCMANインスタンス(IPアドレスまたはホスト名)を指定します。たとえば:TCP.ALLOWED_PROXIES=(10.1.1.1/24,cmanhost1.example.com)
-
CMAN-TDMホストで、
cman.ora
のパラメータTDM_PERPDB_PRCP_CONNFACTOR
に、必要な接続ファクタ値を設定します。1
以上の値で、PDBごとのPRCPが有効になります。たとえば:TDM_PERPDB_PRCP_CONNFACTOR=10
ノート:
cman.ora
のパラメータMAX_CONNECTIONS
で定義した最大接続制限内の接続ファクタ値を設定してください。 -
(オプション)これらのプールの動作を監視するには、動的データベース・ビュー
V$TDM_STATS
を問い合せます。そうするには、まずcman.ora
のパラメータTDM_STATS_FREQUENCY
に、必要な時間間隔値を設定することにより、統計アップロードを有効にします。1以上(定義した最大値まで)の値を指定すると、統計のアップロードが可能になります。
たとえば:
TDM_STATS_FREQUENCY=300
指定した頻度に基づいて、CMAN-TDMが各CMAN-TDMゲートウェイからデータをフェッチしてPDBにアップロードします。
-
(オプション)関連する接続パラメータを
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モードでは単一サービスに限定されていないためです。
-
-
- (オプション)サービスごとまたは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
ディレクティブが無視されます。 -