Preparar Definições de Conexão, Sistema e Parâmetro do Banco de Dados

Saiba mais sobre como configurar definições de conexão de banco de dados, sistema e parâmetro para o Oracle GoldenGate for Oracle.

Ativar Replicação GoldenGate e Modo de Arquivamento

Etapa 1: Ativar a Replicação GoldenGate

Os serviços de banco de dados necessários para suportar o processo Extract e Replicat do Oracle GoldenGate devem ser ativados explicitamente para o Oracle AI Database.

Para ativar a replicação do Oracle GoldenGate, defina o parâmetro de inicialização do banco de dados a seguir. Todas as instâncias no Oracle RAC devem ter esse valor definido como TRUE se o Oracle GoldenGate estiver sendo usado em qualquer um dos nós.

ALTER SYSTEM SET enable_goldengate_replication = true SCOPTE=both;

Para obter mais informações sobre esse parâmetro, consulte Parâmetros de Inicialização.

Etapas 2: Ativar o Modo de Arquivamento

Os Bancos de Dados Oracle devem estar no modo ARCHIVELOG para que o Extract possa processar os arquivos de log. Para ativar o modo ARCHIVELOG, siga as etapas fornecidas em Alterando o Modo de Arquivamento de Banco de Dados.

Definindo a Consulta de Flashback

Para saber mais sobre os dados extraídos pelo Oracle GoldenGate, consulte Detalhes do Suporte para Tipos de Dados e Objetos do Oracle.

Por padrão, o Oracle GoldenGate usa o Flashback Query para extrair os valores dos tablespaces de undo (rollback). Dessa forma, o Oracle GoldenGate pode reconstruir uma imagem de linha com consistência de leitura em um horário específico ou SCN para corresponder ao registro de redo.

Para obter melhores resultados de extração, configure o banco de dados de origem da seguinte forma:

  1. Defina uma quantidade suficiente de retenção de redo definindo os parâmetros de inicialização UNDO_MANAGEMENT e UNDO_RETENTION da Oracle da seguinte forma (em segundos).

    UNDO_MANAGEMENT=AUTO
    
    UNDO_RETENTION=86400
    
    UNDO_RETENTION can be adjusted upward in high-volume environments.
  2. Calcule o espaço necessário no tablespace de undo usando a fórmula a seguir.

    *undo_space* = UNDO_RETENTION * *UPS* + *overhead*

    Onde:

    • undo_space é o número de blocos de undo.

    • UNDO_RETENTION é o valor do parâmetro UNDO_RETENTION (em segundos).

    • UPS é o número de blocos de undo para cada segundo.

    • overhead é o overhead mínimo para metadados (tabelas de transação etc.).

    Use a exibição do sistema V$UNDOSTAT para estimar UPS e custos indiretos.

  3. Para tabelas que contêm LOBs, execute uma das seguintes ações:

    • Defina a cláusula de armazenamento LOB como RETENTION. Esse é o padrão para tabelas criadas quando UNDO_MANAGEMENT é definido como AUTO.

    • Se estiver usando PCTVERSION em vez de RETENTION, defina PCTVERSION como um valor inicial de 25. Você pode ajustá-lo com base nas estatísticas de extração reportadas com o comando STATS EXTRACT. Se o valor do campo STAT_OPER_ROWFETCH CURRENTBYROWID ou STAT_OPER_ROWFETCH_CURRENTBYKEY nessas estatísticas for alto, aumente PCTVERSION em incrementos de 10 até que as estatísticas mostrem valores baixos.

O Oracle GoldenGate fornece os parâmetros a seguir para gerenciar a extração.

Parâmetro ou Comando Descrição
Comando STATS EXTRACT com a opção REPORTFETCH Mostra estatísticas de extração de Extração sob demanda.
Parâmetro STATOPTIONS com a opção REPORTFETCH Define o comando STATS EXTRACT para que ele sempre mostre estatísticas de extração.
Parâmetro MAXFETCHSTATEMENTS Controla o número de cursores abertos para consultas preparadas que o Extract mantém no banco de dados de origem e também para operações SQLEXEC.
Parâmetro MAXFETCHSTATEMENTS Controla o comportamento de extração padrão do Extract: se o Extract executa uma consulta de flashback ou extrai a imagem atual da tabela.
Parâmetro FETCHOPTIONS com a opção USELATESTVERSION ou NOUSELATESTVERSION Trata a falha de uma consulta de flashback do Extract, como se a retenção de undo tivesse expirado ou se a estrutura de uma tabela tivesse sido alterada. O Extract pode extrair a imagem atual da tabela ou ignorar a falha.
Parâmetro REPFETCHEDCOLOPTIONS Controla a resposta pelo Replicat quando ele processa registros de trilha que incluem dados extraídos ou condições ausentes na coluna.

Tratando Outras Propriedades do Banco de Dados

Há algumas propriedades do banco de dados que podem afetar o Oracle GoldenGate e os parâmetros usados para resolver ou contornar determinadas condições.

A tabela a seguir lista as propriedades do banco de dados e a preocupação/resolução associada.

Propriedade do Banco de Dados Interesse/Resolução
Tabela com particionamento de intervalo Para suportar tabelas com particionamento de intervalo, certifique-se de que o parâmetro WILDCARDRESOLVE permaneça no padrão de DYNAMIC.
Tabela com colunas virtuais

As colunas virtuais não são registradas no log e o Oracle não permite DML em colunas virtuais. No entanto, você pode capturar esses dados e mapeá-los para uma coluna de destino que não seja uma coluna virtual fazendo o seguinte:

Inclua a tabela na instrução Extract TABLE e use a opção FETCHCOLS de TABLE para extrair o valor da coluna virtual no banco de dados.

Na instrução MAP do processo Replicat, mapeie a coluna virtual de origem para a coluna de destino não virtual.

Tabela com view atualizável inerentemente Para replicar para uma view atualizável inerentemente, defina uma chave nas colunas exclusivas da view atualizável usando uma cláusula KEYCOLS na mesma instrução MAP na qual as tabelas de origem e destino associadas são mapeadas.
Refazer logs ou arquivos compactados em diferentes locais O parâmetro TRANLOGOPTIONS contém opções para tratar ambientes em que os redo logs ou arquivos compactados são armazenados em um local diferente do padrão do banco de dados ou em uma plataforma diferente daquela em que o Extract está sendo executado.
Operações TRUNCATE

Para replicar operações TRUNCATE, escolha uma das duas opções:

  • O suporte a TRUNCATE independente por meio do parâmetro GETTRUNCATES replica TRUNCATE TABLE, mas nenhuma outra opção TRUNCATE. Use somente se não estiver usando o suporte a DDL do Oracle GoldenGate.

  • O suporte a DDL completo replica TRUNCATE TABLE, ALTER TABLE TRUNCATE PARTITION e outros DDL.

Sequências

Para replicar DDL para sequências (CREATE, ALTER, DROP, RENAME), use o suporte de DDL do Oracle GoldenGate.

Para replicar apenas valores de sequência, use o parâmetro SEQUENCE no arquivo de parâmetros Extract. Isso não requer o ambiente de suporte a DDL do Oracle GoldenGate.

Configurar um Banco de Dados Contêiner Multitenant

O Oracle GoldenGate com o Oracle AI Database permite a implementação de bancos de dados plugáveis (PDBs) para origem e destino. A extração é registrada para um PDB específico, que é chamado de Extração por PDB.

Observação: O acesso no nível raiz com o usuário c##ggadmin não é recomendado, exceto no caso de configuração de Extração downstream. Use Extract no nível por PDB em vez de Extract no nível raiz.

O diagrama a seguir mostra a configuração de diferentes abordagens em uma configuração de banco de dados contêiner multitenant:

Veja a seguir a descrição da ilustração pdb_extract_feedbk.png

Adicionando Extract diretamente das capturas do PDB de PDBs isolados, gerenciando propriedade e responsabilidade no nível do PDB.

Usando um Extract por PDB, você pode estabelecer conexão como usuário local do PDB (por exemplo, ggadmin) e, em seguida, registrar esse Extract no banco de dados. Como você já está conectado como usuário do PDB, não é necessária uma cláusula container adicional. Da mesma forma, a convenção de nomenclatura SOURCECATALOG ou três partes também não é necessária.

Para configurar um Extract, consulte Adicionar um Extract.

Considerações sobre a Configuração do Banco de Dados Contêiner Multitenant

Considere as seguintes diretrizes ao configurar bancos de dados contêineres multitenant para replicação de dados usando o Oracle GoldenGate:

Consulte Adicionar Conexões de Banco de Dados para adicionar um usuário de banco de dados contêiner multitenant nas credenciais do Oracle GoldenGate. Consulte Conceder Privilégios de Usuário para Oracle Database 21c e Inferiores ou Conceder Privilégios de Usuário para Oracle AI Database 26ai e Superior, dependendo da instalação do Oracle AI Database que você precisa configurar.

Sequência de Descarga do Banco de Dados Contêiner Multitenant

Você só poderá usar o comando FLUSH SEQUENCE no Oracle GoldenGate se o script sequence.sql aplicar os procedimentos do banco de dados ao esquema de Administração GoldenGate do banco de dados.

Use o comando FLUSH SEQUENCE imediatamente após iniciar a Extração pela primeira vez durante uma sincronização inicial ou uma ressincronização. Este comando atualiza uma sequência do Oracle, para que os registros redo iniciais estejam disponíveis na hora que o Extract começa a capturar dados da transação. Normalmente, o redo não é gerado até que o cache atual seja esgotado. O fluxo dá ao Replicat um ponto de partida inicial com o qual sincronizar para o valor de sequência correto no sistema de destino. Daí em diante, o Extract poderá usar o redo associado à reserva do cache usual de valores de sequência. 1. FLUSH SEQUENCE usa os seguintes procedimentos Oracle:

 | Database | Procedure | User and Privileges |
 | --- | --- | --- |
 | Source | `updateSequence` | Grants `EXECUTE` to the owner of the Oracle GoldenGate DDL objects, or other selected user if not using DDL support. |
 | Target | `replicateSequence` | Grants `EXECUTE` to the Oracle GoldenGate Replicat user. |

 {: summary="This table lists the Oracle procedures used by FLUSH SEQUENCE. It gives the database, procedure, and user and privileges." }

The `sequence.sql` script installs these procedures. Normally, this script is run as part of the Oracle GoldenGate installation process, but make certain that was done before using `FLUSH SEQUENCE`. If `sequence.sql` was not run, the flush fails and an error message similar to the following is generated:

<pre class="copy"><code>Cannot flush sequence {0}. Refer to the Oracle GoldenGate for Oracle documentation for instructions on how to set up and run the sequence.sql script. Error {1}.</code></pre>
  1. Antes de usar o FLUSH SEQUENCE, conecte-se ao banco de dados usando o comando DBLOGIN.

O FLUSH SEQUENCE deve ser emitido no nível do PDB para criar um usuário do Oracle GoldenGate em cada PDB para o qual a replicação de sequência é necessária. Use DBLOGIN para fazer log-in nesse PDB e execute o comando FLUSH SEQUENCE.

É recomendável usar o mesmo esquema em cada PDB, para que ele funcione com o arquivo de parâmetros GLOBALS GGSCHEMA.

No exemplo a seguir, a configuração do ambiente é para o Oracle 21c para o Oracle 21c Replication, com Extract integrado, Replicat paralelo usando Oracle GoldenGate 21c (21.3.0).

A tabela a seguir lista os nomes do CDB de origem e destino, PDBs e suas credenciais de usuário correspondentes para conexão com o banco de dados.

CDB de Origem CDB de Destino
NORTH SOUTH
Nome do PDB: DBEAST Nome do PDB: DBWEST

Usuário comum: c##ggadmin

Usuário do PDB para sequências: ggate

Usuário do PDB: ggadmin
sqlplus system/manager
ALTER SESSION SESSION SET CONTAINER=CERTMISSN;
CREATE USER ggate IDENTIFIED BY *password* DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP QUOTA UNLIMITED ON USERS CONTAINER=CURRENT;

Executar @sequence.sql

sqlplus system/manager
ALTER SESSION SET CONTAINER=DBEAST;
@sequence.sql

Quando solicitado, informe o seguinte:

GGADMIN

Execute o comando FLUSH SEQUENCE:

DBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate
FLUSH SEQUENCE DBEAST.HR.*

Configuração do Oracle GoldenGate de Destino:

sqlplus system/manager
ALTER SESSION SET CONTAINER =PDBWEST;
@sequence.sql

Quando solicitado, informe o nome de usuário do PDB ggadmin.

Isso também se aplica ao script @sequence.sql, que você também deve executar em cada PDB de onde você vai capturar.