• Admin

Oracle GoldenGate Parte - II

Esta é a segunda parte de uma série de 3 artigos em que estou apresentando os conceitos básicos sobre o Oracle GoldenGate, detalhes da sua arquitetura e algumas dicas.

Parte I: Introdução e arquitetura

Parte II: Comandos para monitoração e troubleshooting com logdump. >>>> este artigo

Parte III: Certificação e Dicas.

PARTE II: Comandos para monitoração e troubleshooting com logdump.

Comandos para monitoração

Nesta parte do artigo serão apresentados alguns comandos que podem ser utilizados para monitoração do Oracle GoldenGate, e analisar o que está acontecendo no ambiente.

O primeiro comando apresentado é o "info all", com ele podemos verificar de forma resumida e rápida quais processos existem, o status deles, e informações de lag e checkpoint, como apresentado abaixo:

====================================================================================

GGSCI (ol75-ogg12c) 1> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING EXTRACT RUNNING EXTDB12C 00:00:00 00:00:05 EXTRACT RUNNING PMPDB12C 00:00:00 00:00:06

====================================================================================

Com o comando info e o nome do processo, conseguimos visualizar mais informações sobre o processo em questão:

==================================================================================== GGSCI (ol75-ogg12c) 2> info EXTDB12C

EXTRACT EXTDB12C Last Started 2018-10-04 02:16 Status RUNNING Checkpoint Lag 00:00:08 (updated 00:00:03 ago) Process ID 15062 Log Read Checkpoint Oracle Integrated Redo Logs 2018-10-04 03:10:12 SCN 0.2234136 (2234136)

====================================================================================

  • Horário do último start do processo e o status atual:

EXTRACT EXTDB12C Last Started 2018-10-04 02:16 Status RUNNING

  • Se existe algum lag no processo:

Checkpoint Lag 00:00:11 (updated 00:00:03 ago)

  • Qual o número do PID (Process Identifier) do sistema operacional:

Process ID 15062

  • Podemos pesquisar o número desse processo para confirmar:

[oracle@ol75-ogg12c:/u01/app/oracle/product/ogg/dirdat]$ ps -ef | grep 15062 oracle 15062 2792 0 02:16 ? 00:00:07 /u01/app/oracle/product/ogg/extract PARAMFILE /u01/app/oracle/product/ogg/dirprm/extdb12c.prm REPORTFILE /u01/app/oracle/product/ogg/dirrpt/EXTDB12C.rpt PROCESSID EXTDB12C

  • Qual o método de captura do Extract? Neste caso podemos observar que está usando o Modo Integrado. A posição SCN e horário de leitura atual do transaction log do banco: Log Read Checkpoint Oracle Integrated Redo Log 2018-10-04 03:01:2 SCN 0.2232731 (2232731)

E se eu quiser saber qual é o trafile atual que o processo extract está escrevendo as transações capturadas?

Utilize o comando abaixo:

====================================================================================

GGSCI (ol75-ogg12c) 3> info EXTDB12C detail

EXTRACT EXTDB12C Last Started 2018-10-04 02:16 Status RUNNING Checkpoint Lag 00:00:12 (updated 00:00:04 ago) Process ID 15062 Log Read Checkpoint Oracle Integrated Redo Logs 2018-10-04 03:11:17 SCN 0.2234180 (2234180)

Target Extract Trails:

Trail Name Seqno RBA Max MB Trail Type

./dirdat/dx 7 15408 500 EXTTRAIL <<<<<<

... ...

Current directory /u01/app/oracle/product/ogg

Report file /u01/app/oracle/product/ogg/dirrpt/EXTDB12C.rpt Parameter file /u01/app/oracle/product/ogg/dirprm/extdb12c.prm Checkpoint file /u01/app/oracle/product/ogg/dirchk/EXTDB12C.cpe Process file /u01/app/oracle/product/ogg/dirpcs/EXTDB12C.pce Error log /u01/app/oracle/product/ogg/ggserr.log

====================================================================================

Com este comando nós podemos descobrir o nome do trail (Trail Name) "./dirdat/dx", a sequência do arquivo gerado e que está sendo usado "Seqno 7", e o RBA 15408 (Relative Byte Address), que é a posição dentro do trail onde será gravada a próxima transação capturada.

Também podemos verificar no filesystem todos os arquivos trailfiles existentes:

====================================================================================

[oracle@ol75-ogg12c:/u01]$ cd $OGG_HOME/dirdat

[oracle@ol75-ogg12c:/u01/app/oracle/product/ogg/dirdat]$ ls -ltr total 92 -rw-r-----. 1 oracle oinstall 3378 Aug 3 22:34 dx000000000 -rw-r-----. 1 oracle oinstall 21378 Aug 4 10:35 dx000000001 -rw-r-----. 1 oracle oinstall 17792 Aug 4 17:30 dx000000002 -rw-r-----. 1 oracle oinstall 7328 Sep 16 23:44 dx000000003 -rw-r-----. 1 oracle oinstall 2352 Oct 3 23:30 dx000000004 -rw-r-----. 1 oracle oinstall 1485 Oct 4 01:22 dx000000005 -rw-r-----. 1 oracle oinstall 1422 Oct 4 02:16 dx000000006 -rw-r-----. 1 oracle oinstall 15408 Oct 4 02:58 dx000000007 <<<<<<<<<

====================================================================================

Existem situações em que queremos ter um certo controle sob quais informações serão geradas dentro de um trailfile, para facilitar a análise e troubleshooting.

Vou apresentar uma maneira bem simples porém muito útil. Utilizando o comando "rollover" forçamos o processo extract a parar de escrever no arquivo atual, gerar um novo arquivo trailfile e começar a escrever nele.

Desta forma, saberemos que a partir desse momento, todas as transações capturadas ficarão salvas em um determinado trailfile.

====================================================================================

GGSCI (ol75-ogg12c) 4> send EXTDB12C rollover

Sending ROLLOVER request to EXTRACT EXTDB12C ... Request processed.

GGSCI (ol75-ogg12c) 2> info EXTDB12C detail

EXTRACT EXTDB12C Last Started 2018-10-04 02:16 Status RUNNING Checkpoint Lag 00:00:08 (updated 00:00:08 ago) Process ID 15062 Log Read Checkpoint Oracle Integrated Redo Logs 2018-10-04 03:25:06 SCN 0.2235505 (2235505)

Target Extract Trails:

Trail Name Seqno RBA Max MB Trail Type

./dirdat/dx 8 1422 500 EXTTRAIL

... ...

Current directory /u01/app/oracle/product/ogg

Report file /u01/app/oracle/product/ogg/dirrpt/EXTDB12C.rpt Parameter file /u01/app/oracle/product/ogg/dirprm/extdb12c.prm Checkpoint file /u01/app/oracle/product/ogg/dirchk/EXTDB12C.cpe Process file /u01/app/oracle/product/ogg/dirpcs/EXTDB12C.pce Error log /u01/app/oracle/product/ogg/ggserr.log

====================================================================================

Vamos confirmar se o novo arquivo foi mesmo criado no filesystem:

====================================================================================

GGSCI (ol75-ogg12c) 3> sh ls -ltr ./dirdat

total 96 -rw-r-----. 1 oracle oinstall 3378 Aug 3 22:34 dx000000000 -rw-r-----. 1 oracle oinstall 21378 Aug 4 10:35 dx000000001 -rw-r-----. 1 oracle oinstall 17792 Aug 4 17:30 dx000000002 -rw-r-----. 1 oracle oinstall 7328 Sep 16 23:44 dx000000003 -rw-r-----. 1 oracle oinstall 2352 Oct 3 23:30 dx000000004 -rw-r-----. 1 oracle oinstall 1485 Oct 4 01:22 dx000000005 -rw-r-----. 1 oracle oinstall 1422 Oct 4 02:16 dx000000006 -rw-r-----. 1 oracle oinstall 15408 Oct 4 03:20 dx000000007 -rw-r-----. 1 oracle oinstall 1422 Oct 4 03:20 dx000000008 <<<<<<<<<<

====================================================================================

Sim, o arquivo com a sequência 8 (dx000000008) foi gerado!

Um detalhe, você percebeu que o comando "ls -ltr ./dirdat" foi executado de dentro do GGSCI? Sim, também podemos executar comandos do sistema operacional sem precisar sair da linha de comando do GoldenGate.

Mais um recurso muito bom no GGSCI é o comando exclamação '!', com ele podemos repetir o último comando executado, sem precisar escrever ele novamente. Exemplo:

====================================================================================

GGSCI (ol75-ogg12c) 4> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING EXTRACT RUNNING EXTDB12C 00:00:11 00:00:05 EXTRACT RUNNING PMPDB12C 00:00:00 00:00:03

GGSCI (ol75-ogg12c) 5> ! info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING EXTRACT RUNNING EXTDB12C 00:00:11 00:00:06 EXTRACT RUNNING PMPDB12C 00:00:00 00:00:04

GGSCI (ol75-ogg12c) 6> ! info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING EXTRACT RUNNING EXTDB12C 00:00:11 00:00:07 EXTRACT RUNNING PMPDB12C 00:00:00 00:00:05

====================================================================================

Agora eu vou mostrar como rastrear uma transação entre todos os processos (extract, pump e replicat) utilizando comandos no ggsci e logdump.

Para isso, vamos criar uma tabela nova e gerar algumas transações para encher o arquivo trailfiles, lembrando que ele ainda está vazio porque fizemos o rollover.

====================================================================================

SQL> create table REP_OGG_SOURCE12C.TREINAMENTO_OGG_ORAMASTER (id number, aluno varchar2(100));

Table created.

SQL> alter table REP_OGG_SOURCE12C.TREINAMENTO_OGG_ORAMASTER add constraint PK_TREINAMENTO_OGG_ORAMASTER primary key (id) ;

Table altered.

SQL> desc REP_OGG_SOURCE12C.TREINAMENTO_OGG_ORAMASTER

Name Null? Type ----------------------------------------- -------- ---------------------------- ID NOT NULL NUMBER ALUNO VARCHAR2(100)

SQL> insert into REP_OGG_SOURCE12C.TREINAMENTO_OGG_ORAMASTER values (1,'Gilson');

1 row created.

SQL> insert into REP_OGG_SOURCE12C.TREINAMENTO_OGG_ORAMASTER values (2,'Fabio Prado');

1 row created.

SQL> commit;

Commit complete.

SQL> select * from REP_OGG_SOURCE12C.TREINAMENTO_OGG_ORAMASTER;

ID ALUNO ---------- ------------------------------ 1 Gilson <<<<<<<<<<<<<<<<<<<<< 2 Fabio Prado

SQL> update REP_OGG_SOURCE12C.TREINAMENTO_OGG_ORAMASTER set aluno='Gilson Martins' where id=1;

1 row updated.

SQL> commit;

Commit complete.

SQL> select * from REP_OGG_SOURCE12C.TREINAMENTO_OGG_ORAMASTER;

ID ALUNO ---------- ------------------------------ 1 Gilson Martins <<<<<<<<<<<<<<<<<<<<< 2 Fabio Prado

====================================================================================

Verificar se o Extract coletou as transações que foram executadas:

====================================================================================

GGSCI (ol75-ogg12c as GGUSER_12C@golden12c) 9> send EXTDB12C stats

Sending STATS request to EXTRACT EXTDB12C ...

Start of Statistics at 2018-10-04 03:43:33.

DDL replication statistics (for all trails):

*** Total statistics since extract started *** Operations 12.00 Mapped operations 11.00 Unmapped operations 0.00 Other operations 1.00 Excluded operations 1.00

Output to ./dirdat/dx:

Extracting from REP_OGG_SOURCE12C.TREINAMENTO_OGG_ORAMASTER to REP_OGG_SOURCE12C.TREINAMENTO_OGG_ORAMASTER:

*** Total statistics since 2018-10-04 02:17:21 *** Total inserts 4.00 <<<<<<<<< Total updates 2.00 <<<<<<<<< Total deletes 0.00 Total discards 0.00 Total operations 6.00 <<<<<<<<<

*** Daily statistics since 2018-10-04 02:17:21 *** Total inserts 4.00 Total updates 2.00 Total deletes 0.00 Total discards 0.00 Total operations 6.00

*** Hourly statistics since 2018-10-04 03:00:00 *** Total inserts 2.00 <<******* Total updates 1.00 <<******* Total deletes 0.00 Total discards 0.00 Total operations 3.00 <<*******

*** Latest statistics since 2018-10-04 02:17:21 *** Total inserts 4.00 Total updates 2.00 Total deletes 0.00 Total discards 0.00 Total operations 6.00

End of Statistics.

GGSCI (ol75-ogg12c as GGUSER_12C@golden12c) 10>

====================================================================================

Confirmamos que o GoldenGate capturou as transações! Agora vamos verificar se o Pump leu o trail file na origem e conseguiu enviar a transação para o destino:

====================================================================================

GGSCI (ol75-ogg12c as GGUSER_12C@golden12c) 13> send PMPDB12C stats

Sending STATS request to EXTRACT PMPDB12C ...

Start of Statistics at 2018-10-04 04:00:07.

DDL replication statistics (for all trails):

*** Total statistics since extract started *** Operations 11.00

Output to ./dirdat/dx:

Extracting from REP_OGG_SOURCE12C.TREINAMENTO_OGG_ORAMASTER to REP_OGG_SOURCE12C.TREINAMENTO_OGG_ORAMASTER:

*** Total statistics since 2018-10-04 02:17:22 *** Total inserts 4.00 Total updates 2.00 Total deletes 0.00 Total discards 0.00 Total operations 6.00

*** Daily statistics since 2018-10-04 02:17:22 *** Total inserts 4.00 Total updates 2.00 Total deletes 0.00 Total discards 0.00 Total operations 6.00

*** Hourly statistics since 2018-10-04 03:00:00 *** Total inserts 2.00 <<******* Total updates 1.00 <<******* Total deletes 0.00 Total discards 0.00 Total operations 3.00 <<*******

*** Latest statistics since 2018-10-04 02:17:22 *** Total inserts 4.00 Total updates 2.00 Total deletes 0.00 Total discards 0.00 Total operations 6.00

End of Statistics.

====================================================================================

Até agora já confirmamos que a transação foi capturada pelo extract EXTDB12C, o pump PMPDB12C leu na origem e enviou para o destino.

Vamos confimar se o replicat já aplicou essa transação no destino.

====================================================================================

GGSCI (ol75-db12c) 23> send REPDB12C stats

Sending STATS request to REPLICAT REPDB12C ...

Start of Statistics at 2018-10-04 04:02:28.

Integrated Replicat Statistics:

Total transactions 4.00 Redirected 0.00 Replicated procedures 0.00 DDL operations 2.00 Stored procedures 0.00 Datatype functionality 0.00 Event actions 0.00 Direct transactions ratio 50.00%

DDL replication statistics:

*** Total statistics since replicat started *** Operations 2.00 Mapped operations 2.00 Unmapped operations 0.00 Other operations 0.00 Excluded operations 0.00 Errors 0.00 Retried errors 0.00 Discarded errors 0.00 Ignored errors 0.00

Replicating from REP_OGG_SOURCE12C.TREINAMENTO_OGG_ORAMASTER to REP_OGG_TARGET12C.TREINAMENTO_OGG_ORAMASTER:

*** Total statistics since 2018-10-04 03:40:14 *** Total inserts 2.00 <<******* Total updates 1.00 <<******* Total deletes 0.00 Total discards 0.00 Total operations 3.00 <<*******

*** Daily statistics since 2018-10-04 03:40:14 *** Total inserts 2.00 Total updates 1.00 Total deletes 0.00 Total discards 0.00 Total operations 3.00

*** Hourly statistics since 2018-10-04 05:00:00 ***

Total inserts 2.00 Total updates 1.00 Total deletes 0.00 Total discards 0.00 Total operations 3.00

*** Latest statistics since 2018-10-04 03:40:14 *** Total inserts 2.00 Total updates 1.00 Total deletes 0.00 Total discards 0.00 Total operations 3.00

End of Statistics.

====================================================================================

As transações capturadas são armazenadas no trail file em um formato que só o GoldenGate consegue ler. Mas e se eu quiser saber o que tem em um trail file, como que faço?

Para isso existe o utilitário logdump, com ele é possível ler todas as transações que estão dentro do trailfile, pesquisar transações, filtrar uma informação específica, saber quantas transações existem, entre outras atividades. Daria pra fazer um artigo só para falar de logdump com muitos detalhes, comandos e várias atividades de troubleshooting. Porém, como este é um artigo introdutório, não irei me aprofundar muito, mas veremos alguns comandos básicos para aprender como visualizar transações dentro do logdump.

O logdump fica armazenado no $OGG_HOME, vamos entrar nele e abrir o trafil file "./dirdat/dx000000008" e executar o comando detail para apresentar mais algumas informações na saída do comando.

==================================================================================== [oracle@ol75-ogg12c:/u01/app/oracle/product/ogg]$ ./logdump

Oracle GoldenGate Log File Dump Utility for Oracle

Version 12.3.0.1.4 OGGCORE_12.3.0.1.0_PLATFORMS_180415.0359

Copyright (C) 1995, 2018, Oracle and/or its affiliates. All rights reserved.

Logdump 1 >open ./dirdat/dx000000008 Current LogTrail is /u01/app/oracle/product/ogg/dirdat/dx000000008 Logdump 2 >detail on Logdump 3 >detail data

====================================================================================

Feito isso, neste momento o logdump fica posicionado no começo do trailfile, ou seja, posição "RBA 0" onde estão as informações de cabeçalho desse trafile, e para "andarmos" dentro dele, vamos usar o comando "n" de "next".

Obs.: Note que o valor RBA aumenta em cada "n" executado, ou seja, estamos lendo as transações capturadas em ordem crescente.

====================================================================================

Logdump 4 >n

2018/10/04 03:20:39.410.055 FileHeader Len 1414 RBA 0 <<<<<<<<<<< Name: *FileHeader* 3000 030e 3000 0008 4747 0d0a 544c 0a0d 3100 0002 | 0...0...GG..TL..1... 0006 3200 0004 2000 0000 3300 0008 02f2 9d94 9c18 | ..2... ...3......... 8d87 3400 0036 0034 7572 693a 6f6c 3735 2d6f 6767 | ..4..6.4uri:ol75-ogg 3132 633a 3a75 3031 3a61 7070 3a6f 7261 636c 653a | 12c::u01:app:oracle: 7072 6f64 7563 743a 6f67 673a 4558 5444 4231 3243 | product:ogg:EXTDB12C 3600 0016 0014 2e2f 6469 7264 6174 2f64 7830 3030 | 6....../dirdat/dx000 3030 3030 3038 3700 0001 0138 0000 0400 0000 0839 | 0000087....8.......9 ====================================================================================

Nos dois próximos registros estão as informações referentes a operações de DDL "DDLOP" e o horário em que está operação foi capturada. Além disso podemos ver também na mesma linha as informações "Len 1312" e "Len 1339", este é o tamanho desde registro (Lenght).

==================================================================================== Logdump 5 >n

2018/10/04 03:37:03.000.000 DDLOP Len 1312 RBA 1422 <<<<<<<<<<< Name: After Image: Partition 4 G s 2c43 353d 2730 272c 2c42 373d 2730 272c 2c42 323d | ,C5='0',,B7='0',,B2= 2737 3433 3233 272c 2c43 3231 3d27 272c 2c42 333d | '74323',,C21='',,B3= 2752 4550 5f4f 4747 5f53 4f55 5243 4531 3243 272c | 'REP_OGG_SOURCE12C', 2c42 343d 2754 5245 494e 414d 454e 544f 5f4f 4747 | ,B4='TREINAMENTO_OGG 5f4f 5241 4d41 5354 4552 272c 2c43 3132 3d27 5245 | _ORAMASTER',,C12='RE 505f 4f47 475f 534f 5552 4345 3132 4327 2c2c 4331 | P_OGG_SOURCE12C',,C1 333d 2754 5245 494e 414d 454e 544f 5f4f 4747 5f4f | 3='TREINAMENTO_OGG_O Logdump 6 >n

2018/10/04 03:37:05.000.000 DDLOP Len 1339 RBA 2874 <<<<<<<<<<< Name: After Image: Partition 4 G s 2c43 353d 2730 272c 2c42 373d 2730 272c 2c42 323d | ,C5='0',,B7='0',,B2= 2737 3433 3233 272c 2c43 3231 3d27 272c 2c42 333d | '74323',,C21='',,B3= 2752 4550 5f4f 4747 5f53 4f55 5243 4531 3243 272c | 'REP_OGG_SOURCE12C', 2c42 343d 2754 5245 494e 414d 454e 544f 5f4f 4747 | ,B4='TREINAMENTO_OGG 5f4f 5241 4d41 5354 4552 272c 2c43 3132 3d27 5245 | _ORAMASTER',,C12='RE 505f 4f47 475f 534f 5552 4345 3132 4327 2c2c 4331 | P_OGG_SOURCE12C',,C1 333d 2754 5245 494e 414d 454e 544f 5f4f 4747 5f4f | 3='TREINAMENTO_OGG_O ====================================================================================

Seguindo nos próximos registros do trailfile, encontramos os metadados da tabela com transações capturadas:

==================================================================================== Logdump 7 >n

2018/10/04 02:17:21.788.736 Metadata Len 83 RBA 4355 <<<<<<<<<<< Name: * DDR Version: 1 Database type: ORACLE Character set ID: UTF-8 National character set ID: UTF-16 Locale: neutral Case sensitivity: 14 14 14 14 14 14 14 14 14 14 14 14 11 14 14 14 TimeZone: GMT Global name: GOLDEN12 * Logdump 8 >n

2018/10/04 03:40:16.674.474 Metadata Len 231 RBA 4489 <<<<<<<<<<< Name: REP_OGG_SOURCE12C.TREINAMENTO_OGG_ORAMASTER * 1)Name 2)Data Type 3)External Length 4)Fetch Offset 5)Scale 6)Level 7)Null 8)Bump if Odd 9)Internal Length 10)Binary Length 11)Table Length 12)Most Sig DT 13)Least Sig DT 14)High Precision 15)Low Precision 16)Elementary Item 17)Occurs 18)Key Column 19)Sub DataType 20)Native DataType 21)Character Set 22)Character Length 23)LOB Type 24)Partial Type * TDR version: 11 Definition for table REP_OGG_SOURCE12C.TREINAMENTO_OGG_ORAMASTER Record Length: 162 Columns: 2 ID 64 50 0 0 0 1 0 50 50 50 0 0 0 0 1 0 1 2 2 -1 0 0 0 ALUNO 64 100 56 0 0 1 0 100 100 0 0 0 0 0 1 0 0 0 1 -1 0 0 0 End of definition ====================================================================================

E finalmente começamos a encontrar as transações que nós fizemos:

  • 2 INSERTS

  • 1 UPDATE

Veja que é possível ler toda as informações que foram capturadas e replicadas facilmente, o que às vezes pode ser muito perigoso e expor informações confidenciais que estão armazenadas no banco de dados. É possível configurar o GoldenGate para criptografar as informações ao disponibilizá-las nos trailfiles (Quem sabe um assunto para um próximo artigo).

==================================================================================== Logdump 9 >n

2018/10/04 03:40:08.000.000 Insert Len 23 RBA 4814 <<<<<<<<<<< Name: REP_OGG_SOURCE12C.TREINAMENTO_OGG_ORAMASTER (TDR Index: 1) After Image: Partition 12 G b 0000 0500 0000 0100 3101 000a 0000 0006 0047 696c | ........1........Gil 736f 6e | son Column 0 (x0000), Len 5 (x0005) 0000 0100 31 | ....1 Column 1 (x0001), Len 10 (x000a) 0000 0600 4769 6c73 6f6e | ....Gilson Logdump 10 >n

2018/10/04 03:40:08.000.000 Insert Len 28 RBA 4949 <<<<<<<<<<< Name: REP_OGG_SOURCE12C.TREINAMENTO_OGG_ORAMASTER (TDR Index: 1) After Image: Partition 12 G e 0000 0500 0000 0100 3201 000f 0000 000b 0046 6162 | ........2........Fab 696f 2050 7261 646f | io Prado Column 0 (x0000), Len 5 (x0005) 0000 0100 32 | ....2 Column 1 (x0001), Len 15 (x000f) 0000 0b00 4661 6269 6f20 5072 6164 6f | ....Fabio Prado ====================================================================================

Após os INSERTs, foi realizado um update na chave (PK) "1" (Column 0), como podemos observar a seguir.

No caso de update, o Oracle GoldenGate armazena no trailfile duas informações chamadas de: "Before Image" e "After Image", ou seja, o valor antigo e o valor novo do registro. Este recurso é muito importante para garantir a integridade da replicação, porque quando a transação for aplicada no destino, o GoldenGate irá comparar se o valor antigo que está no banco de destino, é igual ao valor antigo que foi capturado no banco de origem e que está armazenado no trailfile, se sim ele irá efetivar o UPDATE com o valor novo, se não, ocorrerá um erro no processo (ABEND).

==================================================================================== Logdump 11 >n

2018/10/04 03:42:39.000.000 GGSUnifiedUpdate Len 58 RBA 5057 <<<<<<<<<<< Name: REP_OGG_SOURCE12C.TREINAMENTO_OGG_ORAMASTER (TDR Index: 1) After Image: Partition 12 G s 1700 0000 0000 0500 0000 0100 3101 000a 0000 0006 | ............1....... 0047 696c 736f 6e00 0005 0000 0001 0031 0100 1200 | .Gilson........1.... 0000 0e00 4769 6c73 6f6e 204d 6172 7469 6e73 | ....Gilson Martins Before Image Len 27 (x0000001b) BeforeColumnLen 23 (x00000017) Column 0 (x0000), Len 5 (x0005) 0000 0100 31 | ....1 Column 1 (x0001), Len 10 (x000a) 0000 0600 4769 6c73 6f6e | ....Gilson <<<<<<<<< "valor antigo"

After Image Len 31 (x0000001f) Column 0 (x0000), Len 5 (x0005) 0000 0100 31 | ....1 Column 1 (x0001), Len 18 (x0012) 0000 0e00 4769 6c73 6f6e 204d 6172 7469 6e73 | ....Gilson Martins <<<<<<< "valor novo" ====================================================================================

Quando chegar ao fim das transações existentes no trailfile, o valor "n" não irá retornar nada, como mostrado abaixo:

==================================================================================== Logdump 12 >n

Logdump 13 >n

Logdump 14 >n

====================================================================================

Ufa! Mesmo tentando resumir bastante, essa parte do artigo ainda ficou bem longa, mas espero que tenham gostado! O GoldenGate é uma ferramenta muito versátil, e como sempre falo: "Paixão para uns e pesadelo para outros", as vezes pode bater aquele desespero quando a replicação começa a apresentar problemas, mas utilizando os recursos avançados é mais fácil conseguir resolver e entender os problemas.

Não perca a PARTE III, é a última deste artigo onde falarei sobre certificação e mais algumas dicas.

QUER APRENDER MAIS SOBRE ORACLE GOLDENGATE?

INSCREVA-SE NA PRÓXIMA TURMA DO TREINAMENTO CONF. E ADM. DO ORACLE GOLDEN GATE - Módulo I


369 visualizações
Precisa de mais informações?

Estamos aqui para ajudá-lo. Entre em contato por telefone, email ou redes sociais.

© 2020 Direitos reservados à Oramaster Consultoria e Treinamentos em TI - CNPJ 15.298.316/0001-89