Instanciação Precisa para Oracle Usando Extração de Carga Inicial

Saiba como adicionar a Extração de Carga Inicial usando o Admin Client.

O método de carga inicial é altamente adequado para instanciação nos seguintes cenários:

O Extract de carga inicial funciona lendo dados diretamente das tabelas de origem e gravando-os em um EXTFILE. Ele se conecta diretamente ao banco de dados e extrai as alterações. Conforme mostrado no diagrama a seguir, há duas fases ao executar uma instanciação de carga inicial. EXTINIT Extract é a carga inicial do processo Extract e EXTPRM é o processo Extract principal. O processo EXTPRM está configurado, mas não foi iniciado para replicação contínua. Depois que o Extract de carga inicial concluir a instanciação, o processo de replicação contínua será iniciado a partir do ponto em que a carga inicial foi iniciada.

Veja a seguir a descrição da ilustração gwuad_dt_026_file-replicat.png

Para configurar esse processo de Extração, você precisará de uma combinação de processos de carregamento inicial baseado em arquivo e de captura de dados de alteração (CDC). O processo de instanciação usando o Extract de carga inicial inclui as seguintes tarefas:

O processo de carregamento inicial baseado em arquivo é o método preferido para executar a replicação de dados no MA. Os componentes principais são:

Antes de começar, certifique-se de que o alias de credencial do banco de dados (USERIDALIAS) seja criado.

Você pode usar a interface Web do Oracle GoldenGate, o Admin Client ou os comandos cURL para configurar essa configuração.

Etapa 1: Criar um Extract Principal

A instanciação precisa é usada para replicar recursos de banco de dados corretamente do banco de dados de origem para o de destino. O Extract principal é iniciado primeiro para iniciar a captura de dados de alteração antecipadamente. A instanciação precisa se baseia nas seguintes suposições:

Observação: para que a instanciação precisa funcione, o SCN de instanciação deve vir após o SCN de registro.

Para começar, crie e inicie o Extract principal EXTPRIM do AdminClient, conforme mostrado no seguinte exemplo:

Comando:

OGG (not connected) 1> CONNECT https://oggdep.example.com:9100 as oggadmin password oggadmin !

Saída:

Using default deployment 'OGGDEP'

Comando:

OGG (https://oggdep.example.com:9100 OGGDEP) 2> DBLOGIN USERIDALIAS oggadmin

Saída:

Successfully logged into database.

Comando:

OGG (https://oggdep.example.com:9100 OGGDEP) 3> ADD EXTRACT extprim INTEGRATED TRANLOG BEGIN NOW

Saída:

2018-03-16T13:37:07Z INFO OGG-08100 EXTRACT (Integrated) added.

Comando:

OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 4> REGISTER EXTRACT extprim DATABASE

Saída:

2018-03-16T13:37:30Z INFO OGG-02003 Extract EXTPRIM successfully registered with database at SCN 1608891.

Comando:

OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 5> EDIT PARAMS extprim

Comando:

OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 6> VIEW PARAMS extprim

Saída:

--
-- E X T P R I M . p r m
-- Primary Extract Parameter File
--
Extract EXTPRIM
UseridAlias oggadmin
ExtTrail AA
Table user01.*;

Comando:

OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 7> ADD EXTTRAIL aa EXTRACT extprim

Saída:

2018-03-16T13:37:55Z INFO OGG-08100 EXTTRAIL added.

Comando:

OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 8> START EXTRACT extprim

Saída:

2018-03-16T13:38:02Z INFO OGG-00975 EXTRACT EXTPRIM starting
2018-03-16T13:38:02Z INFO OGG-15426 EXTRACT EXTPRIM started

Neste exemplo, oggadmin é o alias de credencial do banco de dados.

Depois de criar o processo Extract principal, recupere o número de registro SCN. Execute o comando REGISTER EXTRACT no AdminClient. O exemplo a seguir recupera um valor SCN de 1608891.

OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 4> REGISTER EXTRACT extprim DATABASE

Saída:

2018-03-16T13:37:30Z INFO OGG-02003 Extract EXTPRIM successfully registered with database at SCN 1608891.

Etapa 2: Determinar o SCN de Instanciação

O Serviço de Administração na Arquitetura de Microsserviços do Oracle GoldenGate fornece um ponto final para recuperar informações sobre transações de banco de dados abertas. Essas informações podem ser usadas para identificar o SCN a ser usado ao instanciar o Extract de carga inicial.

No exemplo a seguir, o SCN de instanciação é 1609723, que é o SCN mais antigo de todas as transações em aberto que também passou do SCN de registro de 1608891, identificado na etapa anterior.

-- Query for active transactions
--
SELECT T.START_SCN, T.STATUS TSTATUS, T.START_DATE,
       S.SID, S.SERIAL#, S.INST_ID, S.USERNAME, S.OSUSER, S.STATUS SSTATUS, S.LOGON_TIME
  FROM gv$transaction T
 INNER JOIN gv$session S
 ON s.saddr = t.ses_addr

UNION ALL

--
-- Query for current status
--
SELECT CURRENT_SCN, 'CURRENT', CURRENT_DATE,
       NULL, NULL, NULL, 'SYS', NULL, NULL, NULL
 from v$database

ORDER BY 1;

Os resultados dessa consulta podem ser usados para determinar o SCN de instanciação. Os resultados dessa consulta específica são:

1538916 ACTIVE 2018-03-16 18:10:31.0 3865 9176 1 OGGADMIN oracle INACTIVE 2018-03-16 18:10:26.0 1540555 CURRENT 2018-03-16 18:21:50.0 SYS

O SCN usado para instanciar o Extract de carga inicial é obtido usando o SQL*Plus. No exemplo a seguir, a consulta SQL usa o valor de SCN de instanciação como 1624963, que é o SCN mais antigo de todas as transações abertas que também passaram do SCN de registro de 1608891.

OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 14> SHELL ECHO 'SELECT MIN(START_SCN) FROM gv$transaction;' | ${ORACLE_HOME}/bin/sqlplus -S / as sysdba

MIN(START_SCN)
--------------
       1624963

Se não houver transações abertas, essa consulta SQL retornará um resultado vazio. Uma consulta detalhada que leva em conta a situação em que não há transações em aberto é:

SELECT MIN(SCN) as INSTANTIATION_SCN
  FROM (SELECT MIN(START_SCN) as SCN
          FROM gv$transaction
         UNION ALL
        SELECT CURRENT_SCN
          FROM gv$database);

Etapa 3: Criar e Iniciar o Replicat de Carga Inicial

Antes de iniciar esta etapa, verifique se a tabela de checkpoint oggadmin.checkpoints já existe no sistema de destino. O Replicat de carga inicial é responsável por preencher o banco de dados de destino. Execute o seguinte comando no AdminClient para criar e iniciar o Replicat de carga inicial (REPINIT):

Comando:

OGG (not connected) 1> CONNECT https://oggdep.example.com:9100 as oggadmin password oggadmin !

Saída:

Using default deployment 'OGGDEP'

Comando:

OGG (https://oggdep.example.com:9100 OGGDEP) 2> DBLOGIN USERIDALIAS oggadmin

Saída:

Successfully logged into database.

Comando:

OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 3> ADD CHECKPOINTTABLE oggadmin.checkpoints

Saída:

ADD "oggadmin.checkpoints" succeeded.

Comando:

OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 4> ADD REPLICAT repinit EXTTRAIL dd CHECKPOINTTABLE oggadmin.checkpoints

Saída:

2018-03-16T13:56:41Z INFO OGG-08100 REPLICAT added.

Comando:

OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 5> EDIT PARAMS repinit

Comando:

OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 6> VIEW PARAMS repinit

Saída:

--
--  R E P I N I T . p r m
--  File-Based Initial Load Replicat Parameter File
--
Replicat    REPINIT
UseridAlias oggadmin
Map         user01.*
  Target    user01.*;

Comando:

OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 7> START REPLICAT repinit

Saída:

2018-03-16T13:58:21Z  INFO    OGG-00975  REPLICAT REPINIT starting
2018-03-16T13:58:21Z  INFO    OGG-15426  REPLICAT REPINIT started

Etapa 4: Criar e iniciar o Extract de Carga Inicial

Usando o SCN de instanciação que você recuperou (1624963), o Extract de carga inicial é criado para gravar o conteúdo das tabelas de banco de dados na trilha. Crie e inicie o Extract de carga inicial, EXTINIT.

A partir do Oracle GoldenGate 26ai, para carregamento inicial, as views da tabela Extract não serão resolvidas ao resolver tabelas com um parâmetro TABLE que inclui curingas. Se as views precisarem ser incluídas no Extract de carga inicial, elas precisarão ser especificadas em um parâmetro TABLE separado sem qualquer caractere curinga.

Por exemplo, se houver uma tabela hr.employees e uma view hr.employees_view. Para Extract de carga inicial, se você especificar o seguinte no arquivo de parâmetros do Extract de carga inicial:

TABLE hr.*;

Somente os dados da tabela hr.employees serão incluídos no Extract de carga inicial.

Se você precisar incluir o hr.employees_view na carga inicial, adicione o seguinte parâmetro ao arquivo de parâmetros Extract de carga inicial:

TABLE SCOTT.TAB1_VIEW;

Comando:

OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 15> ADD EXTRACT extinit SOURCEISTABLE

Saída:

2018-03-16T14:08:38Z INFO OGG-08100 EXTRACT added.

Comando:

OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 16> EDIT PARAMS extinit

Comando:

OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 17> VIEW PARAMS extinit

Saída:

--
--  E X T I N I T . p r m
--  File-Based Initial Load Extract Parameter File
--
Extract     EXTINIT
UseridAlias oggadmin
ExtFile     CC Megabytes 2000 Purge
Table       user01.*, SQLPredicate "As Of SCN 1624963";

Comando:

OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 18> START EXTRACT extinit

Saída:

2018-03-16T14:13:42Z  INFO    OGG-00975  EXTRACT EXTINIT starting
2018-03-16T14:13:42Z  INFO    OGG-15426  EXTRACT EXTINIT started

Etapa 5: Criar os Caminhos de Distribuição

Crie dois caminhos de distribuição (AABB e CCDD) para copiar as trilhas locais para o host remoto do Admin Client:

Comando:

OGG (https://oggdep.example.com:9100 oggdep) 15> ADD DISTPATH aabb SOURCE TRAIL://oggdep.example.com:9102/services/v2/sources?trail=AA target wss://dallas.oggdevops.us:9103/services/v2/targets?trail=BB

Saída:

2018-03-16T17:28:27Z INFO OGG-08511 The path 'AABB' has been added.

Comando:

OGG (https://oggdep.oggdevops.us:9100 oggdep) 16> ADD DISTPATH ccdd SOURCE TRAIL://oggdep.example.com:9102/services/v2/sources?trail=CC target wss://dallas.oggdevops.us:9103/services/v2/targets?trail=DD

Saída:

2018-03-16T17:28:35Z INFO OGG-08511 The path 'CCDD' has been added.

Comando:

OGG (https://oggdep.example:9100 oggdep) 17> START DISTPATH aabb

Saída:

2018-03-16T17:28:42Z INFO OGG-08513 The path 'AABB' has been started.

Comando:

OGG (https://oggdep.example.com:9100 oggdep) 18> START DISTPATH ccdd

Saída:

2018-03-16T17:28:47Z INFO OGG-08513 The path 'CCDD' has been started.

Se você usar o protocolo ogg em vez de wss, deverá usar a opção TARGETTYPE. A sintaxe nesse caso seria:

ADD DISTPATH path-name SOURCE source-uri TARGET target-uri [ TARGETTYPE ( MANAGER | COLLECTOR | RECVSRVR ) ]

TARGETTYPE especifica o tipo de destino caso o caminho de distribuição use o protocolo legado. Este argumento só é válido se o esquema de URI de destino for ogg.

Etapa 6: Criar o Processo de Replicação Principal

Depois que a carga inicial Extract e Replicat for concluída, eles poderão ser excluídos. Em seguida, o processo Replicat principal é criado no host remoto para aplicar dados de alteração ao banco de dados de destino.

Use o AdminClient para criar o processo Replicat principal. Observação: O processo Replicat principal é iniciado no SCN de instanciação.

Comando:

OGG (https://oggdep.example.com:9100 oggdep as oggadmin) 12> ADD REPLICAT repprim EXTTRAIL bb CHECKPOINTTABLE oggadmin.checkpoints

Saída:

2018-03-16T17:37:46Z INFO OGG-08100 REPLICAT added.

Comando: EDIT PARAMS

OGG (https://oggdep.example.com:9100 oggdep as oggadmin) 13> EDIT PARAMS repprim

Comando:

OGG (https://oggdep.example.com:9100 oggdep as oggadmin) 14> VIEW PARAMS repprim

Saída:

--
--  R E P P R I M . p r m
--  Replicat Parameter File
--
Replicat    REPPRIM
USERIDALIAS oggadmin
Map         user01.*
  Target    user01.*;

Comando:

OGG (https://oggdep.example.com:9100 oggdep as oggadmin) 15> START REPLICAT repprim ATCSN 1624963

Saída:

2018-03-16T17:38:10Z  INFO    OGG-00975  REPLICAT REPPRIM starting
2018-03-16T17:38:10Z  INFO    OGG-15426  REPLICAT REPPRIM started