Consultor Eletrônico



Kbase P9660: Index fix aborted with Error (2696)
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   15/10/2008
Status: Verified

FACT(s) (Environment):

Progress 9.1x

SYMPTOM(s):

Running idxfix to scan ALL tables

idxfix aborts with error (2696)

Stash area exceeded maximum size. (2696)

Index fix aborted (4334)

Increasing max size of stash area (-stsh) startup parameter does not help

CAUSE:

When receiving error (2696) during an idxfix run, the problem is caused by insufficient stash size.

Increasing the start up parameter (-stsh) that allows user to specify the maximum size of stash area does not address this occurrence, because although this value is read into a Progress global variable, it is not used (to date), so there is no reason for users to set up the -stsh parameter.

Instead, PROGRESS dynamically allocates minimum space for stash based on the size of the field. The stash allocation starts with the default of 2K and keeps growing (as needed) until it hits its maximum value 64K. The maximum size 64K of stash is large enough as long as the maximum size of record size remains 32K. (This is a PROGRESS upper boundary limitation)

The 64K maximum stash size boundary will be reached during an index rebuild, typically when the total size of the keys being indexed is > 32K in the case of an extremely large word indexed field or array.

FIX:

When the upper boundary for stash size is reached, idxfix cannot be used before addressing the particular indexed field size in the following manner:

+ If the database can be taken OFFLINE, use idxbuild to compact, re-build and activate the indexes - instead of idxfix. NOTE: idxbuild does not repair corrupted data, only the index corruption is addressed.

proutil dbname -C idxbuild ALL -TB 24 -TM 32 -B 1024

+ If the database needs to stay ONLINE, use idxcompact followed by idxfix for each Table.Index in turn. Using the "ALL" option is not possible as this will result in blowing the 64k stack when experiencing these circumstances.

proutil dbname -C idxcompact TableName.IndexName 100
proutil dbname -C idxfix (+ menu options relevant to individual case)