Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. Lorsque vous terminez votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
Migrez Oracle Database vers OCI à l'aide de tablespaces transportables interplate-forme V4 et effectuez une mise à niveau de 12c vers 19c
Introduction
Ce tutoriel présente les étapes nécessaires pour utiliser V4 Cross Platform Transportable Tablespaces (XTTS) avec les sauvegardes incrémentielles Oracle Recovery Manager (RMAN) afin de migrer des données entre des systèmes ayant des formats d'endian différents, avec le moins de temps d'inactivité d'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 inférieure à 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'inactivité. Cette procédure nécessite un temps d'inactivité uniquement pendant la sauvegarde incrémentielle finale, ainsi que l'export ou l'import des métadonnées.
Ce tutoriel décrit les procédures V4 pour la sauvegarde incrémentielle interplate-forme qui peuvent être utilisées avec 11.2.0.3 et les versions ultérieures.
Détails d'environnement
-
Base de données source:
-
Version de base de données: 12.1.0.2
-
Système d'exploitation : AIX
-
-
Base de données cible :
-
Version de base de données : 19.18.0.0 (OCI)
-
Système d'exploitation : Oracle Linux
-
Objectifs
- Utilisez des tablespaces transportables interplates-formes (XTTS) avec des sauvegardes incrémentielles RMAN pour migrer des données entre des systèmes ayant des formats d'endian différents, avec un temps d'inactivité d'application minimal.
Prérequis
-
La version actuelle ne prend pas en charge Windows en tant que source ou destination.
-
Une plate-forme croisée est uniquement possible avec Enterprise Edition. Cette procédure ne peut pas être utilisée avec Standard Edition.
-
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 le TYPE de sauvegarde sur le kit de 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.
-
-
L'ensemble des tablespaces en cours de déplacement doivent être en ligne et ne pas contenir de fichier de données hors ligne. Les tablespaces doivent être READ WRITE.
-
Les tablespaces READ ONLY peuvent être déplacés avec la méthode XTTS normale. Il n'est pas nécessaire d'incorporer des sauvegardes incrémentielles interplates-formes pour déplacer des tablespaces qui sont toujours LIS UNIQUEMENT.
-
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 Unix. Cependant, tout système d'exploitation autre que Linux doit exécuter 12.1.0.1 ou une version supérieure à la fois dans la destination et la source.
-
La version Oracle de la source 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 fier à elle pour un environnement de production.
-
Automatic Storage Management (ASM) peut uniquement être utilisé 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 périphérique avec des privilèges de lecture/écriture. Cela ne peut pas être un périphérique en lecture seule. Cela peut entraîner ORA-19624 lors de la conversion du jeu de sauvegarde.
-
Les bases de données source et cible doivent 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.
-
Disposez de la dernière version du patch.
-
-
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 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;
-
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');
-
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 les performances des sauvegardes incrémentielles.
-
Vérifiez que tous les tablespaces sont en ligne dans la base de données source.
-
Enlevez les index spatiaux des paramètres de reconstruction d'index et modifiez les index spatiaux inutilisables.
-
Cette étape vérifie que vous ne disposez pas du paramètre de reconstruction d'index dans les index spatiaux. Pour les environnements colocatifs, exécutez d'abord la commande suivante afin de définir le champ SID de la base de données sur le nom de la base de données pluggable pour la base de données Oracle (PDB NAME).
export ORACLE_PDB_SID=[PDB NAME]
-
Pour savoir si vous disposez de 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éparation de la base de données cible
-
Créez un tablespace d'utilisateurs temporaire. Si la base de données cible est un environnement colocatif, connectez-vous à la base de données pluggable.
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 (langage de définition de données) ci-dessus, remplacez le nom du groupe de disques ci-dessous et créez un tablespace pour les utilisateurs.
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 tablespace des nouveaux utilisateurs USERS_OCI à tous les utilisateurs de base de données qui disposent du tablespace par défaut USERS à l'aide de la requête suivante.
select 'alter user '||username||' default tablespace users_OCI;' from dba_users where default_tablespace='USERS';
La sortie de la requête doit renvoyer 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 sur 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 cible, 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 .
-
Configurez 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
-
Configurez 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 V4 incrémentielles
Tâche 3.1 : Phase initiale
-
Téléchargez les derniers scripts perl v4 et décompressez-les ici : V4 Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (ID de 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
sur le système source avec la configuration propre à votre site. Pour plus d'informations sur les paramètres du fichierxtt.properties
, reportez-vous à la description des paramètres dans la sectionxtt.properties
du fichier de configuration ici : V4 Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (ID de document 2471245.1). Pour cette procédure, seuls les paramètres suivants sont obligatoires. D'autres sont facultatifs et/ou disponibles.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éparation de 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
vers 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 vers le 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 réimplémenter. 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 actualise les copies du fichier de données de destination avec la base de données source. Les données transportées (source) sont entièrement accessibles au cours de cette phase.
Remarque : 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' sur 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 permet de créer une sauvegarde incrémentielle pour tous les tablespaces 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 de la sauvegarde en cours se trouve dans le fichierincrbackups.txt
sur le 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 réimplémentation 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 d'avancement 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é.
Remarque : bien que plusieurs sauvegardes puissent être exécutées sur la source sans être appliquées sur la destination, le fichier
res.txt
doit être copié après la dernière sauvegarde et avant que--restore
ne soit exécuté sur 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 finale de sauvegarde incrémentielle
-
Remplacez les tablespaces source par READ ONLY dans la base de données source. Exécutez l'interrogation suivante si tous les tablespaces 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 module d'extension dans la base de données de destination
-
Créez un répertoire pour stocker les fichiers de sauvegarde d'export.
Par exemple :
mkdir -p <Backup_location>/XTTS_DPUMP
Exécutez la requête 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éparer le fichier PARFILE d'export.
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'export Data Pump 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'import.
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 profil 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 profil d'importation final doit se présenter comme suit :
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 d'audit suivants 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'import Data Pump sur la base de données cible.
-
Créez un répertoire pour copier les fichiers de sauvegarde d'export.
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 d'audit suivants une fois l'importation terminée.
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 transféré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 rétablir les modifications apportées lors de 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';
Vérifiez les données sur les bases de données source et cible.
Liens connexes
Remerciements
- Auteur - Pavan Yennampelli (Ingénieur Cloud senior, Oracle North America Cloud Services - NACIE)
Ressources de formation supplémentaires
Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à d'autres contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir la documentation produit, consultez le site Oracle Help Center.
Migrate Oracle Database to OCI using V4 Cross Platform Transportable Tablespaces and Upgrade from 12c to 19c
G17532-01
October 2024