Error recurrente al cargar comisiones

Ya hace tiempo que tenemos problemas cada vez que vamos a cargar comisiones. Aleatoriamente, y aún cuando haya sólo un usuario realizando la operación.
al confirmar la creación de una comisión nos da el error de que los datos han sido modificados por otro usuario desde que se recuperaron de la base.
Creo haber puesto el lock a nivel de filas ya varias veces en la tabla sga_comisiones pero no soluciona el inconveniente.

Alguna sugerencia?

gracias!

Hola Laura, podrías adjuntar la salida de:

 oncheck -pt base_de_datos:sga_comisiones
oncheck -pt base_de_datos:log_comisiones

Hola Damián,

Te envío las salidas:

sga_comsiones

Physical Address 260fe8
Creation date 09/07/2012 10:40:37
TBLspace Flags 901 Page Locking
TBLspace contains VARCHARS
TBLspace use 4 bit bit-map
Maximum row size 128
Number of special columns 12
Number of keys 0
Number of extents 1
Current serial value 744
First extent size 44
Next extent size 4
Number of pages allocated 44
Number of pages used 10
Number of data pages 9
Number of rows 494
Partition partnum 2104805
Partition lockid 2104805

Extents
Logical Page Physical Page Size
0 218888 44

          Index  737_3765 fragment in DBspace guaranidbs

Physical Address 260fe9
Creation date 09/07/2012 10:40:37
TBLspace Flags 801 Page Locking
TBLspace use 4 bit bit-map
Maximum row size 128
Number of special columns 0
Number of keys 1
Number of extents 1
Current serial value 1
First extent size 4
Next extent size 4
Number of pages allocated 8
Number of pages used 5
Number of data pages 0
Number of rows 0
Partition partnum 2104806
Partition lockid 2104805

Extents
Logical Page Physical Page Size
0 2188b4 8

          Index  737_4485 fragment in DBspace guaranidbs

Physical Address 26d5a2
Creation date 09/07/2012 10:43:13
TBLspace Flags 801 Page Locking
TBLspace use 4 bit bit-map
Maximum row size 128
Number of special columns 0
Number of keys 1
Number of extents 1
Current serial value 1
First extent size 5
Next extent size 4
Number of pages allocated 5
Number of pages used 3
Number of data pages 0
Number of rows 0
Partition partnum 2105195
Partition lockid 2104805

Extents
Logical Page Physical Page Size
0 21f2dd 5

          Index  737_4486 fragment in DBspace guaranidbs

Physical Address 26d5a3
Creation date 09/07/2012 10:43:13
TBLspace Flags 801 Page Locking
TBLspace use 4 bit bit-map
Maximum row size 128
Number of special columns 0
Number of keys 1
Number of extents 1
Current serial value 1
First extent size 5
Next extent size 4
Number of pages allocated 5
Number of pages used 3
Number of data pages 0
Number of rows 0
Partition partnum 2105196
Partition lockid 2104805

Extents
Logical Page Physical Page Size
0 21f2e2 5

          Index  737_4487 fragment in DBspace guaranidbs

Physical Address 26d5a4
Creation date 09/07/2012 10:43:13
TBLspace Flags 801 Page Locking
TBLspace use 4 bit bit-map
Maximum row size 128
Number of special columns 0
Number of keys 1
Number of extents 1
Current serial value 1
First extent size 10
Next extent size 4
Number of pages allocated 10
Number of pages used 5
Number of data pages 0
Number of rows 0
Partition partnum 2105197
Partition lockid 2104805

Extents
Logical Page Physical Page Size
0 21f2e7 10

          Index  737_4488 fragment in DBspace guaranidbs

Physical Address 26d5a5
Creation date 09/07/2012 10:43:13
TBLspace Flags 801 Page Locking
TBLspace use 4 bit bit-map
Maximum row size 128
Number of special columns 0
Number of keys 1
Number of extents 1
Current serial value 1
First extent size 4
Next extent size 4
Number of pages allocated 4
Number of pages used 3
Number of data pages 0
Number of rows 0
Partition partnum 2105198
Partition lockid 2104805

Extents
Logical Page Physical Page Size
0 21f2f1 4

          Index  737_4489 fragment in DBspace guaranidbs

Physical Address 26d5a6
Creation date 09/07/2012 10:43:13
TBLspace Flags 801 Page Locking
TBLspace use 4 bit bit-map
Maximum row size 128
Number of special columns 0
Number of keys 1
Number of extents 1
Current serial value 1
First extent size 5
Next extent size 4
Number of pages allocated 5
Number of pages used 3
Number of data pages 0
Number of rows 0
Partition partnum 2105199
Partition lockid 2104805

Extents
Logical Page Physical Page Size
0 21f2f5 5

          Index  737_4490 fragment in DBspace guaranidbs

Physical Address 26d5a7
Creation date 09/07/2012 10:43:13
TBLspace Flags 801 Page Locking
TBLspace use 4 bit bit-map
Maximum row size 128
Number of special columns 0
Number of keys 1
Number of extents 1
Current serial value 1
First extent size 5
Next extent size 4
Number of pages allocated 5
Number of pages used 3
Number of data pages 0
Number of rows 0
Partition partnum 2105200
Partition lockid 2104805

Extents
Logical Page Physical Page Size
0 21f2fa 5

          Index  737_4491 fragment in DBspace guaranidbs

Physical Address 26d5a8
Creation date 09/07/2012 10:43:13
TBLspace Flags 801 Page Locking
TBLspace use 4 bit bit-map
Maximum row size 128
Number of special columns 0
Number of keys 1
Number of extents 1
Current serial value 1
First extent size 9
Next extent size 4
Number of pages allocated 9
Number of pages used 3
Number of data pages 0
Number of rows 0
Partition partnum 2105201
Partition lockid 2104805

Extents
Logical Page Physical Page Size
0 21f2ff 9

          Index  737_4492 fragment in DBspace guaranidbs

Physical Address 26d5a9
Creation date 09/07/2012 10:43:13
TBLspace Flags 801 Page Locking
TBLspace use 4 bit bit-map
Maximum row size 128
Number of special columns 0
Number of keys 1
Number of extents 1
Current serial value 1
First extent size 7
Next extent size 4
Number of pages allocated 7
Number of pages used 3
Number of data pages 0
Number of rows 0
Partition partnum 2105202
Partition lockid 2104805

Extents
Logical Page Physical Page Size
0 21f308 7

log_comisiones:

TBLspace Report for guarani_test:dba.log_comisiones

Physical Address               260fea
Creation date                  09/07/2012 10:40:38
TBLspace Flags                 901        Page Locking
                                          TBLspace contains VARCHARS
                                          TBLspace use 4 bit bit-maps
Maximum row size               150
Number of special columns      13
Number of keys                 0
Number of extents              1
Current serial value           3236
First extent size              104
Next extent size               10
Number of pages allocated      104
Number of pages used           63
Number of data pages           62
Number of rows                 2652
Partition partnum              2104807
Partition lockid               2104807

Extents
     Logical Page  Physical Page        Size
                0         2188bc         104

              Index  738_3778 fragment in DBspace guaranidbs

Physical Address               260feb
Creation date                  09/07/2012 10:40:38
TBLspace Flags                 801        Page Locking
                                          TBLspace use 4 bit bit-maps
Maximum row size               150
Number of special columns      0
Number of keys                 1
Number of extents              1
Current serial value           1
First extent size              9
Next extent size               4
Number of pages allocated      13
Number of pages used           11
Number of data pages           0
Number of rows                 0
Partition partnum              2104808
Partition lockid               2104807

Extents
     Logical Page  Physical Page        Size
                0         218924          13

Gracias!!

Damián,

Buenos días…tenés alguna novedad sobre este tema? tenemos que cargar 50 comisiones y se nos está haciendo casi imposible…

Gracias!!!

Hola Laura, la tabla parece estar bien.

Con respecto a esto, fijate la salida de:

dbschema -t sga_comisiones -d nombre_de_base

Hola Laura, en que version de Guarani estas?
Recuerdo ese problema pero creo que se habia arreglado. Se ha dado en los casos donde desde el sistema se cambia algun dato en una tabla y este ya fue actualizado por trigger desde la misma transaccion antes por otro registro de otra tabla.

Un poco enredada mi respuesta pero tratare de explicarlo:

  • Tabla A actualiza por trigger la tabla B
  1. El usuario hace cambios en la tabla A y en la Tabla B
  2. Se abre transacción
  3. Se graban los cambios en la tabla A, con lo cual por trigger se actualizan los datos en la Tabla B
  4. A continuación se graban los cambios en la tabla B. En este caso es donde se detecta que los datos en la base no son como los que se recuperaron originalmente, ya que fueron modificados por el trigger de la tabla A.
    En este caso es donde puede dar un error -3.
    Es decir que no es que otro usuario metio cambios en el medio sobre esos registros de la tabla B sino que fue el mismo usuario.
  5. Se cierra la transaccion haciendo rollback.

¿Podes detallar que datos estas cargando en las comisiones cuando te da este error?

Ademas de la versión de guarani y la version del motor informix (ya que habia alguna sversiones que este caso no lo detectaba y otras versiones de informix que si era estricto en el checkeo de este caso en particular)

Hola,

Vuelvo sobre este tema ya que me vuelve a ocurrir y recordé que había cargado este post.

El error surge ahora en la operación de distribución de comisiones y no me deja realizar ningún cambio… en la operación de creación de comisiones el error es aleatorio.

La versión del Guarani es la 2.6.3 y la del informix es la 9.21

Envio el dbschema de sga_comisiones y sga_insc_cursadas que me imagino es la que está involucrada en distribución de comisiones

DBSCHEMA Schema Utility INFORMIX-SQL Version 9.21.TC4
Copyright (C) Informix Software, Inc., 1984-1997
Software Serial Number AAD#J113467
{ TABLE “dba”.sga_comisiones row size = 128 number of columns = 18 index size =
244
}
create table “dba”.sga_comisiones
(
comision serial not null ,
sede varchar(5) not null ,
unidad_academica varchar(5) not null ,
materia varchar(5) not null ,
anio_academico integer not null ,
periodo_lectivo varchar(20) not null ,
nombre varchar(15) not null ,
catedra varchar(15),
escala_notas integer not null ,
carrera varchar(5),
plan varchar(5),
grupo_carrera varchar(5),
turno varchar(10),
letra_desde varchar(4),
letra_hasta varchar(4),
capacidad integer,
insc_habilitada char(1)
default ‘S’ not null ,
estado char(1)
default ‘A’ not null ,

check (estado IN ('A' ,'C' )) constraint "dba".ck_comis_estado,

check (insc_habilitada IN ('S' ,'N' )) constraint "dba".ck_comis_insc_hab,
primary key (comision)  constraint "informix".pk_comisiones

);
revoke all on “dba”.sga_comisiones from “public”;

alter table “dba”.sga_comisiones add constraint (foreign key
(sede,unidad_academica) references “dba”.sga_sedes_ua constraint
“dba”.fk_comis_sedeua);

alter table “dba”.sga_comisiones add constraint (foreign key
(unidad_academica,carrera) references “dba”.sga_carreras
constraint “dba”.fk_comis_carrera);

alter table “dba”.sga_comisiones add constraint (foreign key
(unidad_academica,materia,catedra) references “dba”.sga_catedras
constraint “dba”.fk_comis_catedra);

alter table “dba”.sga_comisiones add constraint (foreign key
(escala_notas) references “dba”.sga_escala_notas constraint
“dba”.fk_comis_escala);

alter table “dba”.sga_comisiones add constraint (foreign key
(unidad_academica,grupo_carrera) references “dba”.sga_grupos_carrera
constraint “dba”.fk_comis_gr_car);

alter table “dba”.sga_comisiones add constraint (foreign key
(unidad_academica,materia) references “dba”.sga_materias
constraint “dba”.fk_comis_materia);

alter table “dba”.sga_comisiones add constraint (foreign key
(anio_academico,periodo_lectivo) references “dba”.sga_periodos_lect
constraint “dba”.fk_comis_per_lect);

alter table “dba”.sga_comisiones add constraint (foreign key
(unidad_academica,carrera,plan) references “dba”.sga_planes
constraint “dba”.fk_comis_plan);

create trigger “dba”.td_comisiones delete on “dba”.sga_comisiones
referencing old as old
for each row
(
–,
– EXECUTE PROCEDURE uad_comisiones (
– old.comision,
– old.sede,
– old.unidad_academica,
– old.materia,
– old.anio_academico,
– old.periodo_lectivo,
– old.nombre,
– old.catedra,
– old.escala_notas,
– old.carrera,
– old.plan,
– old.grupo_carrera,
– old.turno,
– old.letra_desde,
– old.letra_hasta,
– old.capacidad,
– old.insc_habilitada,
– old.estado)
execute procedure “dba”.spd_comisiones(old.comision ,
old.sede ,old.unidad_academica ,old.materia ,old.anio_academico ,
old.periodo_lectivo ,old.nombre ,old.catedra ,old.escala_notas ,old.carrera

,old.plan ,old.grupo_carrera ,old.turno ,old.letra_desde ,old.letra_hasta
,old.capacidad ,old.insc_habilitada ,old.estado ));

create trigger “dba”.ti_comisiones insert on “dba”.sga_comisiones
referencing new as new
for each row
(
–,
– EXECUTE PROCEDURE uai_comisiones (
– new.comision,
– new.sede,
– new.unidad_academica,
– new.materia,
– new.anio_academico,
– new.periodo_lectivo,
– new.nombre,
– new.catedra,
– new.escala_notas,
– new.carrera,
– new.plan,
– new.grupo_carrera,
– new.turno,
– new.letra_desde,
– new.letra_hasta,
– new.capacidad,
– new.insc_habilitada,
– new.estado)
execute procedure “dba”.spi_comisiones(new.comision ,
new.sede ,new.unidad_academica ,new.materia ,new.anio_academico ,
new.periodo_lectivo ,new.nombre ,new.catedra ,new.escala_notas ,new.carrera

,new.plan ,new.grupo_carrera ,new.turno ,new.letra_desde ,new.letra_hasta
,new.capacidad ,new.insc_habilitada ,new.estado ));

create trigger “dba”.tu_comisiones update on “dba”.sga_comisiones
referencing old as old new as new
for each row
(
–,
– EXECUTE PROCEDURE uau_comisiones (
– old.comision,
– old.sede,
– old.unidad_academica,
– old.materia,
– old.anio_academico,
– old.periodo_lectivo,
– old.nombre,
– old.catedra,
– old.escala_notas,
– old.carrera,
– old.plan,
– old.grupo_carrera,
– old.turno,
– old.letra_desde,
– old.letra_hasta,
– old.capacidad,
– old.insc_habilitada,
– old.estado,
– new.comision,
– new.sede,
– new.unidad_academica,
– new.materia,
– new.anio_academico,
– new.periodo_lectivo,
– new.nombre,
– new.catedra,
– new.escala_notas,
– new.carrera,
– new.plan,
– new.grupo_carrera,
– new.turno,
– new.letra_desde,
– new.letra_hasta,
– new.capacidad,
– new.insc_habilitada,
– new.estado)
execute procedure “dba”.spu_comisiones(old.comision ,
old.sede ,old.unidad_academica ,old.materia ,old.anio_academico ,
old.periodo_lectivo ,old.nombre ,old.catedra ,old.escala_notas ,old.carrera

,old.plan ,old.grupo_carrera ,old.turno ,old.letra_desde ,old.letra_hasta
,old.capacidad ,old.insc_habilitada ,old.estado ,new.comision ,new.sede
,new.unidad_academica ,new.materia ,new.anio_academico ,new.periodo_lectivo

,new.nombre ,new.catedra ,new.escala_notas ,new.carrera ,new.plan
,new.grupo_carrera ,new.turno ,new.letra_desde ,new.letra_hasta ,
new.capacidad ,new.insc_habilitada ,new.estado ));

DBSCHEMA Schema Utility INFORMIX-SQL Version 9.21.TC4
Copyright (C) Informix Software, Inc., 1984-1997
Software Serial Number AAD#J113467
{ TABLE “dba”.sga_insc_cursadas row size = 85 number of columns = 12 index size

          138 }

create table “dba”.sga_insc_cursadas
(
unidad_academica varchar(5) not null ,
carrera varchar(5) not null ,
legajo varchar(15) not null ,
comision integer not null ,
fecha_inscripcion datetime year to second not null ,
calidad_insc char(1) not null ,
materia_generica varchar(5),
plan varchar(5) not null ,
version varchar(5) not null ,
nro_transaccion varchar(20) not null ,
interfaz integer not null ,
estado char(1) not null ,
primary key (unidad_academica,carrera,legajo,comision) constraint “dba”.pk_
insc_cursadas
);
revoke all on “dba”.sga_insc_cursadas from “public”;

create index “dba”.in_inscur_fecha on “dba”.sga_insc_cursadas
(fecha_inscripcion) using btree ;
alter table “dba”.sga_insc_cursadas add constraint (foreign key
(unidad_academica,materia_generica) references “dba”.sga_materias
constraint “dba”.fk_ins_cur_mat_gen);

alter table “dba”.sga_insc_cursadas add constraint (foreign key
(unidad_academica,carrera,plan,version) references “dba”.sga_versiones_plan

 constraint "dba".fk_ins_cur_version);

create trigger “dba”.td_insc_cursadas delete on “dba”.sga_insc_cursadas
referencing old as old
for each row
(
–,
– EXECUTE PROCEDURE uad_insc_cursadas (
– old.unidad_academica,
– old.carrera,
– old.legajo,
– old.comision,
– old.fecha_inscripcion,
– old.calidad_insc,
– old.materia_generica,
– old.plan,
– old.version,
– old.nro_transaccion,
– old.interfaz,
– old.estado)
execute procedure “dba”.spd_insc_cursadas(old.unidad_academica
,old.carrera ,old.legajo ,old.comision ,old.fecha_inscripcion ,old.calidad_i
nsc
,old.materia_generica ,old.plan ,old.version ,old.nro_transaccion
,old.interfaz ,old.estado ));

create trigger “dba”.ti_insc_cursadas insert on “dba”.sga_insc_cursadas
referencing new as new
for each row
(
–,
– EXECUTE PROCEDURE uai_insc_cursadas (
– new.unidad_academica,
– new.carrera,
– new.legajo,
– new.comision,
– new.fecha_inscripcion,
– new.calidad_insc,
– new.materia_generica,
– new.plan,
– new.version,
– new.nro_transaccion,
– new.interfaz,
– new.estado)
execute procedure “dba”.spi_insc_cursadas(new.unidad_academica
,new.carrera ,new.legajo ,new.comision ,new.fecha_inscripcion ,new.calidad_i
nsc
,new.materia_generica ,new.plan ,new.version ,new.nro_transaccion
,new.interfaz ,new.estado ));

create trigger “dba”.tu_insc_cursadas update on “dba”.sga_insc_cursadas
referencing old as old new as new
for each row
(
–,
– EXECUTE PROCEDURE uau_insc_cursadas (
– old.unidad_academica,
– old.carrera,
– old.legajo,
– old.comision,
– old.fecha_inscripcion,
– old.calidad_insc,
– old.materia_generica,
– old.plan,
– old.version,
– old.nro_transaccion,
– old.interfaz,
– old.estado,
– new.unidad_academica,
– new.carrera,
– new.legajo,
– new.comision,
– new.fecha_inscripcion,
– new.calidad_insc,
– new.materia_generica,
– new.plan,
– new.version,
– new.nro_transaccion,
– new.interfaz,
– new.estado)
execute procedure “dba”.spu_insc_cursadas(old.unidad_academica
,old.carrera ,old.legajo ,old.comision ,old.fecha_inscripcion ,old.calidad_i
nsc
,old.materia_generica ,old.plan ,old.version ,old.nro_transaccion
,old.interfaz ,old.estado ,new.unidad_academica ,new.carrera ,new.legajo
,new.comision ,new.fecha_inscripcion ,new.calidad_insc ,new.materia_generica

,new.plan ,new.version ,new.nro_transaccion ,new.interfaz ,new.estado
));

Gracias!

Laura:

No tenés posibilidades de?

1- Armar una base de pruebas copia de la de producción (export e import) y ver si en la base de prueba te pasa lo mismo.
2- Si no se soluciona, en la base de prueba aplicar los scripts de cambio de versión hasta la 2.07 y verificar si así se soluciona.

Si no se soluciona así, estaríamos descartando lo que dice Ale Delú en su mail, pero mientras tanto esto sería lo que hay que hacer para arreglarlo (cambiar la versión), teniendo en cuenta que Ale recuerda algún bug al respecto.

Saludos

Gustavo

Gustavo,

Hice el export y el import y el problema en la operación cur-00005 no sucede más, ahora el error en la operación cur-00002 el error no sucede todo el tiempo sino q es aleatorio, y hace tiempo que sucede, varios períodos, con muchos export e import en el medio. Por lo tanto en ese caso si tendría que ver si cambia con los scripts hasta la 2.70, ahora estoy teniendo un inconveniente no puedo bajar ningún script de la extranet: No se encontro el archivo solicitado denominado ‘v2064_scripts_conversion_2.6.3_a_2.6.4.rar’.

Gracias!
Laura

Laura:

Enviale mail al SIU (guarani@siu.edu.ar). A mi me pasó lo mismo con otros archivos. Tengo entendido que hubo algún problema con un servidor y están volviendo a subir de a poco todos los archivos.

Saludos

Gustavo

Hola! Nosotros estamos en la v2.7 de Guarani y nos empezo a pasar este problema, hubo alguna solucion? el lunes empiezas las incripciones y no terminaron de cargar . Mientras estoy viendo que puede estar pasando
Saludos!

Hola Pilar, realizaste esos oncheck que indica Damian? Proba correr un UPDATE STATISTICS HIGH sobre esa tabla de comisiones y poner el nivel de lockeo a ROW.
Estan asignando docentes en las comisiones?

Hola!
Hice los oncheck y hasta ahora no tuve mas problema. Lo tengo en observacion…

Gracias!