# Поддержка OCI8 Fast Application Notification (FAN)

Поддержка FAN обеспечивает быстрое переподключение в случае сбоев, что обеспечивает высокую доступность базы данных Oracle. Эта функциональность позволяет PHP OCI8 скрипту получать оповещения в случае если база данных или сервер, на котором она запущена, становятся недоступны. Без FAN, OCI8 может подвиснуть, пока не будет превышено время ожидания подключения и возвращена ошибка, что может занять несколько минут. Разрешение FAN в OCI8 позволяет приложениям определять такие ошибки и переподключаться к доступному экземпляру базы данных без ожидания ответа от недоступной базы.

Поддержка FAN доступна если клиентские библиотеки Oracle, с которыми собран PHP, и база данных Oracle имеют версию 10gR2 или более позднюю.

FAN даёт преимущества пользователям кластерной технологии Oracle (RAC), так как подключение к доступной базе данных может быть произведено мгновенно. Пользователи Oracle Data Guard с брокером могут наблюдать события FAN создаваемые при переходе резервной базы в режим основной. Отдельные установленные экземпляры базы данных будут посылать события FAN при своём перезапуске.

Для активных соединений, когда сервер или экземпляр базы становятся недоступны, будет возвращена ошибка соединения для текущей запущенной функции модуля OCI8. При последующем переподключении PHP-скрипта будет установлено соединение с работающим экземпляром базы данных. Также модуль OCI8 прозрачно зачищает все ожидающие соединения, затронутые падением сервера или базы данных, так что новые соединения будут нормально устанавливаться без оглядки на какие-либо проблемы с сервисом.

Если oci8.events установлено как `On`, то предполагается, что oci8.ping_interval установлено в значение -1, так как включение событий FAN предоставляет проактивное управление ожидающими соединениями.

Для включения поддержки FAN в PHP OCI8, соберите PHP OCI8 с библиотеками Oracle 10gR2 или более поздними и выполните следующие шаги:

- Под аккаунтом привилегированного администратора баз данных, с помощью программ типа SQL*Plus разрешите сервису базы отправлять оповещения FAN, к примеру:

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

- Добавьте в php.ini

          oci8.events = On

- Если приложение не обрабатывает ошибки соединения OCI8, модифицируйте его таким образом, чтобы обрабатывало и производило, например, переподключение и перезапуск запросов.
- Запустите приложение соединяясь с базой данных Oracle версии 10gR2 или выше.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open