Support Article
BIX does not update certain records
SA-16268
Summary
BIX extract rule fails to insert records in to the Target database for a particular set of records.
Error Messages
java.sql.BatchUpdateException: ORA-24816: Expanded non LONG bind data supplied after actual LONG or LOB column
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10401)
at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:230)
at com.pega.pegarules.data.internal.access.DatabasePreparedStatementImpl.executeBatch(DatabasePreparedStatementImpl.java:530)
at com.pega.pegarules.data.internal.access.ExtractImpl.insertRowsBatchMode(ExtractImpl.java:5330)
at com.pega.pegarules.data.internal.access.ExtractImpl.doExtract(ExtractImpl.java:3119)
at com.pega.pegarules.data.internal.access.ExtractImpl.runExtract(ExtractImpl.java:1561)
at com.pega.pegarules.data.internal.access.ExtractImpl.run(ExtractImpl.java:1406)
at com.pega.pegarules.session.internal.PRSessionProviderImpl.doWithRequestorLocked(PRSessionProviderImpl.java:1081)
at com.pega.pegarules.session.internal.PRSessionProviderImpl.doWithRequestorLocked(PRSessionProviderImpl.java:739)
at com.pega.pegarules.data.internal.access.ExtractImpl.runEngineExtract(ExtractImpl.java:1390)
at com.pega.pegarules.data.internal.access.DatabaseImpl.executeExtract(DatabaseImpl.java:7001)
at com.pega.pegarules.data.internal.access.DatabaseImpl.executeExtract(DatabaseImpl.java:6974)
at com.pega.pegarules.session.internal.mgmt.Executable.executeExtract(Executable.java:7406)
at com.pegarules.generated.activity.ra_action_runextract_7a8d2d1902a070a3370e3cda6517cc3b.step1_circum0(ra_action_runextract_7a8d2d1902a070a3370e3cda6517cc3b.java:190)
at com.pegarules.generated.activity.ra_action_runextract_7a8d2d1902a070a3370e3cda6517cc3b.perform(ra_action_runextract_7a8d2d1902a070a3370e3cda6517cc3b.java:72)
Steps to Reproduce
1. Run an extract against Oracle database.
2. Insert data in to a target schema which is greater than 4000 bytes.
Root Cause
The issue is with Oracle database driver while handling the data supplied to that which is greater than 4000 bytes.
Resolution
Perform the following local-change:
Make changes to the extract such that the property which is exceeding the size is set at the end so that the prepared statement inserts the value at the end of the query, as suggested in the Oracle forums.
This can be achieved by unselecting the property responsible for the issue and selecting the same again. This results the property being the last column. Property can be identified by its huge size by performing obj-open-by-handle on the failed record and comparing it with the good records.
Published January 31, 2016 - Updated October 8, 2020
Have a question? Get answers now.
Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.