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

Présentation

Ce tutoriel décrit la migration d'une base de données Oracle Database vers Oracle Cloud Infrastructure (OCI) à l'aide de la migration de plate-forme interdienne M5 avec extraction de données transportable complète et sauvegardes incrémentielles RMAN.

Cette méthode permet la migration entre des systèmes avec différents formats 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'arrêt est requis uniquement lors de la sauvegarde incrémentielle finale et de l'exportation/importation des métadonnées.

Détails de l'environnement

Objectifs

Conditions requises

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

  1. Exécutez l'interrogation suivante pour vérifier le format de stockage Endian dans 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 espaces-tables.

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

    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 la performance des sauvegardes incrémentielles.

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

Tâche 2 : Préparer la base de données cible

  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 (Data Definition Language) ci-dessus et remplacez le nom du groupe de disques comme 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 nouvel espace-table d'utilisateurs USERS_OCI à tous les utilisateurs de base de données qui ont l'espace-table 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 l'interrogation de sélection ci-dessus doit retourner 0 après la réaffectation de l'espace-table 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 dans la base de données cible. Exécutez l'interrogation suivante sur la source et collectez les détails de l'ensemble de tables.

    Exécutez l'interrogation suivante sur la source :

    select TABLESPACE_NAME from dba_tablespaces where CONTENTS='TEMPORARY';
    

    Créez ensuite des tablespaces temporaires dans la base de données cible. Par 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 scripts M5 les plus récents et décompressez-les à partir d'ici : Migration de plate-forme inter-dienne M5 à l'aide de l'exportation/importation de l'extraction de données transportable complète et de sauvegardes incrémentielles RMAN (ID 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 n'importe quel 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 l'hôte de destination doit être identique. Si ce n'est pas le cas, diverses modifications sont requises pour les scripts qui sortent du cadre 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 de pilote de migration.
    • impdp.sh : Importer le script de pilote.
    • 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 : Verrouiller le fichier 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 verrouillage 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 de sauvegarde et de restauration RMAN.
      • dbmig_driver.properties : Variables d'environnement.
      • dbmig_ts_list.txt : Liste d'espaces-tables 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. Voir la description des paramètres dans la section dbmig_driver.properties du fichier de configuration ici : Migration de plate-forme inter-dienne M5 à l'aide de l'exportation/importation de la pompe de données transportable complète et de 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 de vidage d'extraction de données dans 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) réglées à 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 un NFS partagé, copiez le répertoire de travail vers 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 destination. Le script de 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 : Phase de report

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 assurer la synchronisation de la base de destination.

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

Note : Plusieurs sauvegardes peuvent être exécutées sur la source sans les appliquer à la destination.

  1. À 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 un NFS partagé, copiez le répertoire de travail vers 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, exécutez l'étape de repositionnement 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 de 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 destination à l'aide du script de restauration le plus récent.

   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 repositionnement se connecte à la base de destination et applique les sauvegardes incrémentielles aux fichiers de données des tablespaces pour chaque tablespace transporté.

Répétez la phase de repositionnement jusqu'à la fenêtre de mise en service de la base de données.

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

  1. Désactivez les paramètres de vérification suivants sur la source et la cible jusqu'à la fin de l'importation. Réactivez-les une fois l'importation terminée :
   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. À la source, exécutez la sauvegarde incrémentielle finale de niveau 1 (L1) de la base de données source :

Le script exécute les opérations suivantes : - Invites pour le mot de passe du système - Définit les tablespaces en mode lecture seule - Exécute la sauvegarde incrémentielle finale - Exécute l'exportation 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 un NFS partagé, copiez le répertoire de travail vers 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 destination. Le script de 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 destination à l'aide du script de restauration finale.

   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 : Importation de l'extraction de données

  1. À la destination, modifiez le script du pilote d'importation (impdp.sh). Utilisez les informations relatives à la base de destination pour remplir les variables.

    • ORACLE_HOME : Chemin d'accès au répertoire de base Oracle
    • ORACLE_SID : IDS de base de données de destination
    • ORACLE_CONNECT_STRING : Chaîne de connexion
    • DATA_PUMP_PARALLEL : Niveau parallèle
    • DATA_PUMP_TRACE : Niveau de trace

Le script du pilote d'importation utilise 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'importation 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 de pilote génère le fichier de paramètres dans le répertoire courant. Examinez-le.

$ 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 de pilote afin qu'il génère le fichier de paramètres souhaité.

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

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

Vérifiez toujours le fichier journal Data Pump. Même si l'extraction de données est répertoriée comme réussie, vous devez toujours vérifier les erreurs critiques dans le fichier journal Data Pump.

  1. Réactivez les paramètres de vérification dans les bases de données source et cible une fois l'importation terminée.
   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

Remerciements

Ressources d'apprentissage supplémentaires

Explorez d'autres laboratoires sur le site docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur la chaîne YouTube d'Oracle Learning. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

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