Configuration de la continuité d'application sur Autonomous Database

Pour configurer la continuité des applications, vous devez activer la continuité des applications pour le service de base de données utilisé par votre application, et configurer le type de basculement et le délai d'expiration de la purge. En outre, vous devez définir plusieurs paramètres de chaîne de connexion qui permettent la haute disponibilité.

Configuration de votre service pour activer la continuité des applications

Utilisez DBMS_APP_CONT_ADMIN pour activer la continuité des applications ou la continuité transparente des applications :

  • Continuité de l'application : définissez cette option de basculement à l'aide de la procédure DBMS_APP_CONT_ADMIN.ENABLE_AC. La procédure ENABLE_AC prend trois paramètres : SERVICE NAME est le nom de service à modifier, FAILOVER_RESTORE, défini sur LEVEL1 pour sélectionner Application Continuity(AC) et REPLAY_INITIATION_TIMEOUT, le délai d'expiration de réexécution qui indique le nombre de secondes après la soumission d'une demande pour autoriser la réexécution de cette demande.

    Par exemple, en tant qu'utilisateur ADMIN, pour activer la continuité des applications pour le service TPURGENT :

    execute DBMS_APP_CONT_ADMIN.ENABLE_AC(
            'databaseid_tpurgent.adb.oraclecloud.com', 'LEVEL1', 600);
  • Continuité transparente des applications (TAC) : définissez cette option de basculement à l'aide de la procédure DBMS_APP_CONT_ADMIN.ENABLE_TAC. La procédure ENABLE_TAC prend trois paramètres : SERVICE NAME est le nom de service à modifier, FAILOVER_RESTORE, défini sur AUTO pour sélectionner Transparent Application Continuity (TAC) et REPLAY_INITIATION_TIMEOUT est le délai d'expiration de réexécution qui indique le nombre de secondes après la soumission d'une demande pour autoriser la réexécution de cette demande.

    Par exemple, en tant qu'utilisateur ADMIN, pour activer la continuité d'application transparente pour le service TP avec le délai d'expiration de réexécution défini sur 20 minutes :

    execute DBMS_APP_CONT_ADMIN.ENABLE_TAC(
            'databaseid_tp.adb.oraclecloud.com', 'AUTO', 1200);
    
  • Désactivé : désactivez le basculement à l'aide de la procédure DBMS_APP_CONT_ADMIN.DISABLE_FAILOVER().

    Par exemple, en tant qu'utilisateur ADMIN, pour désactiver le basculement pour le service TP, procédez comme suit :

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

Recherche du paramètre de nom de service pour la continuité des applications

Selon le type de charge globale, utilisez une commande semblable à la suivante pour SELECT à partir de DBA_SERVICES sur la base de données et identifiez le service dans lequel activer la continuité des applications :

  • Entrepôt de données

    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                   
  • Traitement des transactions ou Base de données 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                   

Notez que FAILOVER_TYPE pour le service high n'a aucune valeur et indique que la continuité des applications est désactivée.

Vérifier que la continuité d'application est activée pour un service

Selon le type de charge globale, vérifiez la sortie de l'interrogation sur DBA_SERVICES pour vérifier que la continuité des applications est activée.

  • Entrepôt de données

    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                   
  • Traitement des transactions ou Base de données 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                   

La valeur FAILOVER_TYPE pour le service high est désormais AUTO, ce qui indique que la continuité d'application transparente (TAC) est activée et que la valeur FAILOVER_TYPE pour le service tpurgent est maintenant TRANSACTION, ce qui indique que la continuité d'application (AC) est activée.

Utilisation de la fonction Fast Application Notification (FAN)

Lors de la connexion à Autonomous Database, la base de données Oracle configure automatiquement la fonction FAN. Pour les déploiements d'application avec Autonomous Database, les événements FAN (Fast Application Notification) pour les interruptions non planifiées sont dirigés vers le gestionnaire de connexions (CMAN) et aucune étape de configuration d'application client n'est requise pour utiliser la fonction FAN.

La fonction FAN est automatiquement gérée pour vous par le pilote client et par le gestionnaire de connexions (CMAN) Autonomous Database :

  • Pour les événements de maintenance planifiés, la fonction FAN est envoyée en bande, directement aux pilotes. Pour ce faire, les applications doivent utiliser les pools Oracle ou TAC pour les limites de demande ou les tests de connexion.
  • Les pilotes client Oracle Database et Oracle sont vidés des tests de connexion et des limites de demande.

Pour plus d'informations, reportez-vous à Configuration client pour la disponibilité continue sur Autonomous Database.

Configuration de la chaîne de connexion pour la haute disponibilité

Pour maintenir la haute disponibilité, Oracle recommande de définir certains paramètres de chaîne de connexion lors de la connexion à Oracle Autonomous Database.

Définissez les paramètres CONNECT_TIMEOUT, RETRY_DELAY, RETRY_COUNT et TRANSPORT_CONNECT_TIMEOUT dans la chaîne de connexion lorsque vous vous connectez à Oracle Autonomous Database. Les chaînes de connexion intégrées dans le fichier tnsnames.ora fourni par Oracle sont préconfigurées avec les valeurs appropriées pour la plupart des applications. Dans certains cas, selon les besoins de vos applications, vous devrez peut-être modifier les valeurs préconfigurées d'une chaîne de connexion.

Utilisez le code TNS suivant pour tous les clients Oracle de version 12.2 ou supérieure :

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)))

Utilisez le code suivant pour les connexions JDBC utilisant le pilote Oracle version 12.1 ou antérieure ::

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)))

Remarques concernant les chaînes de connexion :

  • Pour les clients JDBC et ODP, le temps d'attente de connexion au pool doit être configuré pour être plus long que CONNECT_TIMEOUT dans la chaîne de connexion.

  • N'utilisez pas de résolution de noms Easy Connect sur le client car ces connexions n'ont pas de fonctions de haute disponibilité.

Pour plus d'informations sur le fichier tnsnames.ora, reportez-vous à Téléchargement des informations d'identification client (portefeuilles).

Configuration des options client propres au pilote

En fonction de votre client et de votre pilote, vous devez vous assurer que le client est correctement configuré pour utiliser la continuité des applications lors de la connexion à Autonomous Database.

Configuration du pilote JDBC Thin

Affiche les détails d'utilisation de la continuité des applications avec Autonomous Database avec un client utilisant le pilote léger JDBC.

Si votre application utilise le pilote léger JDBC, suivez les exercices recommandés suivants :

  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 l'espace mémoire doit être libéré à 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éments open_cursors. Par 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.

  2. 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. Par 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.

  3. Lorsque vous utilisez le pool de connexions universel (UCP), désactivez le basculement de connexion rapide. Par exemple :

    PoolDataSource.setFastConnectionFailoverEnabled(false)

Configuration du pilote Oracle Call Interface (OCI)

Affiche les détails d'utilisation de la continuité des applications avec Autonomous Database avec un client utilisant le pilote Oracle Call Interface (OCI).

Si l'application client utilise le pilote Oracle Call Interface (OCI), suivez l'exercice recommandé suivant :

  • Remplacez OCIStmtPrepare par OCIStmtPrepare2. OCIStmtPrepare() est en phase d'abandon depuis la version 12.2. Toutes les applications doivent utiliser OCIStmtPrepare2(). La continuité d'application transparente (TAC) et la continuité d'application (AC) autorisent OCIStmtPrepare mais ne réexécutent pas cette instruction.

Ne configurez pas de serveurs ONS dans oraaccess.xml :

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

En outre, pour Autonomous Database Serverless, ne configurez pas la section <fan> :

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

Configuration du pilote de fournisseur non géré ODP.NET

Affiche les détails d'utilisation de la continuité des applications avec Autonomous Database avec un client à l'aide du pilote de fournisseur non géré ODP.NET.

Le pilote de fournisseur non géré ODP.NET utilise automatiquement la continuité des applications lorsque celle-ci est activée sur le service de base de données que votre application utilise pour se connecter à Autonomous Database.

Lors de la connexion d'une application ODP.NET à votre instance Autonomous Database Serverless, ne configurez pas de serveurs ONS dans oraaccess.xml :

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