Error en indice: sga_detalle_acta

Buenos dias! Tengo una consulta sobre como borrar y recrear indices de una tabla.
Estoy trabajando en la v2.09.3 del G2. Realizo los dbexport y debimport sin inconvenientes, y a menudo al ejecutar el comando update statistics high no me tira ningun error.
En esta oportunidad al ejecutar dicho comando (update statistics high) me tira un error de “Could not check rowids and perform data<->index check”

El mensaje completo es el sgte.:

Validating indexes for exa2507:dba.sga_detalle_acta…
Index 249_859
Index fragment partition datos in DBspace datos
Could not check rowids and perform data<->index check
Cannot create a temporary operating system file to use in a sort.
Index in_detac_fecha
Index fragment partition datos in DBspace datos
Index 249_5426
Index fragment partition datos in DBspace datos
Could not check rowids and perform data<->index check
Cannot create a temporary operating system file to use in a sort.
Index 249_5494
Index fragment partition datos in DBspace datos
Could not check rowids and perform data<->index check
Cannot create a temporary operating system file to use in a sort.
Index 249_5631
Index fragment partition datos in DBspace datos
Could not check rowids and perform data<->index check
Cannot create a temporary operating system file to use in a sort.
Index 249_5632
Index fragment partition datos in DBspace datos
Please Drop and ReCreate Index 249_859 for exa2507:dba.sga_detalle_acta.
Please Drop and ReCreate Index 249_5426 for exa2507:dba.sga_detalle_acta.
Please Drop and ReCreate Index 249_5494 for exa2507:dba.sga_detalle_acta.
Please Drop and ReCreate Index 249_5631 for exa2507:dba.sga_detalle_acta

Como podria solucionar este problema?

Desde ya muchas gracias!
Daniela Rolón
FCEQyN - UNaM

Segun el mensaje que reporta el informix, se soluciona borrando y volviendo a crear esos indices.
Son esos 4 indices de la tabla dba.sga_detalle_acta (el tabid debe ser el 249)
249_859
249_5426
249_5494
249_5631

Como no tienen un nombre reconocido, pareciera que esos indices deben estar relacionados con FK de esa tabla. Ya que al crear una fk crea automáticamente un índice.
Fijate a que FK pertenecen esos indices, borra los indices, las fk y volve a crearlas nuevamente.


SELECT b.constrname,a.tabid,b.idxname, part1,part2,part3,part4,part5, part6,part7,part8,part9,part10,part11,part12,part13,part14,part15,part16
        FROM systables a,
	     sysconstraints b,
	     sysindexes c
        WHERE tabla= 'sga_actas_detalle'
        and a.tabid=b.tabid
--        and constrtype IN ('R',','P','U')
        and b.idxname = c.idxname
        order by b.constrname 

2

Buen dia Alejandro! asi es… borré los indices y los volvi a generar, eso solucionó el problema.

Paso a detallar lo realizado:


–Para buscar las fk e indices asociados de una tabla realizar la siguiente consulta:


SELECT informix.systables.tabname,
informix.sysconstraints.constrname,
informix.sysconstraints.constrtype,
informix.sysconstraints.idxname,
informix.sysindexes.idxtype,
informix.sysreferences.primary,
informix.sysreferences.delrule,
(SELECT tabname from systables where tabid = informix.sysreferences.ptabid) as tabla_referenciada
FROM informix.sysconstraints,
informix.systables,
OUTER informix.sysindexes,
OUTER informix.sysreferences
WHERE ( informix.systables.tabid = informix.sysconstraints.tabid ) and
( informix.sysconstraints.idxname = informix.sysindexes.idxname ) and
( informix.sysconstraints.constrid = informix.sysreferences.constrid )
and informix.systables.tabname = ‘sga_detalle_acta’
order by informix.systables.tabname ;


–Borrar y regenerar los indices nuevamente:


–Borré cada indice de la sgte. manera:
ALTER TABLE “dba”.sga_detalle_acta DROP CONSTRAINT “dba”.pk_detalle_acta;

–Regeneré cada indice:
ALTER TABLE “dba”.sga_detalle_acta
ADD CONSTRAINT primary key (unidad_academica,tipo_acta,acta,carrera,legajo)
constraint “dba”.pk_detalle_acta

Esto solucionó el problema.
Gracias por responder.
Saludos,
Daniela Rolón
FCEQyN - UNaM