Configurar o AC (Application Continuity) no Autonomous Database

Para configurar a Continuidade de Aplicativos, você deve ativar a continuidade do aplicativo para o serviço de banco de dados que seu aplicativo usa e configurar o tipo de failover e o timeout de drenagem. Além disso, você deve definir vários parâmetros de string de conexão que permitam alta disponibilidade.

Configurar Seu Serviço para Ativar a Continuidade de Aplicativos

Use DBMS_APP_CONT_ADMIN para ativar a Continuidade de Aplicativos ou a Continuidade Transparente de Aplicativos:

  • Continuidade do Aplicativo (AC): Defina essa opção de failover usando o procedimento DBMS_APP_CONT_ADMIN.ENABLE_AC. O procedimento ENABLE_AC utiliza três parâmetros: SERVICE NAME é o nome do serviço a ser alterado, FAILOVER_RESTORE, definido como LEVEL1 para selecionar a Continuidade do Aplicativo (AC) e REPLAY_INITIATION_TIMEOUT, é o timeout de repetição que especifica quantos segundos após o envio de uma solicitação para permitir que essa solicitação seja repetida.

    Por exemplo, como usuário ADMIN, para ativar a Continuidade do Aplicativo para o serviço TPURGENT:

    execute DBMS_APP_CONT_ADMIN.ENABLE_AC(
            'databaseid_tpurgent.adb.oraclecloud.com', 'LEVEL1', 600);
  • Continuidade Transparente de Aplicativos (TAC): Defina essa opção de failover usando o procedimento DBMS_APP_CONT_ADMIN.ENABLE_TAC. O procedimento ENABLE_TAC utiliza três parâmetros: SERVICE NAME é o nome do serviço a ser alterado, FAILOVER_RESTORE, definido como AUTO para selecionar TAC (Transparent Application Continuity, Continuidade Transparente de Aplicativos) e REPLAY_INITIATION_TIMEOUT é o timeout de repetição que especifica quantos segundos após o envio de uma solicitação para permitir que essa solicitação seja repetida.

    Por exemplo, como usuário ADMIN, para ativar a Continuidade Transparente de Aplicativos para o serviço TP com o timeout de repetição definido como 20 minutos:

    execute DBMS_APP_CONT_ADMIN.ENABLE_TAC(
            'databaseid_tp.adb.oraclecloud.com', 'AUTO', 1200);
    
  • Desativado: Desative o failover usando o procedimento DBMS_APP_CONT_ADMIN.DISABLE_FAILOVER().

    Por exemplo, como usuário ADMIN, para desativar o failover para o serviço TP:

    execute DBMS_APP_CONT_ADMIN.DISABLE_FAILOVER(
            'databaseid_tp.adb.oraclecloud.com');
    

Localizar o Parâmetro do Nome do Serviço para Continuidade do Aplicativo

Dependendo do seu tipo de carga de trabalho, use um comando semelhante ao seguinte para SELECT do DBA_SERVICES no seu banco de dados e identifique o serviço no qual você deseja ativar a Continuidade de Aplicativos:

  • Data Warehouse

    SELECT name, failover_type FROM DBA_SERVICES;
    NAME                                                    FAILOVER_TYPE
    ------------------------------------------------------- -------------
    nvt21_adb1_low.adb.oraclecloud.com                      
    nvt21_adb1_high.adb.oraclecloud.com                     
    nvt21_adb1_medium.adb.oraclecloud.com                   
  • Processamento de Transações ou Banco de Dados JSON

    SELECT name, failover_type FROM DBA_SERVICES;
    NAME                                                    FAILOVER_TYPE
    ------------------------------------------------------- ----------------
    nvt21_adb1_tp.adb.oraclecloud.com                        
    nvt21_adb1_tpurgent.adb.oraclecloud.com                 
    nvt21_adb1_low.adb.oraclecloud.com                       
    nvt21_adb1_high.adb.oraclecloud.com                      
    nvt21_adb1_medium.adb.oraclecloud.com                   

Observe que o FAILOVER_TYPE do serviço high não tem valor e indica que a Continuidade de Aplicativos está desativada.

Verificar se a Continuidade do Aplicativo está Ativada para um Serviço

Dependendo do seu tipo de carga de trabalho, verifique a saída da consulta em DBA_SERVICES para verificar se a Continuidade de Aplicativos está ativada.

  • Data Warehouse

    SELECT name, failover_type FROM DBA_SERVICES;
    NAME                                                    FAILOVER_TYPE
    ------------------------------------------------------- --------------
    nvt21_adb1_low.adb.oraclecloud.com                      
    nvt21_adb1_high.adb.oraclecloud.com                     AUTO
    nvt21_adb1_medium.adb.oraclecloud.com                   
  • Processamento de Transações ou Banco de Dados JSON

    SELECT name, failover_type FROM DBA_SERVICES;
    NAME                                                    FAILOVER_TYPE
    ------------------------------------------------------- --------------
    nvt21_adb1_tp.adb.oraclecloud.com                       
    nvt21_adb1_tpurgent.adb.oraclecloud.com                 TRANSACTION
    nvt21_adb1_low.adb.oraclecloud.com                       
    nvt21_adb1_high.adb.oraclecloud.com                     AUTO
    nvt21_adb1_medium.adb.oraclecloud.com                   

O valor FAILOVER_TYPE para o serviço high agora é AUTO, indicando que a Continuidade Transparente de Aplicativos (TAC) está ativada e o valor FAILOVER_TYPE para o serviço tpurgent agora é TRANSACTION, indicando que a Continuidade de Aplicativos (AC) está ativada.

Usar FAN (Fast Application Notification)

Ao estabelecer conexão com o Autonomous Database, o banco de dados Oracle configura automaticamente a FAN. Para implantações de aplicativos com o Autonomous Database, os eventos de FAN (Fast Application Notification) para interrupções não planejadas são direcionados ao CMAN (gerenciador de conexões) e nenhuma etapa de configuração de aplicativo cliente é necessária para usar o FAN.

O FAN é tratado automaticamente pelo driver do cliente e pelo CMAN (Autonomous Database Connection Manager):

  • Para os eventos de manutenção planeados, o FAN é enviado em banda, diretamente aos condutores. Isso requer que os aplicativos usem Oracle Pools ou TAC para atender aos limites da solicitação ou usem testes de conexão.
  • Os drivers do Oracle Database e do cliente Oracle se esgotam em testes de conexão e limites de solicitação.

Consulte Configuração do Cliente para Disponibilidade Contínua no Autonomous Database para obter mais informações.

Configurar String de Conexão para Alta Disponibilidade

Para manter a alta disponibilidade, a Oracle recomenda que você defina determinados parâmetros de string de conexão ao estabelecer conexão com o Oracle Autonomous Database.

Defina os parâmetros CONNECT_TIMEOUT, RETRY_DELAY, RETRY_COUNT e TRANSPORT_CONNECT_TIMEOUT na string de conexão quando você se conectar ao Oracle Autonomous Database. As strings de conexão incorporadas no arquivo tnsnames.ora fornecido pelo sistema Oracle são pré-configuradas com valores apropriados para a maioria dos aplicativos. Em alguns casos, dependendo das necessidades de seus aplicativos, talvez seja necessário alterar os valores pré-configurados de uma string de conexão.

Use este TNS para todos os clientes Oracle versão 12.2 ou mais recente:

alias =
(DESCRIPTION =
(CONNECT_TIMEOUT= 90)(RETRY_COUNT=50)
(RETRY_DELAY=3)(TRANSPORT_CONNECT_TIMEOUT=3)
(ADDRESS_LIST =
  (LOAD_BALANCE=on)
  (ADDRESS = (PROTOCOL = TCP)(HOST=scan-host)(PORT=1521)))
(CONNECT_DATA=(SERVICE_NAME = service-name)))

Use o seguinte para conexões JDBC que utilizam o driver Oracle versão 12.1 ou mais antigo:

alias =
(DESCRIPTION =
(CONNECT_TIMEOUT= 15)(RETRY_COUNT=50)
(RETRY_DELAY=3)
(ADDRESS_LIST =  
   (LOAD_BALANCE=on)  
   (ADDRESS = (PROTOCOL = TCP)(HOST=scan-host)(PORT=1521)))
 (CONNECT_DATA=(SERVICE_NAME = service-name)))

Observações para strings de conexão:

  • Para clientes JDBC e ODP, o tempo de espera da conexão do pool deve ser configurado para ser maior que o CONNECT_TIMEOUT na string de conexão.

  • Não use o Easy Connect Naming no cliente porque essas conexões não possuem recursos de alta disponibilidade.

Consulte Fazer Download das Credenciais do Cliente (Wallets) para obter informações sobre o arquivo tnsnames.ora.

Configurar Opções de Cliente Específicas do Driver

Dependendo do seu cliente e do seu driver, você precisa garantir que o cliente esteja configurado corretamente para usar o Application Continuity ao se conectar ao Autonomous Database

Configurar Driver JDBC Thin

Mostra detalhes para usar o Application Continuity com o Autonomous Database com um cliente usando o Driver JDBC Thin.

Se o seu aplicativo usar o Driver JDBC Thin, siga estas práticas recomendadas:

  1. Use o Cache de Instruções JDBC para Cobertura e Desempenho.

    Para obter melhor cobertura e desempenho, use o cache de instruções do driver JDBC no lugar de um cache de instruções do servidor de aplicativos. Isso permite que o driver saiba que as instruções estão fechadas e a memória deve ser liberada no final das solicitações.

    Para usar o cache de instruções JDBC, use a propriedade de conexão oracle.jdbc.implicitStatementCacheSize (OracleConnection.CONNECTION_PROPERTY_IMPLICIT_STATEMENT_CACHE_SIZE). O cache de instruções é por conexão. O valor do tamanho do cache corresponde ao seu número de open_cursors. Por exemplo:

    oracle.jdbc.implicitStatementCacheSize=nnn em que nnn geralmente está entre 10 e 100 e é igual ao número de cursores abertos que seu aplicativo mantém.

  2. Ajuste o Coletor de Lixo.

    Para muitos aplicativos, o ajuste padrão do Coletor de Lixo é suficiente. Para aplicativos que retornam e mantêm grandes volumes de dados, você pode usar valores mais altos, como 2 GB ou mais. Por exemplo:

    java -Xms3072m -Xmx3072m 

    É recomendável definir a alocação de memória para o tamanho de heap Java inicial (ms) e o tamanho máximo de heap (mx) para o mesmo valor. Isso impede o uso de recursos do sistema no crescimento e na redução do heap de memória.

  3. Ao usar o Universal Connection Pool (UCP), desative o Failover de Conexão Rápida. Por exemplo:

    PoolDataSource.setFastConnectionFailoverEnabled(false)

Configurar Driver do Oracle Call Interface (OCI)

Mostra detalhes para usar o Application Continuity com o Autonomous Database com um cliente usando o driver do OCI (Oracle Call Interface).

Se o aplicativo cliente usar o Driver do OCI (Oracle Call Interface), siga esta prática recomendada:

  • Substitua OCIStmtPrepare por OCIStmtPrepare2. A função OCIStmtPrepare() tornou-se obsoleta desde a versão 12.2. Todos os aplicativos devem usar OCIStmtPrepare2(). A TAC (Continuidade Transparente de Aplicativos) e a AC (Continuidade de Aplicativos) permitem OCIStmtPrepare, mas não repetem essa instrução.

Não configure servidores ONS em oraaccess.xml:

<ons>
   <servers> 
   <!—Do not enter any values --> 
   </servers> 
</ons>

Além disso, para o Autonomous Database Serverless, não configure a seção <fan>:

<fan>  
<!-- only possible values are "trace" or "error" -->  
    <subscription_failure_action>
   </subscription_failure_action>  
</fan>

Configurar Driver de Provedor Não Gerenciado do ODP.NET

Mostra detalhes para usar o Application Continuity com o Autonomous Database com um cliente usando o Driver do Provedor Não Gerenciado ODP.NET.

O driver do Provedor Não Gerenciado ODP.NET usa automaticamente a Continuidade de Aplicativos quando a Continuidade de Aplicativos está ativada no serviço de banco de dados que seu aplicativo usa para estabelecer conexão com o Autonomous Database.

Ao conectar um aplicativo ODP.NET ao seu Autonomous Database Serverless, não configure servidores ONS em oraaccess.xml:

<ons>
   <servers> 
   <!—Do not enter any values --> 
   </servers> 
</ons>