Configurar Drivers para Disponibilidade Contínua
Configurar Driver JDBC Thin
-
Certifique-se de que todos os patches recomendados estejam aplicados no cliente. Consulte a observação do MOS Client Validation Matrix for Application Continuity (ID do Documento 2511448.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 deopen_cursors. Por exemplo:oracle.jdbc.implicitStatementCacheSize=nnnem quennngeralmente está entre 10 e 100 e é igual ao número de cursores abertos que seu aplicativo mantém. -
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.
-
Classes Concretas JDBC
Para aplicativos JDBC, a Oracle não oferece suporte a classes concretas
oracle.sqlBLOB, CLOB, BFILE, OPAQUE, ARRAY, STRUCT ou ORADATA obsoletas. (Consulte a nota do MOS 1364193.1, New JDBC Interfaces). UseORAchk -acchkno cliente para saber se um aplicativo é aprovado. A lista de classes concretas restritas para o Driver de Repetição JDBC é reduzida para o seguinte, começando com a versão 18c do driver JDBC thin da Oracle e mais recentes:oracle.sql.OPAQUE,oracle.sql.STRUCT,oracle.sql.ANYDATA -
Configurar FCF (Fast Connection Failover)
Isso corresponde à ativação da inscrição para eventos FAN.
Para drivers de cliente 12c e mais recentes:
- Use o URL recomendado para ons automático
- Verifique se o arquivo ons.jar (mais os jars WALLET opcionais, osdt_cert.jar, osdt_core.jar, oraclepki.jar) estão no CLASSPATH
- Defina a propriedade do pool ou do driver fastConnectionFailoverEnabled=true
- UCP (recomendado) ou pools de conexão de terceiros
- Abra a porta 6200 para ONS (6200 é a porta padrão; outra porta pode ter sido escolhida)
Para drivers de cliente anteriores à versão 12c, use os endereços fornecidos:
- Defina oracle.ons.nodes =XXX01:6200, XXX02:6200, XXX03:6200
Configurar Driver do OCI (Oracle Call Interface)
-
Certifique-se de que todos os patches recomendados estejam aplicados no cliente. Consulte a Observação do MOS Client Validation Matrix for Application Continuity (ID do Documento 251148.1).
-
Substitua
OCIStmtPrepareporOCIStmtPrepare2. A funçãoOCIStmtPrepare()tornou-se obsoleta desde a versão 12.2. Todos os aplicativos devem usarOCIStmtPrepare2(). TAC e AC permitemOCIStmtPrepare, mas não reproduzem esta instrução. -
Para usar o FAN para aplicativos baseados no OCI, faça o seguinte:
- aq_ha_notifications é predefinido nos serviços
- Use a String de Conexão recomendada para ons automático
- Defina auto_config, events e wallet_location (opcional) no arquivo oraaccess.xml, conforme descrito em Configurar Clientes para FAN Incluindo Wallets Opcionais.
- Vincular o aplicativo à biblioteca de threads do cliente S/O
- Abra a porta 6200 para ONS (6200 é a porta padrão; outra porta pode ter sido escolhida). Para drivers de cliente anteriores à versão 12c, use os endereços fornecidos em oraccess.xml.
Configurar Driver de Provedor Não Gerenciado do ODP.NET
-
Certifique-se de que todos os patches recomendados estejam aplicados no cliente. Consulte a Observação do MOS Client Validation Matrix for Application Continuity (ID do Documento 251148.1).
-
Para usar o FAN para aplicativos baseados no Oracle Call Interface, faça o seguinte:
- aq_ha_notifications é predefinido nos serviços
- Use a String de Conexão recomendada para ons automático
- Defina onsConfig e wallet_location (opcional) no oraaccess.xml, conforme descrito em Configurar Clientes para FAN Incluindo Wallets Opcionais.
- Abra a porta 6200 para ONS (6200 é a porta padrão; outra porta pode ter sido escolhida)
- Defina o FAN, na string de conexão:
"user id=oracle; password=oracle; data source=HA; pooling=true; HA events=true;". - (opcional) Defina o Balanceamento de Carga de Runtime, também na string de conexão:
"user id=oracle; password=oracle; data source=HA; pooling=true; HA events=true; load balancing=true;".
Ativar Atributos de Serviço para Failover
A Continuidade Transparente de Aplicativos é ativada por padrão para os serviços predefinidos tp_tls, tp, tpurgent_tls e tpurgent; portanto, você não precisará fazer nada se estiver usando um deles. Além disso, para eles, o valor DEFAULT para FAILOVER_RESTORE é AUTO.
Você pode alterar o tipo de failover oferecido em seu serviço usando o pacote DBMS_APP_CONT_ADMIN. Use essa API para ativar a Continuidade de Aplicativos, a Continuidade Transparente de Aplicativos ou o TAF (Transparent Application Failover), ou para desativar o failover completamente. As novas sessões usarão o novo tipo de failover. Você deve ser um administrador para usar esses procedimentos.
Para ativar a Continuidade Transparente de Aplicativos para um serviço:
execute DBMS_APP_CONT_ADMIN.ENABLE_TAC('HIGH');Para ativar a Continuidade de Aplicativos para um serviço:
execute DBMS_APP_CONT_ADMIN.ENABLE_AC('TPURGENT');Para ativar a instrução TAF SELECT para um serviço:
execute DBMS_APP_CONT_ADMIN.ENABLE_TAF('LOW');Para ativar a instrução TAF BASIC para um serviço:
execute DBMS_APP_CONT_ADMIN.ENABLE_TAF('MEDIUM', 'SESSION');Para desativar o failover para um serviço:
execute DBMS_APP_CONT_ADMIN.DISABLE_FAILOVER('HIGH');Se quiser usar o TAF sem modificar os serviços, use a configuração mais antiga do cliente para o TAF em sua string de conexão:
(FAILOVER_MODE=(TYPE=select)(METHOD=basic)(OVERRIDE=TRUE))
Configurar Atributos de Serviço para Manutenção
Quando a manutenção planejada começar, as sessões que precisam ser drenadas serão marcadas para serem drenadas. As sessões ociosas são liberadas gradualmente. As sessões ativas são drenadas quando o trabalho executado nessa sessão é concluído. A drenagem de sessões está em amplo uso com os pools de conexão e camadas intermediárias da Oracle configurados para o FAN (Fast Application Notification). A partir do Oracle Database 18c, o próprio banco de dados drena sessões quando os bancos de dados são interrompidos ou realocados. A drenagem é sempre a melhor solução para ocultar a manutenção planejada.
Soluções de failover, como Continuidade do Aplicativo, são o fallback quando o trabalho não é drenado no tempo alocado.
Um timeout de drenagem, em segundos, e uma opção de interrupção podem ser definidos em um serviço usando o pacote DBMS_APP_CONT_ADMIN. Você deve ser um administrador para usar esses procedimentos.
Para ajustar o timeout de drenagem para 600 segundos e definir a opção de interrupção como IMMEDIATE:
execute DBMS_APP_CONT_ADMIN.SET_DRAINING('HIGH', 600, 'IMMEDIATE' );Para ajustar somente o timeout de drenagem:
execute DBMS_APP_CONT_ADMIN.SET_DRAINING('TPURGENT', 600);Configurar Clientes para FAN Incluindo Wallets Opcionais
A autenticação baseada na wallet é uma opção para o FAN ao usar o Autonomous AI Database. Use a mesma wallet da conexão TNS.
Para Aplicativos JDBC
-
Certifique-se de que os seguintes arquivos jar estejam presentes no
CLASSPATHdo aplicativo:(ons.jar, osdt_cert.jar, osdt_core.jar, oraclepki.jar)
-
Especifique a wallet para FAN de uma das seguintes maneiras:
-
Para usar o ONS configurado automaticamente com wallets, defina as seguintes propriedades do sistema Java:
"-Doracle.ons.walletfile=/replace this with host path/onswallet"
"-Doracle.ons.walletpassword=myONSWalletPassword"
Observe que elas não podem ser definidas por pool ou por conexão.
-
Para definir explicitamente o ONS, faça o seguinte:
-
Defina explicitamente o uso de um arquivo de Configuração XML UCP. Por exemplo:
<!--?xml version="1.0" encoding="UTF-8"? --> <ucp-properties> <connection-pool connection-pool-name="UCP_pool1" user="dbuser" password="dbuserpasswd" connection-factory-class-name="oracle.jdbc.pool.OracleDataSource" initial-pool-size="10" min-pool-size="5" max-pool-size="15" validate-connection-on-borrow="true" connection-wait-timeout="900" max-connections-per-service="50" sql-for-validate-connection="select 1 from dual" url="jdbc:oracle:thin:@(DESCRIPTION =(CONNECT_TIMEOUT= 120)(RETRY_COUNT=20) (RETRY_DELAY=3) (TRANSPORT_CONNECT_TIMEOUT=3)(ADDRESS_LIST =(LOAD_BALANCE=on)(ADDRESS = (PROTOCOL = TCP)(HOST=primary-scan)(PORT=1521)))(ADDRESS_LIST =(LOAD_BALANCE=on)(ADDRESS = (PROTOCOL = TCP)(HOST=standby-scan)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME = MY-SERVICE)))" fastConnectionFailoverEnabled="true" onsConfiguration="nodes=primary-scanhost:6200,secondary-scanhost:6200\nwalletfile=/replace_with_host_path/onswallet\nwalletpassword=myWalletPassword"> </connection-pool> </ucp-properties> -
Defina programaticamente de dentro do UCP, usando uma chamada para setONSConfiguration(), por exemplo:
pds.setONSConfiguration("nodes=primary-scanhost:6200,secondary-scanhost:6200\nwalletfile=/replace_this_with_host_path/onswallet\nwalletpassword=myWalletPassword");
-
-
Para Aplicativos do Oracle Call Interface (OCI) Usando o Oracle Driver Versão 12.2 ou mais recente
Adicione o seguinte à seção <default_parameters> do arquivo oraaccess.xml:
<default_parameters>
(Other settings may be present in this section)
<events>
true
</events>
<ons>
<auto_config>true</auto_config>
<wallet_location>/my_path/onswallet</wallet_location>
</ons>
</default_parameters>O caminho <wallet_location> deve ser o nome do diretório que contém a wallet.
Outros parâmetros podem ser definidos na seção ons de oraaccess.xml, incluindo <hosts>, <max_connections> e <subscription_wait_timeout>.
Os drivers que oferecem suporte a controles de configuração de evento nativo podem omitir a seção <events> e usar a definição do driver.
Por padrão, as conexões serão estabelecidas com o banco de dados mesmo que o ONS falhe. Se você preferir que as conexões falhem nesse cenário, poderá adicionar uma seção ao mesmo nível de <events> e <ons>:
<fan>
<subscription_failure_action>
error
</subscription_failure_action>
</fan> Coloque o arquivo oraaccess.xml no mesmo diretório dos arquivos de rede tnsnames.ora e sqlnet.ora. Por exemplo, ao usar o Oracle Instant Client, esses arquivos podem estar no diretório padrão network/admin. Como alternativa, todos os arquivos de configuração de rede podem ser colocados em outro diretório acessível. Em seguida, defina a variável de ambiente TNS_ADMIN com esse nome de diretório.
Provedor Gerenciado ODP.Net
Use o arquivo application.config para especificar a configuração do ONS e a localização da wallet. Por exemplo:
<oracle.manageddataaccess.client>
<version number="*">
<onsConfig mode="remote">
<settings>
<setting name="Protocol" value="TCPS" />
<setting name="WALLET_LOCATION" value="C:\myPath\ONS_SSLWallet" />
</settings>
<ons database="atp01db">
<add name="nodeList" value="racNode1:6205,racNode2:6205,racNode3:6205" />
</ons>
</onsConfig>
</version>
</oracle.manageddataaccess.client>