Créer la base de données de secours de Data Guard

Une fois la base de données principale préparée pour Data Guard, elle est prête à être dupliquée sur le site de secours. Le guide suivant utilise duplication active pour créer une copie cohérente de la base de données.

Pour rappel, les exemples suivants sont utilisés tout au long de ce guide:

Nom de base de données unique Noms d'hôtes du serveur Noms d'instance RAC Rôle
DBDG_SITE1 site1db1, site1db2 DBDG_SITE11, DBDG_SITE12 Principal
DBDG_SITE2 site2db1, site2db2 DBDG_SITE21, DBDG_SITE22 Instance de secours

Les serveurs de solution Bare Metal exécutant Oracle dans ce guide sont configurés avec les variables d'environnement suivantes:

Nom de la variable d'environnement Value
ORACLE_BASE /apps/oracle/oracle_base
ORACLE_HOME /apps/oracle/19.0.0/db_home1

Vous devrez peut-être modifier les chemins d'accès des variables d'environnement en fonction de votre configuration.

Configurer la base de données de secours

Configurer la connectivité de la base de données

Connectez-vous à chaque serveur de solution Bare Metal en emplacement de secours et modifiez le fichier $ORACLE_HOME/network/admin/tsnames.ora pour mettre à jour la configuration du service réseau:

DBDG_SITE2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE2_SCAN_HOSTNAME)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = DBDG_SITE2) (UR=A)
   )
 )

DBDG_SITE1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE1_SCAN_HOSTNAME)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = DBDG_SITE1)
    )
  )

Configurer un écouteur temporaire

Pour éviter de redémarrer l'écouteur utilisé pour les autres connexions à la base de données, la duplication de base de données est effectuée à l'aide d'un écouteur temporaire. Cet exemple utilise le port 1523, mais vous pouvez utiliser n'importe quel port ouvert pour la communication entre les clusters. Vous supprimez cet écouteur temporaire après la duplication de la base de données.

  1. Connectez-vous au premier serveur de solution Bare Metal dans l'emplacement de secours à utiliser lors du processus de duplication de la base de données. Modifiez le fichier $ORACLE_HOME/network/admin/listener.ora pour mettre à jour la configuration du service réseau:

    LISTENER_DBDG_SITE2 =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = site1db1)(PORT = 1523))
        )
      )
    
    SID_LIST_LISTENER_DBDG_SITE2 =
      (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = DBDG_SITE2_DGMGRL)
          (ORACLE_HOME = ORACLE_HOME)
          (SID_NAME = DBDG_SITE21)
        )
      )
    ADR_BASE_LISTENER = /apps/oracle/oracle_base
    
  2. Démarrez l'écouteur temporaire:

    lsnrctl start LISTENER_DBDG_SITE2
    

Préparer la base de données de secours

  1. Chaque instance de base de données nécessite un répertoire permettant de stocker les journaux d'audit. Créez le répertoire de fichier d'audit sur chaque serveur de solution Bare Metal dans l'emplacement de la base de données de secours:

    mkdir -p /apps/oracle/oracle_base/admin/DBDG_SITE2/adump
    
  2. Modifiez le fichier $ORACLE_HOME/dbs/initDBDG_SITE21.ora qui a été copié précédemment sur le serveur de base de données de secours:

    1. Définissez le champ db_unique_name sur le nom de la nouvelle base de données de secours.
    2. Modifiez les paramètres spécifiques à l'instance en fonction des noms d'instance de la base de données de secours. En voici quelques exemples :
      • instance_number
      • thread
      • undo_tablespace
    3. Définissez le paramètre audit_file_dest pour utiliser le répertoire créé à l'étape précédente.
    4. Si les groupes de disques ASM de chaque emplacement utilisent des noms différents, modifiez les paramètres db_file_name_convert et log_file_name_convert pour qu'ils correspondent aux nouveaux emplacements des fichiers.
    5. Mettez en commentaire le paramètre control_files.

    L'exemple suivant montre un fichier de paramètre de base de données mis à jour avec des modifications en utilisant les exemples fournis dans ce guide. Notez que votre fichier de paramètres contiendra des paramètres supplémentaires spécifiques à la configuration de votre base de données. Seuls les paramètres qui nécessitent une modification de l'instance de secours sont affichés:

    *.db_unique_name='DBDG_SITE2'
    DBDG_SITE21.instance_number=1
    DBDG_SITE22.instance_number=2
    DBDG_SITE21.thread=1
    DBDG_SITE22.thread=2
    DBDG_SITE21.undo_tablespace='UNDOTBS1'
    DBDG_SITE22.undo_tablespace='UNDOTBS2'
    *.audit_file_dest='/apps/oracle/oracle_base/admin/DBDG_SITE2/adump'
    #*.control_files='+DATA/DBDG_SITE1/CONTROLFILE/current.258.1091317089','+RECO/DBDG_SITE1/CONTROLFILE/current.257.1091317089'
    
  3. Dans le fichier /etc/oratab, ajoutez une entrée afin que la commande oraenv puisse définir des variables d'environnement pour la base de données de secours:

    DBDG_SITE21:ORACLE_HOME:N
    

Créer la base de données de secours

  1. Définissez la variable d'environnement ORACLE_SID pour pouvoir vous connecter à la base de données de secours:

    source oraenv <<< "DBDG_SITE21"
    

    Vous devriez recevoir la réponse The Oracle base has been set to /apps/oracle/oracle_base.

  2. Avant de dupliquer la base de données principale, vous devez démarrer manuellement l'instance de secours sur un nœud. Connectez-vous au premier serveur de solution Bare Metal situé dans l'emplacement de secours, démarrez SQL*Plus, puis démarrez la base de données de secours dans nomount mode à l'aide de pfile:

    sqlplus / as sysdba
    
    STARTUP NOMOUNT PFILE='/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora';
    

    Si l'opération réussit, vous devriez recevoir une réponse de ce type :

    ORACLE instance started.
    Total System Global Area 1.2885E+10 bytes
    Fixed Size 15988824 bytes
    Variable Size 1845493760 bytes
    Database Buffers 1.1006E+10 bytes
    Redo Buffers 17563648 bytes
    
  3. Quittez SQL*Plus après le démarrage de l'instance:

    EXIT;
    
  4. Vérifiez la connectivité au service de base de données de secours. À partir de chaque serveur de solution Bare Metal situé à l'emplacement de la base de données principale, essayez de vous connecter à l'instance de secours à l'aide de SQL*Plus. Saisissez manuellement le mot de passe de connexion à distance SYS pour vous connecter à l'instance.

    sqlplus sys@DBDG_SITE2_FOR_DUPLICATION as sysdba
    

    Si l'opération réussit, vous devriez recevoir une invite SQL*Plus standard, dans laquelle vous pouvez vérifier les paramètres d'instance:

    SHOW PARAMETER DB_UNIQUE_NAME;
    

    Vous devriez obtenir un résultat semblable à celui-ci :

                    NAME        TYPE                          VALUE
        ---------------- ----------- ------------------------------
          db_unique_name      string      DBDG_SITE2
    
  5. Quittez SQL*Plus après avoir vérifié le paramètre DB_UNIQUE_NAME:

    EXIT;
    
  6. Connectez-vous à Recovery Manager, puis exécutez la commande duplicate pour dupliquer la base de données de secours à partir de la base de données principale active:

    rman TARGET sys@DBDG_SITE1 AUXILIARY sys@DBDG_SITE2_FOR_DUPLICATION
    
    DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE NOFILENAMECHECK;
    

    Si l'opération réussit, un message semblable à l'exemple suivant doit s'afficher:

    Finished Duplicate Db at ...
    
  7. Quittez Recovery Manager:

    EXIT;
    

Finaliser la création de la base de données de secours

  1. Lors de la duplication de la base de données, ASM crée des fichiers de contrôle pour la base de données de secours. Connectez-vous à la nouvelle instance de secours et obtenez le ou les nouveaux noms de fichier de contrôle. L'exemple suivant montre deux fichiers de contrôle stockés dans les groupes de disques +DATA et +RECO:

    sqlplus / as sysdba
    
    SET LINESIZE 140
    COLUMN NAME FORMAT a15
    COLUMN VALUE FORMAT a125
    SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='control_files';
    

    Le ou les noms de fichier de contrôle sont affichés dans le champ "Valeur" :

               NAME     VALUE
    --------------- ----------------------------------------------------------------------------------------------------
      control_files   +DATA/DBDG_SITE2/CONTROLFILE/current.258.1091317089, +RECO/DBDG_SITE2/CONTROLFILE/current.257.1091317089
    
  2. Enregistrez les noms de fichier de contrôle de l'étape précédente et remplacez les entrées du paramètre control_files dans $ORACLE_HOME/dbs/initDBDG_SITE21.ora par les nouvelles valeurs. S'il existe plusieurs fichiers de contrôle, placez-les entre guillemets simples, séparés par une virgule:

    *.control_files='+DATA/DBDG_SITE2/CONTROLFILE/current.258.1091317089','+RECO/DBDG_SITE2/CONTROLFILE/current.257.1091317089'
    
  3. Connectez-vous à la base de données de secours avec SQL*Plus et créez un spfile à partir du nouveau pfile:

    sqlplus / as sysdba
    
    CREATE SPFILE='+DATA/DBDG_SITE2/spfileDBDG_SITE2' FROM PFILE='/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora';
    
  4. Copiez le fichier de mot de passe sur le groupe de disques ASM à l'aide de la commande asmcmd:

    asmcmd cp /apps/oracle/19.0.0/db_home1/dbs/orapwDBDG_SITE21.ora +DATA/DBDG_SITE2/orapwDBDG_SITE2
    
  5. Arrêtez l'instance de base de données de secours, puis supprimez le fichier pfile et le mot de passe du fichier temporaires:

    sqplus / as sysdba
    
    SHUTDOWN IMMEDIATE;
    EXIT;
    
    rm $ORACLE_HOME/dbs/orapwDBDG_SITE21.ora $ORACLE_HOME/dbs/initDBDG_SITE2.ora
    
  6. Arrêtez l'écouteur temporaire utilisé pour la duplication de base de données sur le premier serveur de solution Bare Metal situé à l'emplacement de la base de données de secours:

    lsnrctl stop LISTENER_DBDG_SITE2
    
  7. Supprimez les entrées temporaires du fichier $ORACLE_HOME/network/admin/listener.ora sur le premier serveur de solution Bare Metal à l'emplacement de la base de données de secours.

  8. Ajoutez la nouvelle base de données de secours et les nouvelles instances au registre de clusters à l'aide de la commande srvctl:

    srvctl add database \
      -db DBDG_SITE2 \
      -oraclehome /apps/oracle/19.0.0/db_home1 \
      -spfile +DATA/DBDG_SITE2/spfileDBDG_SITE2 \
      -pwfile +DATA/DBDG_SITE2/orapwDBDG_SITE2 \
      -role PHYSICAL_STANDBY \
      -startoption MOUNT
    
    srvctl add instance \
      -db DBDG_SITE2 \
      -instance DBDG_SITE21 \
      -node site2db1
    
    srvctl add instance \
      -db DBDG_SITE2 \
      -instance DBDG_SITE22 \
      -node site2db2
    
  9. Démarrez la base de données de secours à l'aide de la commande srvctl:

    srvctl start database -db DBDG_SITE2
    

Étapes suivantes

Ensuite, configurez et activez l'agent Data Guard.