Jump to content


Photo

Problema con bloqueo de Transacción Activa


  • Please log in to reply
5 replies to this topic

#1 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 posts
  • LocationMéxico

Posted 27 January 2011 - 12:33 PM

Uso Firebird 1.5, Buen dia compañeros, este problema que tengo se me presenta muy a lo largo, pero cuando me pasa me pone en aprietos, lo que pasa es que en ocasiones se bloquea un registro de una tabla al modificarla, pero si durante este proceso de guardado se bloquea la computadora, me deja el registro "Bloqueado", por lo que nadie puede usar el sistema hasta que reinicie ( ShotDown ) el servidor Firebird , el error que me sale si intento modificar el registro bloqueado en el ibexpert es el siguiente:


delphi
  1. Error Message:
  2. ----------------------------------------
  3. Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
  4. lock conflict on no wait transaction.
  5. deadlock.
  6. update conflicts with concurrent update.



Alguien sabe como poder "MATAR Ó QUITAR" la transacción que quedo bolando ?? , SIN necesidad de reiniciar el firebird para no sacar a todo el mundo de los sistemas.


  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 27 January 2011 - 12:41 PM

This happens when your transaction tries to update or delete a record that some other transaction updated or deleted. This is a normal event in database world and your application should be ready to deal with it.

This 'problem' is quite easy to reproduce, so you can play with it. Just open two isql sessions, run the same update query and then try to commit both transactions.

Please note that this problem is not always easy to debug, as there might be stored procedures or triggers involved that run the update on some table at certain time. If you find such hard to catch problem, adding some logging of queries via external tables (which are outside transaction control) might help.

If you designed your system in such way that deadlocks happen ofter, consider using NO WAIT transactions, so that you get the error instantly instead of waiting for deadlock timeout.

If you perceive deadlock as a problem you cannot solve, look into selecting a different isolation modes for transactions in your application.


Fuente
  • 0

#3 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 posts
  • LocationMéxico

Posted 27 January 2011 - 12:45 PM

Muy Interezante :), voy a ver donde puedo configurar el "waiting for deadlock timeout" suena bien ....
  • 0

#4 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1092 posts
  • LocationMurcia, España

Posted 15 February 2011 - 04:07 AM

Matar conexiones caidas es un problema, normalmente se quedan activas hasta que reinicias FireBird, pero eso corta todos los procesos actuales y cabrea a los usuarios, claro!

Solo conozco una manera de eliminar esas conexiones y transacciones caidas sin apagar FireBird, y es usanodo FBScanner, aunque nunca lo he usado, en sus caracteristicas dice que puedes ver y cerrar conexiones zombies, transacciones olvidades, etc.

http://www.slideshar...s-with-firebird
  • 0

#5 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1484 posts
  • LocationMallorca

Posted 15 February 2011 - 07:51 AM

A partir de Firebird 2.1 (tendrías que actualizarte), puedes matar consultas o transacciones que estén colgadas, eliminándolas de las tablas de monitorización.

http://www.firebirdfaq.org/faq192/
  • 0

#6 agag4

agag4

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 posts
  • LocationMéxico

Posted 15 February 2011 - 09:28 AM

Muchas gracias por su valiosa información, voy a tomarla muy en cuenta....
  • 0




IP.Board spam blocked by CleanTalk.