特定のドライバとプールの場合のFANの構成

様々なデータベース・クライアント・ドライバでのFANの構成についての固有の要件と推奨事項。

JDBC FANの要件

Oracle Universal Connection Pool (UCP)

  • ONSの自動構成の場合は、推奨される接続URL/文字列を使用します。

  • JDBC JARファイルojdbcXXX.jarons.jarおよびsimplefan.jarCLASSPATHに含めます。

    必要に応じて、オプションのウォレットJARを含めます: 相互TLSを使用したOracle Cloud Autonomous Database (ServerlessまたはDedicated Exadata Infrastructure)の場合やデータベース接続用のクライアント側ウォレットを設定してある場合は、osdt_cert.jar (Oracle 23aiより前のみ)、osdt_core.jar (Oracle 23aiより前のみ)およびoraclepki.jarです。

    すべてのJARファイルが同じバージョンであることを確認します(バージョンを混在させず一致させてください)。

  • プールまたはドライバのプロパティを設定して高速接続フェイルオーバーを有効にします。

    たとえば、UCPでは、それはsetFastConnectionFailoverEnabled(true)を使用してPoolDataSourceに対して設定されます。

    UCPおよびJDBC 23ai以降の場合、これは、Oracle RACデータベースへの接続時にデフォルトで実行されます。

  • サード・パーティ・プールを使用している場合:

    • Javaベースのアプリケーション・サーバーの場合、ドレインとフェイルオーバーを実現する最も効果的な方法は、プールされたデータ・ソースのかわりにUCPを使用することです。

      この手法は、Oracle WebLogic Server、IBM WebSphere、IBM Liberty (XAおよび非XAの使用)、Apache Tomcat、Hikari CPなどの多くのアプリケーション・サーバーでサポートされています。

      アプリケーションでRed Hat JBossとともにJ2EEやコンテナ管理のトランザクション(CMT)が使用されている場合、リクエスト境界は、バージョンRed Hat JBoss EAP 7.4により提供されます。

      この構成では、FANによるドレイン(XAおよび非XAの使用)がサポートされています。

<dependencies>

...
<dependency>
  <groupId>com.oracle.database.ha</groupId>
  <artifactId>ons</artifactId>
  <version>${oracle.jdbc.version}</version>
</dependency>
<dependency>
  <groupId>com.oracle.database.ha</groupId>
  <artifactId>simplefan</artifactId>
  <version>${oracle.jdbc.version}</version>
</dependency>

...
</dependencies>

Oracle以外の接続プールまたはスタンドアロンJDBCアプリケーション

UCPを使用しておらずサードパーティの接続プールまたはスタンドアロンJDBCを使用しているクライアントの場合は、通常は次のことを実行する必要があります:

  • simplefanおよびons jarファイルをCLASSPATHまたはプロジェクトのpom.xmlに追加することで、FANイベントを処理するようにドライバを構成します。

  • 任意のOracle JDBCドレインAPI (isValid()isUsable()pingDatabase()endRequest())をコールし、軽量接続検証について次のJavaシステム・プロパティを設定します:

    -Doracle.jdbc.defaultConnectionValidation=SOCKET

OCIベースのアプリケーション

  • OCIベースのクライアントでは、ドライバ・レベルでFANが埋め込まれます。FAN通知を受信するためにプーリングは必要ありません。

  • データベース・サービスには、属性"-notification TRUE"を設定しておく必要があります。

  • oraaccess.xmlを使用している場合は、eventsタグがTRUEであることを確認します。

    <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>
     <events>true</events>
     </default_parameters>
    </oraaccess> 
  • oraaccess.xmlを使用していない場合の代替手段は、アプリケーション・コードを、OCI_EVENTSモードを使用するように変更することです。たとえば:

    sword errcode = OCIEnvCreate(&envhp, OCI_EVENTS, 0, 0, 0, 0, 0, 0);
    if (errcode)
  • Pythonの場合は、OCIの"thick"ドライバを使用し、"events"プロパティをtrueに設定して接続します。次に例を示します:

    conn = oracledb.connect(dsn="localhost:1521/DB23PDB1", user="my_user", password="my_pw", events=True)

ODP.NETのFANの要件

すべてのODP.NETプロバイダ・タイプ(コア、管理対象および管理対象外)で、FANがサポートされています。

ODP.NETのバンド外FANでは、接続プーリングおよびHAイベントを有効にする必要がありますが、それらはデフォルトです。これらの属性を変更しない場合、コードの変更は必要はありません。

次に、FAN対応のODP.NETの接続文字列の例を示します:

"user id=oracle; password=oracle; data source=HA; pooling=true; HA events=true;"

バンド内FANはデフォルトで有効になっています。

Real Application Clustersとグローバル・データ・サービスでODP.NETの高可用性の詳細を参照してください。

JBoss

可能な場合は、ONS FAN (推奨)を使用します。これは計画外停止にも対応しているためです。ONS FANに障害が発生した場合は、かわりにバンド内が使用されます。両方とも同時に機能できます。

テストの場合 – スタンドアロン/ドメイン構成XML内のデータソース定義を更新します

本番の場合 – JBoss管理コンソールまたはCLIコマンドを使用してDS定義を更新します

JBoss構成の設定

  • "一致時に検証"を使用して、チェックアウトのたびに接続を検証します
  • バックグラウンド検証を使用しないでください
  • "プールのパージの無効化またはプールの破棄の無効化"を構成しないでください

ドレイン構成について、Redhatのドキュメント(https://access.redhat.com/solutions/42463)を参照してください

また、接続の検証について、Redhatのドキュメント(https://docs.redhat.com/en/documentation/red_hat_jboss_enterprise_application_platform/7.4/html/configuration_guide/datasource_management#configure_database_connection_validation_settings)を参照してください

JDBCドライバ接続プロパティをさらに指定するには:

<connection-property name="URL">
    jdbc:oracle:thin:@CURRENT_URL?TNS_ADMIN=/absolute_path/ojdbc.properties
</connection-property>

/absolute_path/ojdbc.propertiesに、次の接続プロパティと値を含めます:

prop1=value1
prop2=value2
…

その他のプールとドライバ