10 Oracle Connection Managerの構成と管理

Oracle Connection Managerは、データベースまたはプロキシ・サーバーに接続要求を転送するプロキシ・サーバーです。これはセッション・レベルで動作し、通常はデータベース・サーバーおよびクライアント・コンピュータとは別のコンピュータに常駐しています。

Oracle Connection Managerは、Oracle Database Enterprise Editionをインストールすると使用できるようになります。これはクライアント・システム上のカスタム・インストール・オプションです。Oracle Database Client 23c以降では、Oracle Connection Managerをイメージ・ファイルとしてインストールして構成できます。詳細は、使用しているプラットフォーム固有のOracle Databaseのインストレーション・ガイドを参照してください。

10.1 Oracle Connection Managerの設定

Oracle Connection Managerを設定するには、プロキシ・サーバー、データベースおよびクライアントを構成する必要があります。

10.1.1 cman.oraファイルについて

Oracle Connection Managerをホストするコンピュータを構成するには、cman.oraファイルのパラメータを設定します。

cman.oraファイルは、Oracle Connection Managerをホストするコンピュータ上のORACLE_BASE_HOME/network/adminディレクトリにあります。cman.oraファイルがORACLE_BASE_HOME/network/adminディレクトリにない場合は、ORACLE_HOME/network/adminディレクトリでファイルを探します。cman.oraファイルが存在しない場合、Oracle Connection Managerは起動しません。このファイルには次のコンポーネントが含まれています。

  • リスニング・エンドポイント
  • アクセス制御ルール・リスト
  • パラメータ・リスト

各Oracle Connection Manager構成は、1つの名前-値(NV)文字列内にカプセル化されており、その文字列は、前述のコンポーネントで構成されています。

1台のコンピュータで任意の数のOracle Connection Managerをホスティングでき、そのそれぞれのエントリがcman.oraファイルに保持されます。このファイルに複数のOracle Connection Managerを定義する場合は、完全修飾ホスト名を1つのみ設定することによって、デフォルトとして割り当てることができます。

クライアントとOracle Connection Manager制御ユーティリティ(CMCTL)の2つの接続に対して複数のルールを指定できます。変更を行う場合、次のガイドラインが適用されます。

  • クライアント接続とCMCTL接続に対して、1つ以上のルールを入力する必要があります。ルールを省略すると、省略されたルール・タイプの全接続が拒否されます。
  • Oracle Connection Managerでは、ワイルドカードをIPアドレスの一部として使用できません。ワイルドカードを使用する場合は、完全なIPアドレスのかわりとして使用してください。たとえば、クライアントのIPアドレスの場合は、(SRV=*)と指定します。
  • Oracle Connection Managerでは、サブネット・アドレスの表記として/nnのみを使用できます。例10-1では、最初のルールの/24が左端の24ビットで構成されるサブネット・マスクを表しています。クライアントIPアドレスの先頭の24ビットのみが、ルール内のIPアドレスと比較されます。

ノート:

Oracle Connection ManagerはIPv6アドレッシングをサポートしています。「IPv4およびIPv6のブリッジとしてのOracle Connection Managerの使用」を参照してください。

例10-1に、CMAN1というOracle Connection Managerの構成エントリが含まれるcman.oraファイルを示します。

例10-1 cman.oraファイルの例

CMAN1=
  (CONFIGURATION=
    (ADDRESS=(PROTOCOL=tcp)(HOST=proxysvr)(PORT=1521))
    (RULE_LIST=
      (RULE=(SRC=192.0.2.32/24)(DST=sales-server)(SRV=*)(ACT=accept)
        (ACTION_LIST=(AUT=on)(MCT=120)(MIT=30)))
      (RULE=(SRC=192.0.2.32)(DST=proxysvr)(SRV=cmon)(ACT=accept)))
    (PARAMETER_LIST=
      (MAX_GATEWAY_PROCESSES=8)
      (MIN_GATEWAY_PROCESSSES=3)))
       

例10-1は、次のルールを示しています。

  • 例の最初のルールでは、次のパラメータを設定しています。
    • SRC=192.0.2.32/24は、クライアント接続用です。クライアントのIPアドレスまたはソースを指定します。
    • DST=sales-serverは接続先のホスト名を示しています。ACTパラメータは、actionの略で、受入れ、拒否または削除を示しています。ACTION_LISTパラメータは、それが受け入れられた場合の接続の属性を設定し、接続に関するデフォルトのパラメータ設定を、接続ベースでオーバーライドできます。
  • 2番目のルールでは、次のパラメータを設定しています。
    • SRC=192.0.2.32およびDST=proxysvrは同じサーバーを表し、Oracle Connection ManagerとCMCTLは同じコンピュータ上にある必要があることを示しています。

    関連項目:

    アクセス制御の有効化

表10-1は、cman.oraファイルのルール・レベル・パラメータを説明します。

表10-1 cman.oraファイルのルール・レベル・パラメータ

パラメータ 説明

SRC

ソースのホスト名またはクライアントのIPアドレス。IPアドレスはサブネットで、192.0.2.62/24などで指定できます。

DST

接続先のホスト名またはデータベース・サーバーのIPアドレス。IPアドレスはサブネットで、192.0.2.62/24などで指定できます。

SRV

初期化パラメータ・ファイル(init.ora)のSERVICE_NAMESパラメータから取得したOracleデータベースのサービス名。

サービス名は、リスナーへの接続時に、接続記述子の一部としてクライアントによって指定されます。このサービス名は、ルール・リストに指定されたサービス名と比較されます。

ACT

前述の3つのパラメータに基づいた、受信要求の受入れ、拒否または削除。

複数のルールをRULE_LISTに定義できます。最初に適合したRULEのアクション(ACT)が接続要求に適用されます。ルールが定義されていない場合はすべての接続が受け入れられます。

次の例では、クライアント・コンピュータclient1-pcは、サービスsales.us.example.comへのアクセスが拒否されますが、クライアント192.0.2.45はサービスdb1へのアクセスが許可されます。

(RULE_LIST=
  (RULE=(SRC=client1-pc)(DST=sales-server)(SRV=sales.us.example.com)(ACT=reject))
  (RULE=(SRC=192.0.2.45)(DST=192.0.2.200)(SRV=db1)(ACT=accept)))

関連項目:

Oracle Connection Managerパラメータの詳細は、『Oracle Database Net Servicesリファレンス』を参照してください。

10.1.2 Oracle Connection Managerホスト用のcman.oraファイルの構成

cman.oraファイルは手動で変更します。次の手順では、sqlnet.oraファイルにパラメータを設定する方法について説明します。

  1. ORACLE_BASE_HOME/network/adminディレクトリにあるcman.oraファイルにナビゲートします。

    cman.oraファイルがORACLE_BASE_HOME/network/adminディレクトリにない場合は、ORACLE_HOME/network/adminディレクトリでファイルを探します。

  2. テキスト・エディタを使用してcman.oraファイルを開きます。
  3. リスニング・エンドポイント(ADDRESS)を構成します。

    リスニング・エンドポイントでは、Oracle Connection Managerリスナーのプロトコル・アドレスを指定します。Oracle Connection Managerのモニタリング・プロセスCMONでは、このアドレスを使用してリスナーへのゲートウエイ・プロセスに関する情報を登録します。データベースはこのアドレスを使用して、Oracle Connection Managerノードでサービス情報を登録します。

    Oracle Connection Managerのリスナーは、常にTCP/IPプロトコルでリスニングします。

    (ADDRESS=(PROTOCOL=tcp)(HOST=proxysvr)(PORT=1521))

    ノート:

    Oracle Connection Managerは、TCP/IP(バージョン4およびバージョン6)などのプロトコルを使用してデータベースに接続できます。Oracle Database12cリリース2 (12.2)以降、TCPSプロトコルもサポートされています

  4. アクセス制御ルール・リスト(RULE_LIST)を構成します。

    アクセス制御ルール・リストではリスナーにより、受入れ、拒否または削除される接続を指定します。

  5. パラメータ・リスト(PARAMETER_LIST)を構成します。

    パラメータ・リストにより、Oracle Connection Managerの属性を設定します。パラメータの形式は次のとおりです。

    • グローバル・パラメータの場合、ルール・レベルのパラメータでオーバーライドされないかぎり、すべてのOracle Connection Manager接続に適用されます。グローバル・パラメータのデフォルト設定を変更するには、そのパラメータをPARAMETER_LISTに許容値と一緒に入力します。
    • ルール・レベルのパラメータがRULE_LISTのACTION_LISTセクションで有効になっている場合、そのルールによって指定された接続にのみ適用されます。これはグローバルな対象にオーバーライドします。

10.1.3 Oracle Connection ManagerでのTransport Layer Securityの構成

Oracle Connection Manager (CMAN)サーバーでウォレットを作成し、cman.oraファイルでTransport Layer Security (TLS)付きTCP/IPのリスニング・エンドポイントおよびウォレットの場所を指定します。

ノート:

Oracle Database 23c以降、Oracle Wallet Manager (OWM)はサポートされなくなりました。

orapkiコマンドライン・ツールを使用してOWMを置き換えることをお薦めします。

  1. CMANウォレットが作成されていることと、それに証明書があることを確認します:
    1. CMANウォレットが存在するOracle Connection Managerサーバーにログインします。
    2. orapkiコマンドライン・ツールを使用して、次のコマンドを実行します。
      orapki wallet display -wallet wallet_location

      ここで、wallet_locationは、ウォレットが格納されているディレクトリへのパスです。

      ウォレットのディレクトリにcwallet.ssoファイル(自動ログイン・ウォレット)が含まれており、それにユーザー証明書が含まれている場合、このコマンドはパスワードを要求せずにユーザー証明書を表示します。

      cwallet.ssoにユーザー証明書が含まれていることを確認します。ウォレットにユーザー証明書が含まれていない場合は、ユーザー証明書を含むウォレットを作成し、次のコマンドを実行してウォレット・ディレクトリにcwallet.ssoを作成します:
      orapki wallet create -wallet wallet_location -auto_login
  2. CMAN.oraファイルに、TLS付きTCP/IP (TCPS)を使用するリスニング・エンドポイントを作成し、WALLET_LOCATIONパラメータを設定して、CMAN側のウォレットの場所を指定します。

    たとえば、TCPSプロトコル・アドレスおよびWALLET_LOCATIONパラメータ設定が構成されたcman.oraファイルのサンプルを次に示します:

    CMAN_1=
    	(CONFIGURATION=
        		(ADDRESS_LIST=
    		      (ADDRESS=(PROTOCOL=tcps)(HOST=proxysvr)(PORT=1522))
    		      (ADDRESS=(PROTOCOL=tcp)(HOST=proxysvr)(PORT=1523))
    		)
    		(RULE_LIST=
    		      (RULE=(SRC=*)(DST=*)(SRV=*)(ACT=accept))
    		)
        		(PARAMETER_LIST=
    		      (MAX_GATEWAY_PROCESSES=8)
    		      (MIN_GATEWAY_PROCESSSES=3)
        		)
    	 )
    WALLET_LOCATION= 
    	(SOURCE=
    		(METHOD=File)
    		(METHOD_DATA=
    			(DIRECTORY=wallet_location)
    	  	)
    	)
    SQLNET.WALLET_OVERRIDE = TRUE

    ノート:

    パラメータWALLET_LOCATIONは、Oracle DatabaseサーバーのOracle Database 23cでの使用は非推奨です。Oracle Databaseクライアントでの使用は非推奨ではありません。

    Oracle Databaseサーバーの場合は、WALLET_LOCATIONを使用するかわりに、WALLET_ROOTシステム・パラメータの使用をお薦めします。

10.1.4 アクセス制御の有効化

TCP/IP環境で指定されたデータベース・サーバーへのクライアント・アクセスを制御するには、RULE_LISTパラメータを使用します。このパラメータでフィルタリング・ルールを入力し、データベース・サーバーへの特定のクライアント・アクセスを許可または制限できます。

次の手順では、アクセス制御の構成方法を説明します。

  1. テキスト・エディタを使用してcman.oraファイルを開きます。

  2. 次の形式を使用して、RULE_LISTパラメータを更新します。

           (RULE_LIST=
            (RULE=(SRC=source_host) 
                  (DST=destination_host) 
                  (SRV=service) 
                  (ACT=accept | reject | drop)))
    

    関連項目:

    表10-1

10.1.5 Oracle Connection Managerを使用する場合のクライアントの構成

Oracle Connection Managerでクライアントをデータベース・サーバーに転送するには、Oracle Connection Managerのプロトコル・アドレスを指定する接続記述子を使用して、tnsnames.oraファイルを構成します。このアドレスを使用して、クライアントからOracle Connection Managerコンピュータに接続できます。接続記述子は次のとおりです。

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

次の手順では、Oracle Connection Managerのプロトコル・アドレスを構成する方法について説明します。

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

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

  3. ツールバーで「+」をクリックするか、「編集」メニューから「作成」を選択します。

    「Netサービス名ウィザード」の「ようこそ」ページが表示されます。

  4. 「ネット・サービス名」フィールドに名前を入力します。

  5. 「次へ」をクリックします。

    「プロトコル」ページが表示されます。

  6. Oracle Connection ManagerのTCP/IPプロトコルを選択します。

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

    「プロトコル設定」ページが表示されます。

  8. Oracle Connection Managerのポートとプロトコルを指定します。Oracle Connection Managerのデフォルトのポート番号は1521、プロトコルはTCP/IPです。

    関連項目:

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

  9. 「次へ」をクリックします。

    「サービス」ページが表示されます。

  10. 「サービス名」フィールドにサービス名を入力し、接続タイプを選択します。

    関連項目:

    サービス名文字列の設定の詳細は、「接続記述子について」を参照

  11. 「次へ」をクリックします。

    ノート:

    この時点では接続のテストはできないため、「テスト」はクリックしないでください。

  12. 「終了」をクリックして構成を保存し、Netサービス名ウィザードを閉じます。

    新規のネットワーク・サービス名とOracle Connection Managerプロトコル・アドレスが「サービス・ネーミング」フォルダに追加されます。

10.1.6 Oracle Connection Managerを使用する場合のOracle Databaseサーバーの構成

データベース・サーバーの構成には、リモートからOracle Connection Managerでデータベース情報を登録する方法と、オプションでサーバーの多重化を構成する方法があります。

ノート:

Oracle Connection Managerに登録するデータベースがリモート・ノードにある場合は、cman.oraのパラメータVALID_NODE_CHECKING_REGISTRATIONを構成してリモート登録を許可する必要があります。
10.1.6.1 Oracle Connection Managerで使用するためのサービス登録の構成

データベース・サーバーがOracle Connection Managerと通信できるようにするには、tnsnames.oraファイルにサービス名のエントリが含まれ、初期化パラメータ・ファイル(init.ora)に、Oracle Connection Managerのリスニング・アドレスを指定する記述子が含まれている必要があります。次の手順では、サービス登録を構成する方法について説明します。

  1. tnsnames.oraファイルのサービス名エントリへのOracle Connection Manager別名を次のように解決します。

    cman_listener_address =
      (DESCRIPTION=
        (ADDRESS_LIST=
          (ADDRESS=(PROTOCL=tcp) (HOST=proxy_server_name)( PORT=1521))))
    

    たとえば、別名listener_cmanは、tnsnames.oraファイル内の次のエントリに解決されます。

    listener_cman=
     (DESCRIPTION=
      (ADDRESS_LIST=
       (ADDRESS=(PROTOCOL=tcp)(HOST=proxyserver1)(PORT=1521))))
    
  2. init.oraファイルのOracle Connection Managerの別名を次のように指定します。この別名は、ステップ1のtnsnames.oraファイルで指定した別名です。

    REMOTE_LISTENER=cman_listener_address
    

    このアドレスはTCP、ポート1521であり、データベース・サーバーのTCP、ポート1521のデフォルト・ローカル・リスニング・アドレスではないため、別名を指定する必要があります。

    たとえば、ホストproxyserver1で動作しているOracle Connection Managerリスナーのステップ1で指定した別名は、init.oraファイル上で次のようになっている場合があります。

    REMOTE_LISTENER=listener_cman
    
  3. データベースがリモート・ノードに存在する場合、cman.oraREGISTRATION_INVITED_NODESを構成します。たとえば:

    (registration_invited_nodes=sales.us.example.com,10.245.129.60)

  4. 初期化パラメータ・ファイルがOracle Connection Managerの別名で構成されると、リスナー登録(LREG)プロセスは、Oracle Connection Managerリスナーとしてデータベース情報を登録できます。変更を登録するには、次のコマンドを使用します。

    SQL> ALTER SYSTEM REGISTER
10.1.6.2 Oracle Connection Managerのセッションの多重化の有効化

Connection Managerでセッションの多重化を利用できるようにするには、次に示すように初期化パラメータ・ファイル(init.ora)のDISPATCHERSパラメータに、属性PROTOCOLおよびMULTIPLEXを設定します。

DISPATCHERS="(PROTOCOL=tcp)(MULTIPLEX=on)"

表10-2では、多重化の異なるレベルを設定するパラメータを示しています。

表10-2 セッションを多重化するパラメータ

属性 説明

PROTOCOL

ディスパッチャがリスニング・エンドポイントを生成するときに使用するネットワーク・プロトコルです。

MULTIPLEX

このパラメータは、次のようにセッションの多重化に使用します。

  • 1onyestrueまたはbothが指定された場合は、受信および送信の両方のネットワーク・セッションの多重化が有効となります。

  • inが指定された場合は、クライアントからの受信ネットワーク・セッションの多重化が有効となります。

  • outが指定された場合は、送信ネットワーク・セッションの多重化が有効となります。

  • 0(ゼロ)、offnoまたはfalseが指定された場合は、受信および送信両方のネットワーク・セッションの多重化が無効となります。

関連項目:

10.2 Traffic DirectorモードのOracle Connection Managerの構成

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

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

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

現在のデータベースのOCIクライアントまたはサポートされている古いバージョンのOCIクライアント(Oracle Database 11gリリース2 (11.2)以降)は、Traffic DirectorモードのOracle Connection Managerに接続できます。Traffic DirectorモードのOracle Connection Managerでは、高可用性(HA)が改善され(計画済、計画外を問わず)、接続の多重化がサポートされ、ロード・バランシングが提供されます。また、この機能には、Oracle Connection Manager (CMAN)やサービスの停止イベントに関する計画済停止についてOCIクライアントに伝えるインバンド・クライアント通知メカニズムが用意されています。Traffic DirectorモードのOracle Connection Managerを構成するには、cman.ora構成ファイルで追加のCMANパラメータを指定する必要があります。

Traffic DirectorモードのOracle Connection Managerとして機能するCMANを構成するには、tdmtdm_threading_modelなどの新しいパラメータをcman.ora構成ファイルに追加する必要があります。Oracle Connection Manager (CMAN)は、Oracle RACデータベースとRAC以外のデータベースの両方のための標準Oracle Netプロキシです。

Traffic DirectorモードのOracle Connection Managerが接続するデータベースには、アプリケーション・ユーザーとして接続できるよう、CONNECT THROUGH権限を付与されたtdmなどのユーザーが存在する必要があります。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以降を使用するアプリケーションがサポートされます。このモードでは、接続の多重化などの一部の機能は使用できません。 

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の着信接続要求の場合は、Service1_PDB1接続をサポートするPRCP_for_Service1_PDB1と、Service2_PDB1接続をサポートするPRCP_for_Service2_PDB1をCMAN-TDMが作成します。

PDBごとのPRCP

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

たとえば、Service1_PDB1およびService2_PDB1 (両方ともPDB1で実行されている)への着信接続要求の場合、CMAN-TDMは、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 23c以降、プロキシ常駐接続プーリング(PRCP)は暗黙的な接続プーリングをサポートしています。この機能により、アプリケーションが明示的に接続を解放しない場合でも、アプリケーションの起動およびデータベース操作の終了時に、アプリケーション接続との間で実行時にPRCPサーバーを自動的に割り当てることができます。

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

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

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

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

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

  • 文境界: セッションが暗黙的にステートレスである場合、セッションを解放してPRCPプールに戻します。

  • トランザクション境界: トランザクションが暗黙的または明示的に終了した場合、またはトランザクションが使用不可でセッションがステートレスになった場合、セッションを解放してPRCPプールに戻します。

ノート:

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

10.2.2 Traffic DirectorモードのOracle Connection Manager用のcman.oraファイルの構成

Traffic DirectorモードのOracle Connection Managerは、cman.oraファイルのTDM=YES設定を使用して設定できます。

Traffic DirectorモードのOracle Connection Managerのサンプルcman.ora構成
CMAN_1=
	(CONFIGURATION=
		(ADDRESS_LIST=
		      (ADDRESS=(PROTOCOL=tcp)(HOST=TDMHOST)(PORT=1522))
		)
		(RULE_LIST=
		      (RULE=(SRC=*)(DST=*)(SRV=*)(ACT=accept))
		)
    	  	(PARAMETER_LIST=
		      (TDM=YES)
		      (TDM_THREADING_MODE=DEDICATED)
		      (MAX_GATEWAY_PROCESSES=8)
		      (MIN_GATEWAY_PROCESSSES=3)
		)
	 )
wallet_location =
	(SOURCE=
		(METHOD=File)
		(METHOD_DATA=
			(DIRECTORY=wallet_location)
		)
	)
SQLNET.WALLET_OVERRIDE = TRUE

ノート:

パラメータWALLET_LOCATIONは、Oracle DatabaseサーバーのOracle Database 23cでの使用は非推奨です。Oracle Databaseクライアントでの使用は非推奨ではありません。

Oracle Databaseサーバーの場合は、WALLET_LOCATIONを使用するかわりに、WALLET_ROOTシステム・パラメータの使用をお薦めします。

10.2.3 Traffic DirectorモードのOracle Connection Managerのプロキシ認証用のウォレットの構成

Traffic DirectorモードのOracle Connection Managerは、cman.oraファイルで構成する必要があるウォレットを使用してデータベースに接続します。

このウォレットには、Traffic DirectorモードのOracle Connection Managerでプロキシ認証に使用されるtdmユーザーのユーザー名およびパスワード情報が含まれています。このtdmユーザーは、Traffic DirectorモードのOracle Connection Managerが接続するすべてのデータベースに存在する必要があります。

次の設定では、Traffic DirectorモードのOracle Connection Managerからのすべてのアウトバウンド接続で、プロキシ認証用に指定された場所のウォレットの資格証明を使用します。

WALLET_LOCATION=
	(SOURCE=
		(METHOD=FILE)
		(METHOD_DATA=
			(DIRECTORY=wallet_location)
		)
 	)
SQLNET.WALLET_OVERRIDE=TRUE

ノート:

パラメータWALLET_LOCATIONは、Oracle DatabaseサーバーのOracle Database 23cでの使用は非推奨です。Oracle Databaseクライアントでの使用は非推奨ではありません。

Oracle Databaseサーバーの場合は、WALLET_LOCATIONを使用するかわりに、WALLET_ROOTシステム・パラメータの使用をお薦めします。

ウォレットは、各サービスに構成されている必要があります。新しいサービスが追加された場合、同じウォレットを使用して新しいサービス用の資格証明を指定する必要があります。

ノート:

新しいサービスが追加され、この新しいサービス用の資格証明がウォレットに追加されるたびに、変更を有効にするためにOracle Cloud Traffic Managerを再起動する必要があります。
10.2.3.1 Traffic DirectorモードのOracle Connection Managerによる外部パスワード・ストアの使用の有効化

ステップには、Oracleウォレットの作成と、そのウォレット内の各データベース・サービスのためのデータベース接続資格証明の作成があります。

ステップ1: コマンドラインで次の構文を使用して、Traffic DirectorモードのOracle Connection Managerでウォレットを作成します。

mkstore -wrl wallet_location -create

wallet_locationは、ウォレットを作成して格納するディレクトリのパスです。

このコマンドにより、指定した場所での自動ログイン機能が有効化されたOracleウォレットが作成されます:
orapki wallet create -wallet wallet_location -auto_login
Enter password: password
Enter password again: password

自動ログイン機能を使用すると、パスワードの指定なしにTraffic DirectorモードのOracle Connection Managerからウォレットの内容にアクセスできます。

ステップ2: コマンドラインで次の構文を使用して、ウォレットにデータベース接続の資格証明を作成します。

mkstore -wrl wallet_location -createCredential db_service_name username password

wallet_locationは、ステップ1でウォレットを作成したディレクトリのパスです。db_service_nameは、アプリケーションがOracle Connection Managerに接続するときに接続文字列で使用するサービス名です。usernamepasswordは、tdmのユーザー名とパスワードです。

ノート:

mkstoreウォレット管理コマンドライン・ツールは、Oracle Database 23cでは非推奨であり、将来のリリースで削除される可能性があります。

ウォレットの管理には、orapkiコマンドライン・ツールの使用をお薦めします。

Traffic DirectorモードのOracle Connection Managerを使用してアクセスする必要があるデータベース・サービスごとに、このステップを繰り返します。

TLS (TCPS)付きTCP/IP構成の場合、Traffic DirectorモードのOracle Connection Managerウォレットがすでに作成されてています。この場合、ステップ1をスキップして、TCPS構成に使用したのと同じ場所を、mkstorewallet_locationに指定できます。

ノート:

  • 指定されたデータベースのすべてのサービス間で同じtdmユーザーを使用できます。ただし、必要に応じて、各サービスに異なるtdmユーザーを関連付けることもできます。

  • プラガブル・データベース(PDB)のサービスの場合、tdmユーザーの設定には次の2つの選択肢があります。

    共通tdmユーザー: tdmユーザーを共通ユーザーにすることができます。この場合、Traffic DirectorモードのOracle Connection Managerは、マルチテナント・コンテナ・データベース(CDB)内の異なるPDBからのユーザーをプロキシ認証するために、資格証明のセットを1つ使用します。

    PDBごとのtdmユーザー: tdmユーザーをPDB固有のユーザーにすることができます。この場合、Traffic DirectorモードのOracle Connection Managerは、特定のPDBのユーザーをプロキシ認証するために、PDB固有のプロキシ・ユーザーを使用します。

10.2.4 Traffic DirectorモードのOracle Connection Managerのプロキシ認証用のデータベースの構成

アプリケーションがTraffic DirectorモードのOracle Connection Managerを介して接続するすべてのデータベースには、tdmなどのユーザーが必要です。Traffic DirectorモードのOracle Connection Managerはプロキシ認証を使用し、tdmユーザーとしてデータベースに接続します。Traffic DirectorモードのOracle Connection Managerを経由して接続する必要があるすべてのユーザーには、次のようにCONNECT THROUGH tdm権限を付与する必要があります。

ALTER user SCOTT GRANT CONNECT THROUGH tdm

10.2.5 Traffic DirectorモードのOracle Connection Managerでのサービス登録の構成

Oracle Connection Managerで使用するためのサービス登録の構成を参照してください。

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

Traffic DirectorモードのOracle Connection Manager (CMAN-TDM)は、プロキシ常駐接続プーリング(PRCP)をサポートしています。PRCPは、データベース・サービスごとにも、PDB全体に対しても構成できます。デフォルトでは、PRCPはサービスごとのモードで構成されます。
必要に応じて、暗黙的な接続プーリングをPRCPで有効にできます。
  1. サービスごと、またはPDBごとにPRCPを構成します。
    • サービスごとのPRCP:

      これがPRCPのデフォルト構成です。次の<session_pool>のパラメータをoraaccess.xmlファイル(CMAN-TDMサーバーのTNS_ADMINディレクトリで使用可能)に指定します。これらのパラメータは、<default_parameters>セクションまたは<config_descriptions>セクションに指定できます。<default_parameters>セクションに指定すると、アプリケーション内のすべての接続プールに設定が適用されます。

      パラメータ 説明

      <enable>

      <enable>trueに設定して、セッション・プール構成を有効にする必要があります。これは必須パラメータです。つまり、<session_pool>を構成する場合は、<enable>も構成する必要があります。

      <min_size>

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

      <max_size>

      プールの最大接続数。デフォルト値は0です。これは必須パラメータです。つまり、<session_pool>パラメータを構成する場合は、<max_size>パラメータを構成する必要があります。

      <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で動的に計算されます。この最大サイズ値で、oraaccess.xmlファイルに構成されているMAX_SIZE値がオーバーライドされます。

      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にアップロードします。

  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ディレクティブが無視されます。

10.2.7 計画外イベントのためのTraffic DirectorモードのOracle Connection Managerの構成

Traffic DirectorモードのOracle Connection Managerは、高速アプリケーション通知(FAN)イベントに暗黙的にサブスクライブします。このためには、oraaccess.xmleventsを有効にする必要があります。

DBMS_SERVICEまたはSRVCTL (Oracle RACデータベースの場合)を使用して、特定のサービスのCOMMIT_OUTCOMEを指定します。

関連項目:

10.2.8 計画済停止イベントのためのTraffic DirectorモードのOracle Connection Managerの構成

Traffic DirectorモードのOracle Connection Managerは、高速アプリケーション通知(FAN)イベントに暗黙的にサブスクライブします。このためには、oraaccess.xmleventsを有効にする必要があります。

計画済停止イベントの場合、DBMS_SERVICEまたはSRVCTLを使用してサービスを構成し、failover_modeselectに、commit_outcomeTRUEに、failover_restoreLEVEL1に設定します。

関連項目:

10.2.9 サービス・アフィニティのためのTraffic DirectorモードのOracle Connection Managerの構成

Oracle Connection ManagerをTraffic Directorモードで構成し、着信接続要求をルーティングするためのデフォルトの負荷分散メカニズムを変更します。

デフォルトでは、Traffic DirectorモードのOracle Connection Managerはサービス・アフィニティを使用して、着信接続要求をルーティングするゲートウェイを選択します。新しい接続要求はすべて、データベース・サービスに関連付けられたゲートウェイにルーティングされます。

cman.oraパラメータSERVICE_AFFINITYを使用して、デフォルトの動作を変更し、パラメータをONまたはOFFに設定します。

プロキシ常駐接続プーリング(PRCP)を使用するときには、ゲートウェイ・プロセスのパフォーマンスおよびリソース使用率を向上させるために、SERVICE_AFFINITYパラメータをOFFに設定することをお薦めします。

10.2.10 Traffic DirectorモードのOracle Connection ManagerでのTransport Layer Securityの構成

Traffic DirectorモードのOracle Connection Managerサーバー(CMAN-TDM)でウォレットを作成し、cman.oraファイルでTransport Layer Security (TLS)付きTCP/IPのリスニング・エンドポイントおよびウォレットの場所を指定します。

ノート:

Oracle Database 23c以降、Oracle Wallet Manager (OWM)はサポートされなくなりました。

orapkiコマンドライン・ツールを使用してOWMを置き換えることをお薦めします。

  1. ウォレットが作成されていることと、証明書があることを確認します。
    1. ウォレットが存在するTraffic DirectorモードのOracle Connection Managerサーバーにログインします。
    2. orapkiコマンドライン・ツールを使用して、次のコマンドを実行します。
      orapki wallet display -wallet wallet_location

      ここで、wallet_locationは、ウォレットが格納されているディレクトリへのパスです。

      ウォレットのディレクトリにcwallet.ssoファイル(自動ログイン・ウォレット)が含まれており、それにユーザー証明書が含まれている場合、このコマンドはパスワードを要求せずにユーザー証明書を表示します。

      cwallet.ssoにユーザー証明書が含まれていることを確認します。ウォレットにユーザー証明書が含まれていない場合は、ユーザー証明書を含むウォレットを作成し、次のコマンドを実行してウォレット・ディレクトリにcwallet.ssoを作成します:
      orapki wallet create -wallet wallet_location -auto_login
  2. cman.oraファイルで、TLS付きTCP/IP (TCPS)を使用するリスニング・エンドポイントを作成し、WALLET_LOCATIONパラメータを設定して、CMAN-TDM側のウォレットの場所を指定します。

    たとえば、TCPSプロトコル・アドレスおよびWALLET_LOCATIONパラメータ設定が構成されたcman.oraファイルのサンプルを次に示します:

    CMAN_1=
    	(CONFIGURATION=
        		(ADDRESS_LIST=
    		      (ADDRESS=(PROTOCOL=tcps)(HOST=proxysvr)(PORT=1522))
    		      (ADDRESS=(PROTOCOL=tcp)(HOST=proxysvr)(PORT=1523))
    		)
    		(RULE_LIST=
    		      (RULE=(SRC=*)(DST=*)(SRV=*)(ACT=accept))
    		)
        		(PARAMETER_LIST=
    		      (MAX_GATEWAY_PROCESSES=8)
    		      (MIN_GATEWAY_PROCESSSES=3)
        		)
    	 )
    WALLET_LOCATION= 
    	(SOURCE=
    		(METHOD=File)
    		(METHOD_DATA=
    			(DIRECTORY=wallet_location)
    	  	)
    	)
    SQLNET.WALLET_OVERRIDE = TRUE

    ノート:

    パラメータWALLET_LOCATIONは、Oracle DatabaseサーバーのOracle Database 23cでの使用は非推奨です。Oracle Databaseクライアントでの使用は非推奨ではありません。

    Oracle Databaseサーバーの場合は、WALLET_LOCATIONを使用するかわりに、WALLET_ROOTシステム・パラメータの使用をお薦めします。

10.2.11 Traffic DirectorモードのOracle Connection Managerの制限事項

これらの機能は、Traffic DirectorモードのOracle Connection Managerでは、すべてのドライバでサポートされていません。

  • 透過的アプリケーション・コンティニュイティ(TAC)用のJava Database Connectivity (JDBC)オブジェクト

  • アドバンスト・キューイング(AQ)

  • データベース・リンク

  • データベースの起動または停止のコール

  • シャーディング(またはOracle Globally Distributed Database)

  • SQL翻訳

  • デュアルセッションプロキシ認証

  • OS認証

  • SYSDBASYSOPERなどでの認証

  • ユーザー名とパスワードを明示的に渡さないSSL外部認証(DNなど)

  • オブジェクトREF

  • セッションの切替え

  • セッション移行

  • ナビゲーション・アクセスのためのOCIObject*コール

  • OCIPickerImage*コール

  • OCIAnyData*コール

  • OCISubscription*コール: アプリケーション・コンティニュイティ(AC)、TAC、ランタイム・ロード・バランシング(RLB)、高速アプリケーション通知(FAN)のクライアント側サブスクリプション

  • OCILCR*、OCIXStream*コール

  • OCIStmtExecute:
    • サーバー側でスクロール可能なカーソルのサポート

    • 暗黙的結果

  • 変更通知(CQN)

  • クライアント結果キャッシュ

  • データベース常駐接続プール(DRCP): 複数プロパティ・タグおよびPLSQLコールバック

  • OCIConnectionPool

  • Real Application Security (Javaの場合のみ)

  • 一括コピー(ODP.Netのみ)

  • 自己チューニング(ODP.Netのみ)

  • MultiThreadedServer (MTS)分散トランザクション(ODP.Netのみ)

  • Oracle Advanced Security (ASO)暗号化およびサポートされているアルゴリズム(ASOのみ)

さらに、次のタスクはサポートされていません:
  • アプリケーションで提供される接続文字列でSERVICE_NAMEのかわりにSIDを使用

  • パイプライン化文の実行

  • 表のメタデータの変更(これは、Traffic DirectorモードのOracle Connection Managerによって文が常にキャッシュされるためです。)

  • プロキシ常駐接続プール(PRCP)の接続によるパスワードの変更

10.3 逆接続用のトンネリング・モードのOracle Connection Managerの構成

トンネリング・モードのOracle Connection Managerは、サーバーCMANとクライアントCMANの間のトンネル接続を確立します。クライアントは、サーバーcmanに接続することで、トンネル経由で逆接続を行うことができます。

次の各トピックのタスクを実行して、トンネリング・モードのOracle Connection Managerを構成します。

10.3.1 サーバー・トンネリング・モードのOracle Connection Manager用のcman.oraの構成

トンネリング・パラメータを使用して、サーバー・トンネリング・モードのOracle Connection Managerを設定します。

cman.oraファイルで、トンネリング・パラメータをONに設定します。

サーバー・トンネリング・モードのOracle Connection Managerのサンプルcman.ora構成。

CMAN_SERVER=
    (CONFIGURATION =
	(ADDRESS= (PROTOCOL=TCP)(HOST=SERVERCMAN)(PORT=1522))
       (RULE_LIST=
         (RULE=(SRC=*)(DST=*)(SRV=*)(ACT=accept))
       )
       (PARAMETER_LIST=
	  (TUNNELING=ON)
	  (GATEWAY_PROCESSES=16)
	  (NON_TUNNEL_GATEWAYS=8)
	  (TUNNEL_CAPACITY=32)
	  (TUNNEL_PROBE_INTERVAL=7)
       )
     )

10.3.2 クライアント・トンネリング・モードのOracle Connection Manager用のcman.oraの構成

クライアント・トンネリング・モードのOracle Connection Managerを設定するには、cman.oraファイルにtunnel_addressパラメータを設定する必要があります。

クライアント・トンネリング・モードのOracle Connection Managerのサンプルcman.ora構成。

CMAN_CLIENT=
 (CONFIGURATION=           
   (TUNNEL_ADDRESS=                       
     (DESCRIPTION=
       (ADDRESS=(PROTOCOL=TCP)(HOST=SERVERCMAN)(PORT=1522))                       
       (CONNECT_DATA=(TUNNEL_ID=south))
     )
    )
    (ADDRESS=(PROTOCOL=TCP)(HOST=CLIENTCMAN)(PORT=1523))            
    (RULE_LIST=                       
      (RULE=(SRC=*)(DST=*)(SRV=*)(ACT=accept))
     )
    (PARAMETER_LIST=                       
       (MAX_TUNNELS=2)                       
       (GATEWAY_PROCESSES=16)                       
       (NON_TUNNEL_GATEWAYS=8)
    )
  )
tunnel_idのデフォルト名はRCです。

10.3.3 逆接続を行うためのクライアントの構成

サーバーCMANに接続する場合、クライアントはクライアントCMAN識別子を指定する必要があります。

TUNNEL_SERVICE_NAMEパラメータを使用して、クライアントCMAN識別子を指定します。

クライアントのtnsnames.ora構成のサンプル。

SOUTH_SALES_DB= 
	(DESCRIPTION=
	 (ADDRESS=(PROTOCOL=TCP)(HOST=SERVERCMAN)(PORT=1522))
	 (CONNECT_DATA =
	   (TUNNEL_SERVICE_NAME=south)
   	   (SERVICE_NAME=SALES)
	 )
	)

ノート:

source_routeは逆接続ではサポートされていません。

10.3.4 トンネル登録およびクライアント・アクセスのためのサーバーCMANのルールの構成

クライアントCMANは、トンネル・サービスを使用してサーバーCMANに接続します。

クライアントCMANのトンネルIDは、サーバーCMANでサービスとして登録されます。

10.3.4.1 rule_list構文を使用したサーバーCMANのルールの構成

各クライアントCMANのルールをソースとして追加し、サービスをトンネルとして追加する必要があります。クライアントCMANへのクライアント接続を許可するには、クライアントCMANを識別するサービスのルールを追加します。

宛先を*またはlocalhostとして設定する必要があります。

rule_listを使用したトンネリング・モードのサーバー側のOracle Connection Managerのサンプルcman.ora構成。

CMAN_SERVER=
   (CONFIGURATION=
     (ADDRESS=
        (PROTOCOL=TCP)(HOST=SERVERCMAN)(PORT=1522))            
        (RULE_LIST=                       
          (RULE=(SRC=CLIENTCMAN)(DST=*)(SRV=tunnel)(ACT=accept))                       
          (RULE=(SRC=CLIENTHOST)(DST=*)(SRV=south)(ACT=accept))
        )            
      (PARAMETER_LIST=                       
          (TUNNELING=ON)                       
          (GATEWAY_PROCESSES=16)                       
          (NON_TUNNEL_GATEWAYS=8)                       
          (TUNNEL_CAPACITY=32)                       
          (TUNNEL_PROBE_INTERVAL=7)
      )
   )
10.3.4.2 rule_group構文を使用したサーバーCMANのルールの構成

トンネルIDごとにグループを追加します。グループ内のルール・リストは、必要なソース・アドレスへのアクセス権を付与します。

宛先を*またはlocalhostとして設定する必要があります。

rule_groupを使用したトンネリング・モードのサーバー側のOracle Connection Managerのサンプルcman.ora構成。

CMAN_SERVER=
    (CONFIGURATION=
	(ADDRESS=(PROTOCOL=TCP)(HOST=SERVERCMAN)(PORT=1522))
       (RULE_GROUP=
         (GROUP=
           (DESCRIPTION=(NAME=south))
           (RULE_LIST=(RULE=(SRC=CLIENTCMAN)(DST=*)(SRV=*)(ACT=accept)))
	    (RULE_LIST=(RULE=(SRC=CLIENTHOST)(DST=*)(SRV=*)(ACT=accept)))
	  )
         (GROUP=
           (DESCRIPTION=(NAME=cmon))
           (RULE_LIST=(RULE=(SRC=*)(DST=*)(SRV=*)(ACT=accept)))
          )
       )
       (PARAMETER_LIST=
	    (TUNNELING=ON)
	    (GATEWAY_PROCESSES=16)
	    (NON_TUNNEL_GATEWAYS=8)
	    (TUNNEL_CAPACITY=32)
	    (TUNNEL_PROBE_INTERVAL=7)
        )
     )

10.3.5 クライアント側のOracle Connection ManagerのOracle Databaseサーバーの構成

データベースをクライアント側のOracle Connection Managerに登録する必要があります。

このガイドのOracle Connection Managerを使用する場合のOracle Databaseサーバーの構成の項では、データベースをOracle Connection Managerに登録する方法について説明しています。

ノート:

静的ルーティングは、トンネリング・モードのOracle Connection Managerではサポートされていません。

10.4 IPv4およびIPv6のブリッジとしてのOracle Connection Managerの使用

一部のデータベース接続環境では、クライアントとデータベースが異なるバージョンのIPプロトコルを使用できるため、完全な接続性が存在しません。この場合は、その接続での2つ以上のホップで、異なるバージョンのIPプロトコルが使用されています。

たとえば、要求は、IPv4ソースからIPv6宛先、IPv6ソースからIPv4宛先、またはIPv4ネットワークを通じてIPv6からIPv6に渡されます。

IPv4とIPv6の間のネットワーク・ブリッジとしてOracle Connection Managerを使用できます。Oracle Connection Managerがブリッジとして機能するには、少なくとも1つのIPv4インタフェースと少なくとも1つのIPv6インタフェースで構成されたデュアル・スタック・ホスト上で実行する必要があります。

IPv6アドレスに基づいてフィルタにかけるには、Oracle Connection Managerのフィルタリング機能を使用します。ルールは、完全なIPアドレスまたは部分的なIPアドレスに基づいて設定できます。次の図は、IPv6アドレスの形式を示しています。

図10-1 IPv6アドレスの形式

図10-1の説明が続きます
「図10-1 IPv6アドレスの形式」の説明

図の上部の数字は、アドレス内のビット数を示しています。IPv6アドレスの各16進文字は、4ビットを表します。ビット4から16はアドレスの最上位レベルのアグリゲータ識別子(TLA ID)部分です。ビット25から49は次のレベルのアグリゲータ識別子(NLA ID)部分です。

たとえば、アドレス2001:0db8::203:BAFF:FE0F:C74Bでは、最初の4つの16進文字(2001)のバイナリ表記は次のようになります。

0010000000000001

したがって、アドレス内の先頭の3ビットは001になります。アドレスのTLA ID部分は0000000000001になります。

次の手順では、IPv6アドレス用のルール・フィルタを作成する方法について説明します。

  1. ORACLE_BASE_HOME/network/adminディレクトリにあるcman.oraファイルにナビゲートします。

    cman.oraファイルがORACLE_BASE_HOME/network/adminディレクトリにない場合は、ORACLE_HOME/network/adminディレクトリでファイルを探します。

  2. テキスト・エディタを使用してcman.oraファイルを開きます。
  3. IPv6アドレス形式に基づいて、RULE_LISTRULEを作成します。

    たとえば、ソース・ホストがアドレス2001:0db8::203:BAFF:FE0F:C74BのIPv6専用ホストで、宛先がSALESL1593という名前のIPv4専用ホストであるとします。次のいずれかのルールを作成して、Oracle Connection ManagerをIPv6とIPv4の間のブリッジとして構成します。

    ルールのタイプ 説明

    サブネットIDに基づいたフィルタ

    フィルタリングはサブネットID以下の64ビットに基づいています。

    (RULE = (SRC = 2001:0db8::203:BAFF:FE0F:C74B/64)
      (DST = SALESL1593)
      (SRV = SALES)
      (ACT = ACCEPT)
      (ACTION_LIST = (AUT=ON)(MOCT=10)(MIT=30)(CONN_STATE=YES))
    )

    NLA IDに基づいたフィルタ

    フィルタリングはNLA ID以下の48ビットに基づいています。

    (RULE = (SRC = 2001:0db8::203:BAFF:FE0F:C74B/48)
      (DST = SALESL1593)
      (SRV = SALES)
      (ACT = ACCEPT)
      (ACTION_LIST = (AUT=ON)(MOCT=10)(MIT=30)(CONN_STATE=YES))
    )

    TLA IDに基づいたフィルタ

    フィルタリングはTLA ID以下の16ビットに基づいています。

    (RULE = (SRC = 2001:0db8::203:BAFF:FE0F:C74B/16)
      (DST = SALESL1593)
      (SRV = SALES)
      (ACT = ACCEPT)
      (ACTION_LIST = (AUT=ON)(MOCT=10)(MIT=30)(CONN_STATE=YES))
    )

    ビット数に基づいたフィルタ

    フィルタリングはアドレスの先頭の60ビットに基づいています。

    (RULE = (SRC = 2001:0db8::203:BAFF:FE0F:C74B/60)
      (DST = SALESL1593)
      (SRV = SALES)
      (ACT = ACCEPT)
      (ACTION_LIST = (AUT=ON)(MOCT=10)(MIT=30)(CONN_STATE=YES))
    )

10.5 Oracle Connection Managerを使用したサービス拒否攻撃の回避

Oracle Connection Manager (CMAN)が特定の時間間隔内に単一のIPアドレスから処理できるクライアント接続数に制限を適用できます。

悪意のあるクライアントは、サーバー・ノードに過剰な接続リクエストを送信する可能性があります。これは、CMANが新しい接続を処理する秒当たりの容量を飽和させ、データベースへのサービス拒否(DoS)攻撃を引き起こす可能性があります。IPレート制限機能を使用すると、IPアドレスから許可される新規接続の最大数を制限できます。これにより、悪意のあるクライアントを早期に検出し、それらの接続を拒否することで、DoS攻撃を防止できます。

IPレート制限を適用するには、cman.ora構成ファイルでIP_RATE_COUNTパラメータを設定します。このパラメータには、単一のIPアドレスから許可される接続の数を指定します。指定されたIPレート制限はCMANエンドポイント・レベルで適用されます。

必要に応じて、cman.oraファイルで次のオプション・パラメータも設定できます。
  • IP_RATE_INTERVAL: IPアドレスからIP_RATE_COUNTの接続数を受け入れる時間間隔を秒単位で指定します。

  • IP_RATE_BLOCK: 指定したIPレート制限の超過後に、IPアドレスがブロックされる期間を分単位で指定します。

接続がIP_RATE_INTERVALごとのIP_RATE_COUNTの制限を超えると、CMANはそのIPアドレスを拒否してIP_RATE_BLOCK分間ブロックします。CMANは、IP rate limit enforced for IPアドレスのエラー・メッセージをOracle Connection Managerのログ・ファイルに記録します。

10.6 Oracle Connection Managerの起動および停止

Oracle Connection Managerを構成したら、Oracle Connection Manager制御(CMCTL)ユーティリティを使用してこれを起動および管理できます。

オペレーティング・システムのコマンドラインで、このユーティリティの基本的な構文は次のとおりです。

cmctl [command] [argument1 . . . argumentN] [-c instance_name]

-cパラメータは、管理するOracle Connection Managerインスタンスを指定します。インスタンスはcman.oraファイルに定義されます。

ノート:

インストール時または以前のOracle Connection Managerセッション時に指定した場合、パスワードの入力を求められます。ただし、これにより画面上にパスワードが表示されるため、潜在的なセキュリティ上のリスクがあります。コマンドラインでパスワード・オプション(-p)を使用しないことをお薦めします。

Oracle Connection Manager制御ユーティリティを使用してOracle Connection Managerを起動および停止するには:

  1. cman.oraファイルを作成します。
    サンプル・ファイルは、Oracle Connection Managerをインストールした後のORACLE_BASE_HOME/network/admin/samplesディレクトリにあります。
  2. 次の方法のいずれかを使用して、Oracle Connection Managerを起動します。
    • コマンド行で、次のコマンドを実行します。

      STARTUPコマンドを実行します。たとえば:

      cmctl STARTUP -c [cman_example_instance]

      次のコマンドは、リスナー、CMADMIN (Connection Manager Administration)およびcman_example_instanceという名前のインスタンスのゲートウェイ・プロセスを起動します。

    • CMCTLプロンプトで次の操作を行います。

      コマンドラインで、引数なしでcmctlと入力してCMCTLプロンプトを取得し、ADMINISTERおよびSTARTUPコマンドを実行します。たとえば:

      cmctl
      CMCTL> ADMINISTER [cman_example_instance]
      CMCTL> STARTUP
      
  3. 次のいずれかの方法を使用して、Oracle Connection Managerの実行中のインスタンスを停止します。
    • コマンド行で、次のコマンドを実行します。

      SHUTDOWNコマンドを実行します。たとえば:

      cmctl SHUTDOWN -c [cman_example_instance]
    • CMCTLプロンプトで次の操作を行います。

      コマンドラインで、引数なしでcmctlと入力してCMCTLプロンプトを取得し、ADMINISTERおよびSHUTDOWNコマンドを実行します。たとえば:

      cmctl
      CMCTL> ADMINISTER [cman_example_instance]
      CMCTL> SHUTDOWN
      

10.7 CMCTL RESTインタフェースについて

CMCTL RESTインタフェースは、RESTインタフェースを使用してリモート・マシンからOracle Connection Manager (Oracle CMAN)インスタンスを管理するために役立ちます。HTTPSをサポートしているクライアントは、CMCTLと同等のコマンドを発行できます。各REST APIコールには、Basic認証方式が指定されているWWW-Authenticate HTTPSヘッダーが必要です。

10.7.1 CMCTL RESTインタフェースの構成

cman.oraREST_ADDRESSパラメータを使用して、RESTエンドポイントのホスト名とポートを構成します。CMCTL RESTインタフェース認証では、Oracle CMANウォレット内で使用可能なユーザー名とパスワードを使用します。

  1. cman.oraファイルのパラメータ・セクションの下にREST_ADDRESS属性を追加します。
  2. Oracleウォレットを作成します。
    Oracleウォレットは、証明書と認証資格証明を格納するファイルです。orapkiユーティリティを使用して、Oracleウォレットを作成します。
    公認されている機関からの証明書をOracleウォレットにインポートするか、認可および署名された独自の証明書を作成してCMANのOracleウォレットで使用できます。自己署名付きOracleウォレットを使用することもできます。
    たとえば、自己署名付き証明書を含むウォレットを作成するには、次のコマンドを実行します。
    $ORACLE_HOME/bin/orapki  wallet create -wallet wallet directory
    $ORACLE_HOME/bin/orapki wallet add -wallet wallet directory -dn ‘cn=root_test, c=US’ -keysize 2048   -self_signed    -validity 365
    ここでのwallet directoryは、ウォレットが作成されるファイル・システム・ディレクトリの場所です。

    ノート:

    このディレクトリをグループまたは他のユーザーが読み取れないようになっていることを確認してください。
  3. CMAN RESTクライアント・ユーザー名をウォレットに追加します。
    CMCTL RESTインタフェース・プロセスでは、HTTPSプロトコルのみがサポートされています。HTTPプロトコルはサポートされていません。このウォレット・ファイルには、グループや他のユーザーの読取り権限を割り当てないでください。それには、CMANインスタンスを所有するユーザーの読取り権限のみを割り当てる必要があります。
    mkstoreユーティリティを使用して、ユーザー名とパスワードをOracle CMANウォレットに格納します。
    たとえば:
    mkstore -wrl wallet_directory -createEntry myusername my_password

    ノート:

    mkstoreウォレット管理コマンドライン・ツールは、Oracle Database 23cでは非推奨であり、将来のリリースで削除される可能性があります。

    ウォレットの管理には、orapkiコマンドライン・ツールの使用をお薦めします。

  4. 自動ログイン・ウォレットを作成します。
    Oracle CMANでは、HTTPSエンドポイントを開始するために自動ログイン・ウォレットが必要です。次のコマンドを実行して、自動ログイン・ウォレットを作成します。
    $ORACLE_HOME/bin/orapki wallet create -wallet wallet_location -auto_login

    ここでのwallet_locationは、CMANウォレットを作成したディレクトリです。

    ノート:

    Oracleは、Oracle Database 23cで新しい自動ログイン・ウォレット・バージョン(7)を導入しました。Oracleローカル自動ログイン・ウォレットのバージョン6は非推奨です。

    ローカル自動ログイン・ウォレットは、orapkiで変更することで更新できます。

  5. cman.oraファイル内でそのウォレットの場所を指定します。cman.oraファイルを更新してcman別名以外のウォレット・ディレクトリを指定します。
    CMAN=
      (CONFIGURATION=
          .. .. 
        (RULE_LIST=
           . . . )
        (PARAMETER_LIST=
          
          . . . ))
    Wallet_location= … 
    たとえば:
    WALLET_LOCATION=
      (SOURCE=(METHOD=FILE) 
         (METHOD_DATA=
             (DIRECTORY=wallet directory))
       )

    ノート:

    パラメータWALLET_LOCATIONは、Oracle DatabaseサーバーのOracle Database 23cでの使用は非推奨です。Oracle Databaseクライアントでの使用は非推奨ではありません。

    Oracle Databaseサーバーの場合は、WALLET_LOCATIONを使用するかわりに、WALLET_ROOTシステム・パラメータの使用をお薦めします。

10.7.2 CMCTLコマンドのREST API

CMCTL RESTインタフェースを使用すると、クラウド・デプロイメントにおけるCMANタスクを自動化できます。この機能は、CMANのcmctl制御ユーティリティに似ています。

CMCTL RESTインタフェースでは、RESTインタフェース・プロセスとOracle CMANリスナーとの間でローカル・オペレーティング・システム認証が使用されます。

REST構成を含むOracle CMANインスタンスを起動した後は、HTTPS基本認証を使用してRESTコールを行うことができます。

CMAN REST APIを確認するには、curlコマンドライン・ツールを使用します。たとえば、実行中のサービスを一覧表示するには、次のコマンドを使用します。

ノート:

curlコマンドは、テストおよび検証の目的にのみ使用されます。

curl -X GET -u username:password https://cmanhostname:rest_port/show/services

10.8 パッチ適用時のCMANセッションの移行

計画的な、停止時間なしのOracle CMANのアップグレードまたはパッチ適用の間に、確立されたクライアント/サーバー・セッションを、あるOracle Connection Manager (CMAN)インスタンスから別のOracle CMANインスタンスに移行できます。

移動中のデータがある実行中のセッションは、サービスを中断することなく移行できます。クライアントまたはサーバーで実行されている操作は、サービスが失われることなく、移行中にシームレスに引き続き実行されます。移行中に新しいクライアント接続を追加することもできます。

クライアント/サーバー・セッションを移行するには、次のステップを実行します。

Oracle CMANを最新のリリースにアップグレードするか、最新のパッチを適用する必要があります。
  1. 新しいORACLE_HOMEに、アップグレードされたOracle CMANまたはパッチが適用されたOracle CMANをインストールします。
  2. Oracle CMANの構成に使用したcman.oraファイルと同じファイルを使用して、新しいOracle CMANインスタンスを構成します。
  3. 新しいORACLE_HOMEから新しいOracle CMANインスタンスを移行モードで、起動します。以下のコマンドを使用します。
    cmctl startup –migrate -c cman_alias
    このコマンドは、新しいOracle CMANインスタンスを起動して、古いOracle CMANインスタンスからのセッションの移行を開始します。古いOracle CMANインスタンスは、移行が完了するか、7分後にタイムアウトした時点で終了します。

    古いOracle CMANインスタンスのアドレスがcman.oraファイルにcman_alias_oldという別名で追加されます。この別名を使用して、移行時に古いOracle CMANインスタンスの制御およびステータスの確認を行うことができます。

次のシナリオでは、セッションの移行が可能です。
  • クライアントからOracle CMANおよびOracle CMANからサーバーの両方でTCPが使用される場合。
  • クライアントまたはサーバーの一方でTCPS (TLS)、他方でTCPが使用される場合。TCPSを使用するクライアントとTCPSを使用するサーバーの両方にOracle Database 21c以降をインストールする必要があります。

サポートされていない接続は、タイムアウトになるまで接続されたままになります。

ノート:

  • セッション移行は通常モードのOracle CMANでのみサポートされ、Traffic DirectorモードのOracle CMANではサポートされません。
  • クライアントからOracle CMANおよびOracle CMANからサーバーの両方でTCPSを使用している場合、移行はサポートされません。
  • 現在、Microsoft Windowsではセッションの移行はサポートされません。

10.9 Oracle Connection Managerの機能強化

Oracle Connection Managerは、Oracle Databaseサーバーへのリクエストをプロキシおよび選別します。

  • Oracle Connection Managerは、Transport Layer Security (TLS)プロトコルをサポートすることにより、サーバーへのより安全なアクセスを提供します。このサポートにより、データベース・クライアントは、Oracle Connection Managerを経由したTCPSプロトコルによるサーバーとの通信が可能になります。Oracle Connection Managerを構成して、一方の側にTLS接続を、もう一方の側に非TLS接続を設定することもできます。これは、外部クライアント向けの内部データベース・サーバーをインターネットから隠すための安全策としても機能します。

    多重化: データベース・クライアントがリクエストしたエンドポイントに、すでにゲートウェイがTCPS接続している場合、新しい接続はゲートウェイによって同じ接続で多重化されます。

  • 複数のプロトコル・アドレス上でのリッスンが可能になっています。複数のリスニング・エンドポイントにより、Oracle Connection ManagerはTCPとTCPSの両方を同時にサポートできるようになりました。従来の単一プロトコル・アドレスの構成も引き続きサポートされます。たとえば:
    CMAN_ALIAS=
     (configuration=
     (address_list=
     (address=(protocol=TCP)(host=a.b.c.d)(port=12522))
     (address=(protocol=TCPS)(host=a.b.c.d)(port=12523))
    )
    ..
    )
    
  • ネットワーク・データの圧縮機能も追加されています。これにより、ネットワーク・スループットが向上し、Oracle DatabaseクライアントとOracle Databaseサーバーとの間のデータ転送が高速化されます。これは、データベース・クライアント、データベース・サーバー、およびネクスト・ホップの圧縮機能に応じて、様々な方法で実現されます。圧縮は、あらゆる2つのノード間でネゴシエートされたときに有効化されます。

    連続した3つ以上のノードが圧縮をサポートしていてネゴシエートした場合、このケースは、中間ノードが圧縮解除を実行することなく単に圧縮されたデータを中継するという方法で処理されます。

    圧縮は、Oracle DatabaseクライアントがOracle Database 12cリリース以前で圧縮をサポートできない場合でも、Oracle Connection Managerとサーバーとの間でサポートされます。

  • 最大2 MBのSDUがサポートされているため、Oracle DatabaseクライアントとOracle Databaseサーバーは、Oracle Connection Managerによって接続を確立するときに、より高いSDUをネゴシエートできます。

  • このリリースから、登録に対する有効ノード・チェックがOracle Connection Managerのデフォルトで有効化されます。デフォルトでは、Oracle Connection Managerに登録できるデータベースは、ローカル・ノード上にあるデータベースにかぎられます。リモート・ノード上のデータベースは、パラメータのREGISTRATION_INVITED_NODESREGISTRATION_EXCLUDED_NODESを使用することで、Oracle Connection Managerへの登録を許可または拒否できます。

  • Oracle Database 21c以降では、Oracle Connection Managerを使用して、サービス全体での帯域幅の配分を管理できます。

    Oracle Connection Managerには、次のような機能拡張があります。

    • CMCTLコマンドのREST API
    • ルールのGROUP構文
    • サービス・レベルでの1秒当たりのバイト数で示すBANDWIDTH