Nota

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

Obiettivi

Prerequisiti

Task 1: preparare il database di origine

  1. 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;
    
  2. 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');
    
  3. 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;
    
  4. (Facoltativo) Abilitare la registrazione delle modifiche ai blocchi nel database di origine per migliorare le prestazioni dei backup incrementali.

  5. Verificare che tutte le tablespace siano in linea nel database di origine.

  6. 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]
      
  7. 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

  1. 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';
    
  2. 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;
    
  3. 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
    
  4. Crea $ORACLE_HOME/appsutil/jre per le applicazioni Oracle E-Business Suite. Copiare la cartella appsutil 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 .
    
  5. 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
    
  6. 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
    
  7. 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');
    
  8. 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

  1. 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
    
  2. Modificare il file xtt.properties nel sistema di origine con la configurazione specifica del sito. Per ulteriori informazioni sui parametri nel file xtt.properties, vedere la descrizione dei parametri nel file di configurazione xtt.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

  1. 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 e ORACLE_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 &
    
  2. Trasferire i file seguenti nel database server di destinazione.

    • Backup creati dall'origine src_scratch_location alla destinazione dest_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
    
  3. 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.

  1. 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.

  2. Trasferire i backup incrementali e res.txt nel sistema di destinazione. Trasferire il backup o i backup incrementali (tra src_scratch_location e dest_scratch_location) e res.txt (tra $TMPDIRs) dall'origine alla destinazione. La lista dei file di backup incrementali dal backup corrente è disponibile nel file incrbackups.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
    
  3. 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 e ORACLE_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

  1. 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');
    
  2. 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 &
    
  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
    
  4. 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

  1. 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;
    
  2. 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
    
  3. Eseguire l'esportazione del Data Pump nel database di origine.

    nohup expdp system/<password>@<source_db_name> parfile= xtts_expdp.par &
    
  4. 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>
    
  5. 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
    
  6. Eseguire l'importazione di Data Pump nel database di destinazione.

    1. Creare una directory per copiare i file di backup dell'esportazione.

      Ad esempio:

      mkdir -p <Backup_location>/XTTS_DPUMP
      
    2. 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> &
      
  7. 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
    
  8. 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;
    
  9. 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.

Conferme

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.