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:
-
Defina uma quantidade suficiente de retenção de redo definindo os parâmetros de inicialização
UNDO_MANAGEMENTeUNDO_RETENTIONda Oracle da seguinte forma (em segundos).UNDO_MANAGEMENT=AUTO UNDO_RETENTION=86400 UNDO_RETENTION can be adjusted upward in high-volume environments. -
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âmetroUNDO_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$UNDOSTATpara estimar UPS e custos indiretos. -
-
Para tabelas que contêm
LOBs, execute uma das seguintes ações:-
Defina a cláusula de armazenamento
LOBcomoRETENTION. Esse é o padrão para tabelas criadas quandoUNDO_MANAGEMENTé definido comoAUTO. -
Se estiver usando
PCTVERSIONem vez deRETENTION, definaPCTVERSIONcomo um valor inicial de 25. Você pode ajustá-lo com base nas estatísticas de extração reportadas com o comandoSTATS EXTRACT. Se o valor do campoSTAT_OPER_ROWFETCHCURRENTBYROWIDouSTAT_OPER_ROWFETCH_CURRENTBYKEYnessas estatísticas for alto, aumentePCTVERSIONem 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 Na instrução |
| 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
|
| Sequências | Para replicar DDL para sequências ( Para replicar apenas valores de sequência, use o parâmetro |
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:

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:
-
Os diferentes bancos de dados plugáveis no banco de dados contêiner multitenant podem ter diferentes conjuntos de caracteres. O Oracle GoldenGate captura dados de qualquer banco de dados multitenant com diferentes conjuntos de caracteres em um arquivo de trilha e replica os dados sem danos devido ao uso de diferentes conjuntos de caracteres.
-
Para criar e registrar um Extract por PDB, você precisará se conectar ao usuário do PDB, como
ggadmincriado para acesso no nível do PDB. Use o parâmetroUSERIDALIASpara configurar uma string de conexão SQLNet, comoggadmin@pdbeast. Você *não precisa da cláusula de contêiner ou doSOURCECATALOGpara configurar a Extração por PDB. -
Se o nome de usuário do PDB, o nome de usuário do CDB ou GLOBAL_NAME contiver um traço, o Oracle GoldenGate lançará o seguinte erro:
ERROR OGG-08221 Cannot register or unregister EXTRACT <extract_name> because of the following SQL error: OCI Error ORA (status = 44004-ORA-44004: invalid qualified SQL name -
Para suportar o CDB 12.2 de origem, o Extract deve especificar o formato de trilha como versão 12.3. Em decorrência de alterações nos redo logs, para capturar de um banco de dados multitenant que seja o Oracle 12.2 ou superior, a release do formato da trilha deve ser 12.3 ou superior.
-
A replicação de DDL funciona como uma replicação normal para bancos de dados multitenant.
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>
- Antes de usar o
FLUSH SEQUENCE, conecte-se ao banco de dados usando o comandoDBLOGIN.
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: Usuário do PDB para sequências: |
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.