Informix - No actualiza la tabla

 
Vista:

No actualiza la tabla

Publicado por Jose Victor (6 intervenciones) el 21/10/2004 14:27:24
Hola saludos,

Se me presento el siguiente problema tengo una tabla con 45000 registros la cual deseo actualizarle un campo desde el dbaccess "update nom_tabla set nom_campo = valor" despues de 1 hora aprox. termina diciendo que no puede actualizar por bloqueo de la tabla, advierto que lo hago sin ningun usuario accesando la tabla.
Por favor les agradezco si me pueden sugerir algo u una documentacion o sitio para buscar informacion al respecto.

Muchas 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:No actualiza la tabla

Publicado por eli (68 intervenciones) el 21/10/2004 15:25:47
que error te da?, es por bloqueo o por candados?, la otra es que pruebes de manera esclusiva la tabla y la actualizes asi te aseguras que solo tu las puedes usar
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:No actualiza la tabla

Publicado por Jose victor (6 intervenciones) el 21/10/2004 18:35:16
Saludos,

Primero muchas gracias por la respuesta.
en cuanto a tus preguntas la transaccion aborta por candados y la tabla solo yo estaba accesandola. en cuanto a la sintaxis exacta del mensaje no la tengo pues no la copie pero traduciendo decia que no podia actualizar una fila por lock. el motor esta configurado con 15000 candados.
Te agradezco cualquier ayuda pues estoy novato en esto y cuento con poca documentacion.

Jose Victor
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:No actualiza la tabla

Publicado por Luis Octavio Rivaldo Blanquice (126 intervenciones) el 21/10/2004 19:46:03
1. Una de La forma mas facil de hacerlo es llevar todo el registro de la tabla a un excel y hacer los cambios, siempre y cuando tengas menos de 64000 registros o filas y no mas de 20 columnas (Para que no sea tan tedioso).
Sacas copia del esquema o estructura de la tabla, borras , crea nuevamente la tabla y subes los datos con load .
2. Si lo quieres hacer desde el informix como tienes pocos candados deberias cambiar el modo de tu base de datos de U=unbufered que maneja transacciones y log a N=No buffered que te permite hacer todo mas rápido y facil por que no maneja transacciones y tampoco maneja log. Esto solo puedes hacerlo sin que los usuarios esten trabajando online.
3. El paso 1 con la diferencia de hacerlo todo usando un shell que te permita cambiar el valor de la tabla usando comandos o scripts de shell unix o windows.
4. Otra forma seria segmentar el update haciendolo por rangos de fechas o consecutivos , para que los candados o log de transacciones no se llenen del todo.

Escoge cualquiiera que te debe servir.
Seguramente hay otras mas opciones :...
Suerte y saludos

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:No actualiza la tabla

Publicado por eli (68 intervenciones) el 22/10/2004 16:03:53
supongo que tienes version menor de 9.40 , en la version 9.40 ya no sufres por candados.
la manera mas facil de hacerlos es modificar los candados , lo puedes hacer mediante el onmonitor o desde el onconfig.
siempre y cuando tu seas el administrador ( si no es asi dile a tu administrador que por favor aumente los candados para que no truene)
mira yo lo tengo configurado asi, y eso que tengo verion 9.40 y tiene la bonda de que si se me acaban me da otros 500000
# Shared Memory Parameters
LOCKS 500000 # Maximum number of locks
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:No actualiza la tabla

Publicado por Ramiro Dubón (10 intervenciones) el 11/02/2005 02:26:06
Muchas veces, al ejecutar programas, se quedan tablas bloqueadas. Algo muy practico que puedes hacer, es poner el estado de la BD de online a quiscent mode. Con esto, liberaras cualquier tabla que haya quedado bloqueda y ademas liberaras cualquier proceso que se haya quedado colgado. Luego vuelves a poner la BD en mode online y LISTO.
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:No actualiza la tabla

Publicado por Arturo (2 intervenciones) el 11/02/2005 12:17:50
La solución más sencilla puede ser abrir una transacción y después bloquear la tabla en modo exclusivo. De esta manera utilizas únicamente un 'candado'.
La sintaxis sería :

begin work;
lock table <nom-tabla> in exclusive mode;
update <nom-tabla> set <nom-campo> = <valor>

Suerte.

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