Preparar o Banco de Dados para Oracle GoldenGate

Saiba como ativar o log complementar nas tabelas do banco de dados de origem que devem ser usadas para captura pelo Extract para SQL Server e como expurgar dados temporários CDC mais antigos.

Você pode aprender mais sobre o CDC Capture usando o seguinte:

Usando a Replicação de Captura CDC do Oracle GoldenGate for SQL Server http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/goldengate/12c/sql_cdcrep/sql_cdcrep.html.

Ativando o Registro em Registro Complementar CDC

Com o Extract CDC, o método de captura de dados de alteração é através de tabelas de Captura de Dados de Alteração do SQL Server, por isso é imperativo que você siga os procedimentos e requisitos abaixo, para que os dados de alteração sejam corretamente ativados, mantidos e capturados pelo Extract.

Você ativará o registro em log complementar com o comando ADD TRANDATA para que o Extract possa capturar as informações necessárias para reconstruir transações.

ADD TRANDATA deve ser emitido para todas as tabelas que devem ser capturadas pelo Oracle GoldenGate e, para isso, é necessário usar um esquema válido para criar as tabelas e os procedimentos armazenados necessários do Oracle GoldenGate.

A ativação do registro em log complementar para um Extract CDC faz o seguinte:

Para ativar o registro em log complementar usando a interface de linha de comando, use as seguintes etapas de alto nível:

  1. Revise o tópico Preparar Usuários e Privilégios do Banco de Dados para determinar os privilégios e as etapas necessários para ativar o banco de dados para Captura de Dados de Alteração, se ele ainda não estiver definido. Permissões elevadas poderão ser necessárias para GoldenGate se o banco de dados não estiver ativado para CDC, mas puder ser negado por um administrador ativar manualmente o banco de dados para Captura de Dados de Alteração.

    • Para o Google Cloud SQL for SQL Server, o banco de dados deve ser ativado manualmente para Captura de Dados de Alteração por um usuário administrador de serviço e executar o seguinte comando:

      EXEC msdb.dbo.gcloudsql_cdc_enable_db 'source_database';

    • Para SQL Server e Azure SQL Managed Instance, a adição de TRANDATA tentará definir o banco de dados para Captura de Dados de Alteração se o usuário tiver privilégios de sysadmin, caso contrário, um administrador de banco de dados poderá ativar manualmente o banco de dados para CDC antes de adicionar TRANDATA, executando o seguinte comando no banco de dados de origem:

      EXEC sys.sp_cdc_enable_db;

    • Para o Amazon RDS for SQL Server, a adição de TRANDATA também tentará definir o banco de dados para Captura de Dados de Alteração se o usuário tiver recebido a permissão. Caso contrário, um administrador de banco de dados com credenciais principais poderá ativar manualmente o banco de dados para CDC antes de adicionar TRANDATA, executando o seguinte comando no banco de dados de origem:

      EXEC msdb.dbo.rds_cdc_enable_db 'source_database'

  2. Na instalação do Oracle GoldenGate de origem, certifique-se de que o arquivo GLOBALS tenha o parâmetro GGSCHEMA schemaname e que o nome do esquema usado tenha sido criado (CREATE SCHEMA schemaname) no banco de dados de origem. Esse esquema será usado por todos os componentes subsequentes do Oracle GoldenGate criados no banco de dados; portanto, é recomendável criar um esquema exclusivo que seja usado exclusivamente pelo Oracle GoldenGate, como 'ggschema', e não usar os esquemas do SQL Server dbo ou cdc.

  3. No sistema Oracle GoldenGate de origem, abra a interface de linha de comando (Cliente Admin).

  4. Conecte-se ao banco de dados com as credenciais de log-in do banco de dados.

  5. Emita o comando a seguir para cada tabela que deve ser capturada por um Extract. Você pode usar um caractere curinga para especificar vários nomes de tabela.

    ADD TRANDATA owner.table

    ADD TRANDATA owner.*

    Opcionalmente, você pode designar o grupo de arquivo no qual as tabelas intermediárias da Captura de Dados de Alteração do Servidor SQL serão colocadas, usando a opção FILEGROUP com um nome do grupo de arquivo existente.

    ADD TRANDATA owner.table FILEGROUP cdctablesSee ADD TRANDATA

Consulte ADICIONAR TRANDATA para obter mais detalhes.

Limpar Dados de Tabela Intermediária CDC

Ao ativar o registro em log complementar, os dados necessários ao Extract para reconstruir transações são armazenados em uma série de tabelas do sistema CDC do SQL Server, bem como objetos do Oracle GoldenGate que são usados para rastrear a ordenação da operação em uma transação. Essas tabelas exigem limpeza de rotina para reduzir o armazenamento de dados no banco de dados. Como parte da ativação do registro em log complementar usando TRANDATA, o SQL Server cria seu próprio job de Limpeza de Captura de Dados de Alteração, no entanto, esse job não sabe que um Extract ainda pode exigir dados dessas tabelas do sistema CDC e pode remover esses dados antes que o Extract tenha a chance de capturá-los.

Se os dados necessários à Extração durante o processamento tiverem sido excluídos das tabelas do sistema CDC, uma das seguintes ações corretivas poderá ser necessária:

Para corrigir a situação dos dados CDC que estão sendo removidos antes que um Extract possa processá-los, o Oracle GoldenGate for SQL Server exige a criação de uma tarefa Expurgar Dados de Alteração. Esta tarefa limpará os dados de tabela intermediária CDC, garantindo que nenhum dado seja limpo e que o processo de Extração ainda não tenha sido processado.

Use as etapas a seguir imediatamente após ativar o log complementar (TRANDATA) e antes de iniciar o processo de Extract, para criar a tarefa Expurgar Dados de Alteração do Oracle GoldenGate. A tarefa Limpar Dados de Alteração é executada no Serviço de Administração e excluirá automaticamente o trabalho de Limpeza CDC do SQL Server quando criado pela primeira vez. Não há job do Agente do SQL Server para a tarefa Expurgar Dados de Alteração, pois ela é executada pelo Serviço de Administração. Portanto, o Serviço de Administração deve estar em execução para que a tarefa de limpeza funcione corretamente.

Para criar uma tarefa Limpar Dados de Alteração:

Com o Oracle GoldenGate for Microservices Architecture, depois de adicionar TRANDATA às tabelas, mas antes de iniciar o processo Extract, uma tarefa Expurgar Dados de Alteração deve ser criada para executar a limpeza do CDC no banco de dados. Isso pode ser feito por meio de um dos seguintes procedimentos:

Para criar uma tarefa Expurgar Dados de Alteração usando a IU da Web do Administration Service: 1. Expanda a seção Tarefas no painel esquerdo.

  1. Clique em Expurgar Dados de Alteração na página Tarefas.

  2. Clique no sinal de mais para exibir um formulário e preencha os campos obrigatórios para criar uma nova tarefa Limpar Dados de Alteração.

    1. Nome da Operação: Nome da tarefa de expurgação a ser criada.

    2. Ativado: Defina a tarefa como ativada, que é o valor padrão.

    3. Domínio da Credencial e Alias da Credencial: Selecione um Alias de Credencial existente para o banco de dados de origem.

    4. Manter Regra: Esse valor determina, em horas ou dias, a quantidade de dados de preparação CDC a serem mantidos no banco de dados de origem. Dependendo da versão do Oracle GoldenGate, os valores padrão são 3 dias ou 1 hora. Períodos de retenção de dados CDC mais baixos reduzem a quantidade de dados de tabela intermediária CDC armazenados no banco de dados, mas limitam a capacidade de um usuário reposicionar o Extract para um tempo anterior aos dados existentes nas tabelas de tabela intermediária.

    5. Frequência de Expurgação: Esse valor representa a frequência com que a tarefa é executada, com um valor padrão a cada 10 minutos. É recomendável manter o valor padrão, a menos que o custo indireto da tarefa de expurgação esteja afetando o desempenho do banco de dados durante períodos de alta atividade do usuário. Observação: crie somente uma tarefa Expurgar Dados de Alteração por banco de dados de origem.

Informações adicionais do job Limpeza do CDC do Oracle GoldenGate podem ser encontradas em Considerações Operacionais do Método de Captura do CDC.

Ativando a Detecção de Loop Bidirecional

A detecção de loops é um requisito para implementações bidirecionais do Oracle GoldenGate, de modo que um Extract de um banco de dados de origem não recapture transações enviadas por um Replicat de outro banco de dados de origem.

Com o método de captura Extract CDC, por padrão, qualquer transação submetida a commit por um Replicat em um banco de dados em que um Extract está configurado, recapturará essa transação do Replicat desde que o registro em log complementar esteja ativado para as tabelas para as quais o Replicat está entregando.

Para ignorar as transações de recaptura aplicadas por um Replicat, use o parâmetro TRANLOGOPTIONS EXCLUDEFILTERTABLE para o Extract CDC. A tabela usada como tabela de filtragem será a tabela de checkpoint do Oracle GoldenGate que você deve criar para o processo Replicat.

Para criar uma Tabela de Filtros e ativar o Registro em Log Complementar:

As etapas abaixo exigem um usuário do banco de dados que seja membro da atribuição Administradores do Sistema do SQL Server (sysadmin).

  1. No sistema de origem, execute o Admin Client.

  2. Conecte-se à implantação do Admin Client.

  3. Emita o comando a seguir para fazer log-in no banco de dados.

    DBLOGIN USERIDALIAS alias

  4. Crie a tabela de checkpoint do Oracle GoldenGate que é usada pelo Replicat para entregar dados ao banco de dados de origem.

    Exemplo: ADD CHECKPOINTTABLE ogg.ggchkpt

    É recomendável usar o mesmo nome de esquema usado no parâmetro GGSCHEMA do arquivo GLOBALS.

  5. Ative o log complementar para a tabela de checkpoint recém-criada.

    Exemplo: ADD TRANDATA ogg.ggchkpt

  6. Adicionar o Replicat com as informações da tabela de checkpoint.

    Exemplo: ADD REPLICAT repe, EXTTRAIL north/ea,checkpointtable ogg.ggchkpt

  7. Configure o Extract com o parâmetro EXCLUDEFILTERTABLE, usando a tabela de checkpoint do Replicat para a tabela de filtragem.

    TRANLOGOPTIONS EXCLUDEFILTERTABLE ogg.ggchkpt