3.6 アプリケーション・コンティニュイティ
Oracle Application Continuityを使用すると、データベース・セッションが切断され、リカバリ可能なエラーになった場合に、トランザクションおよび非トランザクション操作を、データベース・リクエストで自動的に非破壊的かつ迅速にリプレイできます。アプリケーション・コンティニュイティは、計画および計画外の関連エラーをマスクして、エンド・ユーザーの操作性を改善します。リカバリ可能なエラー時にデータベース操作を自動的にリプレイして、例外処理の複雑なロジックを必要とせずにアプリケーションを開発できます。
アプリケーション・コンティニュイティを使用しない場合、安全で信頼性の高い方法で停止をマスクすることは、ほぼできません。一般的には、次のような問題が発生します。
-
入力したデータ、戻されたデータおよび変数がキャッシュされ、データベースの状態が失われたまま、クライアントの状態は現時点のままになります。
-
トランザクションのコミットを実行した場合、コミット・メッセージが永続でなくなります。また、紛失したリクエストをチェックしても、チェック後にコミットされないという保証はされません。
-
非トランザクション・データベース・セッション状態は失われます。
-
リクエストが続行可能である場合は、データベースとクライアント・セッションを同期する必要があります。
アプリケーション・コンティニュイティは、Real Application ClustersまたはActive Data Guardのオプション・ライセンスがあるOracle Database Enterprise Editionで使用できます。
3.6.1 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によって間違いなく適切にログに記録されるため、リカバリ可能なエラー時にリプレイすることができます。これは、すべてのアプリケーションのSQLおよびPL/SQLにも、内部ODP.NET操作にも適用されます。
クライアント側では、ODP.NET接続文字列属性Application Continuity=true
を設定して、アプリケーション・コンティニュイティを有効にします。
Application Continuity
がtrue
に設定されていて、データベース・サーバーでApplication Continuity
を有効にしていない場合でも、ODP.NETは新しい接続を作成します。ただし、これらの接続でApplication Continuity
は有効になりません。