ORA-01591 bloqueo transacción distribuida

Es posible que una aplicación muestre en su log un error ORA-01591, que según la documentación oficial es debido a una trasacción de 2 fases que no puede completarse.

Este tipo de transacciones se usan, por ejemplo, cuando se hace un commit usando tablas obtenidas a partir de un dblink. Se verifica que se puede hacer un commit en remoto, otro en local y finalmente se hace en los 2 sitios de forma atómica.

Bueno pues cuando se pierde la conexión con un dblink durante una transacción, la transacción queda en un estado dudoso y si alguna otra sesión intenta modificar los objetos involucrados veremos el error ORA-01591.

Continue reading