sql >> データベース >  >> RDS >> Oracle

閉じた接続でのJDBCトランザクションのロールバックの失敗

    いいえ(Oracleの重大なバグを除いて、または分散トランザクションについて話している場合を除きます)。

    クライアントとデータベース間の接続が失われた場合、データベースがトランザクションをコミットする要求を受信しなかった可能性があります。その場合、データベースがクライアントが停止していることを検出すると(時間がかかる場合があります)、トランザクションはロールバックされます。接続が失われた場合、データベースは正常にコミットされる可能性がありますが、クライアントはコミットが成功したという通知を受け取ることはありません。

    分散トランザクションについて話している場合、1つ(または複数)の分散ノードでトランザクションが疑わしいままである可​​能性があります。その場合、トランザクションは<に表示されます。 code> dba_2pc_pending トランザクションがまだ保留中のノード。ただし、どのノードでも部分的にコミットされることはありません。

    推測しなければならない場合、「部分的にコミットされた」ものが表示されている場合、問題はトランザクションの境界が正しくないことと、コミットしているコードがどこかにあることです(暗黙的または明示的に)あなたがそれを期待しないところ。



    1. パッケージオラクル内のすべての手順のリストを取得する方法

    2. パフォーマンスの驚きと仮定:STRING_SPLIT()

    3. Entity Framework+MySQLクラスの生成

    4. SQLクエリからElasticSearchクエリへの自動変換