Todos los programas se cuelgan, fallos de Hardware, Software, fallos en programación, conectividades…. mil cosas. Hay ocasiones en que esos cuelgues, no solo afectan al programa sino también a la base de datos a la que atacan.
Un problema que hacia tiempo que no ocurría y que he visto varias veces en el último mes es el del bloqueo de un registro de la base de datos y que como la aplicación que lo provoca se queda en según plano en el ordenador, no llega a liberar el registro y hacer un rollback.
NINGUNA DE LAS ACCIONES QUE VOY A EXPLICAR TIENE SOPORTE POR PARTE DE GEINFOR. MUCHO OJO Y BAJO VUESTRA RESPONSABILIDAD
En el caso de DB2 hay dos consultas que es muy util tener a mano:
Esta nos muestra los bloqueos activos en el sistemas
SELECT * FROM
TABLE (MON_GET_APPL_LOCKWAIT(NULL, -2))
Esta otra nos muestras todas las conexiones contra la base de datos así como el nombre del ejecutable, la estación cliente, la IP, etc….
SELECT *
FROM TABLE(MON_GET_CONNECTION(NULL,-2))
Relacionando las dos por el APPLICATION_HANDLE nos dice exactamente al culpable que tenemos que buscar para que cierre el proceso
SELECT *
FROM TABLE(MON_GET_CONNECTION(NULL,-2))
WHERE APPLICATION_handle IN (SELECT HLD_APPLICATION_HANDLE FROM
TABLE (MON_GET_APPL_LOCKWAIT(NULL, -2)))
Espero que os sea útil, suscribiros para que os lleguen avisos de la próxima entrada y no dudéis en comentar o mandar un mensaje con cualquier consulta, aportación o inquietud que tengáis…
… y si algo sale mal… La Culpa de Sistemas 😉