

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Fase 2 — Fase de avanço (o banco de dados de origem permanece on-line)
<a name="phase2"></a>

Você pode repetir a fase de roll-forward quantas vezes for necessário para capturar o arquivo de dados de destino até o banco de dados de origem.

A fase de avanço consiste nas seguintes etapas.

1. Crie um backup incremental do banco de dados de origem.

1. Transfira o backup para o sistema de destino.

1. Converta o backup para o formato endian do sistema de destino.

1. Aplique o backup às cópias convertidas do arquivo de dados de destino para transferi-las para frente.

Cada backup incremental sucessivo deve levar menos tempo e tornará as cópias do arquivo de dados de destino mais atualizadas com o banco de dados de origem.

## Etapa 1: Faça backups incrementais em paralelo
<a name="phase2-step1"></a>

Faça backups incrementais dos grupos de espaços de tabela que estão sendo transportados no sistema de origem em paralelo.

Essa etapa cria backups incrementais para todos os tablespaces= listados no arquivo. `xtt.properties`

Se você puder ativar o recurso **BLOCK CHANGE TRACKING** no sistema de origem, poderá reduzir consideravelmente o tempo do backup incremental.

O comando a seguir reconhece automaticamente o próximo SCN após o 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
```

## Etapa 2: Transferir os backups incrementais e o arquivo res.txt para o sistema de destino
<a name="phase2-step2"></a>

Se você tiver largura de banda suficiente, poderá reduzir a duração da transferência usando. Direct Connect

Transfira os backups incrementais entre `src_scratch_location` e. `dest_scratch_location` Transfira o `res.txt` arquivo entre `$TMPDIR` o sistema de origem e `$TMPDIR` o sistema de destino.

Se você fizer vários backups incrementais, o `res.txt` arquivo deverá ser copiado após o último backup incremental antes de poder ser aplicado no sistema de destino.

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

## Etapa 3: converter e aplicar backups incrementais
<a name="phase2-step3"></a>

Converta backups incrementais no formato endian do sistema de destino e aplique backups incrementais às cópias do arquivo de dados de destino no sistema de destino.

Neste guia, suponha que os grupos de espaços de tabela sejam quatro. Execute cada `xttdriver.pl` comando com a `--restore` opção para cada grupo de espaços de tabela.

Nesta etapa, o utilitário Oracle XTTS faz com que o banco de dados de destino seja reiniciado. Para executar o comando em paralelo, você deve usar a seguinte personalização no script Perl,. `xttdriver.pl`

****

1. Comente as seguintes linhas:
   + Linha 4867: ` my $outputstart = `sqlplus -L -s \"/ as sysdba\" \@xttstartupnomount.sql`;`
   + Linha 4868: ` checkError ("Error in executing xttstartupnomount.sql", $outputstart);`
   + Linha 4992: ` my $outputstart = `sqlplus -L -s \"/ as sysdba\" \@xttdbopen.sql`;\`

1. Coloque o banco de dados de destino em `NOMOUNT` status.

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

1. Execute uma atualização dos backups incrementais em paralelo.

   ```
   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. Depois de avançar com todos os backups incrementais, defina o `OPEN` status do banco de dados de destino.

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

Nesse ponto, você pode repetir a fase 2 até que os bancos de dados de origem e destino se SCNs aproximem o suficiente. Você deve decidir se vai para a fase 3 ou se repete a fase 2, dependendo do tempo de inatividade desejado.

Para reduzir o tempo de inatividade durante a fase 3 (a fase de transporte), você pode exportar e importar os metadados de objetos não baseados em segmentos, como,, e `USER` `PACKAGE` `PROCEDURE``FUNCTION`, antes de definir o banco de dados de origem como. `READ ONLY`

Se o número de objetos do banco de dados no banco de dados de origem for extremamente grande (centenas de milhares), a exportação e importação dos metadados levará várias horas. Nesse caso, considere exportar metadados.

A exportação de objetos não baseados em segmentos é executada read/write no sistema de origem. Em seguida, você deve importar os objetos para o sistema de destino antes que o sistema de origem seja definido como`READ ONLY`. Neste momento, você deve manter os objetos de origem do banco de dados`PACKAGE`, como, e`PROCEDURE`, `FUNCTION` inalterados.

Esse é um exemplo do arquivo de parâmetros de despejo usado para exportar metadados de objetos não baseados em segmentos, incluindo,,`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
```

Use o comando a seguir para exportar metadados.

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

Esse é um exemplo do arquivo de parâmetros de despejo para importar metadados de objetos não segmentados.

```
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,
…..
```

No momento, não há espaços de tabela`SYSTEM`, exceto, `SYSAUX``UNDO`, e `TEMP` no sistema de destino. Portanto, você deve remapear todos os objetos a serem importados para o espaço de `SYSTEM` tabela.

Use o comando a seguir para importar metadados.

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

Agora você pode ver os objetos criados no banco de dados de destino.

```
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
…..
```

Não há espaços de tabela`SYSTEM`, exceto,`SYSAUX`, e. `UNDO` `TEMP` O `USER` objeto é criado com `USERS` o tablespace padrão. Durante a fase 3, os espaços de tabela transportáveis serão criados e, em seguida, os objetos USER serão alterados com os espaços de tabela padrão originais.