Usar o Oracle GoldenGate com o Amazon RDS para Oracle - Amazon Relational Database Service

Usar o Oracle GoldenGate com o Amazon RDS para Oracle

O Oracle GoldenGate coleta, replica e gerencia dados transacionais entre bancos de dados. Ele é um processo de captura de dados de alterações (CDC) baseado em log e um pacote de software de replicação usado com bancos de dados para sistemas de processamento de transações online (OLTP). O Oracle GoldenGate cria arquivos de trilha que contêm os dados alterados mais recentes do banco de dados de origem. Depois, ele envia esses arquivos ao servidor, onde um processo converte o arquivo de trilha em SQL padrão para ser aplicado ao banco de dados de destino.

O Oracle GoldenGate com RDS para Oracle é compatível com seguintes recursos:

  • Replicação de banco de dados ativo-ativo

  • Recuperação de desastres

  • Proteção de dados

  • Replicação em regiões e entre regiões

  • Migração e upgrades com tempo de inatividade zero

  • Replicação de dados entre uma instância de banco de dados do RDS para Oracle e um banco de dados que não seja Oracle

    nota

    Para obter uma lista de bancos de dados compatíveis, consulte Oracle Fusion Middleware Supported System Configurations (Configurações do sistema compatíveis com o Oracle Fusion Middleware) na documentação da Oracle.

Você pode usar o Oracle GoldenGate com RDS para Oracle para atualizar para as versões principais do banco de dados Oracle. Por exemplo, é possível usar o Oracle GoldenGate para atualizar de um banco de dados on-premises do Oracle Database 11g para o Oracle Database 19c em uma instância de banco de dados do Amazon RDS.

Versões e opções de licenciamento com suporte para o Oracle GoldenGate

É possível usar a Standard Edition 2 (SE2) ou a Enterprise Edition (EE) do RDS para Oracle com Oracle GoldenGate versão 12c e posterior. É possível usar os seguintes recursos do Oracle GoldenGate:

  • O Oracle GoldenGate Remote Capture (extração) é compatível.

  • A captura (extração) é compatível com instâncias de banco de dados do RDS para Oracle que usam a arquitetura tradicional de banco de dados não CDB. A captura remota de PDB do Oracle GoldenGate é compatível com os bancos de dados de contêiner (CDBs) do Oracle Database 21c.

  • O Oracle GoldenGate Remote Delivery (replicat) é compatível com o RDS para instâncias de banco de dados Oracle que usam arquiteturas não CDB ou CDB. A entrega remota é compatível com a replicação integrada, replicação paralela, replicação coordenada e replicação clássica.

  • O RDS da Oracle é compatível com as arquiteturas Clássica e de Microsserviço do Oracle GoldenGate.

  • A replicação de valores do Oracle GoldenGate DDL e Sequence é compatível com o uso do modo de captura integrado.

Você é responsável por gerenciar o licenciamento (BYOL) do Oracle GoldenGate para usá-lo com o Amazon RDS em todas as Regiões da AWS. Para obter mais informações, consulte Opções de licenciamento do RDS para Oracle.

Requisitos e limitações do Oracle GoldenGate

Ao trabalhar do Oracle GoldenGate e RDS for Oracle, considere os seguintes requisitos e limitações:

  • Você é responsável por configurar e gerenciar o Oracle GoldenGate para usar com o RDS para Oracle.

  • Você é responsável por configurar uma versão do Oracle GoldenGate certificada com os bancos de dados de origem e de destino. Para obter mais informações, consulte Configurações do sistema compatíveis com o Oracle Fusion Middleware na documentação da Oracle.

  • Você pode usar o Oracle GoldenGate em vários ambientes da AWSdiferentes para diversos casos de uso. Se você tiver um problema de suporte relacionado ao Oracle GoldenGate, entre em contato com os Serviços de Suporte da Oracle.

  • É possível usar o Oracle GoldenGate em instâncias de banco de dados do RDS para Oracle que usam a Oracle Transparent Data Encryption (TDE). Para manter a integridade dos dados replicados, configure a criptografia no hub do Oracle GoldenGate usando volumes criptografados do Amazon EBS ou criptografia de arquivos de trilha. Configure também a criptografia para dados enviados entre o hub do Oracle GoldenGate e as instâncias de banco de dados de fonte e destino. As instâncias de banco de dados do RDS for Oracle são compatíveis com a criptografia com Oracle Secure Sockets Layer ou Oracle Native Network Encryption.

Arquitetura do Oracle GoldenGate

A arquitetura do GoldenGate para uso com o Amazon RDS consiste nos seguintes módulos desacoplados:

Fonte do banco de dados

A fonte do banco de dados pode ser um banco de dados Oracle no local, um banco de dados Oracle em uma instância do Amazon EC2 ou um banco de dados Oracle em uma instância de banco de dados do Amazon RDS.

Hub do Oracle GoldenGate

Um hub do Oracle GoldenGate move as informações de transação da fonte do banco de dados para o banco de dados de destino. O hub pode ser um dos seguintes:

  • Uma instância do Amazon EC2 com o Oracle Database e o Oracle GoldenGate instalados

  • Uma instalação da Oracle on-premises.

É possível ter mais de um hub do Amazon EC2. Recomendamos que você use dois hubs se utilizar o Oracle GoldenGate para replicação entre regiões.

Bancos de dados de destino:

O banco de dados de destino pode estar em uma instância de banco de dados do Amazon RDS, em uma instância do Amazon EC2 ou no local.

As seções a seguir descrevem cenários comuns para o Oracle GoldenGate no Amazon RDS.

Fonte do banco de dados on-premises e hub do Oracle GoldenGate

Nesse cenário, uma fonte do banco de dados Oracle on-premises e um hub do Oracle GoldenGate on-premises fornecem dados para uma instância de banco de dados do Amazon RDS de destino.


					Configuração 0 do Oracle GoldenGate usando o Amazon RDS

Fonte do banco de dados on-premises e hub do Amazon EC2

Nesse cenário, um banco de dados Oracle on-premises atua como a fonte do banco de dados. É conectado a um hub de instância do Amazon EC2. Este hub fornece dados para uma instância de banco de dados de destino do RDS for Oracle.


					Configuração 1 do Oracle GoldenGate usando o Amazon RDS

Fonte do banco de dados do Amazon RDS e hub do Amazon EC2

Nesse cenário, uma instância de banco de dados do RDS for Oracle atua como fonte do banco de dados. É conectado a um hub de instância do Amazon EC2. Este hub fornece dados para uma instância de banco de dados de destino do RDS for Oracle.


					Configuração 2 do Oracle GoldenGate usando o Amazon RDS

Fonte do banco de dados do Amazon EC2 e hub do Amazon EC2

Nesse cenário, um banco de dados Oracle em uma instância do Amazon EC2 atua como a fonte do banco de dados. É conectado a um hub de instância do Amazon EC2. Este hub fornece dados para uma instância de banco de dados de destino do RDS for Oracle.


					Configuração 3 do Oracle GoldenGate usando o Amazon RDS

Hubs do Amazon EC2 em diferentes regiões da AWS

Nesse cenário, um banco de dados Oracle em uma instância de banco de dados do Amazon RDS está conectado a um hub de instância do Amazon EC2 na mesma região da AWS. O hub está conectado a um hub da instância do Amazon EC2 em outra região da AWS. Esse segundo hub fornece dados para a instância de banco de dados de destino do RDS for Oracle na mesma região da AWS como o segundo hub da instância do Amazon EC2.


					Configuração 4 do Oracle GoldenGate usando o Amazon RDS
nota

Quaisquer problemas que afetem o funcionamento do Oracle GoldenGate em ambiente on-premises também afetarão a execução do Oracle GoldenGate na AWS. É altamente recomendável que você monitore o hub do Oracle GoldenGate para garantir que EXTRACT e REPLICAT sejam retomados se ocorrer um failover. Como o hub do Oracle GoldenGate é executado em uma instância do Amazon EC2, o Amazon RDS não gerencia o hub do Oracle GoldenGate e não pode garantir que ele esteja em execução.

Configurar o Oracle GoldenGate

Para configurar o Oracle GoldenGate usando o Amazon RDS, configure o hub em uma instância do Amazon EC2 e, depois, configure os bancos de dados de origem e de destino. As seções a seguir fornecem um exemplo de como configurar o Oracle GoldenGate para uso com o Amazon RDS para Oracle.

Configurar um hub do Oracle GoldenGate no Amazon EC2

Para criar um hub do Oracle GoldenGate em uma instância do Amazon EC2, crie primeiro uma instância do Amazon EC2 com uma instalação completa do cliente do Oracle RDBMS. A instância do Amazon EC2 também deve ter o software do Oracle GoldenGate instalado. As versões do software Oracle GoldenGate dependem das versões dos bancos de dados de origem e de destino. Para obter mais informações sobre a instalação do Oracle GoldenGate, consulte a documentação do Oracle GoldenGate.

A instância do Amazon EC2 que serve como o hub do GoldenGate armazena e processa as informações de transação da fonte do banco de dados em arquivos de trilha. Para que esse processo seja aceito, atenda às seguintes condições:

  • Você alocou armazenamento suficiente para os arquivos de trilha.

  • A instância do Amazon EC2 tem poder de processamento suficiente para gerenciar a quantidade de dados.

  • Além disso, certifique-se de que a instância do EC2 tenha memória suficiente para armazenar as informações de transação antes delas serem gravadas no arquivo de trilha.

Como definir um hub de configuração de arquitetura clássica do Oracle GoldenGate em uma instância do Amazon EC2
  1. Crie os subdiretórios no diretório do Oracle GoldenGate.

    No shell da linha de comando do Amazon EC2, inicie o ggsci, o interpretador de comandos do Oracle GoldenGate. O comando CREATE SUBDIRS cria subdiretórios no diretório /gg para arquivos de parâmetros, relatórios e ponto de verificação.

    prompt$ cd /gg prompt$ ./ggsci GGSCI> CREATE SUBDIRS
  2. Configure o arquivo mgr.prm.

    O exemplo a seguir adiciona linhas ao arquivo $GGHOME/dirprm/mgr.prm.

    PORT 8199 PurgeOldExtracts ./dirdat/*, UseCheckpoints, MINKEEPDAYS 5
  3. Inicie o gerente.

    O exemplo a seguir inicia o ggsci e executa o comando start mgr.

    GGSCI> start mgr

O hub do Oracle GoldenGate agora está pronto para uso.

Configurar um banco de dados de origem para uso com o Oracle GoldenGate no Amazon RDS

Quando o banco de dados de origem estiver executando o Oracle Database 12c ou posterior, conclua as tarefas a seguir para configurar um banco de dados de origem a ser usado com o Oracle GoldenGate.

Etapa 1: Ativar o registro em log complementar no banco de dados de origem

Para ativar o registro complementar mínimo em nível de banco de dados, execute o seguinte procedimento PL/SQL:

EXEC rdsadmin.rdsadmin_util.alter_supplemental_logging(p_action => 'ADD')

Etapa 2: Definir o parâmetro de inicialização ENABLE_GOLDENGATE_REPLICATION como true

Quando você define o parâmetro de inicialização ENABLE_GOLDENGATE_REPLICATION como true, ele permite que os serviços de banco de dados sejam compatíveis com a replicação lógica. Se o banco de dados de origem estiver em uma instância de banco de dados do Amazon RDS, tenha um grupo de parâmetros atribuído à instância de banco de dados com o parâmetro de inicialização ENABLE_GOLDENGATE_REPLICATION definido como true. Para obter mais informações sobre o parâmetro de inicialização ENABLE_GOLDENGATE_REPLICATION, consulte a documentação do banco de dados Oracle.

Etapa 3: Definir o período de retenção de log no banco de dados de origem

Configure o banco de dados de origem para reter os redo logs arquivados. Considere as seguintes diretrizes:

  • Especifique a duração da retenção de log em horas. O valor mínimo é uma hora.

  • Defina a duração para exceder qualquer tempo de inatividade possível, qualquer período de comunicação possível e qualquer período de problemas de rede possível com a instância de origem. Essa duração permite que o Oracle GoldenGate recupere logs da instância de origem de acordo com a necessidade.

  • Verifique se você tem armazenamento suficiente na instância para os arquivos.

Por exemplo, defina o período de retenção para logs redo arquivados como 24 horas.

EXEC rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24)

Se você não tiver a retenção de logs ativada, ou se o valor de retenção for muito pequeno, receberá uma mensagem de erro semelhante à seguinte.

2022-03-06 06:17:27 ERROR OGG-00446 error 2 (No such file or directory) opening redo log /rdsdbdata/db/GGTEST3_A/onlinelog/o1_mf_2_9k4bp1n6_.log for sequence 1306 Not able to establish initial position for begin time 2022-03-06 06:16:55.

Como sua instância de banco de dados retém seus redo logs arquivados, verifique se você tem espaço suficiente para os arquivos. Para ver quanto espaço você usou nas últimas num_hours horas, use a consulta a seguir, substituindo num_hours pelo número de horas.

SELECT SUM(BLOCKS * BLOCK_SIZE) BYTES FROM V$ARCHIVED_LOG WHERE NEXT_TIME>=SYSDATE-num_hours/24 AND DEST_ID=1;

Etapa 4: Criar uma conta do usuário do Oracle GoldenGate no banco de dados de origem

O Oracle GoldenGate é executado como usuário de banco de dados e requer os privilégios apropriados para acessar os redo logs e redo logs arquivados do banco de dados de origem. Para concedê-los, crie uma conta do usuário no banco de dados de origem. Para obter mais informações sobre as permissões para uma conta de usuário do GoldenGate, consulte a documentação do Oracle.

As instruções a seguir criam uma conta do usuário denominada oggadm1.

CREATE TABLESPACE administrator; CREATE USER oggadm1  IDENTIFIED BY "password" DEFAULT TABLESPACE ADMINISTRATOR TEMPORARY TABLESPACE TEMP; ALTER USER oggadm1 QUOTA UNLIMITED ON administrator;
nota

Especifique uma senha diferente do prompt mostrado aqui como prática recomendada de segurança.

Etapa 5: Conceder privilégios ao usuário no banco de dados de origem

Nessa tarefa, você concede os privilégios de conta necessários para usuários do banco de dados em seu banco de dados de origem.

Como conceder privilégios de conta no banco de dados de origem
  1. Conceda os privilégios necessários à conta de usuário do Oracle GoldenGate usando o comando SQL grant e o procedimento grant_sys_object do rdsadmin.rdsadmin_util. As instruções a seguir concedem privilégios a um usuário denominado oggadm1.

    GRANT CREATE SESSION, ALTER SESSION TO oggadm1; GRANT RESOURCE TO oggadm1; GRANT SELECT ANY DICTIONARY TO oggadm1; GRANT FLASHBACK ANY TABLE TO oggadm1; GRANT SELECT ANY TABLE TO oggadm1; GRANT SELECT_CATALOG_ROLE TO rds_master_user_name WITH ADMIN OPTION; EXEC rdsadmin.rdsadmin_util.grant_sys_object ('DBA_CLUSTERS', 'OGGADM1'); GRANT EXECUTE ON DBMS_FLASHBACK TO oggadm1; GRANT SELECT ON SYS.V_$DATABASE TO oggadm1; GRANT ALTER ANY TABLE TO oggadm1;
  2. Conceda os privilégios necessários a uma conta do usuário para ser um administrador do Oracle GoldenGate. O pacote usado para executar a concessão, dbms_goldengate_auth ou rdsadmin_dbms_goldengate_auth, depende da versão do mecanismo de banco de dados Oracle.

    • Para versões de banco de dados Oracle posteriores ou iguais ao Oracle Database 12c Versão 2 (12.2) que requerem nível de patch 12.2.0.1.ru-2019-04.rur-2019-04.r1 ou posterior, execute o programa PL/SQL a seguir.

      EXEC rdsadmin.rdsadmin_dbms_goldengate_auth.grant_admin_privilege ( grantee => 'OGGADM1', privilege_type => 'capture', grant_select_privileges => true, do_grants => TRUE);
    • Para versões de banco de dados Oracle anteriores ao Oracle Database 12c versão 2 (12.2), execute o programa PL/SQL a seguir.

      EXEC dbms_goldengate_auth.grant_admin_privilege ( grantee => 'OGGADM1', privilege_type => 'capture', grant_select_privileges => true, do_grants => TRUE);

    Para revogar privilégios, use o procedimento revoke_admin_privilege no mesmo pacote.

Etapa 6: Adicionar um alias TNS ao banco de dados de origem

Adicione a entrada a seguir a $ORACLE_HOME/network/admin/tnsnames.ora no Oracle Home para ser usada pelo processo EXTRACT. Para obter mais informações sobre o arquivo tnsnames.ora, consulte a documentação da Oracle.

OGGSOURCE= (DESCRIPTION= (ENABLE=BROKEN) (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=goldengate-source.abcdef12345.us-west-2.rds.amazonaws.com)(PORT=8200))) (CONNECT_DATA=(SERVICE_NAME=ORCL)) )

Configurar um banco de dados de destino para uso com o Oracle GoldenGate no Amazon RDS

Nessa tarefa, você configura uma instância de banco de dados de destino para uso com o Oracle GoldenGate.

Etapa 1: Definir o parâmetro de inicialização ENABLE_GOLDENGATE_REPLICATION como true

Quando você define o parâmetro de inicialização ENABLE_GOLDENGATE_REPLICATION como true, ele permite que os serviços de banco de dados sejam compatíveis com a replicação lógica. Se o banco de dados de origem estiver em uma instância de banco de dados do Amazon RDS, tenha um grupo de parâmetros atribuído à instância de banco de dados com o parâmetro de inicialização ENABLE_GOLDENGATE_REPLICATION definido como true. Para obter mais informações sobre o parâmetro de inicialização ENABLE_GOLDENGATE_REPLICATION, consulte a documentação do banco de dados Oracle.

Etapa 2: Criar uma conta do usuário do Oracle GoldenGate no banco de dados de destino

O Oracle GoldenGate é executado como um usuário do banco de dados e requer os privilégios de banco de dados apropriados. Para garantir que ele tenha esses privilégios, crie uma conta do usuário no banco de dados de destino.

A instrução a seguir cria um usuário denominado oggadm1.

CREATE TABLESPSACE administrator; CREATE USER oggadm1  IDENTIFIED BY "password" DEFAULT TABLESPACE administrator TEMPORARY TABLESPACE temp; ALTER USER oggadm1 QUOTA UNLIMITED ON administrator;
nota

Especifique uma senha diferente do prompt mostrado aqui como prática recomendada de segurança.

Etapa 3: Conceder privilégios de conta no banco de dados de destino

Nessa tarefa, você concede os privilégios de conta necessários para usuários do banco de dados em seu banco de dados de destino.

Como conceder privilégios de conta no banco de dados de destino
  1. Conceda os privilégios necessários à conta do usuário do Oracle GoldenGate no banco de dados de destino. No exemplo a seguir, conceda privilégios a oggadm1.

    GRANT CREATE SESSION        TO oggadm1; GRANT ALTER SESSION         TO oggadm1; GRANT CREATE CLUSTER        TO oggadm1; GRANT CREATE INDEXTYPE      TO oggadm1; GRANT CREATE OPERATOR       TO oggadm1; GRANT CREATE PROCEDURE      TO oggadm1; GRANT CREATE SEQUENCE       TO oggadm1; GRANT CREATE TABLE          TO oggadm1; GRANT CREATE TRIGGER        TO oggadm1; GRANT CREATE TYPE           TO oggadm1; GRANT SELECT ANY DICTIONARY TO oggadm1; GRANT CREATE ANY TABLE      TO oggadm1; GRANT ALTER ANY TABLE       TO oggadm1; GRANT LOCK ANY TABLE        TO oggadm1; GRANT SELECT ANY TABLE      TO oggadm1; GRANT INSERT ANY TABLE      TO oggadm1; GRANT UPDATE ANY TABLE      TO oggadm1; GRANT DELETE ANY TABLE      TO oggadm1;
  2. Conceda os privilégios necessários a uma conta do usuário para ser um administrador do Oracle GoldenGate. O pacote usado para executar a concessão, dbms_goldengate_auth ou rdsadmin_dbms_goldengate_auth, depende da versão do mecanismo de banco de dados Oracle.

    • Para versões de banco de dados Oracle posteriores ou iguais ao Oracle Database 12c Versão 2 (12.2) que requerem nível de patch 12.2.0.1.ru-2019-04.rur-2019-04.r1 ou posterior, execute o programa PL/SQL a seguir.

      EXEC rdsadmin.rdsadmin_dbms_goldengate_auth.grant_admin_privilege ( grantee => 'OGGADM1', privilege_type => 'apply', grant_select_privileges => true, do_grants => TRUE);
    • Para versões de banco de dados Oracle anteriores ao Oracle Database 12c versão 2 (12.2), execute o programa PL/SQL a seguir.

      EXEC dbms_goldengate_auth.grant_admin_privilege ( grantee => 'OGGADM1', privilege_type => 'apply', grant_select_privileges => true, do_grants => TRUE);

    Para revogar privilégios, use o procedimento revoke_admin_privilege no mesmo pacote.

Etapa 4: Adicionar um alias TNS ao banco de dados de destino

Adicione a entrada a seguir a $ORACLE_HOME/network/admin/tnsnames.ora no Oracle Home para ser usada pelo processo REPLICAT. Para bancos de dados multilocação Oracle, o alias TNS deve apontar para o nome do serviço do PDB. Para obter mais informações sobre o arquivo tnsnames.ora, consulte a documentação da Oracle.

OGGTARGET= (DESCRIPTION= (ENABLE=BROKEN) (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=goldengate-target.abcdef12345.us-west-2.rds.amazonaws.com)(PORT=8200))) (CONNECT_DATA=(SERVICE_NAME=ORCL)) )

Trabalhar com os utilitários EXTRACT e REPLICAT do Oracle GoldenGate

Os utilitários EXTRACT e REPLICAT do Oracle GoldenGate trabalham juntos para manter os bancos de dados de origem e destino sincronizados via replicação de transações incrementais usando arquivos de trilha. Todas as alterações que ocorrem no banco de dados de origem são automaticamente detectadas por EXTRACT, depois formatadas e transferidas para arquivos de trilha no Oracle GoldenGate on-premises ou no hub de instâncias do Amazon EC2. Após a conclusão da carga inicial, os dados são lidos desses arquivos e replicados para o banco de dados de destino pelo utilitário REPLICAT.

Executar o utilitário EXTRACT do Oracle GoldenGate

O utilitário EXTRACT recupera, converte e gera dados do banco de dados de origem para arquivos de trilha. O processo básico é o seguinte:

  1. EXTRACT coloca os detalhes da transação em fila na memória ou em armazenamento de disco temporário.

  2. O banco de dados de origem confirma a transação.

  3. EXTRACT grava os detalhes da transação em um arquivo de trilha.

  4. O arquivo de trilha roteia esses detalhes para o Oracle GoldenGate on-premises ou o hub da instância do Amazon EC2 e depois para o banco de dados de destino.

As etapas a seguir iniciam o utilitário EXTRACT, capturam os dados do EXAMPLE.TABLE no banco de dados de origem OGGSOURCE e criam os arquivos de trilha.

Como executar o utilitário EXTRACT
  1. Configure o arquivo de parâmetro EXTRACT no hub do Oracle GoldenGate (on-premises ou na instância do Amazon EC2). A listagem a seguir mostra um exemplo do arquivo de parâmetro EXTRACT denominado $GGHOME/dirprm/eabc.prm.

    EXTRACT EABC   USERID oggadm1@OGGSOURCE, PASSWORD "my-password" EXTTRAIL /path/to/goldengate/dirdat/ab   IGNOREREPLICATES GETAPPLOPS TRANLOGOPTIONS EXCLUDEUSER OGGADM1   TABLE EXAMPLE.TABLE;
  2. No hub do Oracle GoldenGate, faça login no banco de dados de origem e execute a interface de linha de comando do Oracle GoldenGate ggsci. O exemplo a seguir mostra o formato para login.

    dblogin oggadm1@OGGSOURCE
  3. Adicione dados de transação para ativar o registro em log complementar para a tabela de banco de dados.

    add trandata EXAMPLE.TABLE
  4. Usando a linha de comando ggsci, ative o utilitário EXTRACT usando os comandos a seguir.

    add extract EABC tranlog, INTEGRATED tranlog, begin now add exttrail /path/to/goldengate/dirdat/ab extract EABC, MEGABYTES 100
  5. Registre o utilitário EXTRACT no banco de dados para que os logs de arquivamento não sejam excluídos. Essa tarefa permite que você recupere transações antigas, não confirmadas, se necessário. Para registrar o utilitário EXTRACT no banco de dados, use o comando a seguir.

    register EXTRACT EABC, DATABASE
  6. Inicie o utilitário EXTRACT com o comando a seguir.

    start EABC

Executar o utilitário REPLICAT do Oracle GoldenGate

O utilitário REPLICAT “envia por push” informações de transação nos arquivos de trilha ao banco de dados de destino.

As etapas a seguir ativam e iniciam o utilitário REPLICAT para que ele possa replicar os dados capturados na tabela EXAMPLE.TABLE no banco de dados de destino OGGTARGET.

Como executar o utilitário REPLICATE
  1. Configure o arquivo de parâmetro REPLICAT no hub do Oracle GoldenGate (on-premises ou na instância do EC2). A listagem a seguir mostra um exemplo do arquivo de parâmetro REPLICAT denominado $GGHOME/dirprm/rabc.prm.

    REPLICAT RABC   USERID oggadm1@OGGTARGET, password "my-password"   ASSUMETARGETDEFS MAP EXAMPLE.TABLE, TARGET EXAMPLE.TABLE;
    nota

    Especifique uma senha diferente do prompt mostrado aqui como prática recomendada de segurança.

  2. Faça login no banco de dados de destino e execute a interface de linha de comando do Oracle GoldenGate (ggsci). O exemplo a seguir mostra o formato para login.

    dblogin userid oggadm1@OGGTARGET
  3. Usando a linha de comando ggsci, adicione uma tabela de verificação. O usuário indicado deve ser a conta de usuário do Oracle GoldenGate, e não o proprietário do esquema da tabela de destino. O exemplo a seguir cria um ponto de verificação denominado gg_checkpoint.

    add checkpointtable oggadm1.oggchkpt
  4. Para habilitar o utilitário REPLICAT, use o seguinte comando:

    add replicat RABC EXTTRAIL /path/to/goldengate/dirdat/ab CHECKPOINTTABLE oggadm1.oggchkpt
  5. Inicie o utilitário REPLICAT usando o comando a seguir.

    start RABC

Monitorar o Oracle GoldenGate

Ao usar o Oracle GoldenGate para replicação, certifique-se de que o processo do Oracle GoldenGate esteja ativo e em execução e que os bancos de dados de origem e destino estejam sincronizados. Você pode usar as seguintes ferramentas de monitoramento:

  • O Amazon CloudWatch é um serviço de monitoramento usado nesse padrão para monitorar os logs de erros do GoldenGate.

  • O Amazon SNS é um serviço de notificação de mensagens usado nesse padrão para enviar notificações por e-mail.

Para obter instruções detalhadas, consulte Monitorar os logs do Oracle GoldenGate usando o Amazon CloudWatch.

Solução de problemas do Oracle GoldenGate

Esta seção explica os problemas mais comuns ao usar o Oracle GoldenGate com o Amazon RDS para Oracle.

Erro ao abrir um redo log online

Configure os bancos de dados para reter os redo logs arquivados. Considere as seguintes diretrizes:

  • Especifique a duração da retenção de log em horas. O valor mínimo é uma hora.

  • Defina a duração para exceder qualquer tempo de inatividade possível, qualquer período de comunicação possível e qualquer período de problemas de rede possível com a instância de banco de dados de origem. Essa duração permite que o Oracle GoldenGate recupere logs da instância de banco de dados de origem de acordo com a necessidade.

  • Verifique se você tem armazenamento suficiente na instância para os arquivos.

Se você não tiver a retenção de logs ativada, ou se o valor de retenção for muito pequeno, receberá uma mensagem de erro semelhante à seguinte.

2022-03-06 06:17:27 ERROR OGG-00446 error 2 (No such file or directory) opening redo log /rdsdbdata/db/GGTEST3_A/onlinelog/o1_mf_2_9k4bp1n6_.log for sequence 1306 Not able to establish initial position for begin time 2022-03-06 06:16:55.

O Oracle GoldenGate parece estar devidamente configurado, mas a replicação não está funcionando

Para tabelas pré-existentes, você precisa especificar o SCN do qual o Oracle GoldenGate trabalha.

Como corrigir esse problema
  1. Faça login no banco de dados de origem e execute a interface de linha de comando do Oracle GoldenGate (ggsci). O exemplo a seguir mostra o formato para login.

    dblogin userid oggadm1@OGGSOURCE
  2. Usando a linha de comando ggsci, configure o SCN inicial para o processo EXTRACT. O exemplo a seguir define o SCN como 223274 para EXTRACT.

    ALTER EXTRACT EABC SCN 223274 start EABC
  3. Faça login no banco de dados de destino. O exemplo a seguir mostra o formato para login.

    dblogin userid oggadm1@OGGTARGET
  4. Usando a linha de comando ggsci, configure o SCN inicial para o processo REPLICAT. O exemplo a seguir define o SCN como 223274 para REPLICAT.

    start RABC atcsn 223274

REPLICAT integrado lento devido a consulta no SYS. “_DBA_APPLY_CDR_INFO”

O Oracle GoldenGate Conflict Detection and Resolution (CDR) fornece rotinas básicas de resolução de conflitos. Por exemplo, o CDR pode resolver um conflito exclusivo para uma instrução INSERT.

Quando o CDR resolve um conflito, ele pode inserir registros na tabela de exceção _DBA_APPLY_CDR_INFO temporariamente. O REPLICAT integrado exclui esses registros posteriormente. Em um cenário raro, o REPLICAT integrado pode processar um grande número de colisões, mas um novo REPLICAT integrado não o substitui. Em vez de serem removidas, as linhas _DBA_APPLY_CDR_INFO existentes ficam órfãs. Todos os novos processos REPLICAT integrados abrandam porque estão consultando linhas órfãs no _DBA_APPLY_CDR_INFO.

Para remover todas as linhas de _DBA_APPLY_CDR_INFO, use o procedimento rdsadmin.rdsadmin_util.truncate_apply$_cdr_info do Amazon RDS. Este procedimento é lançado como parte da versão de outubro de 2020 e atualização de patch. O procedimento está disponível nas seguintes versões do banco de dados:

O exemplo a seguir trunca a tabela _DBA_APPLY_CDR_INFO.

SET SERVEROUTPUT ON SIZE 2000 EXEC rdsadmin.rdsadmin_util.truncate_apply$_cdr_info;