私は小さなトランザクションがたくさんあります。 Oracle RACでXA JDBCドライバを使用して順番に実行します。彼らが私が彼らと呼ぶのと同じ順序でコミットされているという保証はありますか?Oracle RACでトランザクションがコミットされた注文を保証されていますか?
更新: すべてが単一のデータベースセッションで発生しています。
私は小さなトランザクションがたくさんあります。 Oracle RACでXA JDBCドライバを使用して順番に実行します。彼らが私が彼らと呼ぶのと同じ順序でコミットされているという保証はありますか?Oracle RACでトランザクションがコミットされた注文を保証されていますか?
更新: すべてが単一のデータベースセッションで発生しています。
はい、そうです。
RAC環境または非RAC環境では、コミットが正常に実行されると、データベースの変更がディスク(REDOログ)に記録されていることが保証されていることを意味します。ログ・ライターがREDOログに書き込むと、RAC内のすべてのインスタンスでグローバルなSCN(システム変更番号)が増分されます。十分な特権を持っている場合は、select current_scn from v$database;
を照会することによって、データベースの現在のSCNを見ることができます。
commitのデフォルト以外のオプションがいくつかあります。ここでは、REDOログの書き込みが完了して成功するまで待つ必要はありません。これらを使用すると、複数のトランザクションを同じSCN内でバッチ処理できる可能性があります。これは、バッチに対して発行される前にSCNを取得するために別のインスタンスでコミットすることを許可します。それらのオプションを避けて、あなたは大丈夫でしょう。
1つのデータベースセッションで多数のトランザクションが発生していますか?同時に複数のセッションを実行していますか? 「私が彼らと呼ぶ秩序」とは何ですか?我々が複数のセッションについて話しているなら、あなたは非常に具体的でなければなりません。コードがコミットを発行したアプリケーションサーバーのタイムスタンプに基づいて注文することは、Oracle側で何かを測定することとは非常に異なることになります。 –
すべてが単一のデータベースセッションで発生しています。 –
本当の疑問は、トランザクションの順序がどうして正確なのですか?なぜそれが重要だと思いますか? –