Does Oracle Forms Support Oracle RDBMS High Availability and Failover (RAC / TAF)?

Does Oracle Forms Support Oracle RDBMS High Availability and Failover (RAC / TAF)?

Does Oracle Forms Support Oracle RDBMS High Availability and Failover (RAC / TAF)?

Titleimage

Posted by Patrick Hamou on 2017:09:07 18:09:34

APPLIES TO:

Oracle Forms - Version 6.0.8 and later
Information in this document applies to any platform.

SCOPE

This article addresses Oracle Forms support when used with  Real  Application Clusters (RAC) and Transparent Database Failover. It applies to any version of Forms and any version of the DB that the version of Forms is supported against.

DETAILS

About Oracle Forms Failover and High Availability

A number of questions have arisen regarding if Oracle Forms will support Real Application Clusters (RAC) and Transparent Database Failover.

It should be noted that there is a subtle difference here. Oracle Forms will support RAC as a data source, meaning that if the version of the database is certified with Oracle Forms then it should make no difference that that data source is part of a cluster.

However, what Forms does not support is that ability for any failure to be completely transparently "failed over". The reason for this is that changes and state information is being held by Forms. Any failure of the database would cause the database to failover to a new database. However, Forms is currently unable to resolve the state of the new database with the information 
held within Forms.

Common Questions:

QUESTION: 
Does Forms support RAC Transparent Application Failover (TAF)?

ANSWER: 
While Forms can connect to a RAC database or cluster of databases (assuming it is a version certified with Forms), Forms cannot take advantage of the TAF capabilities of the database. This is because when a database node fails, only certain information is saved or failed over. The PL/SQL state and PL/SQL variables are not saved in the 
event of a database failure. Since Forms relies on the PL/SQL state in the database, it cannot use the TAF capabilities of the database. This is not a limitation in Forms; indeed, any application that uses PL/SQL variables in the database would 
have the same issues.

Therefore, if a database node failed, it would either be restarted, or new connections would be redirected to another node. In either case, a Forms user could restart their application, but any existing session information and uncommitted data would be lost.

QUESTION: 
If I am running Forms 10gR2/11g in a OC4J clustered environment and in the middle of filling the form, I lose one node, do the end users have to reconnect to the other node losing the work done or it is transparent?

ANSWER: 
Forms servlet can run in a OC4J clustered environment, but they cannot take advantage of the failover capabilities. If an OC4J instance failed, it would either be restarted, or new connections would be redirected to another instance. In either case, a Forms user could restart their application, but any existing session information and uncommitted data would be lost.

One of the requirements of OC4J clustering is that your servlets are serializable. The Forms servlets communicate with the Forms Runtime Process (a C/C++ executable) using a socket connection. Since Java sockets are not serializable, Forms cannot take advantage of the transaction failover capabilities of OC4J clustering.

This principle applies to 11g Forms which uses WLS Clustering.  The architecture of Forms cannot take advantage of failover capabilities.

Summary:

Oracle Forms can use Real Application Clusters as a source of data but is limited in the ability to transparently failover the database.

Posted by Patrick Hamou on 2017:09:07 18:09:34

Return to Blog