Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Eseguire la migrazione di Oracle Database in OCI utilizzando le tablespace trasportabili tra piattaforme V4 ed eseguire l'upgrade da 12c a 19c
Introduzione
This tutorial covers the steps needed to use V4 Cross Platform Transportable Tablespaces (XTTS) with Oracle Recovery Manager (RMAN) incremental backups to migrate data between systems that have different endian formats, with the least amount of application downtime.
Il primo passo sarà quello di copiare un backup completo dall'origine alla destinazione. Quindi, utilizzando una serie di backup incrementali, ciascuno più piccolo dell'ultimo, i dati nel sistema di destinazione possono essere portati quasi aggiornati con il sistema di origine, prima che siano necessari tempi di inattività. Questa procedura richiede tempi di inattività solo durante il backup incrementale finale e l'esportazione o l'importazione dei metadati.
Questa esercitazione descrive le procedure V4 per il backup incrementale tra più piattaforme che possono essere utilizzate con 11.2.0.3 e versioni successive.
Dettagli ambiente
-
Database di origine:
-
Versione del database: 12.1.0.2
-
Sistema operativo: AIX
-
-
Database di destinazione:
-
Versione database: 19.18.0.0 (OCI)
-
Sistema operativo: Oracle Linux
-
Obiettivi
- Utilizza XTTS (Cross Platform Transportable Tablespace) con backup incrementali RMAN per eseguire la migrazione dei dati tra sistemi con formati endian diversi, con il minor tempo di inattività delle applicazioni.
Prerequisiti
-
La versione corrente non supporta Windows come origine o destinazione.
-
Cross platform è possibile solo con Enterprise Edition. Questa procedura non può essere utilizzata con Standard Edition.
-
Il parametro
COMPATIBLE
del database di origine non deve essere maggiore del parametroCOMPATIBLE
del database di destinazione. -
Il database di origine deve essere in modalità ARCHIVELOG.
-
Prima di eseguire gli script XTTS, impostare
NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
. Altre impostazioniNLS_LANG
possono causare errori. -
RMAN nel sistema di origine non deve avere:
-
DISCO DEVICE TYPE configurato con COMPRESSED.
-
TIPO DI BACKUP DA COPIARE. La fonte deve avere BACKUP TYPE TO BACKUPSET.
-
Canale predefinito configurato per il tipo SBT. Questa procedura può essere utilizzata solo con i canali del disco.
-
Eventuali limitazioni per la configurazione dei canali. Ad esempio, MAXSETSIZE, MAXPIECESIZE e così via.
-
-
Il set di tablespace in fase di spostamento deve essere in linea e non contenere file di dati non in linea. Le tablespace devono essere READ WRITE.
-
Le tablespace READ ONLY possono essere spostate con il metodo XTTS normale. Non è necessario incorporare i backup incrementali di più piattaforme per spostare le tablespace che sono sempre LEGGERE SOLO.
-
Anche se il sistema di destinazione preferito è Linux (Oracle Linux a 64 bit o una versione certificata di RedHat Linux), questa procedura può essere utilizzata con altri sistemi operativi basati su Unix. Tuttavia, qualsiasi sistema operativo non Linux deve eseguire 12.1.0.1 o versioni successive sia nella destinazione che nell'origine.
-
La versione Oracle dell'origine deve essere precedente o uguale alla destinazione. Di conseguenza, questa procedura può essere utilizzata come metodo di aggiornamento.
-
La versione minima per l'origine e la destinazione è 11.2.0.3. Le versioni precedenti della versione 11.2 funzioneranno probabilmente allo stesso modo, ma non sono state testate.
-
Come suggerito, testare la procedura prima di fare affidamento su di essa per un ambiente di produzione.
-
ASM (Automatic Storage Management) può essere utilizzato solo per la posizione finale dei file di dati nella destinazione. I backup non possono essere posizionati su ASM con questa versione.
-
La posizione di backup della destinazione deve essere un dispositivo con privilegi di lettura/scrittura. Questo non può essere un dispositivo di sola lettura. Ciò può causare ORA-19624 nella conversione del set di backup.
-
Il database di origine e di destinazione devono utilizzare un set di caratteri compatibile e un set di caratteri nazionali.
-
La tablespace deve trovarsi in READ WRITE al primo backup (livello 0).
-
Il database di origine e di destinazione devono:
-
Utilizzare una versione di fuso orario compatibile.
-
Disporre dell'ultima versione della patch.
-
-
Copiare i seguenti script dal nodo dell'applicazione Oracle E-Business Suite al database server di destinazione (solo per le applicazioni Oracle E-Business Suite).
audb19c.sql ausy19c.sql adstats.sql auque2.sql
Task 1: preparare il database di origine
-
Eseguire la query seguente per controllare il formato endian nel database di origine.
col PLATFORM_NAME for a50 select platform_name,platform_id, endian_format from v$transportable_platform;
-
Identificare le tablespace nel database di origine che verranno trasportate. Eseguire la query seguente se si esegue la migrazione di tutte le tablespace.
select tablespace_name from dba_tablespaces where contents='PERMANENT' and tablespace_name not in ('SYSTEM','SYSAUX');
-
Creare una vista
transport_set_violations
nel database di origine.exec dbms_tts.transport_set_check('<list of tablespaces with comma saperated>'); SELECT * FROM SYS.TRANSPORT_SET_VIOLATIONS;
-
(Facoltativo) Abilitare la registrazione delle modifiche ai blocchi nel database di origine per migliorare le prestazioni dei backup incrementali.
-
Verificare che tutte le tablespace siano in linea nel database di origine.
-
Rimuovere gli indici spaziali dei parametri di indice di rigenerazione e modificare gli indici spaziali inutilizzabili.
-
Questo passo verifica che il parametro dell'indice di rigenerazione non sia presente negli indici spaziali. Per gli ambienti multi-tenant, eseguire prima il comando seguente per impostare il campo SID del database sul nome del pluggable database per il database Oracle (NOME del PDB).
export ORACLE_PDB_SID=[PDB NAME]
-
Per verificare se sono presenti parametri di rigenerazione dell'indice, nel nodo del database server di origine, in qualità di proprietario del file system e dell'istanza di database del database server di origine, utilizzare SQL*Plus per connettersi al database di origine come sysdba ed eseguire la query seguente.
select owner,index_name from dba_indexes where index_type='DOMAIN' and upper(parameters) like '%REBUILD%';
-
Per rimuovere il parametro di rigenerazione dell'indice, utilizzare SQL*Plus per connettersi al database di origine come proprietario dell'indice ed eseguire la query seguente.
alter index [index name] rebuild parameters [parameters]
-
-
Sincronizza indici di testo. Utilizzare SQL*Plus per connettersi al database di origine come SYSDBA ed eseguire la query seguente per trovare tutti gli indici in attesa di sincronizzazione.
select pnd_index_owner,pnd_index_name,count(*) from ctxsys.ctx_pending group by pnd_index_owner,pnd_index_name;
Per sincronizzare gli indici, eseguire la query seguente.
exec ctx_ddl.sync_index('[index owner].[index name]');
Task 2: Preparare il database di destinazione
-
Creare una nuova tablespace di utenti temporanea. Se il database di destinazione è un ambiente multi-tenant, connettersi al PDB.
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;
Utilizzare l'output DDL (Data Definition Language) riportato sopra e sostituire il nome del gruppo di dischi come riportato di seguito e creare una nuova tablespace di utenti.
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;
Assegnare la nuova tablespace utenti USERS_OCI a tutti gli utenti del database che dispongono della tablespace predefinita USERS utilizzando la query seguente.
select 'alter user '||username||' default tablespace users_OCI;' from dba_users where default_tablespace='USERS';
L'output della query deve restituire 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';
-
Creare tablespace temporanee nel database di destinazione. Eseguire la query seguente sull'origine e raccogliere i dettagli della 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;
-
Creare la directory
nls/data/9idata
per le applicazioni 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
-
Crea
$ORACLE_HOME/appsutil/jre
per le applicazioni Oracle E-Business Suite. Copiare la cartellaappsutil
dal database di origine sotto il percorso$ORACLE_HOME
nel database server di destinazione sotto il percorso$ORACLE_HOME
. Eseguire i comandi riportati di seguito su tutti i nodi dei database server di destinazione, una volta copiata la cartella.cd $ORACLE_HOME/appsutil ln -s $ORACLE_HOME/jdk/jre cd $ORACLE_HOME/jdk/jre/lib/ext cp $ORACLE_HOME/jlib/orai18n.jar .
-
Impostare lo schema di sistema per le applicazioni Oracle E-Business Suite.
export ORACLE_PDB_SID=[PDB_NAME] sqlplus / as sysdba show con_name @audb19c.sql
-
Impostare lo schema di sistema per le applicazioni Oracle E-Business Suite.
export ORACLE_PDB_SID=[PDB_NAME] sqlplus / as sysdba show con_name @ausy19c.sql
-
Impostare il parametro
CTXSYS
per le applicazioni 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');
-
Raccoglie automaticamente le statistiche per le applicazioni 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;
Task 3: Passi XTTS V4 incrementali
Task 3.1: Fase iniziale
-
Scaricare gli script v4 perl più recenti ed estrarre da qui: V4 Ridurre il tempo di inattività delle tablespace trasportabili utilizzando il backup incrementale tra più piattaforme (ID documento 2471245.1). Creare directory per decomprimere gli script e la directory temporanea.
Ad esempio:
mkdir -p <Backup_location>/XTTS_Migration mkdir -p <Backup_location>/XTTS_Migration/XTTS_TEMP
-
Modificare il file
xtt.properties
nel sistema di origine con la configurazione specifica del sito. Per ulteriori informazioni sui parametri nel filextt.properties
, vedere la descrizione dei parametri nel file di configurazionextt.properties
qui: V4 Ridurre il tempo di inattività delle tablespace trasportabili utilizzando il backup incrementale tra più piattaforme (ID documento 2471245.1). Per questa procedura sono obbligatori solo i seguenti parametri. Altri sono facoltativi e/o disponibili per l'uso.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
Task 3.2: Prepara fase
-
Eseguire il backup sul sistema di origine. Nel sistema di origine, eseguire il login come utente Oracle con l'ambiente (variabili di ambiente
ORACLE_HOME
eORACLE_SID
) che puntano al database di origine, come indicato di seguito.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 &
-
Trasferire i file seguenti nel database server di destinazione.
-
Backup creati dall'origine
src_scratch_location
alla destinazionedest_scratch_location
. -
Il file
res.txt
dall'origine$TMPDIR
alla destinazione$TMPDIR
.
Nell'esempio seguente, scp viene utilizzato per trasferire il backup level=0 creato dal passo precedente dal sistema di origine al sistema di destinazione.
[oracle@source]$ scp /src_scratch_location/* oracle@dest:/dest_scratch [oracle@source]$ scp res.txt oracle@dest:/home/oracle/xtt
-
-
Ripristinare i file di dati nel sistema di destinazione.
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 &
Task 3.3: Fase di spostamento in avanti
Durante questa fase viene creato un backup incrementale dal database di origine, trasferito al sistema di destinazione, convertito nel formato endian del sistema di destinazione, quindi applicato alle copie convertite del file di dati di destinazione per eseguirne il rollback in avanti. Questa fase può essere eseguita più volte. Ogni backup incrementale successivo dovrebbe richiedere meno tempo rispetto al backup incrementale precedente e porterà le copie del file di dati di destinazione più aggiornate con il database di origine. I dati trasportati (origine) sono completamente accessibili durante questa fase.
Nota: è possibile eseguire più backup sull'origine senza applicarli alla destinazione. I file di backup e il file
res.txt
devono essere copiati prima di eseguire il comando '-restore' nella destinazione.
-
Creare un backup incrementale delle tablespace trasportate nel sistema di origine.
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 &
Questo passo creerà un backup incrementale per tutte le tablespace elencate nel file
xtt.properties
. -
Trasferire i backup incrementali e
res.txt
nel sistema di destinazione. Trasferire il backup o i backup incrementali (trasrc_scratch_location
edest_scratch_location
) eres.txt
(tra$TMPDIRs
) dall'origine alla destinazione. La lista dei file di backup incrementali dal backup corrente è disponibile nel fileincrbackups.txt
del sistema di origine.Ad esempio:
[oracle@source]$ scp `cat incrbackups.txt` oracle@dest:/dest_scratch_location [oracle@source]$ scp res.txt oracle@dest:/home/oracle/xtt
-
Applicare il backup incrementale alle copie dei file di dati nel sistema di destinazione. Nel sistema di destinazione, eseguito il login come utente Oracle con l'ambiente (variabili di ambiente
ORACLE_HOME
eORACLE_SID
) che punta al database di destinazione, eseguire il passo Rollforward dei file di dati come indicato di seguito.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
Il passo di riporto si connette al database di destinazione e applica i backup incrementali nei file di dati delle tablespace per ogni tablespace trasportata.
Nota: sebbene sia possibile eseguire più backup sull'origine senza applicarli alla destinazione, il file
res.txt
deve essere copiato dopo l'ultimo backup e prima dell'esecuzione di--restore
nella destinazione.Ripetere la fase di spostamento in avanti fino alla finestra di cutover del database.
Task 3.4: Fase di backup incrementale finale
-
Modificare le tablespace di origine in READ ONLY nel database di origine. Eseguire la query seguente se tutte le tablespace vengono trasportate nel database di destinazione.
set lines 300 select 'alter tablespace "'||tablespace_name||'" read only;' from dba_tablespaces where contents='PERMANENT' and tablespace_name not in ('SYSTEM','SYSAUX');
-
Creare il backup incrementale finale delle tablespace da trasportare nel sistema di origine.
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 &
-
Trasferire i backup incrementali e
res.txt
nel sistema di destinazione.Ad esempio:
[oracle@source]$ scp 'cat incrbackups.txt' oracle@dest:/dest_scratch_location [oracle@source]$ scp res.txt oracle@dest:/home/oracle/xtt
-
Applica l'ultimo backup incrementale ai file di dati di destinazione.
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 &
Task 3.5: Fase di trasporto - Esporta metadati e tablespace di plugin nel database di destinazione
-
Creare una directory in cui memorizzare i file di backup dell'esportazione.
Ad esempio:
mkdir -p <Backup_location>/XTTS_DPUMP
Eseguire la query seguente per creare la directory nel database di origine.
create or replace directory XTTS_DUMP as '<Backup_location>/XTTS_DUMP'; grant read,write on directory XTTS_DUMP to system;
-
Prepara il parfile di esportazione.
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
-
Eseguire l'esportazione del Data Pump nel database di origine.
nohup expdp system/<password>@<source_db_name> parfile= xtts_expdp.par &
-
Eseguire il comando seguente sul database server di destinazione che genera il parfile di esempio per l'importazione.
export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 $ORACLE_HOME/perl/bin/perl xttdriver.pl -e
Aggiornare le seguenti righe di parfile generate nel passo precedente.
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
Il parfile di importazione finale dovrebbe essere simile al seguente:
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>
-
Disabilitare i seguenti parametri correlati all'audit fino al completamento dell'importazione, come indicato. Riabilitarli dopo il completamento dell'importazione.
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
-
Eseguire l'importazione di Data Pump nel database di destinazione.
-
Creare una directory per copiare i file di backup dell'esportazione.
Ad esempio:
mkdir -p <Backup_location>/XTTS_DPUMP
-
Eseguire il comando seguente per creare una directory nel database di origine.
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> &
-
-
Abilitare i seguenti parametri correlati all'audit dopo il completamento dell'importazione.
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
-
Convalidare i dati trasportati.
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;
-
Assegnare la tablespace degli utenti per ripristinare le modifiche apportate nella preparazione del database di destinazione.
select 'alter user '||username||' default tablespace users;' from dba_users where default_tablespace='USERS_OCI';
Convalidare i dati nei database di origine e di destinazione.
Collegamenti correlati
-
Guida introduttiva a Oracle E-Business Suite su Oracle Cloud Infrastructure (ID documento 2517025.1)
Conferme
- Autore - Pavan Yennampelli (Senior Cloud Engineer, Oracle North America Cloud Services - NACIE)
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.
Per la documentazione del prodotto, visita l'Oracle Help Center.
Migrate Oracle Database to OCI using V4 Cross Platform Transportable Tablespaces and Upgrade from 12c to 19c
G17535-01
October 2024