Configuration de la future base de données secondaire

Une fois que vous avez établi la première base de données de secours physique dans Oracle Cloud Infrastructure (OCI), vous en créez une seconde dans une autre région. Cette deuxième base de données est la base de données de votre environnement de récupération après sinistre basé sur le cloud.

La fonctionnalité de base de données de secours en cascade Oracle Data Guard, où la seconde base de données de secours reçoit son redo de la première base de données de secours, et non directement de la base de données principale sur site, réduit le trafic réseau à partir du site hôte sur site. Il établira également quelle sera finalement la principale route de propagation redo.

Pour le moment, certaines contraintes nous empêchent d'utiliser les outils OCI pour établir et gérer entièrement notre future base de données de récupération après sinistre. Le service cloud d'association Oracle Data Guard ne peut actuellement pas inscrire une relation de base de données de secours existante et ne pourra pas gérer la configuration de base de données de secours. Par conséquent, par exemple, Oracle Managed Disaster Recovery Cloud Service ne peut pas être utilisé.

Etant donné que les deux bases de données de secours sont établies avec une base de données de réserve basée sur OCI, le plan de contrôle OCI peut gérer l'application de patches et d'autres activités de cycle de vie pour chacune d'entre elles.

Créer une base de données d'espace réservé

Utilisez la console OCI pour créer une base de données d'espace réservé dans une autre région (recommandé) ou dans un autre domaine de disponibilité dans la même région.

Suivez les étapes ci-dessous. NE supprimez PAS la base de données d'espace réservé à l'aide d'outils tels qu'OCI ou dbaascli.
  1. Sélectionnez Exadata On Oracle Public Cloud. Choisissez le service Oracle Exadata Database Service on Dedicated Infrastructure sur lequel déployer la base de données.

    Respectez les contraintes suivantes :

    • Le répertoire de base de base de données doit avoir la même version logicielle, la même version et le même niveau de patch que la source.
    • DB_NAME doit être identique à celui de la base de données principale et de la première base de données de secours.
    • La valeur DB_UNIQUE_NAME peut être laissée vide ou indiquée, mais doit être différente de la base de données principale sur site et de la première base de données de secours physique.
    • Ne configurez pas de sauvegardes automatiques lors du provisionnement de cette base de données.
    • N'indiquez pas de nom de base de données pluggable lors du provisionnement de cette base de données.
  2. Capturez les données de configuration de secours en cascade.
    1. Connectez-vous en tant qu'utilisateur de système d'exploitation oracle sur l'un des noeuds de base de données hébergeant la base de données d'espace réservé qui vient d'être créée.
    2. Source de l'environnement de cette base de données.
    3. Exécutez la commande suivante à l'aide de DB_UNIQUE_NAME :
    $ srvctl config database -db DB_UNIQUE_NAME
    Enregistrez ces données de configuration. Vous les utiliserez en plusieurs étapes ci-dessous.
  3. Fermez la base de données de réserve.
    $ srvctl stop database -db cascade standby placeholder database -stopoption immediate
  4. Connectez-vous en tant qu'utilisateur du système d'exploitation Grid. A l'aide de la commande asmcmd, videz les fichiers dans les répertoires sous +DATAC1/DB_UNIQUE_NAME :
    1. DATAFILE
    2. ONLINELOG
    3. Tous les éléments PDB GUID/DATAFILE
    4. Tous les fichiers de contrôle sous +DATAC1/DB_UNIQUE_NAME/CONTROLFILE
    5. Fichier de mots de passe tel qu'indiqué dans les données de configuration capturées à l'étape 1
  5. Sous +RECOC1/DB_UNIQUE_NAME, enlevez les fichiers dans les répertoires ARCHIVELOG, AUTOBACKUP et FLASHBACKLOG.
  6. N'enlevez pas spfile.

Préparer la restauration de la base de données

Configurez le nouveau répertoire de base Oracle en vue de la restauration de la base de données.

  • Ajustez le fichier tnsnames.ora sur chaque environnement pour connaître chacune des autres bases de données. Vérifiez les communications entre les environnements.
  • Copiez le fichier de mots de passe de la première base de données de secours.
  • Copiez le portefeuille Cryptage de données transparent (TDE) à partir de la première base de données de secours.
  • Ajustez les paramètres de la base de données de secours en cascade.

Configurer TNS pour une base de données de secours en cascade

Ajustez le fichier tnsnames.ora sur chaque environnement pour connaître chacune des autres bases de données. Vérifiez les communications entre les environnements.

Data Guard Broker doit pouvoir communiquer avec chaque base de données de la configuration, quelle que soit l'instance à laquelle elle est connectée. Oracle Zero Downtime Migration a effectué cette configuration pour la relation de secours initiale. Vous devez ajouter la base de secours en cascade à la configuration :
  • Ajoutez la chaîne de connexion TNS de la base de données de secours en cascade aux fichiers tnsnames.ora utilisés par toutes les instances Oracle Real Application Clusters (Oracle RAC) de la base de données principale sur site et de la première base de données de secours.
  • Ajoutez les chaînes de connexion TNS de la base de données principale sur site et de la première base de données de secours OCI aux fichiers tnsnames.ora utilisés par toutes les instances Oracle RAC de la base de données de secours en cascade.
Ces entrées TNS doivent chacune utiliser des adresses SCAN IP, et non le nom SCAN. Voici un exemple d'entrée TNS conforme créée par Oracle Zero Downtime Migration pour notre première base de données de secours :
CDBHCM_iad1dx =
          (DESCRIPTION =
             (ADDRESS = (PROTOCOL = TCP) (HOST = <SCAN IPv4 address  1>) (PORT = 1521))
             (ADDRESS = (PROTOCOL = TCP) (HOST = <SCAN IPv4 address  2>) (PORT = 1521))
             (ADDRESS = (PROTOCOL = TCP) (HOST = <SCAN IPv4 address  3>)) (PORT = 1521))
            (CONNECT_DATA =
              (SERVER = DEDICATED)
              (SERVICE_NAME = CDBHCM_iad1dx)
              (FAILOVER_MODE =
                  (TYPE = select)
                  (METHOD = basic)
              )
              (UR=A)
             )
          )

Vous devez vous connecter à chaque serveur de base de données en tant qu'utilisateur du système d'exploitation oracle, approvisionner votre environnement, puis remplacer le répertoire par $TNS_ADMIN.

  1. Pour chaque instance Oracle RAC de la base de données principale sur site et de la première base de données de secours OCI, modifiez le fichier tnsnames.ora et ajoutez la chaîne de connexion TNS de base de données de secours en cascade.
  2. Pour chaque instance Oracle RAC de la base de données de secours OCI en cascade, modifiez le fichier tnsnames.ora et ajoutez des chaînes de connexion TNS pour la base de données principale sur site et la première base de données de secours OCI.
  3. Vérifiez que vous pouvez envoyer une commande ping à la première base de données de secours à partir de la base de données de secours en cascade, à l'aide de l'utilitaire tnsping avec l'alias de chaîne de connexion ajouté.
    $ tnsping CDBHCM_iad1dx
    Cela doit renvoyer OK avec un temps de latence en millisecondes. Si OK n'est pas renvoyé, recherchez les erreurs et corrigez-les en conséquence.
  4. Testez la connexion à partir de chaque serveur de base de données qui hébergera la base de données de secours en cascade vers la première base de données de secours (CDBHCM_iad1dx) à l'aide de SQL*Plus. Vous aurez besoin du mot de passe SYS pour l'instance principale.
    $ sqlplus sys/<password>@CDBHCM_iad1dx as sysdba
    Corrigez les erreurs et répétez l'opération jusqu'à ce que vous puissiez vous connecter avec succès.

Copie le fichier de mots de passe

Copiez le fichier de mots de passe de la première base de données de secours.

  1. Connectez-vous à l'un des serveurs hébergeant votre première base de données de secours (CDBHCM_iad1dx) en tant qu'utilisateur oracle OS.
  2. Utilisez srvctl pour déterminer l'emplacement du fichier de mots de passe de cette base de données, puis copiez-le dans le répertoire /tmp.
    Pour déterminer l'emplacement racine du portefeuille, exécutez la commande suivante en tant que sysdba :
    $ srvctl config database -db first standby db name
  3. Recherchez la ligne qui indique "Password file :" et enregistrez son emplacement (chemin d'accès Oracle Automatic Storage Management (Oracle ASM)).
  4. Connectez-vous en tant qu'utilisateur Grid OS et utilisez la commande asmcmd pour copier le fichier de mots de passe dans le répertoire /tmp :
    $ asmcmd -p
    asmcmd> cd +DATAC1/path from step 3
    asmcmd> cp <password file name> /tmp/password file name
  5. Transférez le fichier de mots de passe vers un emplacement temporaire sur l'un des serveurs de base de données de secours en cascade à l'aide de scp ou de tout autre moyen utilisé pour transférer des fichiers dans OCI.
  6. Connectez-vous au serveur de base de données de secours en cascade sur lequel le fichier de mots de passe a été placé, en tant qu'utilisateur du système d'exploitation Grid. Copiez le fichier de mots de passe dans Oracle ASM, en utilisant l'emplacement indiqué dans les données de configuration de secours en cascade ci-dessus.
    $ asmcmd -p --privilege sysdba
    asmcmd> pwcopy –dbuniquename cascade standby db unique name /tmp/password-file-name +ASM Diskgroup/path/password-file-name -f
    Exemple :
    asmcmd> pwcopy –dbuniquename CDBHCM_phx5s   /tmp/password file name +DATAC1/CDBHCM_phx5s/PASSWORD/orapwCDBHCM_phx5s -f 
  7. Assurez-vous que toutes les chaînes de connexion TNS sont configurées correctement en validant que chaque base de données peut se connecter à toutes les autres bases de données. Corrigez les erreurs de connexion pour les tentatives de connexion suivantes qui échouent.
    1. A partir de la base de données sur site (principale) :
      $ sqlplus sys/password@first standby db as sysdba
      $ sqlplus sys/password@cascade standby db as sysdba
    2. A partir de la première base de données de secours physique :
      $ sqlplus sys/password@on-prem primary as sysdba
      $ sqlplus sys/password@cascade standby db as sysdba
    3. A partir de la base de secours physique en cascade :
      $ sqlplus sys/password@on-prem primary as sysdba
      $ sqlplus sys/password@first standby db as sysdba
    Ne continuez pas tant que toutes les tentatives de connexion n'ont pas abouti.

Copier le portefeuille TDE

Copiez le portefeuille Transparent Data Encryption (TDE) à partir de la première base de données de secours. Sur Oracle Exadata Database Service on Dedicated Infrastructure, l'emplacement utilisé par les outils cloud pour stocker les portefeuilles TDE est sur Oracle Advanced Cluster File System (Oracle ACFS), que tous les serveurs de base de données du cluster partagent.
  1. Connectez-vous à l'un des serveurs hébergeant votre première base de données de secours (CDBHCM_iad1dx) en tant qu'utilisateur de système d'exploitation oracle et accédez au répertoire racine du portefeuille.
    Pour déterminer l'emplacement racine du portefeuille, exécutez la commande suivante en tant que sysdba :
    $ sqlplus / as sysdba
    SQL> show wallet_root
    $ cd wallet root location from “show wallet_root” above
  2. Accédez à l'emplacement racine du portefeuille et compressez le répertoire tde.
    Le répertoire tde se trouve sous le répertoire indiqué à l'étape 1, qui est généralement /var/opt/oracle/dbaas_acf/<DB_NAME>/wallet_root.
    $ zip -r CDBHDM_tde_wallet.zip  tde
  3. Transférez ce fichier ZIP vers l'un des serveurs de base de données qui hébergera la base de données en cascade (CDBHCM_phx5s) vers un emplacement temporaire (par exemple, /tmp).
    Utilisez scp ou n'importe quel moyen que vous utilisez pour transférer des fichiers dans OCI.
  4. Connectez-vous aux serveurs de base de données qui hébergeront la base de données en cascade (CDBHCM_phx5s) et sur lesquels le fichier ZIP a été placé, en tant qu'utilisateur du système d'exploitation oracle et accédez au répertoire racine du portefeuille.

    L'emplacement doit être le même que précédemment, car DB_NAME est le même (CDBHCM).

    $ cd /var/opt/oracle/dbaas_acf/<DB_NAME>/wallet_root
  5. Déplacez le répertoire TDE existant vers un autre nom.
    $ mv tde tde_date
  6. Déplacez le fichier ZIP contenant le portefeuille TDE (CDBHDM_tde_wallet.zip) créé à l'étape 2 vers le chemin suivant :/var/opt/oracle/dbaas_acf/<DB_NAME>/wallet_root.
    Remplacez DB_NAME par le nom de la base de données.
  7. décompressez le fichier CDBHDM_tde_wallet.zip.
    $ unzip CDBHDM_tde_wallet.zip

Cela crée un sous-répertoire tde avec les fichiers de portefeuille de la première base de données de secours physique.

Ajuster les paramètres de la base de données pour la base de données de secours en cascade

Finalisez la configuration de la base de données de secours en cascade.

  1. Connectez-vous à l'un des serveurs hébergeant la première base de données de secours (CDBHCM_iad1dx) en tant qu'utilisateur oracle OS et sourcez l'environnement.
    $ . ./CDBHCM.env
  2. Créez un fichier PFILE à partir de la première base de données de secours à utiliser comme référence pour ajuster les paramètres de la base de données de secours en cascade.
    $ cd $ORACLE_HOME/dbs
    $ sqlplus / as sysdba
    SQL> create pfile=’tmp_CDBHCM_iad1dx_init.ora’ from spfile;
  3. Connectez-vous à l'un des serveurs de base de données qui hébergera la base de données de secours en cascade (CDBHCM_phx5s) et sourcez l'environnement :
    $ . ./CDBHCM.env
  4. Démarrez NOMOUNT sur une instance.
    $ sqlplus / as sysdba
    SQL> startup nomount
  5. Apportez les ajustements suivants aux paramètres de base de données de la base de données en cascade, en référençant la liste des paramètres de base de données de l'étape 2 ci-dessus :
    SQL> alter system set control_files=’’ sid=’*’ scope=spfile;
    SQL> alter system set undo_tablespace=’<Refer to the parameter list from step 2>’ sid=’<ORACLE_SID for instance 1>’ scope=spfile;
    SQL> alter system set undo_tablespace=’<Refer to the parameter list from step 2>’ sid=’<ORACLE_SID for instance 2>’ scope=spfile;
    SQL> alter system set undo_tablespace=’<Refer to the parameter list from step 2>’ sid=’<ORACLE_SID for instance N>’ scope=spfile;
    SQL> alter system set sga_target=’<Refer to the parameter list from step 2>’ sid=’*’ scope=spfile;
    SQL> alter system set log_buffer=’<Refer to the parameter list from step 2>’ sid=’*’ scope=spfile;
  6. Ajustez les paramètres propres à PeopleSoft.
    SQL> alter system set “_gby_hash_aggregation_enabled”=false sid=’*’ scope=spfile;
    SQL> alter system set “_ignore_desc_in_index”=true sid=’*’ scope=spfile;
    SQL> alter system set “_unnest_subquery”=true sid=’*’ scope=spfile;
    SQL> alter system set nls_length_semantics='CHAR' sid=’*’ scope=spfile;

    Remarques :

    Ne modifiez pas les paramètres suivants :
    • DB_NAME
    • DB_UNIQUE_NAME
    • WALLET_ROOT
  7. Arrêtez et redémarrez NOMOUNT sur l'instance pour implémenter les modifications.
    $ sqlplus / as sysdba
    SQL> shutdown immediate
    SQL> startup nomount

Restauration de la base de données vers la base de données de secours en cascade

Restaurez la base de données sur la base de secours en cascade à partir de la première base de secours physique. Utilisez la commande Oracle Recovery Manager (RMAN) RESTORE FROM SERVICE pour restaurer le fichier de contrôle et les fichiers de données.

  1. Si l'instance de la base de données de secours en cascade n'est pas démarrée, démarrez-la dans NOMOUNT :
    $ sqlplus / as sysdba 
    $ SQL> startup nomount
  2. Utilisez RMAN pour restaurer le fichier de contrôle et les fichiers de données de la première base de données de secours vers la base de données de secours en cascade.

    Remarques :

    Il peut être nécessaire d'ajuster le nombre de canaux RMAN pour "disque de type périphérique" afin de ne pas saturer le réseau. Si une modification est requise, faites-la avant d'exécuter la commande "restore database from service". Pour ce faire, utilisez la commande suivante, en remplaçant N selon les besoins :
    RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM N; 
    $ rman target / nocatalog
    RMAN> restore standby controlfile from service ‘first standby db name’;
    RMAN> alter database mount;
    RMAN> restore database from service ‘first standby db name’ section size 8G;
    RMAN> shutdown immediate;
    RMAN> exit
  3. Redémarrez toutes les instances et montez la base de données de secours en cascade à l'aide de srvctl.
    $ srvctl start database -db cascade standby db unique name -startoption mount
  4. Créez et effacez tous les fichiers journaux en ligne et de secours à l'aide du script suivant.
    $ sqlplus “/ as sysdba”
    SQL> set pagesize 0 feedback off linesize 120 trimspool on
    SQL> spool /tmp/clearlogs.sql
    SQL> select distinct 'alter database clear logfile group '||group#||';' from v$logfile;
    SQL> spool off
  5. Examinez le script clearlogs.sql généré avant de l'exécuter. L'instance de base de données créera et effacera les fichiers de journalisation en ligne et de secours pour tous les threads. Ensuite, exécutez le script.
    SQL> @/tmp/clearlogs.sql

Configurer Data Guard Broker pour la base de données de secours en cascade

Vous avez déjà configuré Data Guard Broker entre la base de données principale sur site et la première base de données de secours OCI par Oracle Zero Downtime Migration. Vous allez maintenant ajouter la base de données de secours en cascade à la configuration.

La base de données de secours en cascade et les bases de données sur site ne communiquent pas directement entre elles. Si nécessaire, leur fichier redo est fourni via la première base de données de secours sur site :

  • Lorsque la base de données sur site est principale, redo est envoyé de la base de données sur site principale vers ou via la première base de données de secours, puis vers la base de données de secours en cascade :
    • Principal sur site vers la première base de données de secours OCI
    • Première base de données de secours OCI vers la base de données de secours en cascade OCI
  • Lorsque la première base de données de secours a le rôle principal, redo est envoyé à partir de cette base de données directement aux bases de données sur site et aux bases de données de secours en cascade :
    • OCI principal vers la base de données de secours sur site
    • Base de données principale OCI vers la base de données de secours en cascade OCI
  • Si la base de données de secours en cascade devient principale dans cette configuration, les informations de journalisation sont envoyées à partir de cette base de données vers ou via la première base de données de secours OCI, puis vers la base de données sur site :
    • Première base de données de secours OCI vers la base de données de secours sur site
    • OCI en cascade de la base de données principale vers la première base de données de secours OCI
  1. Configurez Data Guard Broker sur le serveur de base de données hébergeant la base de données de secours en cascade. Connectez-vous à l'un des serveurs de base de données hébergeant la base de données de secours en cascade en tant qu'utilisateur oracle du système d'exploitation et sourcez l'environnement.
    $ sqlplus / as sysdba
    SQL> alter system set dg_broker_config_file1=’+DTAC1/cascade standby db/DG/dr1 cascade standby db.dat’ sid=’*’ scope=both;
    SQL> alter system set dg_broker_config_file2=’+RECOC1/cascade standby db/DG/dr2 cascade standby db.dat’ sid=’*’ scope=both;
    SQL> alter system set dg_broker_start=TRUE sid=’*’ scope=both;
  2. Connectez-vous à la base de données principale ou à la première base de données de secours physique et sourcez l'environnement. Ajoutez la nouvelle base de données de secours en cascade à la configuration Data Guard Broker existante.
    $ dgmgrl 
    DGMGRL>  connect sys/password
    DGMGRL> show configuration
    DGMGRL> add database 'cascade standby db’
     as connect identifier is cascade standby db;
  3. Ajoutez redo routes.
    DGMGRL> edit database on-premises db set property redoroutes='(LOCAL : first standby db ASYNC)';
    DGMGRL> edit database first standby db set property redoroutes='(LOCAL : on-premises db ASYNC, cascade standby db ASYNC)(on-premises db : cascade standby db ASYNC)(cascade standby db : on-premises db ASYNC)';
    DGMGRL> edit database cascade standby db set property redoroutes='(LOCAL : first standby db ASYNC)';
  4. Activez la nouvelle base de données de secours en cascade.
    DGMGRL> enable database cascade standby db;
  5. Une fois la base de données en cascade activée, elle commence à recevoir redo généré par la base de données principale sur site via la première base de données de secours. A partir de Data Guard Broker, affichez la configuration :
    DGMGRL> show configuration lag
    Configuration - zdm_psfthcm_dg
      Protection Mode: MaxPerformance
      Members:
      CDBHCM_sca6dp  - Primary database
        CDBHCM_iad1dx - Physical standby database 
                          Transport Lag:      0 seconds (computed 0 seconds ago)
                          Apply Lag:          0 seconds (computed 1 second ago)
          CDBHCM_phx5s - Physical standby database (receiving current redo)
                            Transport Lag:      1 second (computed 1 second ago)
                            Apply Lag:          2 seconds (computed 1 second ago)
    
    Fast-Start Failover:  Disabled
    
    Configuration Status:
    SUCCESS   (status updated 47 seconds ago)

Définir les services de base de données basés sur des rôles pour la future base de données de secours

Ajoutez les services de base de données basés sur les rôles que l'application PeopleSoft utilisera lorsque la base de données secondaire OCI remplit le rôle PRIMARY.

  1. Ajoutez des services de base de données basés sur les rôles pour l'Ordonnanceur de traitements.
    srvctl add service -db CDBHCM_phx5s -pdb HR92U033 -service HR92U033_BATCH -preferred "CDBHCM1,CDBHCM2" -notification TRUE -role PRIMARY -failovermethod BASIC -failovertype AUTO -failoverretry 10 -failoverdelay 3
  2. Ajoutez des services de base de données basés sur les rôles pour les utilisateurs en ligne.
    srvctl add service -db CDBHCM_phx5s -pdb HR92U033 -service HR92U033_ONLINE -preferred "CDBHCM1,CDBHCM2" -notification TRUE -role PRIMARY -failovermethod BASIC -failovertype AUTO -failoverretry 10 -failoverdelay 3