日本語PDF

10 アプリケーション・コンティニュイティの保証

この章では、Oracle Databaseのアプリケーション・コンティニュイティ機能に関連する次の概念について説明します。

10.1 UCPを使用したアプリケーション・コンティニュイティの有効化の概要

Oracle Database 12cリリース1 (12.1)では、アプリケーション・コンティニュイティ機能を導入し、アプリケーションに依存しない汎用のインフラストラクチャを提供しています。アプリケーション・コンティニュイティを使用すると、修復、構成変更またはパッチ適用後のシステム、通信またはハードウェアに関連している可能性がある計画停止または計画外停止の発生後に、アプリケーションの面から作業のリカバリが可能になります。

アプリケーション・コンティニュイティを使用するには、最初にデータ・ソースを構成する必要があります。その後に、次の2つの機能のいずれかを使用して、Universal Connection Pool (UCP)を使用するアプリケーションでアプリケーション・コンティニュイティを実装します。

  • アプリケーション・コンティニュイティの接続ラベリングの使用

  • アプリケーション・コンティニュイティの接続初期化コールバックの使用

10.2 アプリケーション・コンティニュイティのデータソースの構成

プール対応のデータソースでアプリケーション・コンティニュイティ機能を使用にするには、アプリケーションでoracle.ucp.jdbc.PoolDataSourceインタフェースに対して次のコールを実行する必要があります。

// pds is a PoolDataSource
pds.setConnectionFactoryClassName("oracle.jdbc.replay.OracleDataSourceImpl");

SIDを使用するかわりに、常にサービスに接続します。SID構文で接続する場合、アプリケーション・コンティニュイティはサポートされません。

Oracle Real Application Clusters(Oracle RAC)またはData Guardに対して実行する場合、次のコード・スニペットに示されている高速接続フェイルオーバー(FCF)も有効にする必要があります。

pds.setFastConnectionFailoverEnabled(true);

10.3 アプリケーション・コンティニュイティの接続ラベリングの使用

接続ラベリングを使用すると、アプリケーションが接続に任意の名前/値のペアを付けることができます。アプリケーションは、必要なラベルが付いた接続を接続プールにリクエストできます。

接続ラベリングは、接続リクエストごとに初期状態を設定します。アプリケーションが接続ラベリングを使用したり、接続のラベル付けを利用する場合、フェイルオーバー時にクリーン接続を初期化するには、ラベリング・コールバックをアプリケーション・コンティニュイティ用に登録する必要があります。

アプリケーション・コンティニュイティが基礎となるデータソースから新しい接続を取得するたびに、ラベリング・コールバックが実行されます。コールバックは、通常の接続チェックアウト中およびリプレイ中に実行されます。そのため、実行時に作成される状態は、リプレイ時に確実に再作成されます。初期化は冪等にする必要があります。

コールバック呼出しの最後にトランザクションが完了(コミットまたはロールバック)するかぎり、コールバックでトランザクションを実行することは有効です。アプリケーション・コンティニュイティは、このようなトランザクションを含め、コールバック実装内にコーディングされたアクションを繰り返します。停止がUCPラベリング・コールバックの実行中に発生する場合、アプリケーション・コンティニュイティがリプレイ試行の一部として複数回コールバックを実行することがあります。また、コールバック・アクションを同等にすることが重要です。

10.4 アプリケーション・コンティニュイティの接続初期化コールバックの使用

変更できないため、アプリケーションで接続ラベリングを使用しない場合、このようなアプリケーションには接続初期化コールバックが提供されます。

登録されると、接続がプールから流用されるたびに、またリカバリ可能なエラー後に再接続が成功するたびに、初期化コールバックは実行されます。