Support de FAN (Fast Application Notification : Application de notification Rapide) OCI8

Le support de FAN fournit un basculement de connexion rapide, une fonctionnalité de haute disponibilité pour la base de données Oracle. Il permet aux scripts PHP OCI8 d'être notifiés lorsqu'une machine de base de données ou une instance de base de données devient non disponible. Sans FAN, OCI8 peut se figer en cas d'atteinte du délai maximal TCP, et une erreur est retournée, ce qui peut prendre plusieurs minutes. L'activation de FAN en OCI8 permet aux applications de détecter les erreurs et de se re-connecter à une instance de connexion disponible sans que le serveur Web n'est besoin d'en connaître.

Le support de FAN est disponible lorsque les bibliothèques clientes Oracle liées à PHP et la base de données Oracle sont en version 10gR2 ou supérieures.

FAN fait bénéficier aux utilisateurs de la technologie de cluster Oracle (RAC) car les connexions survivantes aux instances de base de données peuvent être effectuées immédiatement. Les utilisateurs de Data Guard Oracle avec un broker, vont voir les événements FAN générés lorsqu'une base de données passe en ligne. Les bases de données qui ne font pas parties de cluster vont envoyer des événements FAN lorsque la base de données redémarre.

Pour les connexions actives, lorsqu'une machine ou une instance de base de données devient indisponibles, une erreur de connexion sera retournée par la fonction de l'extension OCI8 appelée. Lors d'une reconnexion d'un script sous-jacent PHP, une connexion à une instance de base de données survivantes sera établie. L'extension OCI8 va également, de façon transparente, nettoyer toutes les connexions inactives affectées par une machine de base de données ou une instance en échec, aussi, les appels de connexion PHP vont établir une nouvelle connexion sans que le script n'en connaisse, faisant ainsi aucune interruption de service.

Lorsque oci8.events vaut On, il est suggéré de définir oci8.ping_interval à -1 pour désactiver le ping, sachant que l'activation des événements FAN fournit un gestionnaire de connexions pro-actif des connexions inactives devenues invalides par une interruption de service.

Pour activer le support FAN en PHP OCI8, compilez PHP OCI8 avec les bibliothèques Oracle 10gR2 ou supérieures, puis, suivez ces étapes :

  • Avec les privilèges d'administrateur de la base de données, utilisez un programme comme SQL*Plus pour activer le service de base de données pour poster les événements FAN ; par exemple :

        SQL> execute dbms_service.modify_service(
                       SERVICE_NAME        => 'sales',
                       AQ_HA_NOTIFICATIONS => TRUE);
    

  • Editez le fichier php.ini et ajoutez :

        oci8.events = On
    

  • Si l'application ne gère toujours pas les conditions d'erreur OCI8, modifiez le pour détecter les échecs. Ceci peut nécessité la re-connexion et la ré-exécution des requêtes.
  • Exécutez l'application, connectez-vous à la base de données Oracle 10gR2 ou supérieures.