10.2.1 Traffic DirectorモードのOracle Connection Managerについて

Traffic DirectorモードのOracle Connection Managerは、サポートされているデータベース・クライアントとデータベース・インスタンスとの間に配置されたプロキシです。

10.2.1.1 接続モード

Traffic DirectorモードのOracle Connection Managerでは、プールされた操作モードとプールされていない操作モードがサポートされます。

  • プールされた接続モード:

    次のデータベース・クライアント・リリースを使用するアプリケーションがサポートされます。

    • OCIおよびオープン・ソース・ドライバ(11.2.0.4以降)

    • JDBC (12.1以降)

    • ODP.NET (12.2以降) 

    また、アプリケーションでは、データベース常駐接続プール(DRCP)を認識する必要があります。これは、アプリケーションの接続文字列で指定するということです(SERVER=POOLED)。

  • プールされていない接続(または専用)モード:

    データベース・クライアント・リリース11.2.0.4以降を使用するアプリケーションがサポートされます。このモードでは、接続の多重化などの一部の機能は使用できません。 

ノート:

Traffic DirectorモードのOracle Connection Managerを使用したクライアントからデータベースへの接続では、クライアントとデータベースのバージョンが、サポートされている組合せである必要があります。

10.2.1.2 パフォーマンスおよびセキュリティ

Traffic DirectorモードのOracle Connection Managerでは、クライアント接続をデータベースにルーティングできるため、高可用性および接続の多重化機能が提供されます。また、強化されたセキュリティ機能をサポートし、計画済および計画外のデータベース停止に対してアプリケーションの停止時間をゼロにします。

透過的パフォーマンスおよび接続の多重化

  • 文キャッシュ、行のプリフェッチおよび結果セット・キャッシュがすべての操作モードで自動的に有効になります。

  • プロキシ常駐接続プーリング(PRCP、データベース常駐接続プーリングのプロキシ・モード)を使用したデータベース接続の多重化(プール・モードのみ)。PRCPでは、Oracle Call Interface (OCI)のセッション・プーリング機能を使用します。

    PRCPは、ターゲット・データベースへの少数のサーバー接続で構成される接続プールを使用して、ルーティングされる多数のクライアント接続に対して接続サービスを提供します。PRCPは、データベース層での接続負荷(接続時のメモリー使用量)を軽減し、データベースとTraffic DirectorモードのOracle Connection Managerの間で実行時ロード・バランシングを提供します。

高可用性

  • Traffic DirectorモードのOracle Connection Managerの複数インスタンス: アプリケーションはクライアント側の接続時ロード・バランシングまたはロード・バランサ(BIG-IPやNGINXなど)を使用して高度なスケーラビリティを実現できます。

  • Traffic DirectorモードのOracle Connection Managerのインスタンスのローリング・アップグレード

  • 計画済停止におけるクライアントからTraffic DirectorモードのOracle Connection Managerへの既存の接続のクローズ

  • Oracle Databaseリリース18c以降のクライアントへのインバンド通知。以前のリリースのクライアントの場合、現在のリクエストのレスポンスとともに通知が送信されます。

セキュリティと分離

  • TCP/TCPSとプロトコルの変換をサポートするデータベース・プロキシ

  • IPアドレス、サービス名およびTLSウォレットに基づくファイアウォール

  • マルチテナント環境でのテナントの分離

  • DoS攻撃とファジング攻撃からの保護 

  • オンプレミス・データベースとOracle Cloudの間のデータベース・トラフィックのセキュア・トンネリング

アプリケーション停止時間ゼロ

  • 計画済データベース・メンテナンスまたはプラガブル・データベース(PDB)の再配置:
    • プール・モードでは、Traffic DirectorモードのOracle Connection Managerは、計画済停止のOracle Notification Service(ONS)イベントに応答し、作業をリダイレクトします。要求が完了すると、Traffic DirectorモードのOracle Connection Managerのプールから接続がドレインされます。また、サービスの再配置もサポートされます。

      PDBが再配置されると、ONSが構成されていなくても、Traffic DirectorモードのOracle Connection Managerはインバンド通知に応答します(サーバーの場合のみ)。

    • プールされていないモードまたは専用モードでは、クライアントからのリクエスト境界情報は受信しません。Traffic DirectorモードのOracle Connection Managerは、多くのアプリケーションの計画済停止をサポートしています(リクエストまたはトランザクションの境界を越えて単純なセッション状態やカーソル状態のみを保持する必要がある場合)。これには、次の操作が含まれます。
      • トランザクション境界でサービスまたはPDBを停止するか、継続的なアプリケーション可用性を利用してリクエスト境界でサービスを停止します。

      • Traffic DirectorモードのOracle Connection Managerは、TAFのフェイルオーバーのリストアを利用して、再接続して単純な状態をリストアします。

  • 計画外のデータベース停止:

    プールされたモードとプールされていない(専用)モードの両方で、Traffic DirectorモードのOracle Connection Managerは、TAFのフェイルオーバーのリストアを利用して単純なセッション状態またはカーソル状態をリストアし、SELECT文と最初のDML文をリプレイすることで、大部分が読取りのアプリケーションの計画外停止をサポートします。

10.2.1.3 データベース・リンク

Traffic DirectorモードのOracle Connection Managerでは、高可用性およびデータベースへのフェイルオーバーを拡張するデータベース・リンクがサポートされます。

Oracle Database 21c以降、Traffic Directorモード(TDM)のOracle Connection Managerでは、次のタイプのデータベース・リンクがサポートされます。
  • 固定ユーザー: ユーザーは、データベース・リンクの作成時に指定されたユーザー名とパスワードを使用して、リモート・データベースに接続します。
  • 接続ユーザー: ユーザーは、データベース・リンクにアクセスするユーザーの資格証明を使用してリモート・データベースに接続します。これらの資格証明には、ユーザー名とパスワード、または外部(Kerberosチケットなど)があります。

次のシナリオでは、Traffic Directorモードでデータベース・リンクを使用できます。

  • シナリオ1:

    クライアントがデータベースに直接接続する場合

    このシナリオでは、固定ユーザー・データベース・リンクと接続ユーザー・データベース・リンクの両方が機能します。

  • シナリオ2:

    クライアントがTraffic Directorモードを使用してデータベースに接続する場合

    このシナリオでは、固定ユーザー・データベース・リンクのみが機能します。接続ユーザー・データベース・リンクが機能しないのは、TDMとデータベース間のセッションがプロキシ・ユーザー・セッションであるためです。セキュリティ上の理由で、プロキシ・ユーザー・セッションはデータベース・リンクで許可されません。

    ノート:

    データベース・リンクがTDMと連携するようにするには、TDMが特定のデータベース・サービスのプロキシ常駐接続プール(PRCP)モードで実行されていない必要があります。

10.2.1.4 サービスごとおよびPDBごとの接続プール

プロキシ常駐接続プーリング(PRCP)は、Traffic DirectorモードのOracle Connection Manager (CMAN-TDM)サーバーに接続プールを提供します。CMAN-TDMを構成して、サービスごとまたはPDBごとにプールされた接続を確立できます。

サービスごとのPRCP

サービスごとのPRCPでは、接続文字列に指定されたSERVICE_NAMEパラメータに基づいて、リクエストされたデータベース・サービス用の単一の専用プールがCMAN-TDMによって作成されます。クライアント・アプリケーションが新しい接続をリクエストすると、このサービス・プールのプールされた接続がCMAN-TDMはによって確立されます。アプリケーションがこのサービスへの接続を要求するたびに、CMAN-TDMはそのサービス・プールから一致する接続を返します。

たとえば、指定されたサービス名がService1_PDB1およびService2_PDB1である着信接続要求の場合、CMAN-TDMでは、2つのサービス・プール(つまり、Service1_PDB1接続をサポートするPRCP_for_Service1_PDB1と、Service2_PDB1接続をサポートするPRCP_for_Service2_PDB1)が作成されます。

PDBごとのPRCP

PDBごとのPRCPは、サービスごとのPRCPと同じような方法で機能します。このモードでは、クライアント・アプリケーションが新しい接続を要求すると、同様にCMAN-TDMが、接続文字列で指定されたSERVICE_NAMEパラメータ値に基づいて、要求されたサービスへのプールされた接続を確立します。ただし、このサービスの専用プールを作成するかわりに、そのPDBに登録されているすべてのサービスに対する接続をサポートするマルチサービスPDBプールが作成されます。使用可能なすべてのOracle Connection Manager Gateway (CMGW)で、ロード・バランシングに基づいて、サービスまたはPDBへの接続要求を受け入れることができます。

たとえば、Service1_PDB1およびService2_PDB1 (両方ともPDB1で実行されている)への着信接続要求の場合、CMAN-TDMでは、単一のPDBプール(Service1_PDB1接続とService2_PDB1接続の両方をサポートするPRCP_for_PDB1)が作成されます。

PDBごとのPRCPには、サービスごとのPRCPよりも次の利点があります。
  • 複数のサービス・プールを単一のPDBプールに統合することで、CMGW上の接続プールの数を削減します。これは、データベースのパフォーマンスの最適化に役立ちます。

  • TDM_PERPDB_PRCP_CONNFACTOR値および各PDBに割り当てられたOCPU数に基づいて、PDBプールの最大サイズを動的に決定およびリフレッシュします。

    PDBごとのPRCP構成は、PDB管理者がPRCP構成のCMAN-TDMホストにアクセスする必要がなく、データベース側でPRCPを構成および監視できるAutonomous Databasesなどのマルチテナント環境で特に役立ちます。

ノート:

サービスごとのモードとPDBごとのモード間を切り替えることはお薦めしません。そうすると、再構成後に開始されるゲートウェイにのみ変更が適用されます。

プール・サイズ構成設定

  • サービスごとのPRCPの場合、CMAN管理者は、初期PRCP構成時にCMAN-TDMホストのoraaccess.xml<session_pool> MAX_SIZE値を指定します。

  • PDBごとのPRCPモードでは、プールのサイズ設定はより自律的です。CMAN管理者は、TDM_PERPDB_PRCP_CONNFACTORパラメータを使用してcman.oraファイルに接続ファクタを指定します。

    PDBごとのPRCP設定では、TDM_PERPDB_PRCP_CONNFACTORパラメータの値と各PDBに自動的に割り当てられるOracle Compute Unit (OCPU)の数に基づいて、PDBごとのPRCPプールの最大サイズが決定されます。バックグラウンド・プロセスでは、これらの値が自動的にフェッチされ、プールのサイズが変更されます。この導出された最大サイズ値は、oraaccess.xmlファイルで構成された<session_pool> MAX_SIZEパラメータをオーバーライドします。

    OCPU数をフェッチできる許容CMANインスタンスをリストするには、sqlnet.oraのパラメータTCP.ALLOWED_PROXIESをOracle Databaseサーバーに設定する必要があります。

V$TDM_STATSビュー

PDBごとのPRCPモードでは、PDB管理者がデータベースのV$TDM_STATSビューを問い合せて、CMAN-TDMの使用状況統計を表示できます。このビューでは、すべてのインバウンド接続の集計データ(プール内のセッションを取得したクライアント・リクエストの数、アクティブなクライアント接続の数、ビジーと空きのサーバー接続の数、最大到達接続数など)を分析できます。このビューは、CMAN-TDMの監視およびチューニングに役立ちます。

個別のバックグラウンド・スレッドが各CMGWから統計データをフェッチし、定期的にPDBにアップロードします。この時間間隔は、cman.oraのパラメータTDM_STATS_FREQUENCYを使用して設定できます。

10.2.1.5 暗黙的接続プーリング

アプリケーション接続プールを使用しないクライアント・アプリケーションでは、アプリケーション・レベルの変更やプーリングAPIのコールが不要な接続プーリング機能を利用できます。

概要

Oracle Database 23ai以降、プロキシ常駐接続プーリング(PRCP)は暗黙的な接続プーリングをサポートしています。この機能により、アプリケーションが明示的に接続を解放しない場合でも、アプリケーションの起動およびデータベース操作の終了時に、アプリケーション接続との間で実行時にPRCPサーバーを自動的に割り当てることができます。

暗黙的な接続プーリングでは、クライアントからの明示的なセッション・プールAPIコールがなくても、PRCPからのデータベース・セッションがアプリケーション接続に対して自動的にマップおよびマップ解除されます。PRCPは、暗黙的にリクエスト境界の終了(セッションのステートレス)を検出し、セッションを接続プールに解放します。たとえば、トランザクションの場合、アプリケーションは、ステートレス・セッションのプールから使用可能なセッションを暗黙的に使用または再利用でき、トランザクションの完了後にセッションを解放してプールに戻します。

暗黙的な接続プールは、必要なPRCPプールのサイズの削減に役立ちます。Oracle Call Interface (OCI)セッション・プールやJava Database Connectivity (JDBC) Oracle Universal Connection Pool (UCP)など、接続プールを使用しないアプリケーションで、優れたスケーラビリティと効率的なデータベース・リソースの使用を実現します。

文境界とトランザクション境界

暗黙的接続プーリングでは、時間境界を使用してセッションを解放し、接続プールに戻します。時間境界とは、アプリケーション・セッションが解放されてプールに戻される、アプリケーションのライフ・サイクル内の時点です。

暗黙的な接続プーリングを有効にするには、POOL_BOUNDARYパラメータを接続文字列、簡易接続構文またはtnsnames.oraファイルで設定します。このパラメータを使用して、次のいずれかの時間境界を指定します:

  • STATEMENT: セッションが暗黙的にステートレスであるときに、セッションをPRCPプールに解放します。

  • TRANSACTION: トランザクションが暗黙的または明示的に終了したとき、またはトランザクションが使用不可でセッションがステートレスであるときに、セッションをPRCPプールに解放します。

次のことに注意してください:

  • セッション内のすべてのオープン・カーソルが完了までフェッチされ、アクティブなトランザクション、一時表または一時LOBがない場合、セッションは暗黙的にステートレスになります。プールへの解放により、アクティブなカーソル、一時表および一時LOBがクローズされます。

  • 文の実行後または一時LOBの作成後に、TRANSACTION境界内でコミットまたはロールバックを実行した場合は、次のようになります:

    • その後のフェッチ操作で、ORA-01001などの無効カーソル関連エラーが発生する場合があります。

    • その後に一時LOBを使用すると、ORA-22922が発生する場合があります。

    • 永続LOBの操作は、暗黙的なリリース後でも続行できます。ただし、別のインスタンスで暗黙的な操作が実行されると、ORA-43887エラーが発生する場合があります。そのような場合は、操作を再試行する必要があります。