Note :

Migrez Oracle Database vers OCI à l'aide des espaces-tables transportables interplates-formes V4 et effectuez la mise à niveau de 12c vers 19c

Présentation

Ce tutoriel décrit les étapes nécessaires à l'utilisation de V4 Tablespaces transportables interplate-forme (XTTS) avec des sauvegardes incrémentielles Oracle Recovery Manager (RMAN) pour migrer des données entre des systèmes ayant des formats d'endian différents, avec le moins de temps d'arrêt de l'application.

La première étape consiste à copier une sauvegarde complète de la source vers la destination. Ensuite, en utilisant une série de sauvegardes incrémentielles, chacune plus petite que la dernière, les données du système de destination peuvent être mises à jour presque avec le système source, avant tout temps d'arrêt requis. Cette procédure nécessite un temps d'arrêt uniquement pendant la sauvegarde incrémentielle finale et l'exportation ou l'importation des métadonnées.

Ce tutoriel décrit les procédures V4 pour la sauvegarde incrémentielle inter-plateforme qui peuvent être utilisées avec 11.2.0.3 et les versions ultérieures.

Détails de l'environnement

Objectifs

Préalables

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

  1. Exécutez l'interrogation suivante pour vérifier le format d'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. Créez la vue transport_set_violations sur la base de données source.

    exec dbms_tts.transport_set_check('<list of tablespaces with comma saperated>');
    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.

  6. Supprimez les index spatiaux des paramètres d'index de reconstruction et modifiez les index spatiaux inutilisables.

    • Cette étape vérifie que le paramètre d'index de reconstruction ne figure pas dans les index spatiaux. Pour les environnements multilocataires, exécutez d'abord la commande suivante pour définir le champ SID de la base de données sur le nom de la base de données enfichable pour votre base de données Oracle (PDB NAME).

      export ORACLE_PDB_SID=[PDB NAME]
      
    • Pour voir si vous avez des paramètres de reconstruction d'index, sur le noeud du serveur de base de données source, en tant que propriétaire du système de fichiers et de l'instance de base de données du serveur de base de données source, utilisez SQL*Plus pour vous connecter à la base de données source en tant que sysdba et exécutez l'interrogation suivante.

      select owner,index_name from dba_indexes where index_type='DOMAIN' and upper(parameters) like '%REBUILD%';
      
    • Pour supprimer le paramètre de reconstruction d'index, utilisez SQL*Plus pour vous connecter à la base de données source en tant que propriétaire de l'index et exécutez l'interrogation suivante.

      alter index [index name] rebuild parameters [parameters]
      
  7. Synchroniser les index de texte. Utilisez SQL*Plus pour vous connecter à la base de données source en tant que SYSDBA et exécutez l'interrogation suivante pour rechercher tous les index en attente de synchronisation.

    select pnd_index_owner,pnd_index_name,count(*) from ctxsys.ctx_pending group by pnd_index_owner,pnd_index_name;
    

    Pour synchroniser les index, exécutez l'interrogation suivante.

    exec ctx_ddl.sync_index('[index owner].[index name]');
    

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

  1. Créez un tablespace temporaire pour les nouveaux utilisateurs. Si la base de données cible est un environnement multilocataire, connectez-vous à la base de données enfichable.

    alter session set container=[PDB NAME]
    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 l'espace-table des nouveaux 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 doit retourner 0.

    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 du tablespace.

    select TABLESPACE_NAME from dba_tablespaces where CONTENTS='TEMPORARY';
    Create temp tablespaces on target database like below example.
    create bigfile temporary tablespace USER_TEMP tempfile size 672m autoextend on next 672m extent management local;
    
  3. Créez le répertoire nls/data/9idata pour les applications Oracle E-Business Suite.

    srvctl getenv database -d $ORACLE_UNQNAME
    perl $ORACLE_HOME/nls/data/old/cr9idata.pl  --> on all the nodes of the cluster
    srvctl setenv database -d $ORACLE_UNQNAME -t ORA_NLS10=$ORACLE_HOME/nls/data/9idata
    srvctl getenv database -d $ORACLE_UNQNAME
    
  4. Créez $ORACLE_HOME/appsutil/jre pour les applications Oracle E-Business Suite. Copiez le dossier appsutil de la base de données source sous le chemin $ORACLE_HOME vers le serveur de base de données cible sous le chemin $ORACLE_HOME. Exécutez les commandes suivantes sur tous les noeuds des serveurs de base de données cibles, une fois le dossier copié.

    cd $ORACLE_HOME/appsutil
    ln -s $ORACLE_HOME/jdk/jre
    cd $ORACLE_HOME/jdk/jre/lib/ext
    cp $ORACLE_HOME/jlib/orai18n.jar .
    
  5. Configurer le schéma sys pour les applications Oracle E-Business Suite.

    export ORACLE_PDB_SID=[PDB_NAME]
    sqlplus / as sysdba
    show con_name
    @audb19c.sql
    
  6. Configurer le schéma système pour les applications Oracle E-Business Suite.

    export ORACLE_PDB_SID=[PDB_NAME]
    sqlplus / as sysdba
    show con_name
    @ausy19c.sql
    
  7. Définissez le paramètre CTXSYS pour les applications Oracle E-Business Suite.

    export ORACLE_PDB_SID=[PDB_NAME]
    sqlplus / as sysdba
    show con_name
    exec ctxsys.ctx_adm.set_parameter('file_access_role', 'public');
    
  8. Collecter automatiquement des statistiques pour les applications Oracle E-Business Suite.

    export ORACLE_PDB_SID=[PDB_NAME]
    sqlplus / as sysdba
    show con_name
    alter system enable restricted session;
    @adstats.sql
    alter system disable restricted session;
    

Tâche 3 : Étapes XTTS incrémentielles V4

Tâche 3.1 : Phase initiale

  1. Téléchargez les derniers scripts perl v4 et décompressez à partir d'ici : V4 Réduire le temps d'arrêt de l'espace-table transportable à l'aide de la sauvegarde incrémentielle interplateforme (ID document 2471245.1). Créez des répertoires pour décompresser les scripts et le répertoire temporaire.

    Par exemple :

    mkdir -p <Backup_location>/XTTS_Migration
    mkdir -p <Backup_location>/XTTS_Migration/XTTS_TEMP
    
  2. Modifiez le fichier xtt.properties dans le système source avec la configuration propre à votre site. Pour plus d'informations sur les paramètres du fichier xtt.properties, voir la description des paramètres dans la section xtt.properties du fichier de configuration ici : V4 Réduire le temps d'arrêt de l'espace-table transportable à l'aide de la sauvegarde incrémentielle interplateforme (ID document 2471245.1). Pour cette procédure, seuls les paramètres suivants sont obligatoires. D'autres sont facultatifs et/ou disponibles pour utilisation.

    tablespaces=<list of tablespaces that are migrated with comma saperated>
    platformid= <obtained from the query select platform_name,platform_id, endian_format from v$transportable_platform>
    src_scratch_location= <Backup location on source database server>
    dest_scratch_location= <Backup location on target database server>
    dest_datafile_location= <path for the datafile location of PDB >
    destconnstr=sys/<password>>@<Target PDB Connect String>
    usermantransport=1 - It is recommended this be set if the source database is running 12c or higher. This causes new 12c (and higher)
    parallel=1
    

Tâche 3.2 : Préparer la phase

  1. Exécutez la sauvegarde sur le système source. Sur le système source, connectez-vous en tant qu'utilisateur Oracle avec l'environnement (variables d'environnement ORACLE_HOME et ORACLE_SID) pointant vers la base de données source, exécutez la sauvegarde comme suit.

    export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP
    export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
    nohup $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup --debug 3 &
    
  2. Transférez les fichiers suivants vers le serveur de base de données cible.

    • Sauvegardes créées à partir de la source src_scratch_location vers la destination dest_scratch_location.

    • Fichier res.txt de la source $TMPDIR à la destination $TMPDIR.

    Dans l'exemple suivant, scp est utilisé pour transférer la sauvegarde de niveau = 0 créée par l'étape précédente du système source vers le système de destination.

    [oracle@source]$ scp /src_scratch_location/* oracle@dest:/dest_scratch
    [oracle@source]$ scp res.txt oracle@dest:/home/oracle/xtt
    
  3. Restaurez les fichiers de données sur le système de destination.

    export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP
    export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
    cp nohup.out nohup.out_L0
    nohup $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore --debug 3 &
    

Tâche 3.3 : Phase de report

Au cours de cette phase, une sauvegarde incrémentielle est créée à partir de la base de données source, transférée au système de destination, convertie au format endian du système de destination, puis appliquée aux copies converties du fichier de données de destination pour les reporter. Cette phase peut être exécutée plusieurs fois. Chaque sauvegarde incrémentielle successive doit prendre moins de temps que la sauvegarde incrémentielle précédente et mettra les copies de fichier de données de destination à jour avec la base de données source. Les données transportées (source) sont entièrement accessibles au cours de cette phase.

Note : Plusieurs sauvegardes peuvent être exécutées sur la source sans les appliquer à la destination. Les fichiers de sauvegarde et res.txt doivent être copiés avant l'exécution de la commande '-restore' à la destination.

  1. Créez une sauvegarde incrémentielle des tablespaces transportés sur le système source.

    export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP
    export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
    cp nohup.out nohup.out_1
    nohup $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup --debug 3 &
    

    Cette étape créera une sauvegarde incrémentielle pour tous les espaces-tables répertoriés dans le fichier xtt.properties.

  2. Transférez les sauvegardes incrémentielles et res.txt vers le système de destination. Transférez les sauvegardes incrémentielles (entre src_scratch_location et dest_scratch_location) et res.txt (entre $TMPDIRs) de la source vers la destination. La liste des fichiers de sauvegarde incrémentielle à partir de la sauvegarde courante se trouve dans le fichier incrbackups.txt du système source.

    Par exemple :

    [oracle@source]$ scp `cat incrbackups.txt` oracle@dest:/dest_scratch_location
    [oracle@source]$ scp res.txt oracle@dest:/home/oracle/xtt
    
  3. Appliquez la sauvegarde incrémentielle aux copies de fichier de données sur le système de destination. Sur le système de destination, connecté en tant qu'utilisateur Oracle avec l'environnement (variables d'environnement ORACLE_HOME et ORACLE_SID) pointant vers la base de données de destination, exécutez l'étape de report des fichiers de données comme suit.

    export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP
    export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
    cp nohup.out nohup.out_3
    $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore --debug 3
    

    L'étape de repositionnement se connecte à la base de données de destination et applique les sauvegardes incrémentielles sur les fichiers de données des tablespaces pour chaque tablespace transporté.

    Note : Bien que plusieurs sauvegardes puissent être exécutées sur la source sans être appliquées à la destination, le fichier res.txt doit être copié après la dernière sauvegarde et avant l'exécution de --restore à la destination.

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

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

  1. Modifiez les tablespaces sources à READ ONLY dans la base de données source. Exécutez l'interrogation suivante si tous les espaces-tables sont transportés vers la base de données cible.

    set lines 300
    select 'alter tablespace "'||tablespace_name||'" read only;' from dba_tablespaces where contents='PERMANENT' and tablespace_name not in ('SYSTEM','SYSAUX');
    
  2. Créez la sauvegarde incrémentielle finale des tablespaces transportés sur le système source.

    export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP
    export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
    cp nohup.out nohup.out_4
    nohup $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup --debug 3 &
    
  3. Transférez les sauvegardes incrémentielles et res.txt vers le système de destination.

    Par exemple :

    [oracle@source]$ scp 'cat incrbackups.txt' oracle@dest:/dest_scratch_location
    [oracle@source]$ scp res.txt oracle@dest:/home/oracle/xtt
    
  4. Appliquez la dernière sauvegarde incrémentielle aux fichiers de données de destination.

    export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP
    export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
    cp nohup.out nohup.out_5
    nohup $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore --debug 3 &
    

Tâche 3.5 : Phase de transport - Exporter les métadonnées et les tablespaces de plugiciel dans la base de données de destination

  1. Créez un répertoire pour stocker les fichiers de sauvegarde d'exportation.

    Par exemple :

    mkdir -p <Backup_location>/XTTS_DPUMP
    

    Exécutez l'interrogation suivante pour créer un répertoire dans la base de données source.

    create or replace directory XTTS_DUMP as '<Backup_location>/XTTS_DUMP';
    grant read,write on directory XTTS_DUMP to system;
    
  2. Préparez l'exportation parfile.

    vi xtts_expdp.par
    
    directory=XTTS*DUMP
    metrics=y
    dumpfile=xttsfulltts*%U.dmp
    filesize=1048576000
    full=y
    exclude=STATISTICS
    logfile=expfulltts.log
    parallel=4
    transportable=always
    EXCLUDE=NORMAL_OPTIONS
    
  3. Exécutez l'exportation de l'extraction de données sur la base de données source.

    nohup expdp system/<password>@<source_db_name> parfile= xtts_expdp.par &
    
  4. Exécutez la commande suivante sur le serveur de base de données cible qui génère l'exemple de fichier parfile pour l'importation.

    export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP
    export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
    $ORACLE_HOME/perl/bin/perl xttdriver.pl -e
    

    Mettez à jour les lignes de parfile suivantes générées à l'étape précédente.

    impdp directory=<DATA_PUMP_DIR> logfile=<tts_imp.log> \
    network_link=<ttslink> transport_full_check=no \ replace these parameters
    transport_tablespaces=<tablespace list> \ delete this line from parfile
    

    Le parfum d'importation final devrait ressembler à :

    directory=XTTS*DUMP logfile=impdpfulltts.log \
    metrics=y dumpfile=xttsfulltts*%U.dmp parallel=6 full=y logtime=all exclude=STATISTICS \
    transport_datafiles=<list of datafile path generated from above parfile>
    
  5. Désactivez les paramètres suivants liés à la vérification jusqu'à la fin de l'importation, comme indiqué. 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
    
  6. Exécutez l'importation de l'extraction de données sur la base de données cible.

    1. Créez un répertoire pour copier les fichiers de sauvegarde d'exportation.

      Par exemple :

      mkdir -p <Backup_location>/XTTS_DPUMP
      
    2. Exécutez la commande suivante pour créer un répertoire dans la base de données source.

      create or replace directory XTTS_DUMP as '<Backup_location>/XTTS_DUMP';
      grant read,write on directory XTTS_DUMP to system;
      
      nohup impdp system/<password>@<>target_db_name> parfile=<parfile_name> &
      
  7. Activez les paramètres suivants liés à la vérification après la fin de l'importation.

    show parameter audit_sys_operations
    show parameter audit_trail
    alter system set audit_trail=DB scope=spfile sid='_';
    alter system set audit_sys_operations=TRUE scope=spfile sid='_';
    srvctl stop database -d ${ORACLE_UNQNAME}
    srvctl start database -d ${ORACLE_UNQNAME}
    show parameter audit_sys_operations
    show parameter audit_trail
    
  8. Validez les données transportées.

    rman target sys/<password>@<>target_db_name> trace=rman_trace.trc log=<backup_location>/tablespace_validate.log
    
    validate tablespace <list of tablespaces transported with comma saperated> check logical;
    
  9. Affectez un tablespace aux utilisateurs 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';
    

    Valider les données dans les bases de données source et cible.

Confirmation

Autres ressources d'apprentissage

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

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