アプリケーション・コンティニュイティ

Oracle Application Continuityを使用すると、データベース・セッションが切断され、リカバリ可能なエラーになった場合に、トランザクションおよび非トランザクション操作を、データベース・リクエストで自動的に非破壊的かつ迅速にリプレイできます。アプリケーション・コンティニュイティは、計画および計画外の関連エラーをマスクして、エンド・ユーザーの操作性を改善します。リカバリ可能なエラー時にデータベース操作を自動的にリプレイして、例外処理の複雑なロジックを必要とせずにアプリケーションを開発できます。

アプリケーション・コンティニュイティを使用しない場合、安全で信頼性の高い方法で停止をマスクすることは、ほぼできません。一般的には、次のような問題が発生します。

  • 入力したデータ、戻されたデータおよび変数がキャッシュされ、データベースの状態が失われたまま、クライアントの状態は現時点のままになります。

  • トランザクションのコミットを実行した場合、コミット・メッセージが永続でなくなります。また、紛失したリクエストをチェックしても、チェック後にコミットされないという保証はされません。

  • 非トランザクション・データベース・セッション状態は失われます。

  • リクエストが続行可能である場合は、データベースとクライアント・セッションを同期する必要があります。

アプリケーション・コンティニュイティは、共有インフラストラクチャと専用インフラストラクチャの両方のOracle Real Application Clusters (RAC)、Oracle RAC One Node、Oracle Active Data GuardおよびOracle Autonomous Databaseで使用可能な機能です。

Oracle Database 18cでは、アプリケーション・コンティニュイティにより、透過的セッションおよびトランザクション状態の追跡やデータベース・セッションの記録が改善され、リカバリ可能な停止後のリカバリができます。この拡張機能は透過的アプリケーション・コンティニュイティ(TAC)と呼ばれます。TACは、アプリケーションの知識やアプリケーション・コードの変更に依存せず、アプリケーションに対して有効にすることができます。ODP.NETアプリケーションの透過性とフェイルオーバーは、アプリケーションがユーザー・コールを発行するときのセッション状態の使用状況を取得して分類する状態追跡情報を使用することによって実現されます。

ODP.NETとアプリケーション・コンティニュイティ

ODP.NET管理対象外ドライバは、バージョン12.2で初めてアプリケーション・コンティニュイティをサポートしました。アプリケーション・コンティニュイティはOracle Database 12c Release 1 (12.1)て初めて導入されましたが、ODP.NETにはOracle Database 12cリリース2 (12.2)以上のサーバーが必要です。

ノート:

ODP.NET管理対象ドライバおよびODP.NET Coreでは、アプリケーション・コンティニュイティおよびTACをサポートしていません。

アプリケーション・コンティニュイティまたはTACを有効にすると、すべてのアプリケーションで実行される文が、ODP.NETによって間違いなく適切にログに記録されるため、リカバリ可能なエラー時にリプレイすることができます。これは、すべてのアプリケーションのSQLおよびPL/SQLにも、内部ODP.NET操作にも適用されます。

クライアント側では、ODP.NET接続文字列属性Application Continuity=trueを設定して、アプリケーション・コンティニュイティまたはTACを有効にします。

Application Continuitytrueに設定されていて、データベース・サーバーでアプリケーション・コンティニュイティまたはTACを有効にしていない場合でも、ODP.NETは新しい接続を作成します。ただし、これらの接続でApplication Continuityは有効になりません。