Oracle - Transacción Distribuida

 
Vista:

Transacción Distribuida

Publicado por César Galiano (2 intervenciones) el 21/03/2007 13:05:22
Estimados,
Desde un programa en mi PC ejecuto un comando UPDATE a una tabla que se encuentra en un servidor Remoto, ejemplo:

UPDATE tabla_remota@dblink
SET columna1 = valor1, columna2 = valor2, columna3 = valor3
WHERE calumna = variable;

Pero mientras se está procesando el UPDATE, se cae la conexión de red y el programa se cierra.

El problema es que el comando UPDATE me bloquea el registro en la tabla_remota haciendo inaccesible el registro para otras transacciones.

En un intento de eliminar el bloqueo, bajo la sesión con el comando KILL SESSION, pero Oracle tarda mas de una hora en liberar la tabla (la sesión queda marcada como KILLED).

Existe alguna manera de desbloquear la tabla sin usar el comando KILL SESSION?

Atte.
César.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Transacción Distribuida

Publicado por Andres (2 intervenciones) el 26/03/2007 23:56:46
Saludos,

La puedes cancelar de la siguiente manera conectando como sys en la BD donde se genera la TX distribuida.

conn /as sysdba
SELECT local_tran_id FROM dba_2pc_pending;
--Esta te entrega el id

rollback force '&id';
execute sys.dbms_transaction.purge_lost_db_entry('&id');
commit;
exit
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar