Before you begin: resolving this error requires a database administrator to rename, remove or recreate native indexes. Take a database backup, capture the definition of every affected index and test the change outside production. Dropping an index without understanding its purpose can remove a uniqueness rule or damage performance.
Database Configuration or the Integrity Checker can report:
BMXAA0333E - Native index names longer than 30 characters exist.
Before running ConfigDB, you must manually identify and rename these native indexes.Maximo applies a 30-character limit to index names managed by its configuration process. A native index created directly in the database can bypass that validation, but ConfigDB detects the name later and stops the configuration from being applied.
The Integrity Checker reports these indexes, but a focused catalog query is quicker when this is the only issue you need to investigate. Use the query for the Maximo database platform and replace <maximo-schema> with the actual schema or index owner.
Use > 30, not >= 30. The message says longer than 30 characters, and names that are exactly 30 characters long are valid.
DB2
Query SYSCAT.INDEXES and restrict the result to the Maximo index schema:
SELECT
INDSCHEMA,
TABSCHEMA,
TABNAME,
INDNAME,
UNIQUERULE
FROM
SYSCAT.INDEXES
WHERE
LENGTH(INDNAME) > 30
AND INDSCHEMA = UPPER('<maximo-schema>')
ORDER BY
TABSCHEMA,
TABNAME,
INDNAME;UNIQUERULE helps the database administrator identify indexes that enforce uniqueness and need additional care.
Oracle
Query ALL_INDEXES so the result includes indexes visible to the current database account, then filter by the Maximo owner:
SELECT
OWNER,
TABLE_OWNER,
TABLE_NAME,
INDEX_NAME,
UNIQUENESS,
INDEX_TYPE
FROM
ALL_INDEXES
WHERE
LENGTH(INDEX_NAME) > 30
AND OWNER = UPPER('<maximo-schema>')
ORDER BY
TABLE_OWNER,
TABLE_NAME,
INDEX_NAME;Run the query with an account that can see the Maximo indexes. An empty result from a restricted account does not prove that the indexes do not exist.
SQL Server
Join the catalog views to report the schema, table and index properties together:
SELECT
DB_SCHEMA.NAME AS SCHEMA_NAME,
TABLE_OBJECT.NAME AS TABLE_NAME,
TABLE_INDEX.NAME AS INDEX_NAME,
TABLE_INDEX.TYPE_DESC AS INDEX_TYPE,
TABLE_INDEX.IS_UNIQUE
FROM
SYS.INDEXES AS TABLE_INDEX
INNER JOIN SYS.OBJECTS AS TABLE_OBJECT
ON TABLE_INDEX.OBJECT_ID = TABLE_OBJECT.OBJECT_ID
INNER JOIN SYS.SCHEMAS AS DB_SCHEMA
ON TABLE_OBJECT.SCHEMA_ID = DB_SCHEMA.SCHEMA_ID
WHERE
TABLE_OBJECT.TYPE = 'U'
AND LEN(TABLE_INDEX.NAME) > 30
AND DB_SCHEMA.NAME = '<maximo-schema>'
ORDER BY
DB_SCHEMA.NAME,
TABLE_OBJECT.NAME,
TABLE_INDEX.NAME;For many SQL Server installations the schema is dbo, but use the schema configured for your environment rather than assuming that default.
Decide how to correct each index
For every result:
- Capture its complete definition, including columns, order, uniqueness, included columns, filters and storage options.
- Check whether the index is represented in Maximo Database Configuration or exists only in the native database catalog.
- Confirm whether a constraint, integration, maintenance script or monitoring rule refers to its current name.
- Choose a unique replacement name no longer than 30 characters.
- Have the database administrator rename the index using syntax appropriate to the database platform.
If an index must be dropped rather than renamed, preserve its definition first. When Maximo should manage the index, recreate it through Database Configuration with a compliant name instead of leaving an undocumented native replacement.
After correcting every result, rerun the catalog query. It should return no rows. Run the Integrity Checker again, confirm that BMXAA0333E is gone, and only then rerun ConfigDB.
IBM's support record for BMXAA0333E describes the error preventing Database Configuration changes from being applied and lists Maximo 7.5 and 7.6 in its support scope. Verify the queries with your database administrator before making changes.