DBMS_APP_CONT
パッケージは、使用できなくなったセッションの実行中のトランザクションがコミットされたかどうか、およびそのセッションに対する最後のコールが完了したかどうかを判断できるインタフェースを提供します。
関連項目: アプリケーション・コンティニュイティとトランザクション・ガードの説明およびこれら2つの機能の関連性については、『Oracle Database開発ガイド』を参照してください。
|
この章では、次の項目について説明します。
概要
セキュリティ・モデル
問題の詳細
停止後にアプリケーションをリカバリする際の根本的問題の1つが、クライアントに返送されたコミット・メッセージに継続性がないことです。クライアントとサーバー間に間隔がある場合、クライアントには通信の失敗というエラー・メッセージが示されます。このエラーでは次のことがアプリケーションに知らされません。すなわち、送信によってコミット操作が実行されたかどうか、もしくは、プロシージャ・コールが予定されたすべてのコミットおよびセッション状態変更を行って完了まで実行されたか、一部の動作は失敗したか、またはクライアントから切断したまま現在も実行中というさらに悪い状態になっているかということです。
GET_LTXID_OUTCOME
GET_LTXID_OUTCOMEプロシージャの目的は、使用できなくなったセッションの実行中のトランザクションが完了したかどうかを判断することです。元のセッションが使用できなくなったためにエラーが戻されるときに使用されます。セッションが使用できなくなる理由として、セッション、インスタンス、サーバー、ネットワークの障害や、計画済停止または計画外停止があげられます。このような停止が発生すると、アプリケーションは切断エラーを受信します。しかし、このエラーでは、トランザクションがコミットされたかどうかを示す情報が提供されません。また、アプリケーションの復旧後に、どんなコミット結果が期待されているかも示されていません。
関連項目: 論理トランザクションIDについては、『Oracle Database概要』を参照してください。 |
表21-1 DBMS_APP_CONTパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
|
セッションが使用できなくなったときに、カスタマ・アプリケーションとサード・パーティ・アプリケーションで最後のセッションのトランザクション・ステータスを確認できるようにします。 |
このプロシージャは、セッションが使用できなくなったときに、カスタマ・アプリケーションとサード・パーティ・アプリケーションで最後のセッションのトランザクション・ステータスを確認できるようにします。
構文
DBMS_APP_CONT.GET_LTXID_OUTCOME ( client_ltxid IN RAW, committed OUT BOOLEAN, user_call_completed OUT BOOLEAN)
パラメータ
表21-2 GET_LTXID_OUTCOMEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
クライアント側の論理トランザクションID。前回失敗したセッションから |
|
指定した論理 |
|
すべての情報がクライアントに戻されたかどうか。このようなメッセージの例として、自動コミットまたはコミットを正常に使用できたときに処理された行数、PL/SQLコール時のパラメータとファンクションの結果、または |
例外
表21-3 GET_LTXID_OUTCOMEプロシージャのパラメータ
例外 | 説明 |
---|---|
|
サーバーの情報が最新であるため、トランザクションは古くてすでにコミットされたものです。アプリケーションから渡された |
|
クライアントの情報がサーバーよりも最新です。これは、サーバーがフラッシュバックされた場合やメディア・リカバリを使用してリカバリされた場合、またはデータ損失を伴いながらも早期にオープンされたスタンバイである場合に発生することがあります。 |
|
|
|
同じユーザー名を持ち、 |
|
結果を確認できません。処理中にエラーが発生しました。エラー・スタックにエラーの詳細が示されています。 |