<?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 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'oci8.fan.php',
    1 => 'Suporte &agrave; Notifica&ccedil;&atilde;o R&aacute;pida de Aplica&ccedil;&atilde;o (FAN) do OCI8',
    2 => 'Suporte &agrave; Notifica&ccedil;&atilde;o R&aacute;pida de Aplica&ccedil;&atilde;o (FAN) do OCI8',
  ),
  'up' => 
  array (
    0 => 'book.oci8.php',
    1 => 'OCI8',
  ),
  'prev' => 
  array (
    0 => 'oci8.connection.php',
    1 => 'Manipula&ccedil;&atilde;o e conjunto de conex&otilde;es do OCI8',
  ),
  'next' => 
  array (
    0 => 'oci8.taf.php',
    1 => 'Suporte ao OCI8 Transparent Application Failover (TAF)',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'pt_BR',
    '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">Suporte à Notificação Rápida de Aplicação (FAN) do OCI8</h1>

  <p class="para">
   O suporte ao FAN oferece recuperação rápida de falhas de conexão, um recurso de alta disponibilidade
   do banco de dados Oracle. Isso permite que scripts PHP OCI8 sejam notificados quando uma
   máquina de banco de dados ou instância de banco de dados ficar indisponível. Sem o
   FAN, o OCI8 pode travar até que ocorra um tempo limite de TCP e um erro seja
   retornado, o que pode levar vários minutos. A ativação do FAN no OCI8 pode
   permitir que as aplicações detectem erros e se reconectem a uma instância
   de banco de dados disponível sem que o usuário da web perceba uma interrupção.
  </p>
  <p class="para">
   O suporte ao FAN está disponível quando as bibliotecas cliente Oracle com as quais o PHP
   se vincula e o banco de dados Oracle são da versão 10gR2 ou posterior.
  </p>
  <p class="para">
   O FAN beneficia os usuários da tecnologia de cluster (RAC) da Oracle porque
   as conexões com as instâncias de banco de dados sobreviventes podem ser feitas
   imediatamente. Os usuários do Data Guard da Oracle com um mediador verão os eventos
   FAN gerados quando o banco de dados de reserva ficar online. Os bancos de dados
   autônomos enviarão eventos FAN quando o banco de dados for reiniciado.
  </p>
  <p class="para">
   Para conexões ativas, quando uma máquina ou instância de banco de dados ficar
   indisponível, um erro de falha de conexão será retornado pela
   função da extensão OCI8 que está sendo chamada no momento. Em uma reconexão
   subsequente do script PHP, será estabelecida uma conexão com uma instância de
   banco de dados sobrevivente. A extensão OCI8 também
   limpa de forma transparente quaisquer conexões ociosas afetadas por uma falha de máquina
   ou de instância de banco de dados, para que as chamadas de conexão do PHP estabeleçam uma
   nova conexão sem que o script esteja ciente de qualquer interrupção
   do serviço.
  </p>
  <p class="para">
   Quando <a href="oci8.configuration.php#ini.oci8.events" class="link">oci8.events</a>
   for igual a <code class="literal">On</code>, a sugestão é
   definir <a href="oci8.configuration.php#ini.oci8.ping-interval" class="link">oci8.ping_interval</a>
   para -1 para desabilitar o ping, já que habilitar eventos FAN fornece
   um gerenciamento proativo de conexões ociosas que se tornaram inválidas
   por uma interrupção de serviço.
  </p>
  <p class="para">
   Para ativar o suporte FAN no PHP OCI8, compile o PHP OCI8 com bibliotecas Oracle 10gR2
   ou posteriores e siga estas etapas:
  </p>
  <p class="para">
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      Como administrador de banco de dados privilegiado, use um programa como
      o SQL*Plus para permitir que o serviço de banco de dados poste
      eventos FAN, por exemplo:
     </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">
      Edite o php.ini e adicione
     </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">
      Se a aplicação ainda não lidar com condições de erro
      OCI8, modifique-a para detectar falhas e tomar as medidas
      apropriadas. Isso pode incluir a reconexão e a reexecução de
      instruções.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Execute a aplicação conectando-se ao Oracle Database 10gR2 ou posterior.
     </span>
    </li>
   </ul>
  </p>
</div>
<?php manual_footer($setup); ?>