Configuration de la continuité d'application sur Autonomous Database

Afin de configurer la continuité d'application, vous devez l'activer 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 purge. De plus, 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é d'application

Utilisez DBMS_APP_CONT_ADMIN pour activer la continuité d'application ou la continuité d'application transparente :

  • Continuité d'application (AC) : définissez cette option de basculement à l'aide de la procédure DBMS_APP_CONT_ADMIN.ENABLE_AC. La procédure ENABLE_AC comprend trois paramètres : SERVICE NAME, qui correspond au nom de service à modifier, FAILOVER_RESTORE défini sur LEVEL1 pour sélectionner la continuité d'application et REPLAY_INITIATION_TIMEOUT, qui correspond au délai d'expiration de la réexécution et 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, afin d'activer la continuité d'application pour le service TPURGENT, procédez comme suit :

    execute DBMS_APP_CONT_ADMIN.ENABLE_AC(
            'databaseid_tpurgent.adb.oraclecloud.com', 'LEVEL1', 600);
  • Continuité d'application transparente : définissez cette option de basculement à l'aide de la procédure DBMS_APP_CONT_ADMIN.ENABLE_TAC. La procédure ENABLE_TAC comprend trois paramètres : SERVICE NAME, le nom de service à modifier, FAILOVER_RESTORE défini sur AUTO pour sélectionner la continuité d'application transparente et REPLAY_INITIATION_TIMEOUT, le délai d'expiration de la 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, afin d'activer la continuité d'application transparente pour le service TP avec un délai d'expiration de réexécution de 20 minutes, procédez comme suit :

    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 du 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é d'application

En fonction du type de charge globale, utilisez une commande semblable à la suivante pour effectuer une action SELECT à partir de DBA_SERVICES sur la base de données et identifiez le service dans lequel activer la continuité d'application :

  • 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                   
  • Transaction Processing ou JSON Database

    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                   

La valeur FAILOVER_TYPE du service high est No et indique que la continuité d'application est désactivée.

Vérification de l'activation de la continuité d'application pour un service

En fonction du type de charge globale, consultez la sortie de la requête sur DBA_SERVICES pour vérifier que la continuité d'application 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                   
  • Transaction Processing ou JSON Database

    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 du service high est désormais AUTO, ce qui indique que la continuité d'application transparente est activée. La valeur FAILOVER_TYPE du service tpurgent est désormais TRANSACTION, ce qui indique que la continuité d'application 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 Fast Application Notification (FAN) liés aux coupures non planifiées sont dirigés vers le gestionnaire de connexions (CMAN) et aucune étape de configuration de l'application client n'est requise pour utiliser la fonction FAN.

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

  • Pour les événements de maintenance planifiée, la fonction FAN est envoyée dans la bande, directement aux pilotes. Pour cela, les applications doivent utiliser des pools Oracle ou la continuité d'application transparente pour les limites de demande, ou utiliser les tests de connexion.
  • Les pilotes client Oracle et Oracle Database effectuent des purges lors des tests de connexion et lorsque les limites de demande sont atteintes.

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 assurer la haute disponibilité, Oracle vous 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 lors de la connexion à Oracle Autonomous Database. Les chaînes de connexion imbriqué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 devez 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 configuré de manière à ce qu'il soit supérieur à la valeur CONNECT_TIMEOUT dans la chaîne de connexion.

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

Reportez-vous à Download Client Credentials (Wallets) pour plus d'informations sur le fichier tnsnames.ora.

Configuration d'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é d'application lors de la connexion à Autonomous Database.

Configuration du pilote JDBC Thin

Affiche les détails d'utilisation de la continuité d'application avec Autonomous Database pour un client utilisant le pilote JDBC Thin.

Si votre application utilise le pilote JDBC Thin, procédez comme suit :

  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éments open_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.

  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. 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. Lors de l'utilisation d'Universal Connection Pool (UCP), désactivez Fast Connection Failover. Exemple :

    PoolDataSource.setFastConnectionFailoverEnabled(false)

Configuration du pilote Oracle Call Interface

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

Si l'application client utilise le pilote Oracle Call Interface, suivez la pratique recommandée suivante :

  • 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 et la continuité d'application autorisent OCIStmtPrepare, mais ne réexécutent pas cette instruction.

Ne configurez pas les 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é d'application avec Autonomous Database pour un client utilisant le pilote de fournisseur non géré ODP.NET.

Le pilote de fournisseur non géré ODP.NET utilise automatiquement la continuité d'application 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 les serveurs ONS dans oraaccess.xml :

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