私のアプリは障害から自動的に回復します。私はそれを次のようにテストします:
- アプリを起動
- 処理の途中で、アプリケーションサーバーホストを強制終了します(shutdown -r -f)
- ホストの再起動時に、アプリケーションサーバーが再起動します(Windowsサービスとして)
- アプリケーションが再起動します
- アプリケーションは処理を試みますが、前のセッションからのOracleDBの不完全な2フェーズコミットトランザクションによってブロックされます。
- 10〜30分後、DBは前のtxnを解決し、処理は正常に続行されます。
これより速く処理を続けるために必要です。私のDBAは、ステートメントの前に接頭辞を付ける必要があるとアドバイスしています
ALTER SESSION ADVISE COMMIT;
しかし、彼はこれを行うことでデータが失われる可能性についての保証や詳細を私に与えることはできません。
幸いなことに、問題のステートメントはdatetime
値をSYSDATE
1秒ごとに更新するだけなので、データが破損した場合、上書きされるまで1秒未満続きます。
しかし、私の質問に。上記のステートメントは正確に何をしますか?Oracleを使用すると、データ同期の問題をどのように解決しますか?