sql >> Base de Datos >  >> RDS >> Oracle

Error de reversión de transacción de JDBC en conexión cerrada

No (salvo que se produzca un error grave en Oracle o que estemos hablando de una transacción distribuida).

Si se pierde una conexión entre el cliente y la base de datos, es posible que la base de datos nunca haya recibido la solicitud para confirmar la transacción. En ese caso, una vez que la base de datos descubra que el cliente está muerto (lo que puede llevar algún tiempo), la transacción se revertirá. Si se pierde la conexión, es posible que la base de datos se confirme con éxito, pero el cliente nunca recibe la notificación de que la confirmación fue exitosa.

Si estamos hablando de una transacción distribuida, es posible que la transacción permanezca en duda en uno (o más) de los nodos distribuidos. Si ese es el caso, la transacción aparecerá en dba_2pc_pending en los nodos donde la transacción aún está pendiente. Pero no se confirmaría parcialmente en ningún nodo.

Si tuviera que adivinar, si está viendo algo que está "parcialmente comprometido", apostaría a que el problema es que los límites de su transacción no son correctos y que tiene algún código en algún lugar que se está confirmando (implícita o explícitamente) donde no te lo esperas.