ONS FANのアプリケーション要件

ONS FANの使用時にセッションをドレインできるように、アプリケーション・サーバー、ドライバ・バージョンおよび接続プールが正しく構成されていることを確認してください。

Oracle UCP

接続プールのバージョン Oracleドライバのバージョン 推奨構成の設定 コメント

Oracle 23aiより前

Oracle 23aiより前

アプリケーション・サーバー/コンテナ/フレームワークのデータ・ソース構成ファイル内で、次のようにします:

UCPプロパティ"fastConnectionFailoverEnabled(true)"を設定します

JDBC JARファイルojdbcXXX.jarons.jarCLASSPATHに含めます

必要に応じて、オプションのウォレットJARを含めます: Oracle Cloud Autonomous Databaseの場合やデータベース接続用のウォレットを設定してある場合は、osdt_cert.jarosdt_core.jarおよびoraclepki.jarです。

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

ONS FANは、MAA推奨のTNS/URLを使用している場合は自動構成されます

23.5.0.24.7以降

23.5.0.24.7以降

デフォルト設定を使用します

JDBC JARファイルojdbcXXX.jarons.jarCLASSPATHに含めます

必要に応じて、オプションのウォレットJARを含めます: Oracle Cloud Autonomous Databaseの場合やデータベース接続用のウォレットを設定してある場合は、osdt_cert.jarosdt_core.jarおよびoraclepki.jarです。

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

ONS FANは、MAA推奨のTNS/URLを使用している場合は自動構成されます

JDBC

サードパーティ・プールで使用されているかカスタム・コードで直接使用されているJDBCに適用されます。

Oracleドライバのバージョン 推奨構成の設定 コメント
サポートされているすべてのドライバ・バージョン
  • サードパーティ・プールにより、チェックアウト時に接続を検証するプール・プロパティ(プールによって異なる。後述のHikariとTomcatの例を参照)、またはOracle JDBCドライバを直接コールするアプリケーションを追加する必要があります。

    • java.sql.Connection.isValid(int timeout)

    • oracle.jdbc.OracleConnection.pingDatabase()

    • oracle.jdbc.OracleConnection.pingDatabase(int timeout)

    • oracle.jdbc.OracleConnection.endRequest()

    APIのリスト: 計画済メンテナンス用の安全なドレイニングAPI

  • Oracle JDBCドライバをコールしないサードパーティ・プールまたはアプリケーション:

    SQLを、draining-hintとともに、またはDBA_CONNECTION_TESTS内で実行します

JDBC JARファイルojdbcXXX.jarons.jarsimplefan.jarCLASSPATHに含めます。

Oracle Cloud Autonomous Databaseでデータベース接続用のウォレットを設定してある場合は、ウォレットJAR (osdt_cert.jarosdt_core.jarおよびoraclepki.jar)を含めます

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

ONS FANは、MAA推奨のTNS/URLを使用している場合は自動構成されます

WebLogic

WebLogic Generic、WebLogic MDSおよびWebLogic AGLが含まれます。

アプリケーション・サーバーのバージョン Oracleドライバのバージョン 推奨構成の設定 コメント

14.1.1以降

サポートされているすべてのバージョン

JDBCドライバを、WebLogic AGLでサポートされている最新バージョンにアップグレードすることをお薦めします

最新ドライバに、または最小でもドライバ・バージョン19.13にアップグレードします

AGLデータソースでFANを有効にします

デフォルトでは、ドレインは、endRequestでの接続チェックイン時に発生可能です。

推奨される設定では、ドレインは、beginRequestでの接続チェックアウト時にも発生可能です。

Hikari

アプリケーション・サーバーのバージョン Oracleドライバのバージョン 推奨構成の設定 コメント

6.0より前

19.21以降

Hikari 6.0にアップグレードします

推奨構成ではありません

リクエスト境界なし - デフォルトではドレインなし

6.0

19.21以降

次のプロパティを使用した場合、ドレインはendRequestで発生します(次のプロパティによって有効化される):

  • System.setProperty("com.zaxxer.hikari.aliveBypassWindowMs", "-1")

次を使用して検証レベルを設定します:

  • setProperty("oracle.jdbc.defaultConnectionValidation", "SOCKET");

  • com.zaxxer.hikari.enableRequestBoundariestrueに設定されます

ONS/simplefanを使用した構成については、Oracle DatabaseとSpring BootでのHikariCPのベストプラクティスを参照してください

.NET

アプリケーション・サーバーのバージョン Oracleドライバのバージョン 推奨構成の設定

現在サポートされている任意のバージョン

ODP.NET Core - 現在サポートされている任意のバージョン

ODP.NETではデフォルトでオン

プーリングおよびHAイベントの接続文字列属性は、trueに設定されたままにする必要があります

.NET Framework

アプリケーション・サーバーのバージョン Oracleドライバのバージョン 推奨構成の設定

現在サポートされている任意のバージョン

管理対象ODP.NET - 現在サポートされている任意のバージョン

管理対象外ODP.NET - 現在サポートされている任意のバージョン

ODP.NETではデフォルトでオン

プーリングおよびHAイベントの接続文字列属性は、trueに設定されたままにする必要があります

JBOSS

アプリケーション・サーバーのバージョン Oracleドライバのバージョン 推奨構成の設定 コメント

EAP 7.3.9より前のバージョン

サポートされているすべてのドライバ・バージョン。最新バージョンをお薦めします

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

「特定のドライバとプールの場合のFANの構成」も参照してください

validation-SQLがない場合は、適切に構成されたネイティブ・プールにより、チェックアウトのたびに(接続の検証によって)ドレインされます

アプリケーションによってJDBCのendRequestがコールされている場合は、チェックイン時にもドレインされ、そうでない場合にはドレインされません。

詳細は、前述のJDBCドライバの要件を参照してください。

EAP 7.3.9より上のバージョン

サポートされているすべてのドライバ・バージョン。最新バージョンをお薦めします

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

「特定のドライバとプールの場合のFANの構成」も参照してください

validation-SQLがないと、適切に構成されたネイティブ・プールにより、チェックアウトのたびに(接続の検証によって)、また、チェックイン時に(JBOSSによるendRequestコールによって自動的に)ドレインされる場合があります。

詳細は、前述のJDBCドライバの要件を参照してください。

Tomcat

アプリケーション・サーバーのバージョン Oracleドライバのバージョン 推奨構成の設定 コメント

9.0, 10.0, 11.0

任意のバージョン

UCPとともにTomcatを使用している場合は、前述のUCPの推奨事項に従ってください。

Oracle JDBCドライバまたはOracle DBCPとともにTomcatを使用している場合:

  • 接続の流用時と返却時に任意のOracle JDBCドレインAPI (isValid()isUsable()pingDatabase()endRequest())をコールします。
  • 軽量接続検証プロパティをSOCKETに設定します:

    setProperty("oracle.jdbc.defaultConnectionValidation", "SOCKET");

これらの推奨される変更を加えた場合、ドレインは、接続のチェックアウト時とチェックイン時(endRequest)に発生します

9.0, 10.0, 11.0

任意のバージョン

Oracle JDBCドライバをコールしないサードパーティ・プールまたはアプリケーション:

  • 流用時と返却時に接続検証を有効にします

  • isValid()を使用するか、SQLを、draining-hintとともに、またはDBA_CONNECTION_TESTS内で実行します

これらの推奨される変更を加えた場合、ドレインは、接続チェックイン時(endRequestが使用されている場合)に発生します

長時間実行PL/SQL

アプリケーション・サーバーのバージョン 推奨構成の設定 コメント

Oracle Database 19以上

次のSQLを使用して、バッチ間のドレイン・ステータスをテストします。ドレイン状態が検出された場合は、その接続をクローズし、新しい接続を取得します。

  • ドレインが進行中のとき:

    SQL> select SYS_CONTEXT('USERENV', 'DRAIN_STATUS') from dual ;

    戻り値: DRAINING

  • ドレインされていないとき:

    SQL> select SYS_CONTEXT('USERENV', 'DRAIN_STATUS') from dual ;

    戻り値: NONE

デフォルトでは、ドレインされません。バッチ間隔で、推奨されているSQLを使用する必要があります。

これは、バッチ間隔がドレイン・タイムアウト間隔の1/2より小さい場合に機能します。

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

Pro*C/C++、Pro*COBOLおよびpython-oracledbのThickモードを含みます

アプリケーション・サーバーのバージョン Oracleドライバのバージョン 推奨構成の設定 コメント

Oracle Database 19以上

Oracle Database 19以上

OCIクライアントは、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> 

Pythonでは、"thick"ドライバを使用し、eventsプロパティをTRUEに設定して接続する必要があります