10 Oracle Connection Managerの構成

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

Oracle Connection Managerは、Oracle Database 19c Enterprise Editionをインストールすると使用できるようになります。これはクライアント・ディスク上のカスタム・インストール・オプションです。

Oracle Connection Managerの主要機能は次のとおりです。

  • アクセス制御: ルールベースの構成を使用してユーザーが指定したクライアント要求をフィルタにかけ、フィルタを通過したものを受け入れます。

  • セッションの多重化: 共有サーバーの接続先へのネットワーク接続により、複数のクライアント・セッションを集中化します。

Oracle Connection Manager機能の構成方法を学習します。

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

cman.oraファイルのパラメータを設定して、Oracle Connection Managerをホストするコンピュータを構成します。cman.oraファイルは、Oracle Connection Managerをホストするコンピュータ上の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.2 Oracle Connection Managerの設定

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

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

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

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

  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.2.1.1 Oracle Connection Manager (CMAN)でのTransport Layer Securityの構成

この構成ステップでは、CMANウォレットが証明書で作成されていることを確認し、TLS付きTCP/IPを使用するリスニング・エンドポイントを作成し、ウォレットの場所を指定します。

ステップ1: CMANウォレットが作成されていることと、証明書があることを確認してください。

次のステップに進む前に、ウォレットが作成されていることと、ウォレットに証明書があることを確認する必要があります。次のステップを実行します。
  1. Oracle Wallet Managerを起動します。

    • UNIXの場合: $ORACLE_HOME/binから次のコマンドを入力します。

      owm

    • Windowsの場合: 「スタート」を選択して「プログラム」に移動し、「Oracle-HOME_NAMEをクリックし、「Integrated Management Tools」を選択してから「Wallet Manager」をクリックします。

  2. 「ウォレット」メニューから「オープン」を選択します。

    ウォレットにReadyステータスの証明書が含まれ、自動ログインがオンになっている必要があります。自動ログインがオンになっていない場合は、「ウォレット」メニューから選択し、ウォレットを再度保存します。自動ログインがオンになります。

ステップ2: TLS付きTCP/IP (TCPS)を使用するリスニング・エンドポイントを作成し、cman.oraのCMAN側でCMANウォレットの場所を指定します。

次の例は、TCPSプロトコルを使用した 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)
	  	)
	)
10.2.1.2 アクセス制御の有効化

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.2.2 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.2.3 Oracle Connection Managerを使用する場合のOracle Databaseサーバーの構成

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

ノート:

Oracle Connection Managerに登録するデータベースがリモート・ノードにある場合は、cman.oraのパラメータVALID_NODE_CHECKING_REGISTRATIONを構成してリモート登録を許可する必要があります。
10.2.3.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.2.3.2 Oracle Connection Managerのセッションの多重化の有効化

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

たとえば:

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

次の表では、様々なレベルの多重化を設定するパラメータを示します:

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

属性 説明

PROTOCOL

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

MULTIPLEX

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

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

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

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

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

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

現在のOracle Database Client Interface (OCI)クライアントまたはサポートされている古いバージョンのOCIクライアント(Oracle Database 11gリリース2 (11.2)以降)で、Traffic DirectorモードのOracle Connection Managerに接続できます。

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

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はプロキシ認証を使用し、このユーザーとして接続します。

関連項目:

Traffic DirectorモードのOracle Connection Managerをサポートするcman.oraファイル内の既存のパラメータについては、Oracle Database Net Servicesリファレンスを参照してください。

このリリースでは、Traffic DirectorモードのOracle Connection Managerは次のようなサポートを提供します。

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

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

    • 計画済のデータベース・メンテナンスまたはPDBの再配置 

    • 大部分が読取りのワークロードでの計画外データベース停止  

  • 単一障害点のない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を使用したクライアントからデータベースへの接続では、クライアントとデータベースのバージョンが、サポートされている組合せである必要があります。

透過的パフォーマンスの強化およびセッションの多重化

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

  • プロキシ常駐接続プール(PRCP、プロキシ・モードのDRCP)を使用したデータベース・セッションの多重化(プールされたモードのみ)。アプリケーションは、TDMとデータベースとの間における透過的な接続時 ロード・バランシングおよび実行時ロード・バランシングを利用できます。

  • Traffic DirectorモードのOracle Connection Managerの複数のインスタンス: クライアント側の接続時ロード・バランシングにより、またはロード・バランサ(BigIP、NGINXなど)により、アプリケーションのスケーラビリティが向上します

アプリケーション停止時間ゼロ - 計画済のデータベース・メンテナンスまたはPDBの再配置

  • プールされたモード

    Traffic DirectorモードのOracle Connection Managerは、計画済停止のONSイベントに応答し、作業をリダイレクトします。要求が完了すると、Traffic DirectorモードのOracle Connection Managerのプールから接続がドレインされます。

    サービスの再配置は、データベース・リリース11.2.0.4以降でサポートされています。

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

  • プールされていないモードまたは専用モード

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

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

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

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

セキュリティと分離

Traffic DirectorモードのOracle Connection Managerには、次のような機能があります。

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

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

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

  • サービス拒否攻撃とファジング攻撃からの保護 

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

Traffic DirectorモードのOracle Connection Managerの高可用性

これには次が含まれます。
  • ロード・バランサやクライアント側ロード・バランシング、接続文字列でのフェイルオーバーを使用した、Traffic DirectorモードのOracle Connection Managerの複数のインスタンス

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

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

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

10.3.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

10.3.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

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

ノート:

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

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

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

mkstore -wrl wallet_location -create

wallet_locationは、ウォレットを作成して格納するディレクトリのパスです。このコマンドにより、指定した場所での自動ログイン機能が有効化されたOracleウォレットが作成されます。自動ログイン機能を使用すると、パスワードの指定なしに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のユーザー名とパスワードです。

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

ノート:

  • 指定されたデータベースのすべてのサービス間で同じ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固有のプロキシ・ユーザーを使用します。

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

10.3.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.3.5 Traffic DirectorモードのOracle Connection Managerでのサービス登録の構成

サービス登録を構成するには、tnsnames.oraファイル内にサービス名エントリを含めます。また、init.oraファイル内に、Oracle Connection Managerのリスニング・アドレスを指定する記述子を含めます。

Traffic DirectorモードのOracle Connection Managerでのサービス登録を構成する手順は、Oracle Connection Managerとともに使用するためのサービス登録の構成方法に似ています。

10.3.6 Traffic DirectorモードのOracle Connection Managerのプロキシ常駐接続プールの構成

Traffic DirectorモードのOracle Connection Manager 18.1は、プロキシ常駐接続プーリング(PRCP)をサポートしています。PRCPは、ターゲット・データベースへの少数のサーバー接続で構成される接続プールを使用して、ルーティングされる多数のクライアント接続に対して接続サービスを提供します。PRCPは、データベース層での接続負荷(接続時のメモリー使用量)を軽減し、実行時ロード・バランシング(RLB)を実行してパフォーマンスを高めます。これにより、データベースに対する接続負荷を軽減できます。

プロキシ常駐接続プールは、oraaccess.xml構成ファイルで次のパラメータのセットを指定することで構成されます。
  • <session_pool> – セッション・プール・パラメータを設定します。

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

  • <min_size> — プール内の最小接続数。デフォルト値は0です。Traffic DirectorモードのOracle Connection Managerは異機種間プールのシナリオであるため、他のすべての値は無視されます。

  • <max_size> — プール内の最大接続数。これは必須のパラメータであるため、デフォルト・パラメータはありません。つまり、<session_pool>が構成されている場合、<max_size>の構成も必要です。

  • <increment> — プール拡張時のプール内の接続数の増加数。デフォルト値は1です。

  • <inactivity_timeout> — プール内でアイドル状態の接続が切断されるまでの最大時間(秒単位)。デフォルト値は0です。これは制限されていないことを意味します。

  • <max_use_session> — 接続を取得し、プールに解放できる最大回数。デフォルト値は0です。これは制限されていないことを意味します。

  • <max_life_time_session> — プール内の接続の有効期限(秒単位)。デフォルト値は0です。これは制限されていないことを意味します。

oraaccess.xmlファイルを使用して、必要な接続サービスごとにプロキシ常駐接続プールを構成できます。次の例では、2つのグループの接続パラメータが示され、それぞれがsales_confighr_configというconfig別名に関連付けられています。アプリケーションが使用する各接続文字列はそれぞれのconfig別名にマップされているため、2つのプロキシ常駐接続プールが示されています。
<oraaccess xmlns="http://xmlns.oracle.com/oci/oraaccess"
            xmlns:oci="http://xmlns.oracle.com/oci/oraaccess"
            schemaLocation="http://xmlns.oracle.com/oci/oraaccess
            http://xmlns.oracle.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>

関連項目:

Oracle CMAN構成ファイルの概要については、Oracle Database Net Servicesリファレンスを参照してください

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

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

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

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

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

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

10.3.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.3.10 Traffic DirectorモードのOracle Connection ManagerでのTransport Layer Securityの構成

この構成ステップでは、Traffic Directorモード・ウォレットのOracle Connection Managerが証明書を使用して作成されたことを確認し、TLS付きTCP/IPを使用するリスニング・エンドポイントを作成し、ウォレットの場所を指定します。

ステップ1: Traffic DirectorモードのOracle Connection Managerのウォレットが作成されていることと、証明書があることを確認してください。

次のステップに進む前に、ウォレットが作成されていることと、ウォレットに証明書があることを確認する必要があります。次のステップを実行します。
  1. Oracle Wallet Managerを起動します。

    • UNIXの場合: $ORACLE_HOME/binから次のコマンドを入力します。

      owm

    • Windowsの場合: 「スタート」を選択して「プログラム」に移動し、「Oracle-HOME_NAMEをクリックし、「Integrated Management Tools」を選択してから「Wallet Manager」をクリックします。

  2. 「ウォレット」メニューから「オープン」を選択します。

    ウォレットにReadyステータスの証明書が含まれ、自動ログインがオンになっている必要があります。自動ログインがオンになっていない場合は、「ウォレット」メニューから選択し、ウォレットを再度保存します。自動ログインがオンになります。

ステップ2: TLS付きTCP/IP (TCPS)を使用するリスニング・エンドポイントを作成し、cman.oraのCMAN側でTraffic DirectorモードのOracle Connection Managerのウォレットの場所を指定します。

次の例は、TCPSプロトコルを使用した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

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

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

  • 分散トランザクション

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

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

  • シャーディング

  • XML

  • SQL翻訳

  • プロキシ認証およびTLS外部認証(DNなど)

  • オブジェクトREF

  • セッションの切替え

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

  • OCIPickerImage*コール

  • OCIAnyData*コール

  • OCIDirPath*コール

  • OCISubscription*コール

  • OCILCR*、OCIXStream*コール

  • OCIStmtExecute:

    • スクロール可能カーソル

    • 暗黙的結果

  • 変更通知(CQN)

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

  • OCI_MIGRATEモード

  • DRCP: マルチプロパティのタグとPL/SQLコールバック

  • アプリケーション・コンティニュイティ

  • OCIConnectionPool

  • SYSDBA、SYSOPERなどの認証

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

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

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

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

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_HOME/network/adminディレクトリにあるcman.oraファイルにナビゲートします。

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

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

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

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

ノート:

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

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

  1. cman.oraファイルを作成します。
    サンプル・ファイルは、Oracle Connection Managerをインストールした後のORACLE_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.6 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への登録を許可または拒否できます。