Migrer Oracle Database vers OCI à l'aide de M5 Cross-Endian XTTS avec des sauvegardes incrémentielles RMAN

Introduction

Ce tutoriel explique comment migrer une base de données Oracle Database vers Oracle Cloud Infrastructure (OCI) à l'aide de M5 Cross Endian Platform Migration avec Full Transportable Data Pump et des sauvegardes incrémentielles RMAN.

Cette méthode permet la migration entre des systèmes avec différents formats d'endian tout en minimisant les temps d'arrêt des applications.

Le processus commence par une copie de sauvegarde complète de la source vers la destination. Ensuite, des sauvegardes incrémentielles sont appliquées pour que la destination reste presque synchronisée avec la source. Un temps d'inactivité est requis uniquement lors de la sauvegarde incrémentielle finale et de l'export/import de métadonnées.

Détails d'environnement

Objectifs

Prérequis

Tâche 1 : Préparer la base de données source

  1. Exécutez la requête suivante pour vérifier le format Endian sur la base de données source.

    col PLATFORM_NAME for a50
    select platform_name, platform_id, endian_format from v$transportable_platform;
    
  2. Identifiez les tablespaces de la base de données source qui seront transportés. Exécutez l'interrogation suivante si vous migrez tous les tablespaces.

    select tablespace_name from dba_tablespaces where contents='PERMANENT' and tablespace_name not in ('SYSTEM','SYSAUX');
    
  3. Vérifier les violations du jeu de transport :

    exec dbms_tts.transport_set_check('<comma-separated tablespace list>');
    SELECT * FROM SYS.TRANSPORT_SET_VIOLATIONS;
    
  4. (Facultatif) Activez le suivi des modifications de bloc sur la base de données source pour améliorer les performances des sauvegardes incrémentielles.

  5. Vérifiez que tous les tablespaces sont en ligne sur la base de données source.

Tâche 2 : préparer la base de données ciblée

  1. Créez un tablespace utilisateur.

    select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME='USERS_OCI';
    select TABLESPACE_NAME from dba_tablespaces order by 1;
    set long 99999
    SELECT DBMS_METADATA.GET_DDL ('TABLESPACE','USERS') from dual;
    

    Utilisez la sortie LDD (Langage de définition de données) ci-dessus, remplacez le nom du groupe de disques comme indiqué ci-dessous et créez un tablespace utilisateur.

    CREATE BIGFILE TABLESPACE USERS_OCI DATAFILE '+DATAC2'
    SIZE 1073741824
    AUTOEXTEND ON NEXT 17179869184 MAXSIZE 33554431M
    LOGGING ONLINE PERMANENT BLOCKSIZE 8192
    EXTENT MANAGEMENT LOCAL AUTOALLOCATE
    ENCRYPTION USING 'AES256' ENCRYPT DEFAULT
    NOCOMPRESS SEGMENT SPACE MANAGEMENT AUTO;
    

    Affectez le nouveau tablespace utilisateur USERS_OCI à tous les utilisateurs de base de données qui disposent du tablespace par défaut USERS à l'aide de l'interrogation suivante.

    select 'alter user '||username||' default tablespace USERS_OCI;' from dba_users where default_tablespace='USERS';
    

    La sortie de la requête de sélection ci-dessus doit renvoyer 0 après la réaffectation du tablespace des nouveaux utilisateurs.

    select count(*) from dba_users where default_tablespace='USERS';
    ALTER DATABASE DEFAULT TABLESPACE USERS_OCI;
    drop tablespace users including contents and datafiles;
    select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME='USERS';
    
  2. Créez des tablespaces temporaires sur la base de données cible. Exécutez l'interrogation suivante sur la source et collectez les détails du tablespace.

    Exécutez la requête suivante sur la source :

    select TABLESPACE_NAME from dba_tablespaces where CONTENTS='TEMPORARY';
    

    Créez ensuite des tablespaces temporaires sur la base de données cible. Exemple :

    create bigfile temporary tablespace USER_TEMP tempfile size 672m autoextend on next 672m extent management local;
    

Tâche 3 : étapes XTTS M5 incrémentielles

Tâche 3.1 : Phase initiale

  1. Téléchargez les derniers scripts M5 et décompressez-les à partir d'ici : Migration de plate-forme inter-dienne M5 à l'aide de l'export/import complet transportable Data Pump et des sauvegardes incrémentielles RMAN (ID de document 2999157.1). Créez un répertoire de travail sur un partage NFS partagé entre la source et la destination. Le chemin d'accès au partage NFS doit être identique sur la source et la destination.

    Si un partage NFS n'est pas possible, utilisez un stockage local. Créez le répertoire sur l'hôte source et copiez-le vers l'hôte de destination. Cela doit être répété plusieurs fois tout au long du processus. Le chemin sur l'hôte source et de destination doit être identique. Dans le cas contraire, diverses modifications sont requises pour les scripts qui ne relèvent pas de cette procédure.

    mkdir -p <Shared_location>/XTTS_Migration
    mkdir -p <Shared_location>/XTTS_Migration/Backup
    mkdir -p <Shared_location>/XTTS_Migration/DPPUMP
    cd <Shared_location>
    unzip DBMIG.zip
    

    Le fichier contient :

    • dbmig_driver_m5.sh : script du pilote de migration.
    • impdp.sh : script de pilote d'import.
    • Répertoire log : créé lors de l'exécution. Stocke le journal de sauvegarde RMAN, les journaux de migration et les journaux supplémentaires.
      • rman_mig_bkp.log : fichier journal de migration centralisé.
      • rman_mig_bkp.lck : fichier de verrouillage créé au début de chaque sauvegarde pour empêcher l'exécution simultanée du pilote. Si l'exécution d'un pilote est interrompue, le verrou ne sera pas supprimé. Le problème doit être étudié et résolu avant de supprimer le verrou.
    • Répertoire cmd : créé lors de l'exécution. Stocke les scripts RMAN de sauvegarde et de restauration.
      • dbmig_driver.properties : variables d'environnement.
      • dbmig_ts_list.txt : liste des tablespaces séparés par des virgules.
  2. Modifiez les variables dans dbmig_driver.properties (dans le répertoire cmd) pour refléter l'environnement que vous utilisez. Reportez-vous à la description des paramètres dans la section dbmig_driver.properties du fichier de configuration ici : Migration de plate-forme M5 Cross Endian à l'aide de l'export/import complet transportable Data Pump et sauvegardes incrémentielles RMAN.

    exemple de fichier dbmig_driver.properties

    ############################################################
    #Source database properties
    #my_M5_prop_version=2
    # -
    # - ORACLE_HOME Path to Oracle Home
    # - ORACLE_SID SID of the source database
    # - SRC_SCAN Connect string to source database via SCAN.
    # If no SCAN, specify source database network name.
    # Enclose in single quotes
    # Example: '@myhost-scan/db1'
    # Example: '@localhost/pdb1'
    # - MIG_PDB Accepted values: 0, 1
    # Choose 0 if source is non-CDB
    # Choose 1 if source is a PDB
    # - PDB_NAME If source is a PDB, specify PDB name.
    # Else leave blank
    # Example: PDB1
    # - BKP_FROM_STDBY Accepted values: 0, 1
    # Choose 0 to back up from primary database,
    # or if Data Guard is not in use.
    # Choose 1 to back up from standby database.
    ############################################################
    export ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1
    export PATH=$PATH:$ORACLE_HOME/bin
    export ORACLE_SID=soldb1918
    export SRC_SCAN='@scan1/soldb1918'
    export MIG_PDB=0
    export PDB_NAME=
    export BKP_FROM_STDBY=0
    ############################################################
    #Source Data Pump settings
    # - SOURCE_DPDMP Directory path of the directory DATA_PUMP_DIR
    # Example: /u01/app/oracle/m5/data_pump_dir
    # - SOURCE_DPIR Data Pump Directory, typically DATA_PUMP_DIR
    # - SYSTEM_USR Username for Data Pump export.
    # Do not use SYS AS SYSDBA
    # Example: SYSTEM
    # - DP_TRACE Data Pump trace level.
    # Use 0 to disable trace.
    # Use 3FF0300 to full transportable tracing
    # See MOS Doc ID 286496.1 for details.
    # - DP_PARALLEL Data Pump parallel setting.
    # Accepted values: 1 to 999
    # Example: 16
    ############################################################
    export SOURCE_DPDMP=<Shared_location>/XTTS_Migration/DPPUMP
    export SOURCE_DPDIR=DATA_PUMP_DIR
    export SYSTEM_USR=SYSTEM
    export DP_TRACE=0
    export DP_PARALLEL=1
    export DP_ENC_PROMPT=N
    ############################################################
    #Source RMAN settings
    # - BKP_DEST_TYPE Accepted values: DISK, SBT_TAPE
    # Choose DISK to backup up to local storage
    # Choose SBT_TAPE to use ZDLRA
    # - BKP_DEST_PARM If BKP_DEST_TYPE=DISK, enter location for backup:
    # Example: /u01/app/oracle/m5/rman
    # If BKP_DEST_TYPE=SBT_TAPE, enter channel configuration:
    # Example: "'%d_%U' PARMS \"SBT_LIBRARY=<oracle_home>/lib/libra.so,SBT_PARMS=(RA_WALLET='location=file:<oracle_home>/dbs/zdlra credential_alias=<zdlra-connect-string>')\""
    # - CAT_CRED If you use RMAN catalog or ZDLRA, specify connect string to catalog database
    # Example: <scan-name>:<port>/<service>
    # - SECTION_SIZE Section size used in RMAN backups
    # - CHN Number of RMAN channels allocated
    ############################################################
    export BKP_DEST_TYPE=DISK
    export BKP_DEST_PARM=<Shared_location>/XTTS_Migration/Backup
    export CAT_CRED=
    export SECTION_SIZE=64G
    export CHN=8
    ############################################################
    #Destination host settings
    #If specified, the script transfers the RMAN backups and
    #Data Pump dump file to the destination via over SSH.
    #SSH equivalence is required.
    # - DEST_SERVER Network name of the destination server.
    # Leave blank if you manually transfer
    # backups and dump files
    # - DEST_USER User for SSH connection
    # Example: oracle
    # - DEST_WORKDIR The script working directory on destination
    # Example: /u01/app/oracle/m5
    # - DEST_DPDMP The directory path used by DATA_PUMP_DIR
    # in destination database
    # Example: /u01/app/oracle/m5/data_pump_dir
    ############################################################
    export DEST_SERVER=srvadm01
    export DEST_USER=oracle
    export DEST_WORKDIR=<Shared_location>/XTTS_Migration
    export DEST_DPDMP=<Shared_location>/XTTS_Migration/DPDUMP
    ############################################################
    #Advanced settings
    #Normally, you don't need to edit this section
    ############################################################
    export WORKDIR=$PWD
    export LOG_DIR=${WORKDIR}/log
    export CMD_DIR=${WORKDIR}/cmd
    export PATH=$PATH:$ORACLE_HOME/bin
    export DT='date +%y%m%d%H%M%S'
    export CMD_MKDIR='which mkdir'
    export CMD_TOUCH='which touch'
    export CMD_CAT='which cat'
    export CMD_RM='which rm'
    export CMD_AWK='which awk'
    export CMD_SCP='which scp'
    export CMD_CUT='which cut'
    export CMD_PLATFORM='uname'
    if [[ "$CMD_PLATFORM" = "Linux" ]]; then
    export CMD_GREP="/usr/bin/grep"
    else
    if [[ "$CMD_PLATFORM" = "AIX" ]]; then
    export CMD_GREP="/usr/bin/grep"
    else
    if [[ "$CMD_PLATFORM" = "HPUX" ]]; then
    export CMD_GREP="/usr/bin/grep"
    else
    export CMD_GREP='which ggrep'
    fi
    fi
    fi
    export my_M5_prop_version=2
    

    Créez des répertoires pour les fichiers dump Data Pump sur les bases de données source et cible.

    create directory M5_XTTS_MIG as '<Shared_Location>/XTTS_Migration/DPDUMP';
    grant read,write on directory M5_XTTS_MIG  to sys,system;
    

Tâche 3.2 : Sauvegarde et restauration de niveau 0

  1. Sur le système source, connectez-vous en tant qu'utilisateur Oracle avec les variables d'environnement (ORACLE_HOME et ORACLE_SID) définies sur la base de données source, puis exécutez la sauvegarde :

    cd <Shared_location>
    nohup sh dbmig_driver_m5.sh L0 &
    
  2. Si vous n'utilisez pas de NFS partagé, copiez le répertoire de travail sur l'hôte de destination.

  3. Restaurez les fichiers de données sur le système de destination.

    Sur la destination, définissez l'environnement sur la base de données de destination. Le script du pilote crée un script de restauration. Il est stocké dans le répertoire cmd :

    cd <Shared_location>/XTTS_Migration
    cp nohup.out nohup.out_L0
    ls -ltra cmd/restore_L0_*
    rman target / cmdfile=<restore_cmdfile_name>
    

    Consultez le fichier journal RMAN :

    egrep "WARN-|ORA-" log/restore_*.log
    

Tâche 3.3 : Reporter la phase

Au cours de cette phase, une sauvegarde incrémentielle est créée sur la base de données source et transférée vers le système de destination.

La sauvegarde est convertie au format Endian de destination et appliquée aux fichiers de données de destination. Ce processus peut être répété plusieurs fois pour que la base de données de destination reste synchronisée.

Chaque sauvegarde incrémentielle est plus petite que la précédente et réduit la fenêtre de temps d'arrêt final.

Remarque : vous pouvez exécuter plusieurs sauvegardes sur la source sans les appliquer à la destination.

  1. Sur la source, exécutez une sauvegarde incrémentielle de niveau 1 (L1) de la base de données source :
   cd <Shared_location>/XTTS_Migration
   cp nohup.out nohup.out_1
   nohup sh dbmig_driver_m5.sh L1 &
  1. Si vous n'utilisez pas de NFS partagé, copiez le répertoire de travail sur l'hôte de destination.

  2. Appliquez la sauvegarde incrémentielle aux copies de fichier de données sur le système de destination. Sur le système de destination, connectez-vous en tant qu'utilisateur Oracle avec les variables d'environnement appropriées définies, puis exécutez l'étape de réimplémentation des fichiers de données comme suit.

Sur le système de destination, connectez-vous en tant qu'utilisateur Oracle avec les variables d'environnement appropriées définies. Le script du pilote crée un script de restauration. Il est stocké dans le répertoire cmd : restaurez la sauvegarde de niveau 1 (L1) sur la base de données de destination à l'aide du dernier script de restauration.

   cd <Shared_location>/XTTS_Migration
   ls -ltra cmd/restore_L1_*
   cp nohup.out nohup.out_3
   rman target / cmdfile=<restore_cmdfile_name>

Consultez le fichier journal RMAN :

   egrep "WARN-|ORA-" log/restore_*.log

L'étape de réimplémentation des modifications se connecte à la base de données de destination et applique les sauvegardes incrémentielles aux fichiers de données des tablespaces pour chaque tablespace transporté.

Répétez la phase d'avancement jusqu'à la fenêtre de basculement de la base de données.

Tâche 3.4 : phase finale de sauvegarde incrémentielle

  1. Désactivez les paramètres d'audit suivants sur la source et la cible jusqu'à la fin de l'importation. Réactivez-les une fois l'import terminé :
   show parameter audit_sys_operations
   show parameter audit_trail
   alter system set audit_trail=none scope=spfile sid='*';
   alter system set audit_sys_operations=FALSE scope=spfile sid='*';
   srvctl stop database -d ${ORACLE_UNQNAME}
   srvctl start database -d ${ORACLE_UNQNAME}
   show parameter audit_sys_operations
   show parameter audit_trail
  1. Sur la source, exécutez la sauvegarde incrémentielle finale de niveau 1 (L1) de la base de données source :

Le script effectue les opérations suivantes : - Invites pour le mot de passe système - Définit les tablespaces en mode lecture seule - Exécute la sauvegarde incrémentielle finale - Exécute l'export Data Pump

   cd <Shared_location>/XTTS_Migration
   cp nohup.out nohup.out_1
   nohup sh dbmig_driver_m5.sh L1F &
  1. Si vous n'utilisez pas de NFS partagé, copiez le répertoire de travail sur l'hôte de destination.

  2. Appliquez la dernière sauvegarde incrémentielle aux fichiers de données de destination.

Sur la destination, définissez l'environnement sur la base de données de destination. Le script du pilote crée un script de restauration. Il est stocké dans le répertoire cmd :

   cd <Shared_location>/XTTS_Migration
   ls -ltra cmd/restore_L1F_*

Restaurez la sauvegarde finale de niveau 1 (L1) sur la base de données de destination à l'aide du script de restauration final.

   cd <Shared_location>/XTTS_Migration
   cp nohup.out nohup.out_5
   nohup rman target / cmdfile=<restore_cmdfile_name> &

Consultez le fichier journal RMAN :

   egrep "WARN-|ORA-" log/restore_*.log

Tâche 3.5 : Import Data Pump

  1. Sur la destination, modifiez le script du pilote d'import (impdp.sh). Utilisez les informations relatives à la base de données de destination pour remplir les variables.

    • ORACLE_HOME : chemin d'accès au répertoire de base Oracle
    • ORACLE_SID : SID de base de données cible
    • ORACLE_CONNECT_STRING : chaîne de connexion
    • DATA_PUMP_PARALLEL : niveau parallèle
    • DATA_PUMP_TRACE : niveau de trace

Le script du pilote d'import prend quatre paramètres :

expdp_dumpfile: Name of the Data Pump dump file, e.g., exp_UP19_240206134155.dmp
rman_last_restore_log: Relative path to the last RMAN restore log
run-mode: One of the below:
    test: Generates the Data Pump parameter file. Does not start Data Pump.
    test-readonly. Generates the Data Pump parameter file and adds TRANSPORTABLE=KEEP_READ_ONLY to the Data Pump parameter file. Review the documentation for the usage of this parameter. Does not start Data Pump.
    run: Generates the Data Pump parameter file. Starts Data Pump to perform the import.
    run-readonly: Generates the Data Pump parameter file and adds TRANSPORTABLE=KEEP_READ_ONLY to the Data Pump parameter file. Review the documentation for the usage of this parameter. Starts Data Pump to perform the import.

  DP_ENC_PROMPT: 
     One of the below
        Y: Will prompt the user for an encryption password in case one was used for the export
        N: Will not prompt the user for an encryption password.

Démarrez le script du pilote d'import en mode test pour vérifier l'exactitude du fichier de paramètres Data Pump généré :

   cd <Shared_location>/XTTS_Migration
   sh impdp.sh <expdp_dumpfile> <rman_last_restore_log> test N

Le script du pilote génère le fichier de paramètres dans le répertoire en cours. Examinez-la.

$ vi imp_<oracle_sid>_<timestamp>_xtts.par

Ne modifiez pas le fichier de paramètres Data Pump généré. Si vous devez modifier le fichier de paramètres, modifiez le code dans le script du pilote afin qu'il génère le fichier de paramètres souhaité.

Démarrez le script du pilote d'import en mode d'exécution pour effectuer l'import Data Pump :

   cd <Shared_location>/XTTS_Migration
   sh impdp.sh <expdp_dumpfile> <rman_last_restore_log> run N

Consultez toujours le fichier journal Data Pump. Même si Data Pump est répertorié comme ayant réussi, vous devez toujours consulter le fichier journal Data Pump pour toute erreur critique.

  1. Réactivez les paramètres d'audit sur les bases de données source et cible une fois l'import terminé.
   show parameter audit_sys_operations
   show parameter audit_trail
   alter system set audit_trail=<value before migration taken above> scope=spfile sid='*';
   alter system set audit_sys_operations=<value before migration taken above> scope=spfile sid='*';
   srvctl stop database -d ${ORACLE_UNQNAME}
   srvctl start database -d ${ORACLE_UNQNAME}
   show parameter audit_sys_operations
   show parameter audit_trail
  1. Valider les données transportées.
   rman target sys/<password>@<target_db_name> trace=rman_trace.trc log=<backup_location>/tablespace_validate.log
   validate tablespace <comma-separated tablespace list> check logical;
  1. Affectez un tablespace utilisateur pour annuler les modifications apportées à la préparation de la base de données cible.
   select 'alter user '||username||' default tablespace users;' from dba_users where default_tablespace='USERS_OCI';
  Execute the alter commands generated by above select query.
   select count(*) from dba_users where default_tablespace='USERS_OCI';
   ALTER DATABASE DEFAULT TABLESPACE USERS;
   drop tablespace USERS_OCI including contents and datafiles;
   select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME='USERS';

Validez les données des bases de données source et cible.

Liens connexes

Accusés de réception

Ressources de formation supplémentaires

Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à d'autres contenus d'apprentissage gratuits sur la chaîne YouTube Oracle Learning. En outre, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir de la documentation sur le produit, consultez Oracle Help Center.