Configurar o AC (Application Continuity) no Autonomous Database

Para configurar o AC (Application Continuity), ative a continuidade de aplicativos para o serviço de banco de dados que o seu aplicativo usa e configure o tipo de failover e o timeout de drenagem. Além disso, defina vários parâmetros de string de conexão que permitam alta disponibilidade.

Configurar o Seu Serviço para Ativar o Application Continuity

Use DBMS_APP_CONT_ADMIN para ativar o Application Continuity ou a Continuidade Transparente de Aplicativos:

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

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

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

    Por exemplo, como usuário ADMIN, para ativar a Continuidade Transparente de Aplicativos para o serviço TP com o timeout de reproduçã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 de Nome do Serviço para o AC (Application Continuity)

Dependendo do seu tipo de carga de trabalho, use um comando semelhante ao seguinte para SELECT em DBA_SERVICES no seu banco de dados e identifique o serviço no qual você deseja ativar o 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                   
  • Transaction Processing 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 para o serviço high não tem valor e indica que o Application Continuity está desativado.

Verificar se o Application Continuity está Ativado para um Serviço

Dependendo do seu tipo de carga de trabalho, verifique a saída da consulta em DBA_SERVICES para confirmar se o Application Continuity está ativado.

  • 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                   
  • Transaction Processing 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 do serviço high agora é AUTO, indicando que a Continuidade Transparente de Aplicativos (TAC) está ativada e o valor FAILOVER_TYPE do serviço tpurgent agora é TRANSACTION, indicando que o AC (Application Continuity) está ativado.

Usar FAN (Fast Application Notification)

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

O mecanismo FAN é tratado automaticamente para você pelo driver cliente e pelo CMAN (Autonomous Database Connection Manager):

  • Para eventos de manutenção planejados, o FAN é enviado dentro da faixa, diretamente para os drivers. Isso exige que os aplicativos usem Pools Oracle ou TAC para limites de solicitações ou usem testes de conexão.
  • Os drivers clientes Oracle Database e Oracle drenam os testes de conexão e os limites de solicitação.

Consulte Configuração do Cliente para Disponibilidade Continuada 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 ao estabelecer conexão com o Oracle Autonomous Database. As strings de conexão incorporadas no arquivo tnsnames.ora fornecido pela Oracle são pré-configuradas com valores apropriados para a maioria dos aplicativos. Em alguns casos, dependendo das necessidades dos aplicativos, talvez você precise 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 no pool deve ser configurado como maior que o CONNECT_TIMEOUT na string de conexão.

  • Não use a Nomeação Easy Connect no cliente porque essas conexões não têm recursos de alta disponibilidade.

Consulte 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, certifique-se de que o cliente esteja configurado corretamente para usar o AC (Application Continuity) quando você estabelecer conexão com o Autonomous Database

Configurar Driver JDBC Thin

Mostra os detalhes de uso do Continuidade de Aplicativos com o Autonomous Database, com um cliente que usa 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 ao driver saber que as instruções estão fechadas e que a memória 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 UCP (Universal Connection Pool), desative o Failover de Conexão Rápida. Por exemplo:

    PoolDataSource.setFastConnectionFailoverEnabled(false)

Configurar o Driver do OCI (Oracle Call Interface)

Mostra os detalhes de uso do Continuidade de Aplicativos com o Autonomous Database, com um cliente que usa 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 Continuidade Transparente de Aplicativos (TAC) e o Application Continuity (AC) permitem OCIStmtPrepare, mas não reproduzem 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 os detalhes de uso do AC (Application Continuity) com o Autonomous Database, com um cliente que usa o Driver do Provedor Não Gerenciado ODP.NET.

O driver do Provedor Não Gerenciado ODP.NET usa automaticamente o AC (Application Continuity) quando ele está ativado 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 Autonomous Database Serverless, não configure servidores ONS em oraaccess.xml:

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