ORA-25402: transaction must roll back, problema con el TAF

Otro dia realizando unas pruebas de TAF se ha visto que una caida del nodo podria provocar inconsistencias en la aplicacion.

La prueba es facil, basicamente es configurar un servicio de TAF, abrir una sesion mediante este servicio, insertar un registro y antes del commit provocar la caida de la red privada/interconnect y seguidamente ejecutar el commit.

Esta sesion se quedaria colgada durante un tiempo y dara el error ORA-25402: transaction must roll back, viendo este error da la sensacion de que la transaccion del insert no se ha validado la sorpresa es que desde otras sesiones consultant a la tabla SI se ve que se ha validado.

El problema es que este error podria provocar que una aplicacion realizando otra vez el insert asumiendo que se ha hecho rollback que es falso.

La prueba se ha realizado en 10.2.0.3 aunque parece que es reproducible en 10.2.0.4 (pendiente de confirmar)

Se puede descargar una prueba aqui Test ORA-25402

2 thoughts on “ORA-25402: transaction must roll back, problema con el TAF

  1. Samuel G. Cristobal

    LS buena web, mucho nivel.

    Si esta operando con el FAILOVER_MODE a select relanza las transacciones que estaban en proceso, claro la instancia
    que manejaba en un primer momento la transaccion se la pega pero la operacion del insert se realiza.
    La soluion para evitar el mal trago a la aplicacion podria pasar por revisar si se ha produccido un Failover a otro nodo.

    Reply
    1. lscheng Post author

      Hola

      La solucion es desde el codigo de la aplicacion capturar la excepcion (ORA-XXXXX) y tratarlo.

      El objetivo del post es indicar el error que da Oracle no es nada descriptivo, indica que tienes que hacer un rollback pero en la realidad es que ha hecho el commit

      Un saludo

      Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s