Modernisation Oracle Forms

Oracle Forms prend-il en charge la haute disponibilité et le basculement d'Oracle RDBMS (RAC / TAF)?

S'APPLIQUE À :

Oracle Forms - Version 6.0.8 et ultérieures
Les informations de ce document s'appliquent à toutes les plateformes.

PORTÉE

Cet article traite de la prise en charge d'Oracle Forms lorsqu'il est utilisé avec Real Application Clusters (RAC) et le basculement transparent de base de données (Transparent Database Failover). Il s'applique à toutes les versions de Forms et à toutes les versions de la base de données prises en charge par la version de Forms utilisée.

DÉTAILS

À propos du basculement et de la haute disponibilité d'Oracle Forms

Plusieurs questions ont été soulevées quant à la prise en charge par Oracle Forms de Real Application Clusters (RAC) et du basculement transparent de base de données.

Il faut noter une différence subtile. Oracle Forms prend en charge RAC comme source de données : si la version de la base de données est certifiée avec Oracle Forms, le fait que cette source de données fasse partie d'une grappe (cluster) ne devrait faire aucune différence.

En revanche, Forms ne permet pas qu'une défaillance fasse l'objet d'un basculement ("failover") entièrement transparent. La raison en est que les modifications et les informations d'état sont conservées par Forms. Toute défaillance de la base de données entraînerait le basculement vers une nouvelle base de données. Or, Forms est actuellement incapable de réconcilier l'état de la nouvelle base de données avec les informations
conservées dans Forms.

Questions fréquentes :

QUESTION :
Forms prend-il en charge le Transparent Application Failover (TAF) de RAC?

RÉPONSE :
Bien que Forms puisse se connecter à une base de données RAC ou à une grappe de bases de données (pourvu que la version soit certifiée avec Forms), il ne peut pas tirer parti des capacités TAF de la base de données. En effet, lorsqu'un nœud de la base de données tombe en panne, seules certaines informations sont sauvegardées ou basculées. L'état PL/SQL et les variables PL/SQL ne sont pas conservés en
cas de défaillance de la base de données. Comme Forms s'appuie sur l'état PL/SQL dans la base de données, il ne peut pas utiliser les capacités TAF de celle-ci. Il ne s'agit pas d'une limite de Forms : toute application qui utilise des variables PL/SQL dans la base de données
rencontrerait les mêmes problèmes.

Par conséquent, si un nœud de la base de données tombait en panne, il serait soit redémarré, soit les nouvelles connexions seraient redirigées vers un autre nœud. Dans les deux cas, l'utilisateur Forms pourrait relancer son application, mais toutes les informations de session existantes et les données non validées (commit) seraient perdues.

QUESTION :
Si j'exécute Forms 10gR2/11g dans un environnement OC4J en grappe et que je perds un nœud pendant la saisie d'un formulaire, les utilisateurs doivent-ils se reconnecter à l'autre nœud en perdant le travail effectué, ou le basculement est-il transparent?

RÉPONSE :
Le servlet Forms peut s'exécuter dans un environnement OC4J en grappe, mais il ne peut pas tirer parti des capacités de basculement. Si une instance OC4J tombait en panne, elle serait soit redémarrée, soit les nouvelles connexions seraient redirigées vers une autre instance. Dans les deux cas, l'utilisateur Forms pourrait relancer son application, mais toutes les informations de session existantes et les données non validées seraient perdues.

L'une des exigences de la mise en grappe OC4J est que les servlets soient sérialisables. Les servlets Forms communiquent avec le processus d'exécution Forms (Forms Runtime Process, un exécutable C/C++) au moyen d'une connexion socket. Comme les sockets Java ne sont pas sérialisables, Forms ne peut pas tirer parti des capacités de basculement des transactions de la mise en grappe OC4J.

Ce principe s'applique aussi à Forms 11g, qui utilise la mise en grappe WLS. L'architecture de Forms ne lui permet pas de tirer parti des capacités de basculement.

En résumé :

Oracle Forms peut utiliser Real Application Clusters comme source de données, mais sa capacité à basculer la base de données de manière transparente est limitée.