ADD TRANDATA

Use ADD TRANDATA para permitir que o Oracle GoldenGate adquira as informações de transação necessárias dos registros de transação.

Antes de utilizar este comando, use o comando DBLOGIN para estabelecer uma conexão de banco de dados.

ADD TRANDATA é válido para as bases de dados listadas aqui:

Para outros bancos de dados suportados, essa funcionalidade pode já existir ou deve ser configurada por meio da interface do banco de dados.

Consulte as seguintes tabelas para saber mais sobre o uso de curingas para diferentes banco de dados ao usar ADD TRANDATA:

Banco de Dados Uso do Curinga
Db2 LUW, Db2 z/OS O curinga só pode ser usado com nomes de tabela. Não com nomes de esquema.
Oracle O curinga pode ser usado com nomes de esquema e tabela. Não com nome de PDB.
PostgreSQL e SQL Server O curinga pode ser usado com nomes de esquema e tabela

Db2 for i

Use ADD TRANDATA para iniciar o lançamento de dados. O comando ADD TRANDATA chama STRJRNPF e é o método recomendado para iniciar o registro em diário de tabelas, porque ele garante que o atributo de imagem de diário necessário de Record Images (IMAGES): *BOTH esteja definido no comando STRJRNPF.

Db2 LUW

Use ADD TRANDATA para ativar o DATA CAPTURE CHANGES nas tabelas especificadas. Por padrão, ADD TRANDATA emite o seguinte comando para o banco de dados:

ALTER TABLE name DATA CAPTURE CHANGES INCLUDE LONGVAR COLUMNS;

Você pode excluir a cláusula LONGVAR usando o ADD TRANDATA com a opção EXCLUDELONG.

Db2 z/OS

Use ADD TRANDATA para ativar o DATA CAPTURE CHANGES nas tabelas especificadas. Por padrão, ADD TRANDATA emite o seguinte comando para o banco de dados:

ALTER TABLE name DATA CAPTURE CHANGES;

Oracle Database

O Oracle GoldenGate 26ai para o Oracle AI Database 26ai e posterior suportam replicação para Views do JSON Relational Duality e Tabelas de Coleta JSON. O comando ADD TRANDATA permite o registro em log complementar para Views do JSON Relational Duality e Tabelas de Coleta JSON. No entanto, ADD TRANDATA não afeta as tabelas base da View JSON Duality e não adicionará dados transacionais para tabelas base. Para obter detalhes, consulte Pré-requisitos para Configurar a Replicação para Tabelas de Coleta JSON DV e JSON na Documentação de Microsserviços do Oracle GoldenGate.

Observe que o uso do comando semelhante ao seguinte só se aplicará a tabelas e NÃO a Views de Dualidade Relacional JSON e Tabelas de Coleta JSON:

ADD TRANDATA HR.*

Para capturar das Views do JSON Duality e das Tabelas de Coleta do JSON, você precisa executar o comando ADD TRANDATA para cada View do JSON Duality e Tabela de Coleta do JSON que precisa ser replicada. Essa medida garante que você esteja ciente das Views de Dualidade JSON e Tabelas de Coleta JSON que estejam sendo configuradas para replicação, a fim de evitar sobrecarga do sistema.

Observação: Curingas não são suportados ao ativar a replicação lógica para Views de Dualidade JSON usando ADD TRANDATA. No entanto, as Tabelas de Coleta JSON suportam curingas como as tabelas regulares. Portanto, a instrução TABLE/MAP também permite o uso de curingas.

A partir da release 21c, esse comando também ativa uma tabela para captura automática do banco de dados Oracle.

Por padrão, ADD TRANDATA para Oracle ativa o log incondicional da chave primária e o log complementar condicional de todas as chaves exclusivas e chaves estrangeiras da tabela especificada, consulte Garantindo a Exclusividade da Linha nas Tabelas de Origem e de Destino para obter mais informações sobre como a Oracle GoldenGate lida com o log complementar do Oracle AI Database.

Se possível, use o comando ADD SCHEMATRANDATA em vez do comando ADD TRANDATA. O comando ADD SCHEMATRANDATA garante uma continuidade de replicação caso o DML ocorra em um objeto para o qual o DDL acabou de ser executado. Você pode excluir objetos da especificação do esquema usando os parâmetros de exclusão.

Para usar a funcionalidade de replicação DDL do Oracle GoldenGate, você deve usar o comando ADD SCHEMATRANDATA para registrar os dados complementares necessários.

Ao usar ADD SCHEMATRANDATA, você pode usar ADD TRANDATA com a opção COLS para registrar quaisquer colunas não-chave, como as necessárias para instruções FILTER e cláusulas KEYCOLS nos parâmetros TABLE e MAP.

Observação: É possível usar `ADD

           TRANDATA` for Oracle when DDL support is enabled, but only if you can stop DML on all tables before DDL is performed on them or, if that is not possible, you can guarantee that no users or applications will issue DDL that adds new tables whose names satisfy an object specification in a `TABLE` or `MAP` statement. There must be no possibility that users or applications will issue DDL that changes the key definitions of any tables that are already in the Oracle GoldenGate configuration.
           {: .infoboxnote}

A Oracle recomenda colocar o banco de dados de origem no modo de registro em log forçado e ativar o registro em log complementar mínimo no nível do banco de dados ao usar o Oracle GoldenGate. Essa opção adiciona informações de encadeamento de linhas, se existir algum, ao redo log para operações de atualização

Considere o seguinte ao usar o ADD TRANDATA para um Oracle AI Database:

PostgreSQL

Usando o comando ADD TRANDATA, a definição REPLICA IDENTITY da tabela é alterada. A definição REPLICA IDENTITY controla as imagens das colunas de uma tabela, que devem ser registradas no log de transação para as operações UPDATE e DELETE.

SQL Server

Use ADD TRANDATA para fornecer as informações estendidas de registro em log necessárias para o Oracle GoldenGate reconstruir operações SQL. Por padrão, o log de transações do SQL Server não fornece informações suficientes.

Ao ativar TRANDATA, o Oracle GoldenGate ativa o recurso Captura de Dados de Alteração do SQL Server para o banco e cria uma tabela de Captura de Dados de Alteração para cada instância ativada com TRANDATA.

Sintaxe

ADD TRANDATA container.owner.table]
[, FILEGROUP filegroup-name]
[, NOSCHEDULINGCOLS | ALLCOLS]
[, ALLOWNONVALIDATEKEYS]
[, PARTIALJSON]
[, PREPARECSN  {WAIT | LOCK | NOWAIT | NONE}]

[container.]owner.table

Válido para Db2 LUW, Db2 z/OS, Oracle, PostgreSQL e SQL Server.

A especificação de nome com duas ou três partes. Use um nome de duas peças owner.table para todos os bancos de dados suportados, exceto um banco de dado contêiner multitenant da Oracle.

Use um nome de três peças container.owner.table para um banco Oracle de dados contêiner multitenant. É possível usar um caractere curinga para qualquer componente. Usado com um caractere curinga, ADD TRANDATA filtra nomes que correspondem aos nomes dos objetos do sistema. Para usar ADD TRANDATA em objetos que não são objetos de sistema, mas têm nomes que correspondam aos de objetos de sistema em um padrão curinga, emita ADD TRANDATA para esses objetos sem usar um curinga.

Se você executar o comando do cdb$root, certifique-se de definir também o seguinte privilégio de usuário no banco de dados:

ALTER USER userID SET CONTAINER_DATA = ALL  CONTAINER = CURRENT;

schema.table [JOURNAL library/journal] | library/file [JOURNAL library/journal]

Válido para Db2 for i.

Especifica o esquema e o nome SQL de uma tabela ou a biblioteca nativa e o nome do arquivo. Se um diário padrão for definido com o comando DEFAULTJOURNAL, você poderá omitir a opção JOURNAL; caso contrário, será necessário.

FILEGROUP filegroup-name

Válido para o SQLServer.

(Opcional) 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 cdctables

Você também pode usar a opção FILEGROUP no arquivo GLOBALS se precisar usar o mesmo FILEGROUP para cada tabela ao ativar o TRANDATA.

O exemplo a seguir mostra como definir o FILEGROUP myFileGroup no arquivo GLOBALS:

FILEGROUP myFileGroup

A saída é:

Logging of supplemental log data is enabled for table dbo.test1 in filegroup
myFileGroup

Nesse caso, o comando ADD TRANDATA usa a myFileGroup para todas as tabelas.

Se você também usar o parâmetro FILEGROUP com ADD TRANDATA, o comando substituirá o nome de grupo de arquivo definido no arquivo GLOBALS.

Por exemplo, se você definir FILEGROUP myFileGroup no arquivo GLOBALS e executar o seguinte comando ADD TRANDATA:

ADD TRANDATA dbo.* FILEGROUP yourFileGroup

Então a saída será:

Logging of supplemental log data is enabled for table dbo.test1 in filegroup
yourFileGroup

Nesse caso, ADD TRANDATA usa o yourFileGroup em vez de myFileGroup para todas as tabelas.

Se você não especificar o FILEGROUP em GLOBALS ou com ADD TRANDATA, a linha do comando considerará o FILEGROUP padrão do banco e, ao adicionar TRANDATA da tabela. Por exemplo, se você executar o comando ADD TRANDATA dbo.*, a saída será:

Logging of supplemental log data is enabled for table dbo.test1 in filegroup
PRIMARY

Nesse caso, o padrão FILEGROUP é Primary. Se você executar o comando INFO TRANDATA, o nome do FILEGROUP será mostrado como PRIMARY.

NOSCHEDULINGCOLS | ALLCOLS

Válido para Oracle e PostgreSQL.

Do Oracle GoldenGate 21c em diante, NOSCHEDULINGCOLS será preterido para o 21c e mais recente do Oracle database se o banco e os bancos de dados em execução oferecerem suporte a recursos da captura automática.

Essas opções atendem aos requisitos de log de uma Replicação integrada que processará as tabelas que você estiver especificando com ADD TRANDATA.

NOSCHEDULINGCOLS

Válido apenas para o sistema Oracle.

Desativa o registro em log das colunas de programação. Por padrão, ADD TRANDATA ativa o registro incondicional da chave primária e o registro complementar condicional de todas as chaves exclusivas e chaves estrangeiras da tabela especificada. O registro em log não condicional força os valores de chave principal no log quer a chave tenha sido ou não alterada na operação atual. O log condicional registrará todos os valores de coluna de uma chave estrangeira ou exclusiva se pelo menos um deles tiver sido alterado na operação atual. A chave primária, as chaves exclusivas e as chaves estrangeiras devem estar disponíveis para que o servidor de entrada calcule as dependências..

ALLCOLS

Ativa o registro em log complementar incondicional de todas as colunas de chave e que não sejam de chave da tabela. Essa opção ativa o registro em log das chaves necessárias para calcular dependências, mais todas as outras colunas para uso em filtragem, resolução de conflitos ou outras finalidades.


Para PostgreSQL, ALLCOLS define REPLICA IDENTITY da tabela como FULL. ALLCOLS é especificado como parte do comando ADD TRANDATA, para ativar o registro em log de todas as colunas para operações UPDATE e DELETE, mesmo que essas colunas não tenham sido modificadas.

Para tabelas sem Chave primária ou Índice exclusivo, a opção ALLCOLS é redundante. Esta é a sintaxe:

ADD TRANDATA table_name ALLCOLS

COLS (columns)

Válido para Oracle.

Use a opção COLS para registrar colunas não-chave específicas. Pode ser usado para registar colunas especificadas em uma cláusula KEYCOLS e para registar colunas que serão necessárias para fins de filtragem ou manipulação, o que pode ser mais eficiente do que extrair esses valores com uma cláusula FETCHCOLS em uma instrução TABLE. Separe várias colunas com vírgulas, por exemplo, NAME, ID, DOB.

INCLUDELONG | EXCLUDELONG

Válido para Db2 LUW.

Controla se o ALTER TABLE emitido pelo ADD TRANDATA inclui ou não o atributo INCLUDE LONGVAR COLUMNS. INCLUDELONG é o padrão. Quando a opção ADD TRANDATA é executada com essa opção, o Oracle GoldenGate executa a seguinte instrução:

ALTER TABLE name DATA CAPTURE CHANGES INCLUDE LONGVAR COLUMNS;

Quando EXCLUDELONG é usado, o seguinte é o comando:

ALTER TABLE name DATA CAPTURE CHANGES;

Quando o EXCLUDELONG é usado, o Oracle GoldenGate não suporta a funcionalidade que exige antes das imagens de tabelas que incluem colunas LONGVAR. Por exemplo, o parâmetro GETUPDATEBEFORES. Para suportar essa funcionalidade, as alterações nas colunas LONGVAR nos logs de transação devem incluir as imagens anteriores e posteriores do valor da coluna.

NOKEY

Válido para Db2 for i, Db2 LUW, Db2 z/OS, Oracle.

Do Oracle GoldenGate 21c em diante, NOKEY será preterido para o Oracle Database 21c e versões mais recentes se o banco dados em execução oferecer suporte a recursos da captura automática.

Suprime o registro em log complementar de colunas de chave primária. Se estiver usando NOKEY, use a opção COLS para fazer log de colunas alternativas que podem servir como chaves e designe essas colunas como chaves substitutas usando a opção KEYCOLS do parâmetro TABLE ou MAP.

NOVALIDATE

Válido para Db2 for i, Db2 LUW, Db2 z/OS, Oracle.

Suprime informações adicionais sobre a tabela que está sendo tratada sendo processada por ADD TRANDATA. Por padrão, esta opção está ativada. O processamento de informações adicionais cria um intervalo de tempo na resposta do comando, de modo que essa opção pode ser usada para aumentar o tempo de resposta.

ALLOWNONVALIDATEDKEYS

Válido para Db2 for i, Db2 LUW, Db2 z/OS, Oracle.

Ela inclui as chaves primárias NON VALIDATED e NOT VALID no log complementar. Essas chaves substituem os critérios de seleção de chave normais usados pelo Oracle GoldenGate. Se o parâmetro GLOBALS ALLOWNONVALIDATEDKEYS estiver sendo usado, ADD SCHEMATRANDATA será executado com ALLOWNONVALIDATEDKEYS, seja especificado ou não. Por default, as chaves primárias NON VALIDATED e NOT VALID não são registradas em log.

PARTIALJSON

Válido para Oracle.

Extrai atualizações JSON parciais no nível da tabela. Se ativado, o redo incluirá registros JSON parciais.

Consulte também TRANLOGOPTIONS parâmetro FETCHPARTIALJSON.

PREPARECSN {WAIT | LOCK | NOWAIT | NONE}

Válido no Oracle para DML e DDL. Prepara automaticamente as tabelas na origem para que o arquivo de dump de Exportação do Oracle Data Pump inclua os CSNs de Instanciação. O Replicat usa o CSN de instanciação por tabela definido pelo Oracle Data Pump (na importação) para filtrar os registros da trilha. No destino, a importação do Data Pump preenche as tabelas e views do sistema com SCNs de instanciação usando o parâmetro DBOPTIONS ENABLE_INSTANTIATION_FILTERING para ativar a filtragem de instanciação em nível de tabela.

WAIT

Aguarde qualquer transação em andamento e prepare a instanciação da tabela.

LOCK

Coloque um bloqueio na tabela (para preparar a instanciação da tabela).

NOWAIT

Comportamento padrão, a preparação da instanciação é feita imediatamente.

NONE

Nenhuma preparação de instanciação ocorre.

Exemplos


O exemplo a seguir tem uma das seguintes consequências: a chave primária é registrada em log para uma tabela Oracle; os dados complementares são registrados em log para uma tabela do SQL Server ou do DB2. Essa opção também ativaria a tabela para captura automática.

ADD TRANDATA hr.employees

O exemplo seguinte ativa o log complementar incondicional de todas as colunas chave e não chave para a tabela chamada acct. Essa opção também ativaria a tabela para captura automática.

ADD TRANDATA hr.employees ALLCOLS

O exemplo a seguir do Oracle AI Database faz com que a chave primária seja registrada mais o nome e o endereço de colunas não-chave. Essa opção também ativaria a tabela para captura automática.

ADD TRANDATA hr.employees, COLS (name, address)

O exemplo a seguir do Oracle AI Database impede o log da chave primária, mas registra as colunas não relacionadas à chave name e pid em vez disso. Essa opção também ativaria a tabela para captura automática.

ADD TRANDATA hr.employees, NOKEY, COLS (name, pid)

O exemplo a seguir adiciona o registro em log, embora não prepare a tabela para instanciação. Essa opção também ativaria a tabela para captura automática.

ADD TRANDATA hr.employees PREPARECSN NONE

O exemplo a seguir suprime o processamento de informações adicionais de tabela. Essa opção também ativaria a tabela para captura automática.

ADD TRANDATA hr.employees.*name NOVALIDATE