miércoles, 11 de noviembre de 2015

Comprobar bloqueos exclusivos en Informix

Si una sesión no libera algún bloqueo en Informix puede que nuestra aplicación falle o se ralentice. Veamos cómo revisar los bloqueos que están dando problemas.

Primeramente habrá que comprobar la información de bloqueos, esto se hace con el comando onstat -k. Vamos a añadir a este comando |grep 'IX' para que nos muestre únicamente los bloqueos "Intent-exclusive".
onstat -k |grep 'IX'

Ahora lo que haremos será tomar el usuario propietario de los bloqueos de tipo IX para ver cual es la sesión que está bloqueando. Si lanzamos la sentencia anterior con grep no veremos cual es la columna owner. Es la tercera.

Utilizaremos entonces
onstat -u |grep el_usuario_owner

La sentencia anterior nos dará la sesión que es el dato que necesitamos para la sentencia siguiente. Como nos pasaba antes si lanzamos la sentencia con grep no veremos en la cabecera cuál es la columna de sesión, es la tercera, sessid.

Vamos a ver qué query se está lanzando en esta sesión, para ello utilizamos el id de sesión obtenido con el comando anterior.
onstat -g sql  id_de_sesion

Si viéramos que el bloqueo es muy prolongado debido a algún problema y quisiéramos matar esa sesión de Informix para liberarlo utilizaremos la siguiente sentencia con el id de la sesión que queremos terminar.
onmode -z  id_de_sesion

No hay comentarios:

Publicar un comentario