SOA 11g: Composite Encounters ORABPEL-30280 Invoking Human Workflow Task with an Underlying "ORA-22990: LOB locators cannot span transactions" (Doc ID 1292091.1)

Last updated on NOVEMBER 18, 2016

Applies to:

Oracle SOA Platform - Version 11.1.1.1.0 and later
Information in this document applies to any platform.

Symptoms

You have developed a composite application that utilizes a Human Workflow (HWF) component and is deployed to Oracle Fusion Milddleware 11g Release 1 (11.1.1.1.0 and later).

 

Whenever the SOA composite invokes an initiateTask operation of an Human Workflow Component, the composite encounters the following Fault:

Feb 3, 2011 11:36:09 AM oracle.bpel.services.common.ServicesLogger __logException
SEVERE: <.> Error while inserting task .
Error while inserting task {0} .
Check the underlying exception and the database connection information.
If the error persists, contact Oracle Support Services.

ORABPEL-30278

Error while inserting task .
Error while inserting task {0} .
Check the underlying exception and the database connection information.
If the error persists, contact Oracle Support Services.


In the WebLogic Server log for the SOA managed server (typically located at ${DOMAIN_HOME}/servers/soa_server1/logs/soa_server1.out) it can be seen that the ORABPEL-30278 reported in the Enterprise Manager console has been caused by the following underlying Exception:

Caused by: ORABPEL-30280

Error while inserting task payload .
Error while inserting task payload for task 6070d24a-cbaf-457b-bcde-d4840e31b486.
Check the underlying exception and the database connection information. If the error persists, contact Oracle Support Services.

at oracle.bpel.services.workflow.repos.driver.oracle.OracleWFTask.
   insertPayload(OracleWFTask.java:798)
at oracle.bpel.services.workflow.repos.driver.oracle.OracleWFTask.
   insertWFTask(OracleWFTask.java:452)
... 98 more
Caused by: java.io.IOException: ORA-22990: LOB locators cannot span transactions

at oracle.jdbc.driver.DatabaseError.SQLToIOException(DatabaseError.java:814)
at oracle.jdbc.driver.OracleBlobOutputStream.
   flushBuffer(OracleBlobOutputStream.java:221)
at oracle.jdbc.driver.OracleBlobOutputStream.
   close(OracleBlobOutputStream.java:186)
at oracle.bpel.services.workflow.repos.driver.oracle.OracleWFTask.
   writePayloadToBlob(OracleWFTask.java:1006)
at oracle.bpel.services.workflow.repos.driver.oracle.OracleWFTask.
   updateInsertPayload(OracleWFTask.java:918)
at oracle.bpel.services.workflow.repos.driver.oracle.OracleWFTask.
   insertPayload(OracleWFTask.java:793)
at oracle.bpel.services.workflow.repos.driver.oracle.OracleWFTask.
   insertWFTask(OracleWFTask.java:457)
at oracle.bpel.services.workflow.repos.driver.PersistencyService.
   insertWFTask(PersistencyService.java:479)
at oracle.bpel.services.workflow.task.impl.TaskService.
   performPostActionOperationInTrans(TaskService.java:5409)
at oracle.bpel.services.workflow.task.impl.TaskService.
   performPostActionOperation(TaskService.java:5216)
at oracle.bpel.services.workflow.task.impl.TaskService.
   performPostActionOperation(TaskService.java:6358)
at oracle.bpel.services.workflow.task.impl.TaskService.
   localHandleRoutingSlipInterpretationResult(TaskService.java:2907)
at oracle.bpel.services.workflow.task.impl.TaskService.
   handleRoutingSlipInterpretationResult(TaskService.java:2990)
at oracle.bpel.services.workflow.task.impl.TaskService.
   initiateTask(TaskService.java:1229)
at oracle.bpel.services.workflow.task.impl.TaskService.
   initiateTask(TaskService.java:502)
...
at com.collaxa.cube.engine.dispatch.BaseDispatchTask.run(BaseDispatchTask.java:58)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:909)
... 1 more

Changes

You may have recently modified or recreated the pre-defined SOADataSource.

You may have done this, for example, when defining multiple new DataSources to be referenced by a WebLogic MultiDataSource that has been created to leverage an Oracle RAC database for improved high availability as described here:

Oracle Fusion Middleware
High Availability Guide
11g Release 1 (11.1.1)
E10106-10
January 2011
http://download.oracle.com/docs/cd/E17904_01/core.1111/e10106.pdf

Chapter 4: Considerations for High Availability Oracle Database Access
4.1.2 Using Multi Data Sources with Oracle RAC
Pages 4-3 through 4-7 (pages 87-91 in the PDF)
http://download.oracle.com/docs/cd/E17904_01/core.1111/e10106/dbac.htm#BHCJBFAE

4.1.2.2 Oracle RAC Configuration Requirements

1. Log on to SQL*Plus as a system user, for example: sqlplus "/ as sysdba"
2. Grant select on sys.dba_pending_transactions to public.
3. Grant execute on sys.dbms_xa to public.
4. Grant force any transaction to user.



Note:
When an MDS data source is added as a child of a multi data
source, this data source is no longer exposed as an MDS repository.
For example, it is not displayed under the Metadata Repositories
folder in the Fusion Middleware Control navigation tree, no MDS
repository operations can be performed on it, and it does not appear
in the list of selectable repositories during deployment.
Note:
Ensure that the distributed_lock_timeout parameter for
the Oracle database is set to a value higher that the JTA timeout (This
should be higher than the highest value on the middle tier - between
the default for WebLogic Server, a specific configuration for a data
source, or one used by a component for a transaction.)

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms