Informix - sentencia SQL atascada de una sesión informix

 
Vista:

sentencia SQL atascada de una sesión informix

Publicado por Ulises (5 intervenciones) el 03/03/2009 17:14:41
Hola quisiera saber si me podrian ayudar a saber cuales son los pasos a seguir para conocer la sentencia SQL de una sesión informix en una instancia atascada.

se como hacerlo en version 9 pero de 10 para arriba ya no es lo mismo por ejemplo estos son los pasos para version 9:

1. obtener los threads de los procesos que actualmente se estan ejecutando en la tabla
con onstat -g act.

2. de aquellos threads ubicamos los que son clase 1CPU que son las sentencias SQL
y obtenemos el numero identificador de thread (tid) por ejemplo:

Running threads:
tid tcb rstcb prty status vp-class name
2505 7000000e34cd9c0 7000000e0f6d880 2 running 1cpu sqlexec <------ SQL

3. Inmediatamente ejecutamos el comando onstat –u y nos despliega las sesiones de usuario dentro de la instancia:

4. usando como dato la llave el dato rsbct (7000000e0f6d880) del tid 2505 buscamos la columna “Userthreads Address” el mismo número identificador para obtener al usuario informix así como el número de sesión donde se tiene la sentencia SQL, por ejemplo:

Userthreads
address flags sessid user tty wait tout locks nreads nwrites
7000000e0f6d880 ---PR-- 2211 E206655A - 0 0 2 160594 3400

5. Con esos datos, podemos conocer la sentencia SQL que esta ejecutándose usando el comando onstat –g sql e indicando el
número de la sesión:

onstat -g sql 2211


Sess SQL Current Iso Lock SQL ISAM F.E.
Id Stmt type Database Lvl Mode ERR ERR Vers Explain
2211 SELECT safre_af NL Not Wait 0 0 9.03 Off

Current statement name : _ifxc000000000001p

Current SQL statement :
select * from int_detlot_tras where nss in ( select nss from
int_det_lote_err where fecha_sello ='05052008' )
Last parsed SQL statement :
select * from int_detlot_tras where nss in ( select nss from
int_det_lote_err where fecha_sello ='05052008' )

La salida de este comando también nos especifica el nivel de “isolation”, el modo de bloqueo con el cual esta trabajando la
sentencia SQL así como el nombre de la base de datos donde se esta ejecutando.

6. Finalmente, con el “user informix” obtenido en el paso 5, se puede ubicar al usuario y validar con él la continuidad o cancelación de la ejecución de la sentencia. Posteriormente se debe de revisar el plan de acceso y el costo de la sentencia para en su caso ser optimizado.

ojala y me puedan ayudar.....

Gracias.
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:sentencia SQL atascada de una sesión informix

Publicado por david molina - DBA as caifanex (10 intervenciones) el 17/06/2009 20:48:41
Hola.

No entiendo si es una pregunta, pero asi de similar se hace en la 10 IDS.

le das onstat -u, buscas la sessid y luego onstat -g sql sessid, listo.

si quieres ver si a hay un error de sql le das: onstat -g sql y si tienes errores utilizas finderr #error.

si le das un grep al login de usuario y te sale varios procesos, entonces para ver el sql de este usuario debe ser el prcoceso q tenga mas nreads y nwrites.

Espero te sirva
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

RE:sentencia SQL atascada de una sesión informix

Publicado por Ulises (5 intervenciones) el 05/03/2010 18:48:18
no lo ke kiero saber es como hacerle a nivel SO cuando ya esta blokeada la instancia..
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