IBM Support

E_CONSTRAINT_VIOLATED - Cannot change property max string length in ACCE

Troubleshooting


Problem

Attempts to increase a property's max string length on a docclass in FileNet Content Platform Engine's (CPE) Administrative Console for Content Engine (ACCE) fails: The operation violates a constraint of the implementation. ORA-30556: either functional or bitmap join index is defined on the column to be modified

Symptom

From p8_server_trace.log:

2018-01-30T14:44:08.462 2F14BE26 EJB FNRCE0015D - DEBUG <executeChangesResponse type="EngineRuntimeException" elapsed="1870" clientVersion="511" clientId="2f14be26:WebContainer : 1" rid="1">\ncom.filenet.api.exception.EngineRuntimeException: FNRCE0015E: E_CONSTRAINT_VIOLATED: The operation violates a constraint of the implementation. ObjectStore: "Prod_OS2", SQL: ""ALTER TABLE P8_CPE_Prod.DocVersion MODIFY (u89_tracking_number varchar2(36) ) "" failedBatchItem=0\n at com.filenet.engine.dbpersist.DBOracleContext.throwEngineException(DBOracleContext.java:384)\n at com.filenet.engine.dbpersist.DBExecutionElement.execute(DBExecutionElement.java:307)\n at com.filenet.engine.dbpersist.DBExecutionContext.getNextResult(DBExecutionContext.java:106)\n at com.filenet.engine.dbpersist.DBStatementList.executeStatements(DBStatementList.java:161)\n at com.filenet.engine.dbpersist.DBStatementList.getNextResult(DBStatementList.java:601)\n at com.filenet.engine.dbpersist.DBStatementAlter.process(DBStatementAlter.java:997)\n at com.filenet.engine.dbpersist.DBStatementAlter.process(DBStatementAlter.java:941)\n at com.filenet.engine.persist.PropertyDefinitionPersister.resizeColumn(PropertyDefinitionPersister.java:2508)\n at com.filenet.engine.persist.PropertyDefinitionPersister.updateColumn(PropertyDefinitionPersister.java:2609)\n at com.filenet.engine.persist.PropertyDefinitionPersister.preExecuteChange(PropertyDefinitionPersister.java:185)\n at com.filenet.engine.persist.DependentPersister.applyChanges(DependentPersister.java:331)\n at com.filenet.engine.persist.DependentPersister.preChangeDependentList(DependentPersister.java:124)\n at com.filenet.engine.persist.ClassDefinitionPersister.preExecuteChange(ClassDefinitionPersister.java:481)\n at com.filenet.engine.persist.IndependentPersister.executeChangeWork(IndependentPersister.java:499)\n at com.filenet.engine.persist.IndependentPersister.executeChange(IndependentPersister.java:333)\n at com.filenet.engine.persist.SubscribablePersister.executeChange(SubscribablePersister.java:177)\n at com.filenet.engine.jca.impl.RequestBrokerImpl.executeChanges(RequestBrokerImpl.java:1487)\n at com.filenet.engine.jca.impl.RequestBrokerImpl.executeChanges(RequestBrokerImpl.java:1345)\n at com.filenet.engine.ejb.EngineCoreBean._executeChanges(EngineCoreBean.java:619)\n at com.filenet.engine.ejb.EngineCoreBean.executeChanges(EngineCoreBean.java:586)\n at com.filenet.engine.ejb.EJSLocalStatelessEngineCore_22877cb1.executeChanges(Unknown Source)\n at com.filenet.engine.ejb.EngineBean.executeChanges(EngineBean.java:913)\n at com.filenet.apiimpl.transport.ejbstubs.EJSRemoteStatelessEngine_2e64c374.executeChanges(Unknown Source)\n at com.filenet.apiimpl.transport.ejbstubs._Engine_Stub.executeChanges(Unknown Source)\n at com.filenet.apiimpl.transport.ejb.EJBSession$EJBImpl._executeChanges(EJBSession.java:861)\n at com.filenet.apiimpl.transport.ejb.EJBSession$EJBImpl.run(EJBSession.java:550)\n
<shortened for brevity...>
com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)\n at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1881)\nCaused by: java.sql.SQLException: ORA-30556: either functional or bitmap join index is defined on the column to be modified\n\n at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:445)\n at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)\n at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:879)\n at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:450)\n at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192)\n at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)\n at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207)\n at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1044)\n at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1329)\n at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3584)\n at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3685)\n at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1376)\n at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.pmiExecute(WSJdbcPreparedStatement.java:958)\n at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.execute(WSJdbcPreparedStatement.java:625)\n at com.filenet.engine.dbpersist.DBExecutionElement.execute(DBExecutionElement.java:251)\n ... 144 more

Cause

Oracle constraint preventing columns with functional indexes from being modified is being violated.

Environment

CPE with Oracle databases

Diagnosing The Problem

Enabled CPE trace logging for Database, EJB, Engine, and Error, and reproducing the E_CONSTRAINT_VIOLATED error to capture the error above in the p8_server_trace.log

Resolving The Problem

Drop the functional index, modify the property and recreate the index using the steps below. Note: Anytime you take direct action on the database, it's good to insure you have a backup. The actions below are best attempted when there is no activity on the object store's database:

  1. If your DBA created the index, work with your DBA to capture how the index was created on the user created column you're trying to extend (uNN_column_name from the error above) If you created the index via ACCE, you can take a screen shot of the table definition of the index
    1. ACCE> Data Design> Classes> Document> YourClass> Actions tab> Open Table Definition> Indexes tab
  2. Work with your DBA to drop the index on the property you're trying to modify or remove it in ACCE
    1. From where you left off on the Indexes tab, check the box next to the index
    2. Choose Remove
  3. With the index dropped, from ACCE, extend the Max String Length as you were attempting when you received the error above. With the functional index removed, this should complete with no issues.
  4. Work with your DBA or got back to the Table Definition to recreate the functional index exactly as it was created previously.

[{"Product":{"code":"SSNW2F","label":"FileNet P8 Platform"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Component":"Content Engine","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF016","label":"Linux"},{"code":"PF033","label":"Windows"}],"Version":"5.2;5.2.1;5.5.0","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
17 June 2018

UID

swg22013486