Configuration de pilotes pour la disponibilité continue
Configuration du pilote JDBC Thin
-
Assurez-vous que tous les patches recommandés sont appliqués au client. Reportez-vous à la note MOS Matrice de validation client pour la continuité d'application (ID de document 2511448.1).
-
Utilisation du cache d'instructions JDBC pour la couverture et les performances
Pour une couverture et des performances optimales, utilisez le cache d'instructions du pilote JDBC à la place du cache d'instructions du serveur d'applications. Cela permet au pilote de savoir que les instructions sont fermées et que la mémoire est libérée à la fin des demandes.
Pour utiliser le cache d'instructions JDBC, employez la propriété de connexion
oracle.jdbc.implicitStatementCacheSize
(OracleConnection.CONNECTION_PROPERTY_IMPLICIT_STATEMENT_CACHE_SIZE)
. Le cache d'instructions s'applique par connexion. La valeur de la taille du cache correspond au nombre d'élémentsopen_cursors
. Exemple :oracle.jdbc.implicitStatementCacheSize=nnn
, oùnnn
est généralement compris entre 10 et 100, et est égal au nombre de curseurs ouverts gérés par l'application. -
Réglage du processus Garbage Collector
Pour de nombreuses applications, le réglage par défaut du processus Garbage Collector est suffisant. Pour les applications qui renvoient et conservent de grandes quantités de données, vous pouvez utiliser des valeurs plus élevées, telles que 2 Go ou plus. Exemple :
java -Xms3072m -Xmx3072m
Il est recommandé de définir l'allocation de mémoire pour la taille initiale de portion de mémoire Java (ms) et la taille maximale de portion de mémoire (mx) sur la même valeur. Cela empêche l'utilisation des ressources système lors de la croissance et de la réduction de la portion de mémoire.
-
Classes concrètes JDBC
Pour les applications JDBC, Oracle ne prend pas en charge les classes concrètes
oracle.sql
en phase d'abandon BLOB, CLOB, BFILE, OPAQUE, ARRAY, STRUCT et ORADATA. (Reportez-vous à la note MOS 1364193.1 Nouvelles interfaces JDBC.) UtilisezORAchk -acchk
sur le client pour savoir si une application est compatible. La liste des classes concrètes restreintes pour le pilote de réexécution JDBC se réduit à ce qui suit à partir du pilote JDBC Oracle Thin version 18c ou ultérieure :oracle.sql.OPAQUE
,oracle.sql.STRUCT
,oracle.sql.ANYDATA
-
Configuration de la fonction Fast Connection Failover (FCF)
Elle correspond à l'activation de l'abonnement aux événements FAN.
Pour les pilotes client 12c et versions ultérieures :
- Utilisez l'URL recommandée pour la saisie automatique des informations ONS.
- Vérifiez la présence du fichier ons.jar (plus fichiers JAR WALLET, osdt_cert.jar, osdt_core.jar et oraclepki.jar facultatifs) dans la variable d'environnement CLASSPATH.
- Définissez la propriété de pool ou de pilote fastConnectionFailoverEnabled=true.
- Utilisez des pools de connexions UCP (recommandé) ou tiers.
- Ouvrez le port 6200 pour ONS (le port 6200 est le port par défaut, un autre port a pu être choisi).
Pour les pilotes client antérieurs à la version 12c, utilisez les adresses fournies :
- Définissez oracle.ons.nodes =XXX01:6200, XXX02:6200, XXX03:6200.
Configuration du pilote OCI (Oracle Call Interface)
-
Assurez-vous que tous les patches recommandés sont appliqués au client. Reportez-vous à la note MOS Matrice de validation client pour la continuité d'application (ID de document 2511448.1).
-
Remplacez
OCIStmtPrepare
parOCIStmtPrepare2
.OCIStmtPrepare()
est en phase d'abandon depuis la version 12.2. Toutes les applications doivent utiliserOCIStmtPrepare2()
. Les continuités TAC et AC autorisentOCIStmtPrepare
mais ne réexécutent pas cette instruction. -
Afin d'utiliser la fonction FAN pour les applications basées sur OCI, effectuez les opérations suivantes :
- aq_ha_notifications est prédéfini sur les services.
- Utilisez la chaîne de connexion recommandée pour la saisie automatique des informations ONS.
- Définissez auto_config, events et wallet_location (facultatif) dans oraaccess.xml, tel que décrit dans Configuration de clients pour la fonction FAN, y compris de portefeuilles facultatifs.
- Liez l'application à la bibliothèque de threads client de système d'exploitation.
- Ouvrez le port 6200 pour ONS (le port 6200 est le port par défaut, un autre port a pu être choisi). Pour les pilotes client antérieurs à la version 12c, utilisez les adresses fournies dans oraccess.xml.
Configuration du pilote de fournisseur non géré ODP.NET
-
Assurez-vous que tous les patches recommandés sont appliqués au client. Reportez-vous à la note MOS Matrice de validation client pour la continuité d'application (ID de document 2511448.1).
-
Afin d'utiliser la fonction FAN pour les applications basées sur Oracle Call Interface, effectuez les opérations suivantes :
- aq_ha_notifications est prédéfini sur les services.
- Utilisez la chaîne de connexion recommandée pour la saisie automatique des informations ONS.
- Définissez onsConfig et wallet_location (facultatif) dans oraaccess.xml, tel que décrit dans Configuration de clients pour la fonction FAN, y compris de portefeuilles facultatifs.
- Ouvrez le port 6200 pour ONS (le port 6200 est le port par défaut, un autre port a pu être choisi).
- Définissez la fonction FAN, dans la chaîne de connexion :
"user id=oracle; password=oracle; data source=HA; pooling=true; HA events=true;"
. - (Facultatif) Définissez l'équilibrage de charge d'exécution, également dans la chaîne de connexion :
"user id=oracle; password=oracle; data source=HA; pooling=true; HA events=true; load balancing=true;"
.
Activation des attributs de service pour le basculement en cas d'incident
La continuité d'application transparente est activée par défaut pour les services prédéfinis tp_tls
, tp
, tpurgent_tls
et tpurgent
. Vous n'avez donc rien à faire si vous en utilisez un. Par ailleurs, pour eux, la valeur DEFAULT
pour FAILOVER_RESTORE
est AUTO
.
Vous pouvez modifier le type de basculement offert sur le service à l'aide du package DBMS_APP_CONT_ADMIN
. Utilisez cette API pour activer la continuité d'application, la continuité d'application transparente ou la gestion transparente des incidents (TAF), ou pour désactiver totalement le basculement. Les nouvelles sessions utiliseront le nouveau type de basculement. Vous devez être un administrateur pour appliquer ces procédures.
Pour activer la continuité d'application transparente sur un service, utilisez la commande suivante :
execute DBMS_APP_CONT_ADMIN.ENABLE_TAC('HIGH');
Pour activer la continuité d'application sur un service, utilisez la commande suivante :
execute DBMS_APP_CONT_ADMIN.ENABLE_AC('TPURGENT');
Pour activer TAF SELECT sur un service, utilisez la commande suivante :
execute DBMS_APP_CONT_ADMIN.ENABLE_TAF('LOW');
Pour activer TAF BASIC sur un service, utilisez la commande suivante :
execute DBMS_APP_CONT_ADMIN.ENABLE_TAF('MEDIUM', 'SESSION');
Pour désactiver le basculement sur un service, utilisez la commande suivante :
execute DBMS_APP_CONT_ADMIN.DISABLE_FAILOVER('HIGH');
Si vous voulez utiliser TAF sans modifier les services, appliquez l'ancienne configuration côté client pour TAF dans votre chaîne de connexion :
(FAILOVER_MODE=(TYPE=select)(METHOD=basic)(OVERRIDE=TRUE))
Configuration des attributs de service pour la maintenance
Lorsque la maintenance planifiée démarre, les sessions à purger sont marquées à cette fin. Les sessions inactives sont libérées progressivement. Les sessions actives sont purgées lorsque le travail exécuté dans la session est terminé. La purge des sessions est largement utilisée avec les pools de connexions Oracle et les niveaux intermédiaires configurés pour la fonction FAN (Fast Application Notification). A partir d'Oracle Database 18c, la base de données elle-même purge les sessions lors de son arrêt et de son déplacement. La purge est toujours la meilleure solution pour masquer la maintenance planifiée.
Les solutions de basculement telles que la continuité d'application sont des solutions de secours lorsque le travail n'est pas purgé dans les délais alloués.
Un délai d'expiration de purge (en secondes) et une option d'arrêt peuvent être définis sur un service à l'aide du package DBMS_APP_CONT_ADMIN
. Vous devez être un administrateur pour appliquer ces procédures.
Pour définir le délai d'expiration de purge sur 600 secondes et l'option d'arrêt sur IMMEDIATE :
execute DBMS_APP_CONT_ADMIN.SET_DRAINING('HIGH', 600, 'IMMEDIATE' );
Pour ajuster uniquement le délai d'expiration de purge :
execute DBMS_APP_CONT_ADMIN.SET_DRAINING('TPURGENT', 600);
Configuration de clients pour la fonction FAN, y compris de portefeuilles facultatifs
L'authentification basée sur un portefeuille est une option de la fonction FAN lors de l'utilisation d'Autonomous Database. Passez par le même portefeuille que pour la connexion TNS.
Pour les applications JDBC
-
Assurez-vous que les fichiers JAR suivants sont présents dans la variable d'environnement
CLASSPATH
de l'application :(ons.jar, osdt_cert.jar, osdt_core.jar, oraclepki.jar)
-
Indiquez le portefeuille pour la fonction FAN de l'une des manières suivantes :
-
Pour utiliser ONS configuré automatiquement avec des portefeuilles, définissez les propriétés système Java suivantes :
"-Doracle.ons.walletfile=/replace this with host path/onswallet"
"-Doracle.ons.walletpassword=myONSWalletPassword"
Ces propriétés ne peuvent pas être définies par pool ou par connexion.
-
Pour définir explicitement ONS, effectuez l'une des opérations suivantes :
-
Effectuez une définition explicite à l'aide d'un fichier de configuration XML UCP. Exemple :
<!--?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>
-
Effectuez une définition par programmation à partir d'UCP à l'aide d'un appel vers setONSConfiguration(), par exemple :
pds.setONSConfiguration("nodes=primary-scanhost:6200,secondary-scanhost:6200\nwalletfile=/replace_this_with_host_path/onswallet\nwalletpassword=myWalletPassword");
-
-
Pour les applications Oracle Call Interface (OCI) utilisant le pilote Oracle version 12.2 ou plus récente
Ajoutez ce qui suit à la section <default_parameters>
du fichier 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>
Le chemin <wallet_location>
doit être le nom du répertoire contenant le portefeuille.
Vous pouvez définir d'autres paramètres dans la section ons
du fichier oraaccess.xml
, notamment <hosts>
, <max_connections>
et <subscription_wait_timeout>
.
Les pilotes prenant en charge les contrôles de paramètre d'événement natif peuvent omettre la section <events>
et utiliser le paramètre du pilote à la place.
Par défaut, les connexions à la base de données sont établies même en cas d'échec d'ONS. Si vous préférez que les connexions échouent dans cette situation, vous pouvez ajouter une section au même niveau que <events>
et <ons>
:
<fan> <subscription_failure_action> error </subscription_failure_action> </fan>
Placez le fichier oraaccess.xml
dans le même répertoire que les fichiers réseau tnsnames.ora
et sqlnet.ora
. Par exemple, lorsque vous utilisez Oracle Instant Client, ces fichiers peuvent se trouver dans le répertoire par défaut network/admin
. Vous pouvez également placer tous les fichiers de configuration réseau dans un autre répertoire accessible. Définissez ensuite la variable d'environnement TNS_ADMIN
sur ce nom de répertoire.
ODP.Net Fournisseur géré
Utilisez le fichier application.config
pour indiquer la configuration ONS et l'emplacement de portefeuille. Exemple :
<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>