

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Fase 2: fase di roll-forward (il database di origine rimane online)
<a name="phase2"></a>

È possibile ripetere la fase di roll-forward tutte le volte necessarie per caricare il file di dati di destinazione nel database di origine.

La fase di roll-forward consiste nei seguenti passaggi.

1. Crea un backup incrementale dal database di origine.

1. Trasferisci il backup sul sistema di destinazione.

1. Convertire il backup nel formato endian del sistema di destinazione.

1. Applica il backup alle copie del file di dati di destinazione convertito per eseguirne il rollforward.

Ogni backup incrementale successivo dovrebbe richiedere meno tempo e aggiornerà le copie dei file di dati di destinazione con il database di origine.

## Fase 1: Eseguire backup incrementali in parallelo
<a name="phase2-step1"></a>

Effettua backup incrementali dei gruppi di tablespace trasportati sul sistema di origine in parallelo.

Questo passaggio crea backup incrementali per tutti i tablespaces= elencati nel file. `xtt.properties`

Se è possibile attivare la funzione **BLOCK CHANGE TRACKING** sul sistema di origine, è possibile ridurre notevolmente il tempo del backup incrementale.

Il comando seguente riconosce automaticamente l'SCN successivo dopo il backup completo.

```
cd /u01/oracle/expimp/xtt<nn>
export TMPDIR=/u01/oracle/expimp/out/out<nn>
$ORACLE_HOME/perl/bin/perl xttdriver.pl --backup --debug 3
```

## Passaggio 2: Trasferire i backup incrementali e il file res.txt nel sistema di destinazione
<a name="phase2-step2"></a>

Se disponi di una larghezza di banda sufficiente, puoi ridurre la durata del trasferimento utilizzando. Direct Connect

Trasferisci i backup incrementali tra e. `src_scratch_location` `dest_scratch_location` Trasferisci il `res.txt` file tra `$TMPDIR` il sistema di origine e `$TMPDIR` il sistema di destinazione.

Se si eseguono più backup incrementali, il `res.txt` file deve essere copiato dopo l'ultimo backup incrementale prima di poter essere applicato sul sistema di destinazione.

```
[source]$ scp $TMPDIR/res.txt oracle@[dest]:/u01/oracle/expimp/out/out<nn>
[source]$ scp <src_scratch_location>/* oracle@[dest]:<dest_scratch_location>
```

## Fase 3: Convertire e applicare i backup incrementali
<a name="phase2-step3"></a>

Converti i backup incrementali nel formato endian del sistema di destinazione e applica i backup incrementali alle copie dei file di dati di destinazione sul sistema di destinazione.

In questa guida, supponiamo che i gruppi di tablespace siano quattro. Esegui ogni `xttdriver.pl` comando con l'`--restore`opzione per ogni gruppo di tablespace.

In questo passaggio, l'utilità Oracle XTTS richiede il riavvio del database di destinazione. Per eseguire il comando in parallelo, è necessario utilizzare la seguente personalizzazione nello script Perl,. `xttdriver.pl`

****

1. Commenta le seguenti righe:
   + Linea 4867: ` my $outputstart = `sqlplus -L -s \"/ as sysdba\" \@xttstartupnomount.sql`;`
   + Linea 4868: ` checkError ("Error in executing xttstartupnomount.sql", $outputstart);`
   + Linea 4992: ` my $outputstart = `sqlplus -L -s \"/ as sysdba\" \@xttdbopen.sql`;\`

1. Imposta lo `NOMOUNT` stato del DB di destinazione.

   ```
   sqlplus / as sysdba @xttstartupnomount.sql
   ```

1. Esegui un rollforward dei backup incrementali in parallelo.

   ```
   cd /u01/oracle/expimp/xtt<nn>
   export TMPDIR=/u01/oracle/expimp/out/out<nn>
   $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore --debug 3
   ```

1. Dopo aver eseguito il rollforward di tutti i backup incrementali, imposta lo stato del DB di destinazione. `OPEN`

   ```
   sqlplus / as sysdba @xttdbopen.sql
   ```

A questo punto, puoi ripetere la fase 2 finché i SCNs database di origine e di destinazione non si avvicinano abbastanza. È necessario decidere se passare alla fase 3 o ripetere la fase 2, a seconda del tempo di inattività previsto.

Per ridurre i tempi di inattività durante la fase 3 (la fase di trasporto), è possibile esportare e importare i metadati di oggetti non basati su segmenti, ad esempio,, e `USER` `PACKAGE` `PROCEDURE``FUNCTION`, prima di impostare il database di origine come. `READ ONLY`

Se il numero di oggetti di database nel database di origine è estremamente elevato (centinaia di migliaia), l'esportazione e l'importazione dei metadati richiederanno diverse ore. In questo caso, prendete in considerazione l'esportazione dei metadati.

L'esportazione di oggetti non basati su segmenti viene eseguita nel sistema di origine. read/write È quindi necessario importare gli oggetti nel sistema di destinazione prima che il sistema di origine sia impostato su. `READ ONLY` Al momento, è necessario mantenere `FUNCTION` invariati gli oggetti di origine del database come `PACKAGE``PROCEDURE`, e.

Questo è un esempio del file dei parametri dump utilizzato per esportare i metadati di oggetti non basati su segmenti, tra cui`USER`,, e. `PACKAGE_SPEC` `PACKAGE_BODY` `PROCEDURE` `FUNCTION`

```
directory=dmpdir
dumpfile=xttsmsc%U.dmp
full=y
filesize=1048576000
logfile=expmsc.log
metrics=y
exclude=TABLE,INDEX,CONSTRAINT,COMMENT,
MATERIALIZED_VIEW,MATERIALIZED_VIEW_LOG,SCHEMA_CALLOUT
```

Utilizzate il comando seguente per esportare i metadati.

```
SQL> create directory dmpdir as <location>;
expdp system/<system password> parfile=<parameter file>
```

Questo è un esempio del file dei parametri dump per importare metadati di oggetti non segmentati.

```
directory=dmpdir
dumpfile=xttsmsc%U.dmp
full=y
logfile=impmsc1.log
EXCLUDE=TABLESPACE, PROCOBJ, RLS_CONTEXT, RLS_GROUP, RLS_POLICY, TABLESPACE_QUOTA
metrics=y
remap_tablespace=
APPS_TS_ARCHIVE:SYSTEM,
APPS_TS_INTERFACE:SYSTEM,
APPS_TS_SEED:SYSTEM,
APPS_TS_SUMMARY:SYSTEM,
…..
```

Al momento, non ci sono tablespace ad eccezione di`SYSTEM`, `SYSAUX``UNDO`, e nel sistema di destinazione. `TEMP` Quindi è necessario rimappare tutti gli oggetti da importare nel tablespace. `SYSTEM`

Utilizzate il seguente comando per importare i metadati.

```
SQL> create directory dmpdir as <location>;
impdp system/<system password> parfile=<parameter file>
```

Ora puoi vedere gli oggetti creati nel database di destinazione.

```
SQL> select object_type, count(*) from dba_objects group by object_type order by count(*) desc;
OBJECT_TYPE                  COUNT(*)
------------------------------- ----------
SYNONYM                          89327
PACKAGE                           55670
PACKAGE BODY                  54447
VIEW                                 41378
JAVA CLASS                        31978
SEQUENCE                         12766
…..
```

Non ci sono tablespace tranne`SYSTEM`,`SYSAUX`, `UNDO` e. `TEMP` L'`USER`oggetto viene creato con `USERS` come tablespace di default. Durante la fase 3, verranno create le tablespace trasportabili e quindi gli oggetti USER verranno modificati con le tablespace predefinite originali.