Oracle Database 12cリリース1 (12.1)では、アプリケーション・コンティニュイティ機能を導入し、汎用のアプリケーションに依存しないインフラストラクチャを提供しています。アプリケーション・コンティニュイティを使用すると、修復、構成変更またはパッチ適用後のシステム、通信またはハードウェアに関連している可能性がある計画停止または計画外停止の発生後に、アプリケーションの面から作業のリカバリが可能になります。
関連項目: アプリケーション・コンティニュイティの詳細は、『Oracle Database開発ガイド』を参照してください |
アプリケーション・コンティニュイティを使用するには、「データソースの構成」で説明されているように、まずデータソースを構成する必要があります。その後に、次の2つの機能のいずれかを使用して、Universal Connection Pool (UCP) for JDBCを使用するアプリケーションでアプリケーション・コンティニュイティを実装します。
プール対応のデータソースでアプリケーション・コンティニュイティ機能を使用にするには、アプリケーションでoracle.ucp.jdbc.PoolDataSource
インタフェースに対して次のコールを実行する必要があります。
// pds is a PoolDataSource pds.setConnectionFactoryClassName("oracle.jdbc.replay.OracleDataSourceImpl");
SIDを使用するかわりに、常にサービスに接続します。SID構文で接続する場合、アプリケーション・コンティニュイティはサポートされません。
関連項目: アプリケーション・コンティニュイティの詳細は、『Oracle Database開発ガイド』を参照してください |
Oracle Real Application Clusters(Oracle RAC)またはData Guardに対して実行する場合、次のコード・スニペットに示されている高速接続フェイルオーバー(FCF)も有効にする必要があります。
pds.setFastConnectionFailoverEnabled(true);
接続ラベリングを使用すると、アプリケーションが接続に任意の名前/値のペアを付けることができます。アプリケーションは、必要なラベルが付いた接続を接続プールにリクエストできます。
接続ラベリングは、接続リクエストごとに初期状態を設定します。アプリケーションが接続ラベリングを使用したり、接続のラベル付けを利用する場合、フェイルオーバー時にクリーン接続を初期化するには、ラベリング・コールバックをアプリケーション・コンティニュイティ用に登録する必要があります。
アプリケーション・コンティニュイティが基礎となるデータソースから新しい接続を取得するたびに、ラベリング・コールバックが実行されます。コールバックは、通常の接続チェックアウト中およびリプレイ中に実行されます。そのため、実行時に作成される状態は、リプレイ時に確実に再作成されます。初期化は冪等にする必要があります。
コールバック呼出しの最後にトランザクションが完了(コミットまたはロールバック)するかぎり、コールバックでトランザクションを実行することは有効です。アプリケーション・コンティニュイティは、このようなトランザクションを含め、コールバック実装内にコーディングされたアクションを繰り返します。停止がUCPラベリング・コールバックの実行中に発生する場合、アプリケーション・コンティニュイティがリプレイ試行の一部として複数回コールバックを実行することがあります。また、コールバック・アクションを同等にすることが重要です。
変更できないため、アプリケーションで接続ラベリングを使用しない場合、このようなアプリケーションには接続初期化コールバックが提供されます。
登録されると、接続がプールから流用されるたびに、またリカバリ可能なエラー後に再接続が成功するたびに、初期化コールバックは実行されます。接続初期化コールバックの使用の詳細は、「接続初期化コールバック」を参照してください。