# OCI8 Fast Application Notification (FAN) Support

## Soporte para Fast Application Notification (FAN)

El soporte para FAN proporciona tolerancia a fallos rápida para conexiones, una característica de alta disponibilidad de Oracle Database. Permite que los scripts de OCI8 para PHP sean informados cuando una máquina o una instancia de una base de datos no esté disponible. Sin FAN, OCI8 puede suspenderse hasta que se agote el tiempo de espera de TCP, lo que devolvería un error que podría llevar varios minutos en emitirse. La habilitación de FAN en OCI8 puede hacer que las aplicaciones detecten errores y se reconecten a una instancia de bases de datos disponbile sin que el usuario web note ningún corte.

El soporte para FAN está disponible cuando las bibliotecas cliente de Oracle que PHP vincule con Oracle Database sean la versión 10gR2 o posterior.

FAN beneficia a los usuarios de la tecnología del uso de clúster de Oracle (RAC) debido a que se pueden realizar de forma inmediata conexiones a instancias de bases de datos supervivientes. Los usarios de Oracle's Data Guard con un agente verán los eventos de FAN generados cuando una base de datos en espera vuelva a estar en línea. Las bases de datos independientes enviarán eventos FAN cuando se reinicien.

Para conexiones activas, cuando una máquina o una instancia de bases de datos no esté disponible, la función de la extensión OCI8 que está siendo llamada devolverá un error de fallo de conexión. En una reconexión subsiguiente de un script de PHP, se establecerá una conexión a una instancia de una base de datos superviviente. La extensión OCI8 también limpia de forma transparente cualquier conexión inactiva afectafa por un fallo de una máquina o instancia de base de datos, por lo que la conexión de PHP establecerá una conexión fresca sin que el script note ninguna interrupción del servicio.

Cuando el valor de oci8.events es `On`, se sugiere establecer oci8.ping_interval a -1 para deshabilitar la comprobación de la conexión, ya que al habilitar los eventos de FAN se proporciona una gestión de conexiones proactivas de conexiones inactivas invalidadas por la interrupción de un servicio.

Para habilitar el soporte de FAN en PHP, construya PHP con las bibliotecas 10gR2 o posteriores de Oracle y siga estos pasos:

- Como administrador de bases de datos con privilegios, use un programa como SQL*Plus para habilitar el servicio de bases de datos para enviar enventos FAN, por ejemplo:

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

- Edite php.ini y agregue

          oci8.events = On

- Si la aplicación aún no gestiona las condiciones de error de OCI8, modifíquela para que detecte fallos y tome las acciones apropiadas. Esto prodría incluir la reconexión y la reejecución de sentencias.
- Ejecute la aplicación, conecte a una base de datos de Oracle 10gR2 o posterior.