<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/book.oci8.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'oci8.fan.php',
    1 => 'Поддержка OCI8 Fast Application Notification (FAN)',
    2 => 'Поддержка OCI8 Fast Application Notification (FAN)',
  ),
  'up' => 
  array (
    0 => 'book.oci8.php',
    1 => 'OCI8',
  ),
  'prev' => 
  array (
    0 => 'oci8.connection.php',
    1 => 'Работа с соединениями OCI8 и Connection Pooling',
  ),
  'next' => 
  array (
    0 => 'oci8.taf.php',
    1 => 'Поддержка прозрачного для приложений восстановления после отказа (Transparent Application Failover или TAF) для OCI8',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'reference/oci8/fan.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="oci8.fan" class="chapter">
 <h1 class="title">Поддержка OCI8 Fast Application Notification (FAN)</h1>

  <p class="para">
   Поддержка FAN обеспечивает быстрое переподключение в случае сбоев,
   что обеспечивает высокую доступность базы данных Oracle.
   Эта функциональность позволяет PHP OCI8 скрипту получать оповещения
   в случае если база данных или сервер, на котором она запущена, становятся
   недоступны. Без FAN, OCI8 может подвиснуть, пока не будет превышено время ожидания
   подключения и возвращена ошибка, что может занять несколько минут.
   Разрешение FAN в OCI8 позволяет приложениям определять такие ошибки и
   переподключаться к доступному экземпляру базы данных без ожидания
   ответа от недоступной базы.
  </p>
  <p class="para">
   Поддержка FAN доступна если клиентские библиотеки Oracle, с которыми
   собран PHP, и база данных Oracle имеют версию 10gR2 или более позднюю.
  </p>
  <p class="para">
   FAN даёт преимущества пользователям кластерной технологии Oracle (RAC),
   так как подключение к доступной базе данных может быть произведено мгновенно.
   Пользователи Oracle Data Guard с брокером могут наблюдать события FAN
   создаваемые при переходе резервной базы в режим основной.
   Отдельные установленные экземпляры базы данных будут
   посылать события FAN при своём перезапуске.
  </p>
  <p class="para">
   Для активных соединений, когда сервер или экземпляр базы становятся
   недоступны, будет возвращена ошибка соединения для текущей
   запущенной функции модуля OCI8. При последующем переподключении
   PHP-скрипта будет установлено соединение с работающим экземпляром
   базы данных. Также модуль OCI8 прозрачно зачищает все ожидающие
   соединения, затронутые падением сервера или базы данных, так что
   новые соединения будут нормально устанавливаться без оглядки на какие-либо
   проблемы с сервисом.
  </p>
  <p class="para">
   Если <a href="oci8.configuration.php#ini.oci8.events" class="link">oci8.events</a> установлено как
   <code class="literal">On</code>, то предполагается, что
   <a href="oci8.configuration.php#ini.oci8.ping-interval" class="link">oci8.ping_interval</a> установлено
   в значение -1, так как включение событий FAN предоставляет
   проактивное управление ожидающими соединениями.
  </p>
  <p class="para">
   Для включения поддержки FAN в PHP OCI8, соберите PHP OCI8 с библиотеками
   Oracle 10gR2 или более поздними и выполните следующие шаги:
  </p>
  <p class="para">
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      Под аккаунтом привилегированного администратора баз данных, с помощью
      программ типа SQL*Plus разрешите сервису базы отправлять оповещения FAN,
      к примеру:
     </span>
     <p class="para">
      <div class="informalexample">
       <div class="example-contents screen">
<div class="cdata"><pre>
    SQL&gt; execute dbms_service.modify_service(
                   SERVICE_NAME        =&gt; &#039;sales&#039;,
                   AQ_HA_NOTIFICATIONS =&gt; TRUE);
</pre></div>
       </div>
      </div>
     </p>
    </li>
    <li class="listitem">
     <span class="simpara">
      Добавьте в php.ini
     </span>
     <p class="para">
      <div class="informalexample">
       <div class="example-contents screen">
<div class="cdata"><pre>
    oci8.events = On
</pre></div>
       </div>
      </div>
     </p>
    </li>
    <li class="listitem">
     <span class="simpara">
      Если приложение не обрабатывает ошибки соединения OCI8,
      модифицируйте его таким образом, чтобы обрабатывало и производило,
      например, переподключение и перезапуск запросов.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Запустите приложение соединяясь с базой данных Oracle версии 10gR2 или выше.
     </span>
    </li>
   </ul>
  </p>
 </div>
<?php manual_footer($setup); ?>