terça-feira, 1 de abril de 2014

Oracle GoldenGate - Parte 1



Bom dia Jovens

Nos últimos tempos ganhei uma oportunidade de trabalhar com o Oracle Goldengate.


Ahhh, que bacana!!!!! Ops, mas espera ai. O que é o Oracle Goldengate mesmo?

Óteeeeemaaaaa pergunta jovem...

Bem rapidamente e bem a grosso modo o Oracle GG é uma ferramenta para captura/replicação de dados em tempo real.

Hummmm, legal.. Mas só isso?

Nananinanão.. Ele faz essa replicação entre sistemas de SGBD diferentes, de versões diferentes, plataformas diferentes, tudo diferente...

Agora sim, interessou né?

Se você precisa replicar um SQLSERVER para Oracle, pode. Um MySQL para Oracle, pode também. E um Oracle para Oracle em SO’s e versões diferentes. É claro que pode meu filho.

E se você não quer replicar e sim migrar uma base de um servidor antigo para um novo, sem parada com versões diferentes, SO diferente. Adivinha se pode? Lógico que pode.

Ou seja, podemos replicar/migrar dados entre bases heterogêneas, sem downtime, sem nada.

Na verdade esse produto não foi desenvolvido pela Oracle. Ele faz parte de uma das várias aquisições realizadas nos últimos anos.

Essa é uma explicação realmente simples perante o poder dessa ferramenta. Você consegue muitas informações sobre como o GG funciona e todo o seu potencial:


Antes de começar, é bom que tenhamos pelo menos algum conceito de alguns processos do GG. Lembrando que isso é apenas um overview de um processo específico.

Existem N maneiras de fazer uma replicação com o GG e tudo depende do que você tem como requisitos do trabalho, limitações de espaço, o que o seu cliente quer.

Primeiro, a figura clássica: Como o GG funciona.




Entendeu tudo né. Nem precisamos continuar. AHAHAHHAHA...

Agora sim, os processos que eu acho bacana que você conheça antes de sair tentando replicar os dados por ai:

Processo Manager: esse cara faz um monitoramento dos processos do GG, ou seja, é o processo pai do GG. Ele que faz toda a gestão dos processos e arquivos gerados pelo GG. Antes de criar/iniciar  os processos de Extract e Replicat, esse cara deve estar no ar.

Extract: Como o próprio nome diz, ele extrai/captura os dados e DDL do Source database. Essa extração captura os registros de dados completos ou as alterações desses dados, dependendo das configurações e envia os dados para um trail file..

Data Pump: Não jovem, não confunda com o datapump (expdp/impdp). Esse processo envia os trail's para o target database. Se um processo data Pump não é usado (sim ele é opcional), o extract deve enviar as operações capturadas para um trail file diretamente no Target. No entanto, caso ele exista, o extract cria o trail file  no source. O Data Pump lê este trail e envia as operações através da rede para um trail no Target.

Trails files: É o resultado da extração dos dados do source. Ou seja, tudo o que o extract "pegou", ele vai gravar nesses arquivos que serão utilizados para replicar os dados. São armazenados no disco local temporariamente (caso feito via data pump) até que tenha sido aplicado ao local de destino.

Initial load: Na verdade pode ou não ser um processo realizado pelo GG. Mas coloquei aqui pois de uma forma ou de outra teremos que realizar essa atividade. É a carga inicial dos dados – ou da estrutura da instance no target. Como eu disse, ele pode ser feito via GG (testei e não gostei), ou via um expdp/impdp, rman, etc. Fiz via expdp com flashback_scn e foi o que eu mais gostei.De uma base de 900G, diga-se.

Replicat: Ele replica as informações no lado do target. Esse processo faz a leitura dos trail's enviados pelo datapump do source e faz a replicação.

Checkpoint: Armazenam as posições atuais de leitura/escrita de um processo para fins de recuperação. Esses ceckpoint's garantem que as alterações de dados que estão marcadas para sincronização realmente serão capturados pelo extract e que serão aplicados pelo replicat no target. Além disso ele fornece uma tolerância a falhas, impedindo a perda de dados caso o sistema, a rede, ou um processo do Oracle GoldenGate precise ser reiniciado.

Gente, novamente lembrando antes de continuar: os processos são muito mais completos e complexos do que dito acima. Isso é o resumo de muitas páginas de documentação em 3 ou 4 linhas.



Vou dividir isso em alguns artigos para não ficar chato. 

E lembre-se, eu também estou estudando o GG. Mas como eu sou metido, resolvi compartilhar o pouco que eu sei. Caso tenha alguma barbaridade ai, não se acanhe em apontar.

Alguns sites legais que eu consultei, além da documentação é claro:

http://satya-dba.blogspot.com.br/2012/02/ggsci-goldengate-command-interpreter.html
http://www.juliandyke.com/Blog/?p=301
https://blogs.oracle.com/imc/entry/oracle_goldengate_configuring_ddl_replication
http://www.juliandyke.com/Blog/?p=387
http://jianmingli.com/wp/?p=1532
http://www.profissionaloracle.com.br/gpo/artigo/banco-de-dados/53-golden-gate-instalacao-e-configuracao
http://flaviosoares.com/2011-05/goldengate-bidirecional-oracle-para-oracle/
http://http://gavinsoorma.com


Blogs ótimos que ajudaram demais. Podem ver que tem gente brazuca ai no meio. Visitem essas fontes, não só para o GG. Vale muito a pena.

E não podia esquecer de agradecer um cara que nem me conhece pessoalmente e que me ajudou demais, gente fina mesmo. Quem me "apresentou" a ele foi a Lilian Barroso (http://lilianbarroso.wordpress.com/). Régis Araujo, abraço e obrigado pela ajuda. Obrigado a Lilian também.

Até té té... 

Abraço
Mario

Nenhum comentário:

Postar um comentário

Isso te ajudou? Comente...

Postagem em destaque

[ORACLE] Batch change EDITIONABLE property.

Hello everyone. Hope you're doing well! Today, I have a simple case.   A test database had many database objects with the EDITIONABLE pr...