Note :
- Ce tutoriel nécessite l'accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, voir Introduction à l' niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les données d'identification, la location et les compartiments Oracle Cloud Infrastructure. À la fin de votre laboratoire, remplacez ces valeurs par celles propres à votre environnement en nuage.
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
-
Base de données source :
-
Version de la base de données : 12.1.0.2
-
Système d'exploitation : AIX
-
-
Base de données cible :
-
Version de la base de données : 19.18.0.0 (OCI)
-
Système d'exploitation : Oracle Linux
-
Objectifs
- Utilisez des tablespaces transportables entre plates-formes (XTTS) avec des sauvegardes incrémentielles RMAN pour migrer des données entre des systèmes dont le format d'endian est différent, avec le moins de temps d'arrêt de l'application.
Préalables
-
La version courante ne prend pas en charge Windows en tant que source ou destination.
-
L'interplate-forme n'est possible qu'avec Enterprise Edition. Cette procédure ne peut pas être utilisée avec l'édition Standard.
-
Le paramètre
COMPATIBLE
de la base de données source ne doit pas être supérieur au paramètreCOMPATIBLE
de la base de données de destination. -
La base de données source doit être en mode ARCHIVELOG.
-
Avant d'exécuter des scripts XTTS, définissez
NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
. D'autres paramètresNLS_LANG
peuvent provoquer des erreurs. -
RMAN sur le système source ne doit pas avoir :
-
DISQUE DE TYPE DE DISPOSITIF configuré avec COMPRESSED.
-
TYPE DE SAUVEGARDE À COPIER. La source doit avoir un TYPE DE SAUVEGARDE À SAUVEGARDE.
-
Canal par défaut configuré pour le type SBT. Cette procédure ne peut être utilisée qu'avec les canaux de disque.
-
Toute limitation de configuration de canal. Par exemple, MAXSETSIZE, MAXPIECESIZE etc.
-
-
Le jeu de tablespaces à déplacer doit tous être en ligne et ne contenir aucun fichier de données hors ligne. Les espaces-tables doivent avoir la valeur READ WRITE.
-
Les tablespaces qui sont en lecture seule peuvent être déplacés avec la méthode XTTS normale. Il n'est pas nécessaire d'intégrer des sauvegardes incrémentielles multiplateformes pour déplacer des tablespaces toujours en lecture seule.
-
Bien que le système de destination préféré soit Linux (Oracle Linux 64 bits ou une version certifiée de RedHat Linux), cette procédure peut être utilisée avec d'autres systèmes d'exploitation basés sur Unix. Toutefois, tout système d'exploitation non Linux doit exécuter 12.1.0.1 ou une version supérieure à la fois dans la destination et la source.
-
La version de la source Oracle doit être inférieure ou égale à la destination. Par conséquent, cette procédure peut être utilisée comme méthode de mise à niveau.
-
La version minimale pour la source et la destination est 11.2.0.3. Les versions antérieures de la version 11.2 fonctionneront probablement de la même manière, mais n'ont pas été testées.
-
Comme suggéré, testez la procédure avant de vous en remettre à un environnement de production.
-
La gestion automatique du stockage (ASM) ne peut être utilisée que pour l'emplacement final des fichiers de données dans la destination. Les sauvegardes ne peuvent pas être placées sur ASM avec cette version.
-
L'emplacement de sauvegarde de la destination doit être un appareil doté de privilèges de lecture/écriture. Il ne peut pas s'agir d'un appareil READ ONLY. Cela peut entraîner ORA-19624 lors de la conversion du jeu de sauvegarde.
-
La base de données source et cible doit utiliser un jeu de caractères et un jeu de caractères national compatibles.
-
Le tablespace doit être en mode READ WRITE lors de la première sauvegarde (niveau 0).
-
Les bases de données source et cible doivent :
-
Utilisez une version de fuseau horaire compatible.
-
Avoir la dernière version du correctif.
-
-
Copiez les scripts suivants du noeud d'application Oracle E-Business Suite vers le serveur de base de données cible (uniquement pour les applications Oracle E-Business Suite).
audb19c.sql ausy19c.sql adstats.sql auque2.sql
Tâche 1 : Préparer la base de données source
-
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;
-
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');
-
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;
-
(Facultatif) Activez le suivi des modifications de bloc sur la base de données source pour améliorer la performance des sauvegardes incrémentielles.
-
Vérifiez que tous les tablespaces sont en ligne dans la base de données source.
-
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]
-
-
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
-
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';
-
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;
-
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
-
Créez
$ORACLE_HOME/appsutil/jre
pour les applications Oracle E-Business Suite. Copiez le dossierappsutil
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 .
-
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
-
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
-
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');
-
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
-
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
-
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 fichierxtt.properties
, voir la description des paramètres dans la sectionxtt.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
-
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
etORACLE_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 &
-
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 destinationdest_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
-
-
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.
-
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
. -
Transférez les sauvegardes incrémentielles et
res.txt
vers le système de destination. Transférez les sauvegardes incrémentielles (entresrc_scratch_location
etdest_scratch_location
) etres.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 fichierincrbackups.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
-
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
etORACLE_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
-
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');
-
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 &
-
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
-
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
-
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;
-
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
-
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 &
-
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>
-
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
-
Exécutez l'importation de l'extraction de données sur la base de données cible.
-
Créez un répertoire pour copier les fichiers de sauvegarde d'exportation.
Par exemple :
mkdir -p <Backup_location>/XTTS_DPUMP
-
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> &
-
-
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
-
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;
-
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.
Liens connexes
Confirmation
- Auteur - Pavan Yennampelli (ingénieur en nuage principal, services Oracle North America Cloud - NACIE)
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.
Migrate Oracle Database to OCI using V4 Cross Platform Transportable Tablespaces and Upgrade from 12c to 19c
G17529-01
October 2024