Drop and ReCreate Index - Informix 9 guarani 2.9.2

Hola!
Segun el oncheck -cI
deberia borrar y volver a crear indices de lo siguiente:
Please Drop and ReCreate Index 310_1230 for siu_guarani_fch:dba.sga_eval_parc_alum.
Please Drop and ReCreate Index 310_4683 for siu_guarani_fch:dba.sga_eval_parc_alum.
Please Drop and ReCreate Index 310_5368 for siu_guarani_fch:dba.sga_eval_parc_alum.

Fui mirando el foro pero no logre solucionarlo, creo que es mas por una cuestion de sintaxis…
hago esto:
select * from sysconstraints
where idxname in (select idxname from sysindexes
where tabid in (select tabid from systables where tabname =‘sga_eval_parc_alum’ ))
y la tabla contiene lo siguiente
1230 pk_eval_parc_alum dba 310 P 310_1230
4683 fk_evpa_aevp dba 310 R 310_4683
5368 fk_evpa_alumnos dba 310 R 310_5368
segun mire el foro hago lo siguiente pero me dice que no lo encuentra
ALTER TABLE sga_eval_parc_alum DROP CONSTRAINT u310_1230 ; (ME DICE QUE NO LA ENCUENTRA)
ALTER TABLE sga_eval_parc_alum ADD CONSTRAINT PRIMARY KEY(unidad_academica,carrera,legajo,comision,evaluacion) ;-como lo anterior no lo hace esto no lo corro)
Alguien me dice que estoy haciendo mal???
Otra cosa que hice
SELECT nrows FROM systables WHERE tabname = ‘sga_eval_parc_alum’; -ME DEVUELVE 31601-
SELECT * FROM sga_eval_parc_alum; -DA error y llega a leer hasta 31186-
SELECT COUNT(*) FROM sga_eval_parc_alum; -ME DEVUELVE 31601-

al querer hacer el UPDATE STATISTICS HIGH for table sga_eval_parc_alum me da error el -244 error al leer

Como sigo???

Buenas, al final hice lo siguiente:
Borre los indices :
ALTER TABLE “dba”.sga_eval_parc_alum DROP CONSTRAINT “dba”.fk_evpa_aevp;
ALTER TABLE “dba”.sga_eval_parc_alum DROP CONSTRAINT “dba”.fk_evpa_alumnos;
ALTER TABLE “dba”.sga_eval_parc_alum DROP CONSTRAINT “dba”.pk_eval_parc_alum
hice
update statistics high for table “dba”.sga_eval_parc_alum;
Sigue con el error
probe con dbacces hacer un unload y tampoco
entonces empece a mirar la tabla asi:
SELECT ROWID, * FROM “dba”.sga_eval_parc_alum WHERE ROWID,> nro
Ahi fui cambiando los valores de WHERE > o < al ROWID y me di cuenta que habia tuplas rotas asique me pase toda la info a una tabla temporal menos en las que rowid no podia acceder ,fueron 4 tuplas que perdi ya que tampoco estaban en la tabla log.
Borre la tabla sga_eval_parc_alum , la volvi a crear tal cual la original y la cargue con toda la info de la tabla temporal
hice un update statistics high for table “dba”.sga_eval_parc_alum; TODO OK
hice oncheck y dio todo ok
Realice un dbexport y salio todo bien!
GRACIAS!

Pilar, esos indices (310_1230, …) son los que se crean automáticamente con la creación de foreign keys en la tabla sga_eval_parc_alum. Por eso tenes que borrar esas fk y volverlas a crear.

Para buscar las fk e indices asociados de una tabla podes realizar la siguiente consulta:
SELECT informix.systables.tabname, informix.sysconstraints.constrname,
FROM informix.sysconstraints,
informix.systables,
informix.sysindexes,
informix.sysreferences,
informix.systables st
WHERE ( informix.systables.tabid = informix.sysconstraints.tabid ) and
( informix.sysconstraints.idxname = informix.sysindexes.idxname ) and
( informix.sysconstraints.constrtype = ‘R’) and
( informix.sysconstraints.constrid = informix.sysreferences.constrid ) and
( informix.sysreferences.ptabid = st.tabid ) and
( informix.systables.tabname in (‘sga_eval_parc_alum’) )
order by 1, 2;


¿Volviste a crear la pk y fks de esa tabla, no?
¿El onckeck sobre esta tabla no solucionó el problema?