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=nnn
em quennn
geralmente 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.sql
BLOB, CLOB, BFILE, OPAQUE, ARRAY, STRUCT ou ORADATA obsoletas. (Consulte a nota do MOS 1364193.1, New JDBC Interfaces). UseORAchk -acchk
no 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
OCIStmtPrepare
porOCIStmtPrepare2
. 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 em wallet é uma opção para FAN ao usar o Autonomous Database. Use a mesma wallet da conexão TNS.
Para Aplicativos JDBC
-
Certifique-se de que os seguintes arquivos jar estejam presentes no
CLASSPATH
do 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>