ADD SCHEMATRANDATA
Válido para Oracle.
Use ADD SCHEMATRANDATA para ativar o log complementar no nível do esquema para uma tabela. ADD SCHEMATRANDATA atua em todas as tabelas atuais e futuras em um determinado esquema para registrar automaticamente um superconjunto de chaves disponíveis necessárias para a identificação da linha pelo Oracle GoldenGate.
Observação: O Oracle GoldenGate 23.6 não suporta a ativação da replicação lógica no nível do esquema para Views de Dualidade Relacional JSON (JSON DV) e Tabelas de Coleta JSON (JCTs).
Para executar ADD SCHEMATRANDATA em um esquema no PDB de um banco de dado multitenant, é necessário fazer log-in em PDB para emitir o comando.
ADD SCHEMATRANDATA é válido para Extract e faz o seguinte:
-
Ativa o log complementar do Oracle para novas tabelas criadas com um
CREATE TABLE. -
Atualiza o registro em log complementar para tabelas afetadas por um
ALTER TABLEpara adicionar ou eliminar colunas. -
Atualiza o registro em log complementar para tabelas renomeadas.
-
Atualiza o registro em log complementar para tabelas cujas chaves exclusivas ou principais são adicionadas ou eliminadas.
-
Ativa uma tabela para captura automática. O comando adiciona dados de registro em log complementares PK, UI, FK, ALLKEYS em nível de esquema.
Por padrão, ADD SCHEMATRANDATA registra as colunas-chave de uma tabela na seguinte ordem de prioridade:
-
Chave principal
-
Na ausência de uma chave principal, todas as chaves exclusivas da tabela, incluindo as desativadas, inutilizáveis ou invisíveis. As chaves exclusivas que contêm colunas de membros ADT também são registradas. Só não são registradas as chaves exclusivas em colunas virtuais (índices baseados em função).
-
Se nenhuma das anteriores existir, todas as colunas escalares da tabela serão registradas. (OIDs de linha gerados pelo sistema são sempre registrados em log.)
O ADD SCHEMATRANDATA também suporta os requisitos condicionais ou incondicionais de log para usar o Replicat integrado.
Use o ADD SCHEMATRANDATA nos seguintes casos:
-
Para todas as tabelas que fazem parte de um grupo Extract que deve ser configurado para captura integrada. O serviço
ADD SCHEMATRANDATAgarante que a chave correta seja registrada, registrando todas as chaves. -
Para todas as tabelas de origem que serão processadas em um grupo Replicat integrado. São fornecidas opções que ativam o registro em log das chaves principal, exclusiva e estrangeira para suportar a computação de dependências entre tabelas relacionais sendo processadas por diferentes servidores de aplicação.
-
Quando a replicação de DDL está ativa e o DML é simultâneo com o DDL que cria novas tabelas ou altera colunas de chave. Manipula melhor os cenários nos quais o DML pode ser aplicado aos objetos em muito pouco tempo após o DDL ser emitido neles.
ADD SCHEMATRANDATAfaz que os valores de chave apropriados sejam registrados no log de redo atomicamente com cada operação DDL, garantindo assim a continuidade dos metadados para o DML quando ele for capturado do log, apesar de qualquer atraso no processamento do Extract.
Requisitos de Log no Nível do Banco de Dados para UsingADD SCHEMATRANDATA
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. Isso adiciona informações de cadeias de linhas, se houver alguma, ao redo log para operações de atualização.
Considerações Adicionais sobre UsingADD SCHEMATRANDATA
-
Antes de usar o
ADD SCHEMATRANDATA, emita o comandoDBLOGIN. O usuário que emite o comando deve ter o privilégio de Administrador do Oracle Streams.EXEC DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE('*GGADMIN*') -
ADD SCHEMATRANDATApode ser usado em vez do comandoADD TRANDATAquando não estiver ativada a replicação DDL. Observe, no entanto, que se uma tabela não tiver nenhuma chave primária, mas tiver várias chaves exclusivas, o comandoADD SCHEMATRANDATAfará o banco de dados registrar todas as chaves exclusivas. Nesses casos,ADD SCHEMATRANDATAfaz o banco de Dados registrar mais dados de redo do que oADD TRANDATA. Para evitar o registro em log adicional, designe uma das chaves exclusivas como principal, se for possível. -
Para tabelas com chave primária, com uma única chave exclusiva ou sem chave,
ADD SCHEMATRANDATAnão adiciona sobrecarga adicional de registro, em comparação comADD TRANDATA. -
Se você adicionar
SCHEMATRANDATAem um esquema em um PDB, será necessário fazer log-in nesse PDB emDBLOGIN. Por exemplo, paraPDBEASTeHRdo esquema, use o seguinte comando:ADD SCHEMATRANDATA pdbeast.hr -
Se você tiver que registrar colunas adicionais não-chave de uma tabela específica (ou tabelas) para uso pelo Oracle GoldenGate, como as necessárias para instruções
FILTERe cláusulasKEYCOLSnos parâmetrosTABLEeMAP, emita um comandoADD TRANDATApara essas colunas. Esse comando tem uma opçãoCOLSpara emitir log complementar em nível de tabela para as colunas e pode ser usado em conjunto comADD SCHEMATRANDATA.
Sintaxe
ADD SCHEMATRANDATA schema
{
[ALLOWNONVALIDATEDKEYS]
[NOSCHEDULINGCOLS | ALLCOLS]}
[NOVALIDATE]
[PARTIALJSON]
[PREPARECSN {WAIT | LOCK | NOWAIT | NONE}]
schema
O esquema cujas informações de chave complementar você deseja registrar em log. Não use caractere curinga. Para emitir ADD SCHEMATRANDATA para esquemas em mais do que um banco de dado plugável de um banco de Dados contêiner multitenant, faça log-on em cada banco de dados plugável separadamente com DBLOGIN e emita ADD SCHEMATRANDATA. No conatiner raiz, você pode adicionar schematrandata com o prefixo de contêiner ADD SCHEMATRANDATA [pdb_name].schema
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;
ALLOWNONVALIDATEDKEYS
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 padrão, as chaves primárias NON VALIDATED e NOT VALID não são registradas. Consulte o parâmetro GLOBALS ALLOWNONVALIDATEDKEYS.
NOSCHEDULINGCOLS | ALLCOLS
Essas opções controlam o registro em log complementar de um banco de dados Oracle de destino. Você pode usar essas opções juntas, embora a última seja usada. Por exemplo, com o comando ADD SCHEMATRANDATA oggadm_ext ALLCOL NOSCHEDULINGCOLS, a opção NOSCHEDULINGCOLS seria usada.
NOSCHEDULINGCOLS
Desativa o registro em log das colunas de programação. Por padrão, ADD SCHEMATRANDATA permite o registro incondicional da chave primária e o registro complementar condicional de todas as chaves exclusivas e chaves estrangeiras de todas as tabelas atuais e futuras no esquema fornecido. 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 principal, as chaves exclusivas e as chaves estrangeiras do Replicat integrado devem todas estar disponíveis ao servidor de entrada para cálculo de dependências.
Se você estiver ativando auto_capture, não use essa opção. Isso permitirá que as tabelas deste esquema sejam capturadas automaticamente, a menos que a tabela seja explicitamente excluída/desativada para replicação (por exemplo, através do TABLEEXCLUDE, DELETE TRANDATA ou ALTER TABLE DISABLE LOGICAL REPLICATION DDL).
ALLCOLS
Ativa o registro em log complementar não condicional de todas as colunas suportadas, de chave e não de chave, para todas as tabelas atuais e futuras, no esquema em questão. Essa opção permite o registro em log das chaves exigidas para calcular dependências, além das colunas exigidas para filtragem, resolução de conflito ou outras finalidades. As colunas como LOB, LONG e ADT não estão incluídas.
NOVALIDATE
Válido para todas as bases de dados suportadas por ADD SCHEMATRANDATA.
Suprime informações adicionais sobre a tabela que está sendo tratada sendo processada por ADD SCHEMATRANDATA. 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.
PARTIALJSON
Válido para Oracle.
Extrai atualizações JSON parciais no nível do esquema. 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.
Exemplo
A seguir, é possível efetuar log complementar para o esquema hr.
ADD SCHEMATRANDATA hr
O exemplo a seguir registra todas as colunas de chave e não chave suportadas para todas as tabelas atuais e futuras no esquema chamado hr.
ADD SCHEMATRANDATA hr ALLCOLS
O exemplo a seguir suprime o processamento de informações adicionais de tabela.
ADD SCHEMATRANDATA hr NOVALIDATE