Migrer Oracle RAC

Pour migrer une base de données Oracle RAC d'un serveur Oracle Cloud Infrastructure Classic vers un système Oracle Cloud Infrastructure Database, vous pouvez utiliser Oracle Data Guard. Vous devez configurer la base de données sur Oracle Cloud Infrastructure Classic en tant que base de données principale (base de données source), que vous migrez vers une base de données de secours (base de données cible) sur Oracle Cloud Infrastructure sur des systèmes de machines virtuelles.

Configurer la base de données principale (source)

Pour configurer la base de données principale (base de données source), configurez Oracle Data Guard et modifiez les fichiers listener.ora et tnsnames.ora pour la base de données de secours (base de données cible).

Configurer la base de données principale pour la base de données de secours

Dans cette configuration, vous configurez la base de données principale (source) pour utiliser Oracle Data Guard.

  1. Utilisez SSH pour vous connecter au serveur de base de données principale (base de données source).
  2. Sur la base de données de secours (base de données cible), connectez-vous en tant que propriétaire du logiciel de base de données oracle.
    sudo su - oracle
  3. Exécutez le script oraenv, qui définit la variable d'environnement $ORACLE_HOME.
    . oraenv
  4. Connectez-vous à l'instance de base de données en tant qu'utilisateur disposant de privilèges d'administrateur. Par exemple :
    sqlplus / as sysoper
  5. Assurez-vous que la base de données est en mode ARCHIVELOG.
    ARCHIVE LOG LIST
  6. Si le résultat de Database log mode est No Archive Mode et que le résultat de Automatic archival est Disabled, procédez comme suit :
    1. Quitter SQL*Plus
      SQL> exit
    2. Arrêtez la base de données.
      srvctl stop database -db db_unique_name
    3. Redémarrer la base de données en mode MOUNT
      srvctl start database -db db_unique_name -o mount
    4. Connectez-vous à l'instance de base de données en tant qu'utilisateur disposant de privilèges d'administrateur. Par exemple :
      sqlplus / as sysoper
    5. Activez le mode ARCHIVELOG.
      ALTER DATABASE ARCHIVELOG;
    6. Assurez-vous que la base de données est maintenant en mode ARCHIVELOG.
      ARCHIVE LOG LIST
      La sortie pour le mode de journalisation de base de données doit être Archive Mode et la sortie pour Automatic archival est activée.
    7. Ouvrez la base de données.
      ALTER DATABASE OPEN;
  7. Connectez-vous avec le privilège d'administrateur SYSDBA.
    CONNECT / AS SYSDBA
  8. Pour un environnement colocatif, procédez comme suit :
    1. Vérifiez le statut de la valeur de départ de la base de données pluggable.
      SHOW PDBS
    2. Si la valeur de départ de la base de données pluggable n'est pas ouverte, ouvrez-les.
      ALTER PLUGGABLE DATABASE ALL OPEN;
  9. Assurez-vous que la base de données est en mode Journalisation forcée. Par exemple :
    SELECT NAME, OPEN_MODE, FORCE_LOGGING FROM V$DATABASE;
  10. Si nécessaire, activez force logging.
    ALTER DATABASE FORCE LOGGING;
  11. Vérifiez la configuration.
    SELECT NAME, CDB, OPEN_MODE, FORCE_LOGGING FROM V$DATABASE;
    La colonne FORCE_LOGGING doit être YES.
  12. Utilisez la commande SHOW PARAMETER pour vérifier les paramètres de base de données suivants :
    1. DB_NAME et DB_UNIQUE_NAME : assurez-vous que ces noms sont différents de ceux utilisés sur la base de données cible.
    2. REMOTE_LOGIN_PASSWORDFILE : ce paramètre doit être défini sur EXCLUSIVE.

Ajouter des services statiques au fichier listener.ora de la base de données principale

Dans cette section, vous devez ajouter un nouveau processus d'écoute statique à listener.or, puis redémarrer le processus d'écoute.

  1. Utilisez SSH pour vous connecter au premier noeud de la base de données principale (source).
  2. Sur la ligne de commande, connectez-vous en tant que grid user.
    sudo su - grid
  3. Modifiez le fichier /u01/app/12.2.0.1/grid/network/admin/listener.ora pour inclure le processus d'écoute statique. L'exemple suivant présente le format à utiliser pour un processus d'écoute statique :
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SDU=65535)
          (GLOBAL_DBNAME = source_db_unique_name.source_db_domain)
          (ORACLE_HOME = source_oracle_home)
          (ENVS="TNS_ADMIN= source_oracle_home/network/admin")
          (SID_NAME = source_db_name)
        )
      )
  4. Arrêtez le processus d'écoute.

    Remarque :

    L'arrêt et le démarrage du processus d'écoute statique peuvent avoir une incidence sur les nouvelles connexions à la base de données pendant quelques secondes.
    srvctl stop listener -l LISTENER
  5. Redémarrez le processus d'écoute.
    srvctl start listener -l LISTENER
  6. Vérifiez le statut du processus d'écoute.
    lsnrctl status
  7. Vérifiez que la sortie contient des entrées avec le statut UNKNOWN.
  8. Répétez les étapes précédentes pour le deuxième noeud de la base de données principale (base de données source).

Configurer les paramètres de base de données principale

Une fois que vous avez configuré la base de données principale (source) et ajouté des services statiques aufichier listener.ora de la base de données principale, vous pouvez configurer les paramètres Oracle Data Guard sur la base de données principale.

  1. Utilisez SSH pour vous connecter au premier noeud RAC de la base de données principale (base de données source).
  2. Connectez-vous à l'instance de base de données en tant qu'utilisateur disposant du privilège d'administrateur SYSDBA.
    sqlplus / as sysdba
    Enter password: password
  3. Activez la gestion automatique des fichiers de secours.
    ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO SID='*' SCOPE=BOTH;
  4. Définissez la cible du décalage d'archivage.
    ALTER SYSTEM SET ARCHIVE_LAG_TARGET=1800 SID='*' SCOPE=BOTH;
  5. Identifiez les noms et emplacements des fichiers de configuration Oracle Broker. Les instructions suivantes dépendent du type de stockage de base de données.
    ALTER SYSTEM SET DG_BROKER_CONFIG_FILE1='/u02/app/oracle/oradata/<db_unique_name>/dr1<db_unique_name>.dat' SID='*' SCOPE=BOTH; SCOPE=BOTH;
    ALTER SYSTEM SET DG_BROKER_CONFIG_FILE2='/u03/app/oracle/fast_recovery_area/<db_unique_name>/dr2<db_unique_name>.dat' SID='*' SCOPE=BOTH;
  6. Activez le processus Oracle Broker DMON pour la base de données.
    ALTER SYSTEM SET DG_BROKER_START=TRUE SCOPE=BOTH;
  7. (Facultatif) Définissez les paramètres DB_BLOCK_CHECKING et DB_BLOCK_CHECKSUM.
    ALTER SYSTEM SET DB_BLOCK_CHECKING=FULL SID='*' SCOPE=BOTH;
    ALTER SYSTEM SET DB_BLOCK_CHECKSUM=FULL SID='*' SCOPE=BOTH;
  8. (Facultatif) Définissez le tampon de journalisation sur 256 mégaoctets.
    ALTER SYSTEM SET LOG_BUFFER=268435456 SID='*' SCOPE=BOTH;
  9. Définissez le paramètre DB_LOST_WRITE_PROTECT sur TYPICAL.
    ALTER SYSTEM SET DB_LOST_WRITE_PROTECT=TYPICAL SID='*' SCOPE=BOTH;
  10. Activez la fonctionnalité Flashback de base de données. La valeur minimale recommandée pour DB_FLASHBACK_RETENTION_TARGET est 120 minutes.
    ALTER DATABASE FLASHBACK ON;
    ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=120; 
    ALTER SYSTEM ARCHIVE LOG CURRENT;
  11. Ajoutez les fichiers de journalisation de secours en fonction du fichier de journalisation en ligne. Vous pouvez utiliser la requête ci-dessous pour déterminer le nombre et la taille (en octets) des listes de valeurs externes. La taille des fichiers de journalisation de secours doit être identique à celle des fichiers de journalisation en ligne, mais vous devez ajouter des fichiers de journalisation de secours supplémentaires à celle des fichiers de journalisation en ligne. Dans l'exemple suivant, quatre fichiers de journalisation en ligne existent ; vous devez donc ajouter au moins cinq fichiers de journalisation de secours. En d'autres termes, pour chaque thread, vous devez indiquer les fichiers de journalisation en cours plus d'un, puis utiliser la même taille pour les fichiers de journalisation d'origine.
    1. Exécutez la requête suivante pour déterminer le nombre et la taille en octets des fichiers de journalisation Oracle.
      SELECT GROUP#, BYTES FROM V$LOG;
      La sortie doit être semblable à la suivante.
      GROUP# BYTES
      ------ ----------
      1      1073741824
      2      1073741824
      3      1073741824
      4      1073741824
    2. Pour le premier thread, indiquez les fichiers de journalisation en cours plus un autre et utilisez la même taille que les fichiers de journalisation en cours. Par exemple :
      ALTER DATABASE ADD STANDBY LOGFILE THREAD 1
      GROUP 5 SIZE 1073741824,
      GROUP 6 SIZE 1073741824, 
      GROUP 7 SIZE 1073741824,
      GROUP 8 SIZE 1073741824,
      GROUP 9 SIZE 1073741824;
    3. Pour le second thread, indiquez les fichiers de journalisation en cours plus un autre et utilisez la même taille que les fichiers de journalisation en cours. Par exemple :
      ALTER DATABASE ADD STANDBY LOGFILE THREAD 2
      GROUP 10 SIZE 1073741824,
      GROUP 11 SIZE 1073741824, 
      GROUP 12 SIZE 1073741824,
      GROUP 13 SIZE 1073741824,
      GROUP 14 SIZE 1073741824;
    4. Vérifiez que vous avez créé le nombre correct de fichiers de journalisation de secours.
      SELECT GROUP#, BYTES FROM V$STANDBY_LOG;
      Une sortie semblable à la suivante doit apparaître :
          GROUP#      BYTES
      ---------- ----------
               5 1073741824
               6 1073741824
               7 1073741824
               8 1073741824
               9 1073741824
              10 1073741824
              11 1073741824
              12 1073741824
              13 1073741824
              14 1073741824
      10 rows selected.

Configurer la base de données de secours (cible)

Pour configurer la base de données de secours (cible), vous devez supprimer la base de données de secours, puis modifier les fichiers oratab, listener.ora et tnsnames.ora.

Ajouter des entrées pour les instances de base de données

Mettez à jour le fichier /etc/oratab sur les noeuds Oracle RAC et ajoutez une entrée pour votre instance de base de données comme suit :

  1. Utilisez SSH pour vous connecter au premier noeud de la base de données source (base de données principale) à migrer.
  2. Mettez à jour /etc/oratab pour ajouter l'ID d'instance de base de données à l'entrée de base de données en procédant comme suit :
    1. Modifiez /etc/oratab :
      sudo vi /etc/oratab
    2. Ajoutez une entrée pour votre base de données au format suivant :
      $ORACLE_SID:$ORACLE_HOME:N
      Exemple de noeud 1 :
      orcl1:/u01/app/oracle/product/12.1.0.2/dbhome_1:N
      Exemple de noeud 2 :
      orcl2:/u01/app/oracle/product/12.1.0.2/dbhome_1:N
  3. Exécutez le script oraenv pour définir les variables d'environnement de la base de données, telles que $ORACLE_HOME :
    . oraenv
  4. Répétez les étapes précédentes pour le deuxième noeud Oracle RAC.

Supprimer la base de données de secours (cible)

  1. Utilisez SSH pour vous connecter au serveur de secours (cible).
  2. Basculez vers l'utilisateur oracle propriétaire de la base de données.
  3. Connectez-vous à l'instance de base de données en tant qu'utilisateur disposant du privilège d'administrateur SYSDBA.
    sqlplus / as sysdba
    Enter password: password
  4. Dissociez la base de données comme suit :
    alter system set cluster_database=false sid='*' scope=spfile;
    System altered.
  5. Quitter SQL*Plus :
     exit
  6. Arrêtez la base de données à l'aide de srvctl :
    srvctl stop database -db database_unqiue_name
  7. Connectez-vous à l'instance de base de données en tant qu'utilisateur disposant du privilège d'administrateur SYSDBA.
    sqlplus / as sysdba
    Enter password: password
  8. Démarrez et montez la base de données en mode restreint :
     startup mount restrict
    ORACLE instance started.
    Total System Global Area 7516192768 bytes
    Fixed Size                  2941872 bytes
    Variable Size            1409289296 bytes
    Database Buffers         6073352192 bytes
    Redo Buffers               30609408 bytes
    Database mounted.
  9. Supprimer la base de données de secours :
     drop database;
    Database dropped.

Ajouter des services statiques au fichier listener.ora de la base de données de secours

Après avoir ajouté des services statiques au fichier listener.ora de la base de données de secours (base de données source), vous devez redémarrer le processus d'écoute.

  1. Utilisez SSH pour vous connecter au premier noeud Oracle RAC du serveur de base de données de secours (base de données source).
  2. Sur la ligne de commande, connectez-vous en tant qu'utilisateur grid.
    sudo su - grid
  3. Modifiez lefichier $ORACLE_HOME/network/admin/listener.ora afin d'inclure le fichier static listener. L'exemple suivant présente le format à utiliser pour une instance static listener :
    SID_LIST_LISTENER=
     (SID_LIST=
      (SID_DESC=
      (SDU=65535)
      (GLOBAL_DBNAME = standby_db_unique_name.standby_db_domain)
      (SID_NAME = standby_db_sid)
      (ORACLE_HOME= standby_oracle_home)
      (ENVS="TNS_ADMIN= standby_oracle_home/network/admin")
      )
    )
  4. Utilisez l'utilitaire srvctl pour arrêter le processus d'écoute.
    srvctl stop listener -l LISTENER
  5. Redémarrez listener.
    srvctl start listener -l LISTENER
  6. Vérifiez le statut de listener.
    lsnrctl status

    Remarque :

    la sortie est le nouveau processus d'écoute avec le statut UNKNOWN
  7. Répétez ces étapes pour le deuxième noeud Oracle RAC.

Copier les portefeuilles TDE de la base de données principale vers la base de données de secours

Vous pouvez copier manuellement les fichiers de portefeuille TDE du système de base de données principale (base de données source) vers le système de base de données de secours (base de données cible) à l'aide du protocole SCP (Secure Copy Protocol).

Compresser le portefeuille TDE

Vous devez effectuer cette opération dans la base de données principale (la base de données source).

  1. Utilisez SSH pour vous connecter au serveur de base de données principale (base de données source).
  2. Sur la ligne de commande, connectez-vous en tant que propriétaire du logiciel de base de données oracle.
    sudo su - oracle
  3. Exécutez le script oraenv, qui définit la variable d'environnement $ORACLE_HOME.
    . oraenv
  4. Pour rechercher l'emplacement du portefeuille, connectez-vous à l'instance de base de données principale (base de données source) avec leprivilège d'administrateur SYSDBA.
    sqlplus / as sysdba
  5. Interrogez la colonne WRL_PARAMETER de la vue dynamique V$ENCRYPTION_WALLET pour trouver le répertoire dans lequel se trouve le portefeuille.
    SELECT * FROM V$ENCRYPTION_WALLET;
  6. Quittez SQL*Plus.
    exit
  7. Accédez au répertoire dans lequel se trouvent les fichiers du wallet. Par exemple :
    cd /u02/app/oracle/admin/source_db_unique_name
  8. Utilisez la commande tar pour compresser le portefeuille TDE. Par exemple :
    tar cvf tde_wallet.tar ./tde_wallet
    Le résultat ressemble à ce qui suit :
    ./tde_wallet/
    ./tde_wallet/ewallet.p12
    ./tde_wallet/cwallet.sso
    ./tde_wallet/ewallet_2018021607225910.p12
Copier le portefeuille TDE et définir les droits d'accès dans le répertoire du portefeuille

Après avoir sauvegardé le fichier de portefeuille TDE, vous devez créer un répertoire pour le portefeuille et définir des droits d'accès sur ce répertoire.

  1. Copiez le fichier tar du portefeuille dans un répertoire tmp. Par exemple :
    cp tde_wallet.tar /tmp/
  2. Quitter pour devenir l'utilisateur OPC.
    $ exit
  3. Copiez la clé privée de l'hôte local vers la base de données principale.
    Par défaut, les clés privées ne sont pas stockées dans les bases de données.
    scp -i /home/opc/.ssh/privateKey opc@<Primary DB IP>:/home/opc/.ssh/
  4. Utilisez SCP pour copier les fichiers de portefeuille de la base de données principale (base de données source) vers la base de données de secours (base de données cible), dans lerépertoire /opt/oracle/dcs/commonstore/wallets/tde/ $ORACLE_UNQNAME. Par exemple :
    scp -i /home/opc/.ssh/privateKey /tmp/tde_wallet.tar opc@<Standby DB IP>:/tmp/
    Le résultat ressemble à ce qui suit :
    tde_wallet.tar
    100% 20KB 20.0KB/s 00:00
  5. Utilisez SSH pour vous connecter au serveur de base de données cible.
  6. Connectez-vous en tant que propriétaire de logiciel de base de données oracle.
    sudo su - oracle
  7. Exécutez le script oraenv, qui définit la variable d'environnement $ORACLE_HOME.
    . oraenv
  8. Pour rechercher l'emplacement du wallet, affichez le contenu de sqlnet.ora :
    cat $ORACLE_HOME/network/admin/sqlnet.ora
  9. Leparamètre ENCRYPTION_WALLET_LOCATION affiche l'emplacement du wallet. Par exemple :
    ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/opt/oracle/dcs/commonstore/wallets/tde/$ORACLE_UNQNAME)))
  10. Accédez au répertoire de portefeuille (wallet) cible. Par exemple :
    cd /opt/oracle/dcs/commonstore/wallets/tde
  11. Vérifiez que le portefeuille approprié se trouve dans ce répertoire.
    ls target_db_unique_name
  12. Sauvegardez le fichier de portefeuille. Par exemple :
    mv target_db_unique_name target_db_unique_name.old
  13. Créez un répertoire dans lequel stocker le portefeuille. Par exemple :
    mkdir target_db_unique_name
  14. Vérifiez les droits d'accès sur le répertoire du portefeuille.
    ls -ld target_db_unique_name
  15. Si nécessaire, accordez au propriétaire du logiciel de base de données des droits d'accès en lecture, écriture et exécution Oracle.
    chmod 700 target_db_unique_name
  16. Vérifiez à nouveau les droits d'accès.
    ls -ld target_db_unique_name
  17. Copiez le fichier tar du portefeuille dans le répertoire en cours.
    cp /tmp/tde_wallet.tar .
  18. Vérifiez les droits d'accès.
    ls -rlt
    Le résultat ressemble à ce qui suit :
    total 124
    drwx------ 2 oracle oinstall 20480 Feb 16 09:25 target_db_unique_name.old
    drwx------ 2 oracle oinstall 20480 Feb 16 10:16 target_db_unique_name
    -rw-r--r-- 1 oracle oinstall 20480 Feb 16 10:17 tde_wallet.tar
Terminer le processus de portefeuille TDE

Vous devez extraire le fichier TAR du portefeuille TDE, puis déplacer son contenu vers le répertoire du portefeuille de la base de données de secours (base de données cible).

  1. Sur la base de données de secours (base de données cible), vérifiez que vous vous trouvez au bon répertoire de portefeuille. Par exemple :
    pwd
     
    # Output similar to the following should appear:
    /opt/oracle/dcs/commonstore/wallets/tde
  2. Extrayez le fichier tar.
    tar xvf tde_wallet.tar
    Une sortie semblable à la suivante doit apparaître :
    ./tde_wallet/ewallet.p12
    ./tde_wallet/ewallet_2018050819024979.p12
    ./tde_wallet/cwallet.sso
  3. Déplacez le contenu tde_wallet vers le répertoire du portefeuille de la base de données de secours (base de données cible).
    mv ./tde_wallet/* ./target_db_unique_name
  4. Enlever le contenu tde_wallet de la base de données de secours (base de données cible).
    rm -rf ./tde_wallet

Configurer le fichier de paramètres d'initialisation de secours et démarrer l'instance en mode NOMOUNT

Une fois le fichier d'initialisation de secours configuré, vous pouvez redémarrer la base de données en mode NOMOUNT.

  1. Utilisez SSH pour vous connecter au serveur de base de données de secours (base de données cible).
  2. Connectez-vous en tant que propriétaire de logiciel de base de données oracle.
    sudo su - oracle
  3. Exécutez le script oraenv, qui définit la variable d'environnement $ORACLE_HOME.
    . oraenv
  4. Accédez au répertoire dbs.
    cd $ORACLE_HOME/dbs
  5. Créez un fichier de paramètres d'initialisation temporaire, nommé init_<sid>.ora <sid> est le SID de la base de données cible, comme suit :
    echo "*.db_name='db_name'" > $ORACLE_HOME/dbs/init<sid>.ora
    echo "*.db_unique_name='target_db_unique_name'" >> $ORACLE_HOME/dbs/init<sid>.ora
  6. Sauvegardez le fichier de mots de passe existant, le cas échéant. Par exemple :
    mv $ORACLE_HOME/dbs/orapw<sid> $ORACLE_HOME/dbs/orapw<sid>.old
  7. Créez un fichier de mots de passe. Par exemple :
    orapwd file=$ORACLE_HOME/dbs/orapwtarget password=admin_password_for_primary entries=5
  8. Remplacez le fichier de mots de passe du cluster par le fichier de mots de passe non-ASM :
    $ srvctl modify database -d <oci_db_unique_name> -pwfile $ORACLE_HOME/dbs/orapw<oci_oracle_sid>
    $ srvctl config database -d <oci_db_unique_name>
  9. Connectez-vous à l'instance de base de données de secours (base de données cible) en tant qu'utilisateur disposant du privilège d'administrateur sysdba. Par exemple :
    sqlplus / as sysdba 
  10. Arrêtez la base de données. Par exemple :
    shutdown immediate
  11. Redémarrez la base de données en mode NOMOUNT à l'aide du fichier de paramètres d'initialisation init<sid>.ora.
    startup force nomount PFILE=?/dbs/init<sid>.ora

Dupliquer la base de données cible pour la base de données de secours à partir de la base de données active

Vous pouvez exécuter un script pour dupliquer la base de données de secours (base de données cible). Si la base de données principale (base de données source) est volumineuse, vous pouvez allouer des canaux supplémentaires pour améliorer ses performances. Dans le cas d'une base de données nouvellement installée, un canal exécute généralement la duplication de la base de données en quelques minutes. Assurez-vous qu'aucune erreur ne se produit une fois que vous avez exécuté l'opération de duplication Oracle Recovery Manager (Oracle RMAN). Si des erreurs se produisent, redémarrez la base de données en utilisant le fichier de paramètres d'initialisation (et non spfile), dans le cas où elle est générée sous le répertoire $ORACLE_HOME/dbs dans le cadre du processus de duplication Oracle RMAN.

  1. Connectez-vous à la base de données de secours (base de données cible) en tant que propriétaire du logiciel de base de données oracle.
    su - oracle
  2. Exécutez le script oraenv, qui définit la variable d'environnement $ORACLE_HOME.
    . oraenv
  3. Créer un annuaire dup.rcv
    vi dup.rcv
    Collez le contenu du script lors de la mise à jour des variables requises.
  4. Avec la base de données de secours (base de données cible) en mode NOMOUNT, connectez-vous à Oracle RMAN.
    rman
    RMAN> connect target sys@<primary_db_tnsnames_name>
    target database Password: password
    RMAN> connect auxiliary sys@<standby_db_tnsnames_name>
    auxiliary database Password: password
  5. Exécutez le script suivant pour dupliquer la base de données cible pour une base de données de secours à partir d'une base de données active. L'exemple suivant illustre le script dup.rcv, qui doit être créé par l'utilisateur, et est basé sur la note My Oracle Support 2369137. Explication de la méthode RMAN Active Duplicate S'exécute dans RMAN-06217 -- PUSH & PULL (ID de document 2369137.1). Dans cet exemple, le script dup.rcv a été personnalisé pour transmettre la duplication (copies d'image) du système de fichiers vers Oracle Automatic Storage Management (Oracle ASM). D'autres options, telles que le système de fichiers vers Oracle Automatic Storage Management Cluster File System ou Oracle ASM vers Oracle ASM, nécessitent de modifier les paramètres de destination de fichier et les paramètres de conversion de nom de fichier.
    @dup.rcv
    Output similar to the following appears:
    
    RMAN> run {
    2> allocate channel prmy1 type disk;
    3> allocate channel prmy2 type disk;
    4> allocate channel prmy3 type disk;
    5> allocate channel prmy4 type disk;
    6> allocate auxiliary channel stby1 type disk;
    7> allocate auxiliary channel stby2 type disk;
    8> allocate auxiliary channel stby type disk;
    9> duplicate target database for standby from active database dorecover
    10> spfile
    11> parameter_value_convert '/u02/app/oracle/oradata/source_db_name','+DATA'
    12> Set CLUSTER_DATABASE='FALSE'
    13> set db_unique_name='<target_db_unique_name>'
    14> set db_create_file_dest='+DATA'
    15> set db_create_online_log_dest_1='+RECO'
    16> set db_recovery_file_dest='+RECO'
    17> set audit_file_dest='/u01/app/oracle/admin/db_name/adump'
    18> set control_files='+DATA','+RECO'
    19> set dg_broker_config_file1='+DATA/<target_db_unique_name>/dr1<target_db_unique_name>.dat'
    20> set dg_broker_config_file2='+RECO/<target_db_unique_name>/dr2<target_db_unique_name>.dat'
    21> set dispatchers='(PROTOCOL=TCP) (SERVICE=<target_db_name>XDB)'
    22> set instance_name='<target_db_name>'
    23> set db_domain='<target_db_domain>'
    24> set db_recovery_file_dest='+RECO'
    25> ;
    26> }

Etapes post-duplication Oracle Recovery Manager

Une fois l'opération de duplication d'Oracle Recovery Manager (Oracle RMAN) terminée, vous devez effectuer ces tâches de nettoyage sur la base de données de secours (base de données cible).

Mettre à jour le fichier de mots de passe

Mettez à jour le fichier de mots de passe comme suit :

  1. Remonter le fichier de mots de passe vers ASM:
    [oracle@oci_node1 ~]$ cp $ORACLE_HOME/dbs/orapw<oci_node1_oracle_sid> /tmp/orapw<oci_node1_oracle_sid>
  2. Quitter pour l'utilisateur opc :
    [oracle@oci_node1 ~]$ exit
  3. Basculer vers l'utilisateur grid :
    [opc@oci_node1 ~]$ sudo su - grid
  4. Passer à l'invite ASMCMD :
    [grid@oci_node1 ~]$ asmcmd
  5. Copiez le mot de passe dans ASMCMD :
    ASMCMD> pwcopy --dbuniquename <oci_db_unique_name> '/tmp/orapw<oci_node1_oracle_sid>' '+DATA'

    Remarque :

    La commande peut afficher des erreurs car la version de ASM est différente de celle de la base de données. Les erreurs peuvent être ignorées car le problème d'inscription est résolu ultérieurement dans cette procédure.

  6. Accédez au répertoire +DATA/<OCI_DB_UNIQUE_NAME>/PASSWORD/pour trouver le system_generated_id à utiliser à l'étape 9 .
    ASMCMD> cd +DATA/<OCI_DB_UNIQUE_NAME>/PASSWORD/ 
    ASMCMD> ls -lt
  7. Quittez ASMCMD et l'utilisateur grid :
    ASMCMD> exit
    [grid@oci_node1 ~]$ exit
  8. Basculer vers l'utilisateur Oracle :
    [opc@oci_node1 ~]$ sudo su - oracle
  9. Exécutez le script oraenv, qui définit la variable d'environnement $ORACLE_HOME.
    . oraenv
  10. Modifiez le fichier de mots de passe dans le cluster en ASM :
    [oracle@oci_node1 ~]$ srvctl modify database -d <oci_db_unique_name> -pwfile +DATA/<OCI_DB_UNIQUE_NAME>/PASSWORD/pwd<oci_db_unique_name><system_generated_id>
    [oracle@oci_node1 ~]$ rm $ORACLE_HOME/dbs/orapw<oci_node1_oracle_sid>
Activer Oracle Flashback

Vous devez activer Oracle Flashback.

  1. Utilisez SSH pour vous connecter au serveur de base de données de secours (base de données cible).
  2. Connectez-vous en tant que propriétaire de logiciel de base de données oracle.
    sudo su - oracle
  3. Connectez-vous à l'instance de base de données en tant qu'utilisateur disposant du privilège d'administrateur SYSOPER. Par exemple :
    sqlplus / as sysoper
    Enter password: password
  4. Activez Oracle Flashback.
    ALTER DATABASE FLASHBACK ON;
  5. Connectez-vous en tant qu'utilisateur disposant du privilège d'administrateur SYSDBA.
    CONNECT / AS SYSDBA
  6. Définit la cible de conservation Flashback.
    ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=120;
Déplacer le fichier SPFILE vers Oracle Automatic Storage Management

Vous devez déplacer le fichier spfile vers Oracle Automatic Storage Management.

  1. Utilisez SSH pour vous connecter au serveur de base de données de secours (base de données cible).
  2. Connectez-vous à l'instance de base de données en tant qu'utilisateur disposant du privilège d'administrateur SYSOPER.
  3. Créez et déplacez le fichier spfile vers Oracle Automatic Storage Management.
    1. Créez le fichier PFILE.
      create pfile='/tmp/init<sid>.ora' from spfile;
    2. Quitter SQL*Plus :
      SQL> exit
    3. Modifiez le fichier PFILE:
      vi /tmp/init<sid>.ora
    4. Supprimez la ligne suivante du fichier :
      *.instance_name=<sid_for_node1>
    5. Ajoutez les lignes suivantes pour chaque noeud :
      <sid_for_node1>.instance_name='<sid_for_node1>'
      <sid_for_node2>.instance_name='<sid_for_node2>'
    6. Connectez-vous à SQL*Plus en tant qu'administrateur. Par exemple :
      sqlplus sys / as sysdba
      Password: password
    7. Arrêter la base de données
      shutdown immediate
    8. Redémarrez la base de données en mode MOUNT à l'aide du fichier initdb_name.ora que vous venez de créer.
      startup mount pfile='/tmp/init<sid>.ora';
    9. Créez le fichier spfile.
      create spfile='+DATA' from pfile='/tmp/init<sid>.ora';
  4. Quittez SQL*Plus.
  5. En tant qu'utilisateur grid, recherchez le fichier spfile sur Oracle Automatic Storage Management à l'aide de la commande asmcmd.
    asmcmd
    ASMCMD> cd +DATA/target_db_unique_name/PARAMETERFILE/
    ASMCMD> ls -lt
    Le résultat ressemble à ce qui suit :
    Type           Redund  Striped  Time             Sys  Name
    PARAMETERFILE  UNPROT  COARSE   APR 09 16:00:00  Y    spfile.262.973010033
    Notez le nom du fichier ASM (spfile.262.973010033) dont vous aurez besoin dans la tâche suivante.
Changer le fichier .ora inittarget_db_name en fichier SPFILE

Vous pouvez modifier le fichier init<sid>.ora pour référencer le fichier spfile.

  1. Utilisez SSH pour vous connecter au serveur de base de données de secours (base de données cible).
  2. Connectez-vous en tant que propriétaire de logiciel de base de données oracle.
    su - oracle
  3. Exécutez le script oraenv pour définir la variable d'environnement $ORACLE_HOME.
    . oraenv
  4. Accédez au répertoire $ORACLE_HOME/dbs.
    cd $ORACLE_HOME/dbs
  5. Vérifiez que le fichier init<sid>.ora se trouve dans ce répertoire.
    ls *.ora
  6. Modifiez le fichier inittarget_db_name.ora pour faire référence au fichier spfile. Par exemple :
    mv spfiletarget_db_name.ora spfiletarget_db_name.ora.stby
    mv init<sid>.ora init<sid>.ora.stby
    echo ''SPFILE='+DATA/target_db_unique_name/PARAMETERFILE/spfile.262.973010033'' > init<sid>.ora
    cat init<sid>inittarget_db_name.ora--To check the file
    Dans cette sortie, spfile.262.973010033 est le nom du fichier généré lors du déplacement dufichier SPFILE vers Oracle Automatic Storage Management dans la tâche précédente.
    Le résultat ressemble à ce qui suit :
    SPFILE='+DATA/target_db_unique_name/PARAMETERFILE/spfile.262.973010033'
Modifier et démarrer la base de données de secours en mode MOUNT

Vous pouvez utiliser srvctl pour modifier et démarrer la base de données de secours (base de données cible).

  1. Utilisez SSH pour vous connecter au serveur de base de données de secours (base de données cible).
  2. Connectez-vous en tant que propriétaire de logiciel de base de données oracle.
    su - oracle
  3. Exécutez le script oraenv, qui définit la variable d'environnement $ORACLE_HOME.
    . oraenv
  4. Utilisez srvctl pour modifier et démarrer la base de données de secours (la base de données cible) en mode MOUNT. Par exemple :
    srvctl modify database -db target_db_unique_name -role /
    PHYSICAL_STANDBY -s "READ ONLY"  -spfile /
    +DATA/target_db_unique_name/PARAMETERFILE/spfile.262.973010033
    
    srvctl config database -db target_db_unique_name
  5. Connectez-vous à l'instance de base de données en tant qu'utilisateur disposant du privilège d'administrateur SYSOPER.
    sqlplus / as sysoper
  6. Arrêter la base de données
    SQL*Plus
    SHUTDOWN IMMEDIATE
  7. démarrer la base de données en cours de montage
    STARTUP MOUNT
  8. alter the cluster_database parameter
    
    alter  system set cluster_database=True  sid='*' scope=spfile;
  9. Arrêter la base de données
    SHUTDOWN IMMEDIATE
  10. Quittez SQL*Plus.
    EXIT
  11. Démarrez la base de données en mode MOUNT à l'aide de srvctl.
    srvctl start database -db target_db_unique_name -o mount
  12. Connectez-vous à l'instance de base de données en tant qu'utilisateur disposant du privilège d'administrateur SYSDBA.
    sqlplus / as sysdba
  13. Interrogez la vue dynamique V$DATABASE pour vous assurer que la base de données est en mode MOUNT.
    SELECT NAME, OPEN_MODE FROM V$DATABASE;
    #Output semblable à ce qui suit apparaît :
    NAME              OPEN_MODE
    --------------    ---------
    source_db_name    MOUNTED
Définir les paramètres de conversion du nom de la base de données et du fichier journal sur la base de données principale

Vous devez définir les paramètres de conversion pour la base de données et le nom du fichier journal dans la base de données principale (base de données source).

  1. Utilisez SSH pour vous connecter au serveur de base de données principale (base de données source).
  2. Basculer vers l'utilisateur Oracle :
    sudo su - oracle
  3. Connectez-vous à l'instance de base de données en tant qu'utilisateur disposant du privilège d'administrateur SYSDBA. Par exemple :
    sqlplus / as sysdba
    Enter password: password
  4. Vérifiez le paramètre CONVERT.
    SHOW PARAMETER CONVERT
    Le résultat ressemble à ce qui suit :
    NAME                         TYPE        VALUE
    ------------------------------------ ----------- ------
    db_file_name_convert                 string
    log_file_name_convert                string
    pdb_file_name_convert                string
    La colonne VALUE doit être vide (NULL). Si une valeur est indiquée, notez cette valeur une fois la migration terminée. Une fois la migration terminée, ces valeurs sont définies sur NULL.
  5. Utilisez les informations de cette sortie pour définir leparamètre DB_FILE_NAME_CONVERT.

    Remarque :

    A cette étape, SOURCE_DB_NAME doit être en majuscules.
    ALTER SYSTEM SET DB_FILE_NAME_CONVERT='+DATA','/u02/app/oracle/oradata/SOURCE_DB_NAME/'' SID='*' SCOPE=SPFILE;
  6. Définissez le paramètre LOG_FILE_NAME_CONVERT. Par exemple :
    ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='+RECO','/u04/app/oracle/redo/' SID='*' SCOPE=SPFILE;
  7. Redémarrez la base de données.
    srvctl stop database -db source_db_name
    srvctl start database -db source_db_name
Définir les paramètres de conversion du nom de la base de données et du fichier journal sur la base de données de secours

Vous devez définir les paramètres de conversion pour la base de données et le nom du fichier journal dans la base de données de secours (base de données cible).

  1. Utilisez SSH pour vous connecter au serveur de base de données de secours (base de données cible).
  2. Basculer vers l'utilisateur Oracle :
    sudo su - oracle
  3. Connectez-vous à l'instance de base de données en tant qu'utilisateur disposant du privilège d'administrateur SYSDBA. Par exemple :
    sqlplus / as sysdba
    Enter password: password
  4. Vérifiez le paramètre CONVERT.
    SHOW PARAMETER CONVERT
    Le résultat ressemble à ce qui suit :
     NAME                        TYPE        VALUE
    ------------------------------------ ----------- ------
    db_file_name_convert                 string
    log_file_name_convert                string
    pdb_file_name_convert                string
    La colonne VALUE doit être vide (NULL). Si une valeur est indiquée, notez cette valeur une fois la migration terminée. Une fois la migration terminée, ces valeurs sont définies sur NULL.
  5. Utilisez les informations de cette sortie pour définir le paramètre DB_FILE_NAME_CONVERT. Par exemple :

    Remarque :

    A cette étape, SOURCE_DB_NAME doit être en majuscules.
    ALTER SYSTEM SET DB_FILE_NAME_CONVERT='/u02/app/oracle/oradata/SOURCE_DB_NAME/','+DATA' SID='*' SCOPE=SPFILE;
  6. Définissez le paramètre LOG_FILE_NAME_CONVERT. Par exemple :
    ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='/u04/app/oracle/redo/','+RECO'
    SID='*' SCOPE=SPFILE;
  7. Redémarrez la base de données.
    srvctl stop database -db target_db_unique_name
    srvctl start database -db target_db_unique_name -o mount

Configurer la base de données avec Oracle Data Guard Broker

Vous pouvez vous servir de l'utilitaire dbmgrl pour configurer la base de données principale (base de données source) ou la base de données de secours (base de données cible) avec Oracle Data Guard Broker.

  1. Utilisez SSH pour vous connecter à la base de données principale (base de données source) ou au serveur de base de données de secours (base de données cible).
  2. Lancez l'utilitaire de ligne de commande dgmgrl :
    dgmgrl
  3. Connectez-vous en tant qu'utilisateur SYS à partir du système de base de données principale ou de secours. Par exemple, pour vous connecter à une base de données principale dont lenom TNS est OCIC-ORCL :
    connect sys@ocic-orcl
    Enter password: password
  4. A l'aide de l'utilitaire dbmgrl, créez la configuration et l'identité Oracle Data Guard pour les bases de données principale et de secours. Par exemple :
    create configuration configuration_name as primary database is source_db_unique_name connect identifier is OCIC-ORCL; -- Uses the source TNS name
     
    add database target_db_unique_name as connect identifier is OCI-ORCL; --Uses the target TNS name
  5. Activez la configuration.
    enable configuration
  6. Affichez la configuration Oracle Data Guard sur la base de données de secours.
    show configuration
    Le résultat ressemble à ce qui suit :
    Configuration - configuration_name
      Protection Mode: MaxPerformance
      Members:
      source_db_unique_name           - Primary database
        target_db_unique_name         - Physical standby database
    
    Fast-Start Failover: DISABLED
    
    Configuration Status:
    SUCCESS   (status updated 12 seconds ago)

Valider le broker Oracle Data Guard sur la base de données principale et la base de données de secours

Vous pouvez utiliser SQL*Plus pour valider Oracle Data Guard Broker sur la base de données principale (base de données source) et la base de données de secours (base de données cible).

Valider le broker Oracle Data Guard sur la base de données principale

Vous pouvez utiliser SQL*Plus pour valider Oracle Data Guard Broker sur la base de données principale (base de données source).

  1. Utilisez SSH pour vous connecter au serveur de base de données principale (base de données source).
  2. Connectez-vous en tant qu'utilisateur disposant du privilège d'administrateur SYSDBA. Par exemple, pour une base de données principale dont le nom TNS est OCIC-ORCL :
    connect sys@ocic-orcl as sysdba
    Enter password: password
  3. Interrogez la vue dynamique V$DATABASE.
    SELECT FORCE_LOGGING, FLASHBACK_ON, OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, DATAGUARD_BROKER, PROTECTION_MODE FROM V$DATABASE;
    
  4. Le résultat ressemble à ce qui suit :
    
    FORCE_LOGGING                           FLASHBACK_ON       OPEN_MODE
    --------------------------------------- ------------------ -----------
    DATABASE_ROLE    SWITCHOVER_STATUS    DATAGUAR PROTECTION_MODE
    ---------------- -------------------- -------- --------------------
    YES                                     YES                READ WRITE
    PRIMARY          TO STANDBY           ENABLED  MAXIMUM PERFORMANCE
    Dans la sortie, DATABASE_ROLE doit être PRIMARY et OPEN_MODE doit être READ WRITE.

Valider le broker Oracle Data Guard sur la base de données de secours

Vous pouvez utiliser SQL*Plus pour valider Oracle Data Guard Broker sur la base de données de secours (base de données cible).

  1. Utilisez SSH pour vous connecter au serveur de base de données de secours (base de données cible).
  2. Connectez-vous en tant qu'utilisateur disposant du privilège d'administrateur SYSDBA.
  3. Interrogez la vue dynamique V$DATABASE.
    SELECT FORCE_LOGGING, FLASHBACK_ON,
    OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS,
    DATAGUARD_BROKER, PROTECTION_MODE
    FROM V$DATABASE;
    Le résultat ressemble à ce qui suit :
    FORCE_LOGGING                           FLASHBACK_ON       OPEN_MODE
    --------------------------------------- ------------------ -----------
    DATABASE_ROLE    SWITCHOVER_STATUS    DATAGUAR PROTECTION_MODE
    ---------------- -------------------- -------- --------------------
    YES                                     YES                MOUNTED
    PHYSICAL STANDBY NOT ALLOWED          ENABLED  MAXIMUM PERFORMANCE
    La sortie doit afficher DATABASE_ROLE sous la forme PHYSICAL STANDBY et OPEN_MODE sous la forme MOUNTED.
  4. Vérifiez que les processus Oracle Data Guard sont démarrés dans la base de données de secours.
    SELECT PROCESS,PID,DELAY_MINS FROM V$MANAGED_STANDBY;
    Le résultat ressemble à ce qui suit :
    PROCESS   PID                      DELAY_MINS
    --------- ------------------------ ----------
    ARCH      9207                              0
    ARCH      9212                              0
    ARCH      9216                              0
    ARCH      9220                              0
    RFS       1065                              0
    RFS       1148                              0
    RFS       1092                              0
    MRP0      972                               0
    RFS       1208                              0
    La sortie doit indiquer que les processus sont exécutés avec peu de temps ou sans délai. Si DELAY_MINS pour MRP0, les bases de données sont synchronisées.
  5. Vérifiez le paramètre LOG_ARCHIVE_DEST.
    SHOW PARAMETER LOG_ARCHIVE_DEST_
    Le résultat ressemble à ce qui suit :
    NAME                         TYPE      VALUE
    ---------------------------- --------- -----------------------------
    log_archive_dest_1           string       
                                           location=USE_DB_RECOVERY_FILE_
                                           DEST, valid_for=(ALL_LOGFILES,
                                           ALL_ROLES)
    log_archive_dest_10          string
    log_archive_dest_11          string
    log_archive_dest_12          string
    log_archive_dest_13          string
    log_archive_dest_14          string
    log_archive_dest_15          string
    ...
    log_archive_dest_2           string    service="oci-orcl", ASYNC
                                           NOAF FIRM delay=0 optional
                                           compression=disable
                                           max_failure=0 max_connections
                                           =1 reopen=300 db_unique_name=
                                           "source_db_unique_name"
                                           net_timeout=30, valid_for=
                                           (online_logfile,all_roles)
    ...
    
    La sortie doit être semblable à la sortie de log_archive_dest_2, où le service pointe vers la base de données de secours (la base de données cible), oci-orcl dans cet exemple.
  6. Vérifiez le paramètre LOG_ARCHIVE_CONFIG.
    SHOW PARAMETER LOG_ARCHIVE_CONFIG#
    Le résultat ressemble à ce qui suit :
    
    NAME                         TYPE      VALUE
    ---------------------------- --------- -----------------------------------------------------------
    log_archive_config           string    dg_config=(source_db_unique_name,target_db_unique_name)
    
  7. Vérifiez le paramètre FAL_SERVER.
    SHOW PARAMETER FAL_SERVER
    Le résultat ressemble à ce qui suit :
    
    NAME                        TYPE      VALUE
    --------------------------- --------- ----------
    fal_server                  string    <tns_entry_of_primary>  
  8. Vérifiez le paramètre LOG_ARCHIVE_FORMAT.
    SHOW PARAMETER LOG_ARCHIVE_FORMAT
    Le résultat ressemble à ce qui suit :
    
    NAME                        TYPE      VALUE
    --------------------------- --------- --------------
    log_archive_format          string    %t_%s_%r.dbf

Effectuer la validation sur la base de données principale

Vous pouvez utiliser dgmrgl pour terminer la validation du broker Oracle Data Guard sur la base de données principale (base de données source).

  1. Utilisez SSH pour vous connecter au serveur de base de données principale (base de données source).
  2. Répétez les étapes 5 à 8 dans la rubrique Valider Oracle Data Guard Broker sur la base de données de secours sur la base de données principale (base de données source).
  3. Lancez l'utilitaire de ligne de commande dgmgrl :
    dgmgrl
  4. Connectez-vous en tant qu'utilisateur SYS à partir du système de base de données principale ou de secours. Par exemple, pour vous connecter à une base de données principale dont le nom TNS est OCIC-ORCL :
    connect sys@primary_db_tnsnames_name
    Enter password: password
  5. Vérifiez la configuration d'Oracle Data Guard.
    show configuration verbose
    Le résultat ressemble à ce qui suit :
    Configuration - configuration_name
     
      Protection Mode: MaxPerformance
      Members:
      source_db_unique_name           - Primary database
        target_db_unique_name         - Physical standby database
     
      Properties:
        FastStartFailoverThreshold      = '30'
        OperationTimeout                = '30'
        TraceLevel                      = 'USER'
        FastStartFailoverLagLimit       = '30'
        CommunicationTimeout            = '180'
        ObserverReconnect               = '0'
        FastStartFailoverAutoReinstate  = 'TRUE'
        FastStartFailoverPmyShutdown    = 'TRUE'
        BystandersFollowRoleChange      = 'ALL'
        ObserverOverride                = 'FALSE'
        ExternalDestination1            = ''
        ExternalDestination2            = ''
        PrimaryLostWriteAction          = 'CONTINUE'
     
    Fast-Start Failover: DISABLED
  6. Vérifiez le statut de la base de données de secours (base de données cible). Par exemple :
    show database verbose target_db_unique_name
    Une fois ces étapes terminées, vous devez vérifier que la configuration d'Oracle Data Guard fonctionne comme prévu en exécutant les opérations de permutation dans les deux directions.

Effectuer la migration

Pour terminer la migration, vous devez effectuer une opération de permutation de la base de données principale (base de données source) vers la base de données de secours (base de données cible).

  1. Utilisez SSH pour vous connecter au serveur de base de données principale (base de données source).
  2. Démarrez l'utilitaire de ligne de commande dgmgrl.
    dgmgrl 
  3. Connectez-vous en tant qu'utilisateur SYS à partir du système de la base de données principale ou de secours. Par exemple, pour vous connecter à une base de données principale dont le nom TNS est OCIC-ORCL:.
    connect sys@ocic-orcl
    Enter password: password
  4. Vérifiez la configuration.
    show configuration verbose
  5. Dans la sortie en mode verbose de configuration, vérifiez que le paramètre Statut de base de données indique SUCCESS.
  6. Vérifiez la configuration de la base de données principale (base de données source).
    show database verbose source_db_unique_name
    La sortie en mode verbose de base de données doit indiquer que le rôle est principal et que le paramètre de StaticConnectIdentifier est identique à DGConnectIdentifier.
  7. Effectuez une opération de permutation vers la base de données de secours (base de données cible).
    switchover to target_db_unique_name
    La sortie doit indiquer que l'opération de permutation se produit entre les deux bases de données.
  8. Exécutez la commande Afficher la configuration pour vérifier l'absence d'erreurs ou d'avertissements :
    show configuration;

Etapes postérieures à la migration

Une fois la migration d'une base de données Oracle d'un serveur Oracle Cloud Infrastructure Compute Classic vers un serveur Oracle Cloud Infrastructure qui utilise un système de base de données de machine virtuelle, vous devez valider la migration, puis enlever la configuration de la base de données principale (base de données source).

Tester la configuration Oracle Data Guard sur la base de données de secours

A ce stade, la base de données cible est désormais la base de données principale. La base de données source est maintenant la base de données de secours.

Vous pouvez tester la connexion à Oracle Data Guard sur la base de données cible en effectuant une opération de permutation avec la base de données source. Cette opération de permutation entraînera une nouvelle exécution de la base de données cible du rôle de secours. Le but de ce test est de prouver que vous pouvez revenir à la configuration d'origine si la base de données cible n'est pas fonctionnelle.

  1. Utilisez SSH pour vous connecter au serveur de base de données de secours (base de données cible).
  2. Démarrez l'utilitaire dgmgrl. Par exemple :
    dgmgrl sys@target_db
    Enter password: password
  3. Effectuez une opération de permutation avec la base de données source, qui deviendra la base de données cible considérée comme le rôle de secours.
    switchover to source_db_unique_name;
    La sortie doit indiquer que l'opération de permutation se produit entre les deux bases de données.
  4. (Facultatif) Pour empêcher la modification de la nouvelle base de données de secours tant que la nouvelle base de données principale n'est pas entièrement fonctionnelle, désactivez temporairement la fonctionnalité Redo Apply.
    edit database source_db_unique_name set state = 'APPLY-OFF';
    Si vous effectuez une autre opération de permutation de bases de données pour que la base de données cible devienne la base de données de secours, vous pouvez effectuer une opération APPLY-OFF pour empêcher la mise à jour de la base de données source. Ainsi, la base de données cible peut être mise en service et la base de données source peut servir de sauvegarde jusqu'à un point dans le cas d'un échec logique dans la nouvelle configuration.
  5. (Facultatif) Pour redémarrer la fonctionnalité d'application, procédez comme suit :
    edit database source_db_unique_name set state = 'APPLY-ON';
  6. Quittez dgmgrl.
    exit
  7. Effectuez une opération de permutation avec la base de données cible, qui constituera le rôle de secours à la base de données source.
    switchover to target_db_unique_name;
    La sortie doit indiquer que l'opération de permutation se produit entre les deux bases de données.
  8. Testez la connexion à la nouvelle base de données principale. Par exemple, après avoir exporté le nom unique de la cible, connectez-vous en tant qu'utilisateur SYS et effectuez une sélection dans un tablespace crypté. Dans cet exemple, la table HR.EMPLOYEES est cryptée.
    exit
  9. Testez la connexion à la nouvelle base de données principale. Par exemple, après avoir exporté le nom unique de la cible, connectez-vous en tant qu'utilisateur SYS et faites votre choix dans un espace de table crypté. Dans cet exemple, la table HR.EMPLOYEES est cryptée.
    export ORACLE_UNQNAME=target_db_unique_name
     
    sqlplus sys@target_TNS_name
    Password: password
     
    SQL> ALTER SESSION SET CONTAINER = PDB1;
    SQL> SELECT * FROM HR.EMPLOYEES;
     
    SQL> EXIT

Nettoyer la base de données de secours

Une fois la migration terminée et testée, vous pouvez enlever la configuration Oracle Data Guard de la base de données de secours (base de données cible). Vous n'avez pas besoin de supprimer la base de données source d'origine. A ce stade, la base de données de secours est la nouvelle base de données source.

  1. Utilisez SSH pour vous connecter au serveur de base de données de secours (base de données cible) et vous connecter à Oracle Data Guard dgmgrl utility.
  2. Vérifiez la configuration.
    show configuration
  3. Si la configuration n'affiche pas Protection Mode: MaxPerformance, définissez Oracle Data Guard de sorte qu'il utilise le mode de protection MaxPerformance.
    edit configuration set protection mode as maxperformance
  4. Désactivez la configuration, puis enlevez-la.
    edit database source_db_unique_name set state = 'APPLY-OFF';
     
    disable configuration;
     
    remove configuration;
     
    exit
  5. Connectez-vous à l'instance de base de données en tant qu'utilisateur disposant du privilège d'administrateur SYSDBA. Par exemple :
    sqlplus / as sysdba
  6. Vérifiez les paramètres DG_BROKER_CONFIG_FILE.
    SHOW PARAMETER DB_BROKER_CONFIG_FILE
    La sortie doit répertorier les données associées et les fichiers de récupération de cette configuration, généralement nommés dg_broker_config_file1 et dg_broker_config_file2.
  7. Démarrez une autre fenêtre de terminal et connectez-vous à asmcmd en tant qu'utilisateur de grille.
  8. Enlevez les fichiers de configuration Oracle Data Guard répertoriés lorsque vous avez coché les paramètres DG_BROKER_CONFIG_FILE.
  9. Revenez à la fenêtre qui exécute SQL*Plus.
  10. Exécutez les instructions ALTER SYSTEM suivantes :
    ALTER SYSTEM SET DG_BROKER_START=FALSE SID='*' SCOPE=BOTH;
    ALTER SYSTEM SET DG_BROKER_CONFIG_FILE1='' SID='*' SCOPE=SPFILE;
    ALTER SYSTEM SET DG_BROKER_CONFIG_FILE2='' SID='*' SCOPE=SPFILE;
    ALTER SYSTEM RESET LOG_ARCHIVE_CONFIG SID='*' SCOPE=SPFILE;
  11. Vérifiez les paramètres suivants :
    SHOW PARAMETER DB_FILE_NAME_CONVERT
    SHOW PARAMETER LOG_FILE_NAME_CONVERT
    SHOW PARAMETER LOG_ARCHIVE_DEST
    SHOW PARAMETER LOG_ARCHIVE_DEST_STATE
    SHOW PARAMETER STANDBY_ARCHIVE_DEST
    SHOW PARAMETER FAL
  12. Si l'un des paramètres précédents est défini, réinitialisez les paramètres pour utiliser des valeurs vides. Par exemple, pour STANDBY_ARCHIVE_DEST :
    ALTER SYSTEM SET STANDBY_ARCHIVE_DEST='' SID='*' SCOPE=SPFILE;
  13. Redémarrez la base de données.
    SHUTDOWN IMMEDIATE
    STARTUP
  14. Supprime les journaux de secours de la base de données principale (base de données source).
    1. Recherchez les numéros des groupes des fichiers de journalisation de la base de données de secours qui se trouvent dans la nouvelle base de données principale (anciennement la base de données cible).
      SELECT GROUP# FROM V$STANDBY_LOG;Output similar to the following appears:    GROUP#
      ----------
               5
               6
               7
               8
               9
    2. Enlevez les journaux de secours. Par exemple :
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 5;
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 6;
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 7;
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 8;
      ALTER DATABASE DROP STANDBY LOGFILE GROUP 9;
  15. (Facultatif) Modifiez les paramètres DB_BLOCK_CHECKSUM et DB_BLOCK_CHECKING.
    Les valeurs par défaut sont DB_BLOCK_CHECKSUM=TYPICAL et DB_BLOCK_CHECKING=FALSE.
  16. Quittez SQL*Plus.
    EXIT