特定のドライバとプールの場合のFANの構成
様々なデータベース・クライアント・ドライバでのFANの構成についての固有の要件と推奨事項。
JDBC FANの要件
Oracle Universal Connection Pool (UCP)
-
ONSの自動構成の場合は、推奨される接続URL/文字列を使用します。
-
JDBC JARファイル
ojdbcXXX.jar、ons.jarおよびsimplefan.jarをCLASSPATHに含めます。必要に応じて、オプションのウォレット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
…
その他のプールとドライバ
- Hikari接続プールについては、Oracle DatabaseとSpring BootでのHikariCPのベスト・プラクティスを参照してください。