Wednesday 22 June 2016

Oracle SOA DB Poller Error Caused by BINDING.JCA-11608

Hi All,

Just wanted to highlight a common mistake most developer and most testing teams do. When a need arises to change any setting including connection factory or connection pool setting in Oracle Weblogic Server

The Mistake:
  1. Make changes to the weblogic server data source / Connection factory.
  2. Which leads to a DB adaptor redeploy.
  3. Once the DB adaptor is redeployed all the pollers using that DB adaptor incidences will fail with the following error:
Query name: [xxxxxxxxxxxxxx], Descriptor name: [xxxxxxxxxxxxx.xxxxxxx]. Polling the database for events failed on this iteration.
Caused by BINDING.JCA-11608
Connection Already Closed Exception.
This [javax.resource.cci.Connection] is already closed.
This should not happen when running within a packaged application like BPEL or ESB but may occur when the adapter is used standalone.
..
.
  This exception is considered not retriable, likely due to a modelling mistake.  This polling process will shut down, unless the fault is related to processing a particular row, in which case polling will continue but the row will be rejected (faulted).

       at oracle.tip.adapter.db.exceptions.DBResourceException.createNonRetriableException(DBResourceException.java:690)
       at oracle.tip.adapter.db.exceptions.DBResourceException.createEISException(DBResourceException.java:656)
       at oracle.tip.adapter.db.exceptions.DBResourceException.inboundReadException(DBResourceException.java:491)
       at oracle.tip.adapter.db.InboundWork.handleException(InboundWork.java:1001)
       at oracle.tip.adapter.db.InboundWork.runOnce(InboundWork.java:896)
       at oracle.tip.adapter.db.InboundWork.run(InboundWork.java:627)
       at oracle.tip.adapter.db.inbound.InboundWorkWrapper.run(InboundWorkWrapper.java:43)
       at oracle.integration.platform.blocks.executor.WorkManagerExecutor$1.run(WorkManagerExecutor.java:184)
       at weblogic.work.j2ee.J2EEWorkManager$WorkWithListener.run(J2EEWorkManager.java:184)
       at weblogic.work.DaemonWorkThread.run(DaemonWorkThread.java:30)
Caused by: BINDING.JCA-11608
Connection Already Closed Exception.
This [javax.resource.cci.Connection] is already closed.


Note: When the above error occurs, the Poller state is still active, which deadly in a production environment. 

The Corrective Measure:
  1. Retire all DB Pollers which have encountered this error.
  2. Activate all DB  Pollers.
  3. The issue will be fixed.

The Best Practice:
  1. Retire all DB Pollers. (No Polling will happen during this time).
  2. Make changes to the weblogic server data source / Connection factory.
  3. Which leads to a DB adaptor redeploy / Restart.
  4. Once the DB adaptor is redeployed / Restarted.
  5. Activate all DB Pollers.



Wednesday 4 May 2016

SOA SUITE 12c Data Base Schema Dehydration Store States

Hi All,

As me, you might be stumbling to find out what, similar to List of all states from COMPOSITE_INSTANCE, CUBE_INSTANCE, DLV_MESSAGE  in 11g, the important tables would be for SOA Suite 12c and relevant states.

Basically this is described very well in the Oracle Support Document 2065869.1: 12c SOA composite <schema> States

For the benefit of every one, I have also copy pasted the content from the obove Oracle Note to here (copy right of the below details are with Oracle Support):

==========================================================================

Details

Based on 11g:
Tables COMPOSITE_INSTANCE and MEDIATOR_INSTANCE does not apply to 12c.
Tables CUBE_INSTANCE, DLV_MESSAGE and DLV_TYPE did not have any change.
The FLOW_INSTANCE is available only in 12c.

CUBE_INSTANCE States

StateDescription
0 STATE_INITIATED
1 STATE_OPEN_RUNNING
2 STATE_OPEN_SUSPENDED
3 STATE_OPEN_FAULTED
4 STATE_CLOSED_PENDING_CANCEL
5 STATE_CLOSED_COMPLETED
6 STATE_CLOSED_FAULTED
7 STATE_CLOSED_CANCELLED
8 STATE_CLOSED_ABORTED
9 STATE_CLOSED_STALE
10 STATE_CLOSED_ROLLED_BACK


DLV_MESSAGE States

StateDescription
0 STATE_UNRESOLVED
1 STATE_RESOLVED
2 STATE_HANDLED
3 STATE_CANCELLED
4 STATE_MAX_RECOVERED


DLV_TYPE States

StateDescription
1 Invoke Message
2 DLV Message
MEDIATOR States

Mediator state is now derived from SCA_ASYNC_CPNT_STATE table. The state column can take one of the following values:
StateDescription
1 RUNNING
2 COMPLETED
3 FAULTED
4 ABORTED
5 STALE


FLOW_INSTANCE States
StateDescription
-1 NOT_SET
1 SUSPENDED
2 TERMINATED
3 STALE
  
The Flow State is derived from the Flow Instance table using the following columns:
  • Active_Component_Instances
  • Unhandled_Faults
  • Recoverable_Faults
  • Admin_State
Completed Flow  
0 Active_Component_Instances

Completed Faulted Flow
0 Active_Component_Instances
1 or more Unhandled_Faults

Recoverable Flows
1 or more Active_Component_Instances
1 or more Recoverable_Faults

Completed Successfully
0 Active_Component_Instances
0 Unhandled_Faults
0 Recoverable_Faults
  
======================================================================

Further to the above Info, I also found a very useful blog that provides more knowledge / usage to the above table. 


Hope this was helpful to you.