Tuesday, March 31, 2009

Weblogic and Oracle RAC

The suggested solution for high availability is using a Multi Data Source with load balancing.

It turns out that Oracle RAC is very sensitive to the version of JDBC driver you are using:


Automatic database connection failover and load balancing with global transactions (XA) in a highly-available (HA) DBMS architecture is supported with the following Oracle RAC versions and drivers:

Oracle Thin/XA Driver 10g

(which is oracle.jdbc.xa.client.OracleXADataSource, versus weblogic.jdbcx.oracle.OracleDataSource which is the Weblogic Oracle driver)

If you try using the Weblogic Type 4 JDBC driver (weblogic.jdbcx.oracle.OracleDataSource) you will encounter deadlock problems:

"[ACTIVE] ExecuteThread: '398' for queue: 'weblogic.kernel.Default (self-tuning)'" waiting for lock weblogic.jdbcx.base.BaseXAConnection@2923410e BLOCKED
weblogic.jdbcx.base.BaseXAResource.end(Unknown Source)
weblogic.jdbc.jta.DataSource.end(DataSource.java:803)
weblogic.transaction.internal.XAServerResourceInfo.end(XAServerResourceInfo.java:1232)
weblogic.transaction.internal.XAServerResourceInfo.internalDelist(XAServerResourceInfo.java:404)
weblogic.transaction.internal.XAServerResourceInfo.delist(XAServerResourceInfo.java:326)
weblogic.transaction.internal.ServerTransactionImpl.delistAll(ServerTransactionImpl.java:1624)
weblogic.transaction.internal.ServerTransactionImpl.localRollback(ServerTransactionImpl.java:2012)
weblogic.transaction.internal.ServerTransactionImpl.globalRetryRollback(ServerTransactionImpl.java:3020)
weblogic.transaction.internal.ServerTransactionImpl.access$100(ServerTransactionImpl.java:66)
weblogic.transaction.internal.ServerTransactionImpl$1.run(ServerTransactionImpl.java:3252)
weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
weblogic.work.ExecuteThread.run(ExecuteThread.java:181)


Highly recommended is this:

http://e-docs.bea.com/wls/docs100/jdbc_admin/oracle_rac.html

More specifically for ALBPM:
http://edocs.bea.com/albsi/docs60/installguide/index.html?t=installation/c_Required_Databases.html




No comments: