DDLOPTIONS

Válido Para

Extract e Replicat

Descrição

Use o parâmetro DDLOPTIONS para configurar aspectos do processamento DDL que não sejam filtragem e substituição de string. Você pode usar várias instruções DDLOPTIONS, mas é recomendável usar uma. Se estiver usando várias instruções DDLOPTIONS, torne cada uma delas exclusiva para que uma não substitua a outra. Várias instruções DDLOPTIONS são executadas na ordem listada no arquivo de parâmetros.

Padrão

Consulte as descrições dos argumentos

Sintaxe

DDLOPTIONS
[, DEFAULTUSERPASSWORD <password>] [<algorithm> [ENCRYPTKEY DEFAULT | ENCRYPTKEY] <key_name>]
[, CAPTUREGLOBALTEMPTABLE ]
[, DEFAULTUSERPASSWORDALIAS <alias> [DOMAIN <domain>] ]
[, EXCLUDETAG {<tag> | + | NULL}]
[, IGNOREMAPPING]
[, INCLUDETAG {<tag> | +}][, MAPDERIVED | NOMAPDERIVED]
[, MAPSCHEMAS]
[, MAPSESSIONSCHEMA <source_schema> TARGET <target_schema>]
[, NLSLENGTHSEMANTICS CHAR | BYTE | DEFAULT][, NOAPPLYGLOBALTEMPTABLE]
[, NOTAG]
[, PASSWORD <algorithm> ENCRYPTKEY {<key_name> | DEFAULT}]
[, REMOVECOMMENTS {BEFORE | AFTER}]
[, REPLICATEPASSWORD | NOREPLICATEPASSWORD]
[, REPORT | NOREPORT]
[, UPDATEMETADATA]
[, USEPASSWORDVERIFIERLEVEL {10|11}]
[, _USEOWNERFORSESSION]
[, WARNONLARGEDDL]

DEFAULTUSERPASSWORD *password* [*algorithm* ENCRYPTKEY {*key_name* | DEFAULT}]

Válido para Replicat. (Somente Oracle)

Pode ser usado em vez da opção DEFAULTUSERPASSWORDALIAS se um armazenamento de credenciais do Oracle GoldenGate não estiver sendo usado. Especifica outra senha para uma instrução {CREATE | ALTER} USER <name> IDENTIFIED BY <password> replicada da usada na instrução de origem. O Replicat substituirá o placeholder que o Extract grava na trilha pela senha especificada. Ao usar DEFAULTUSERPASSWORD, use a opção NOREPLICATEPASSWORD de DDLOPTIONS para Extract.

DEFAULTUSERPASSWORD <password> sem opções especifica uma senha de texto sem formatação. Se a senha distinguir maiúsculas de minúsculas, digite-a dessa maneira.

Observação: A replicação de CREATE | ALTER PROFILE falhará, pois a função de verificação de perfil/senha deve existir no esquema SYS. Para replicar essas DDLs com sucesso, a função de verificação de senha deve ser criada manualmente em origem/destino(s), pois DDL para o esquema SYS foi excluído.

Use as seguintes opções se a senha tiver sido criptografada com o comando ENCRYPT PASSWORD:

algorithm

Especifica o algoritmo de criptografia usado para criptografar a senha com o comando ENCRYPT PASSWORD: AES128, ou AES192, AES256.

ENCRYPTKEY key_name

Especifica o nome lógico de uma chave de criptografia criada pelo usuário no arquivo da pesquisa ENCKEYS. Use se ENCRYPT PASSWORD foi usado com a opção KEYNAME <key_name> e especifique o mesmo nome de chave.

ENCRYPTKEY DEFAULT

Instrui o Oracle GoldenGate a usar uma chave aleatória. Use se ENCRYPT PASSWORD foi usado com a opção KEYNAME DEFAULT.

CAPTUREGLOBALTEMPTABLE

Válido para Oracle

Permite que DDLs de Tabelas Temporárias Globais (GTT) fiquem visíveis para o processo Extract para que possam ser replicadas. Por padrão, as DDLs do GTT não estão visíveis para o Extract, portanto, usando CAPTUREGLOBALTEMPTABLE, você pode definir o Extract para incluir DDLs do GTT que, em seguida, podem ser filtrados pela instrução DDL e, se informados, gravados na trilha.

As DDLs GTT presentes na trilha serão filtradas e executadas pelo processo Replicat se passarem pelos critérios de filtragem.

Para trigger-version de Extract, essa opção é definida como falsa, independentemente de a tabela ser GTT ou não.

DEFAULTUSERPASSWORDALIAS *alias* [DOMAIN *domain*]

Válido para Replicat. (Somente Oracle)

Pode ser usado em vez da opção DEFAULTUSERPASSWORD se um armazenamento de credenciais do Oracle GoldenGate estiver sendo usado. Especifica o alias de uma credencial cuja senha substitui a da cláusula IDENTIFIED BY de uma instrução CREATE USER ou ALTER USER replicada. O alias é resolvido para a senha criptografada no armazenamento de credenciais do Oracle GoldenGate. O Replicat substitui o placeholder que o Extract grava na trilha pela senha resolvida antes de aplicar o DDL ao destino.

Ao usar DEFAULTUSERPASSWORDALIAS, use a opção NOREPLICATEPASSWORD de DDLOPTIONS para Extract.

alias

Especifica o alias da credencial cuja senha será usada para a senha de substituição. Esta credencial deve existir no armazenamento de credenciais do Oracle GoldenGate. Se você não tiver certeza de qual alias usar, poderá inspecionar o conteúdo do armazenamento de credenciais emitindo o comando INFO CREDENTIALSTORE.

DOMAIN domínio

Especifica o domínio que está designado ao usuário especificado no armazenamento de credenciais.

EXCLUDETAG {*tag* | + | NULL}]

Válido para o Extract. (Somente Oracle)

Observação: A partir do Oracle GoldenGate 26ai, a sintaxe para usar as opções EXCLUDETAG e INCLUDETAG foi aprimorada e deve ser usada em vez das opções GETREPLICATES, IGNOREREPLICATES, GETAPPLOPS e IGNOREAPPLOPS que foram removidas.

O EXCLUDETAG é usado para excluir alterações que foram marcadas anteriormente pelo Replicat usando a opção DBOPTIONS SET TAG ou dentro da sessão do Oracle AI Database usando o procedimento dbms_xstream.set_tag.

Use EXCLUDETAG <tag> para direcionar o processo Extract para ignorar os registros individuais marcados com a tag redo especificada.

Use EXCLUDETAG NULL para excluir todas as operações DDL que não estão marcadas com tag. É o oposto de EXCLUDETAG +.

Use EXCLUDETAG + para direcionar o processo Extract para ignorar os registros individuais marcados com qualquer tag de redo.

Observação: ao especificar os parâmetros EXCLUDETAG e INCLUDETAG com o comando DDLOPTIONS, o EXCLUDETAG deve vir primeiro.

Por padrão, a opção DDLOPTIONS EXCLUDETAG + direciona o Extract para filtrar operações DDL marcadas com tag, fazendo com que as DDLs do Oracle Data Pump marcadas com 00 sejam excluídas da captura. Para capturar essas DDLs, configure DDLOPTIONS INCLUDETAG 00.

Observação: Em configurações bidirecionais, a ativação da inclusão de tag pode permitir que outras DDLs marcadas sejam capturadas, potencialmente introduzindo loops de replicação ou duplicando a execução do DDL.

Exemplo

Veja a seguir exemplos de como usar especificadores de tag com EXCLUDETAG.

Para excluir todas as alterações marcadas:

DDLOPTIONS EXCLUDETAG +

Para excluir alterações marcadas específicas:

DDLOPTIONS EXCLUDETAG 00
DDLOPTIONS EXCLUDETAG 0952

Para ter várias tags de exclusão em uma única instrução DDLOPTIONS:

DDLOPTIONS EXCLUDETAG 00 EXCLUDETAG 97ab

INCLUDETAG {tag | +}

Válido para o Extract. (Somente Oracle)

Use INCLUDETAG <tag> para incluir operações DDL marcadas específicas nos arquivos de trilha. O valor da tag pode ter até 2000 dígitos hexadecimais (0-9 A-F).

Observação: ao especificar os parâmetros EXCLUDETAG e INCLUDETAG com o comando DDLOPTIONS, o EXCLUDETAG deve vir primeiro.

Exemplo:

Para incluir todas as alterações marcadas:

DDLOPTIONS INCLUDETAG +

Para incluir alterações marcadas específicas:

DDLOPTIONS INCLUDETAG 00

Diretrizes ao usar os Parâmetros EXCLUDETAG e INCLUDETAG

Ao usar os parâmetros EXCLUDETAG e INCLUDETAG com os comandos TRANLOGOPTIONS e DDLOPTIONS, considere o seguinte:

IGNOREMAPPING

Válido para Replicat. Desativa a avaliação do mapeamento de nomes que determina se DDL é do escopo MAPPED ou UNMAPPED. Essa opção melhora o desempenho em configurações de replicação DDL semelhantes, nas quais os nomes de esquema de origem e destino e os nomes de objeto correspondem, e nas quais as funções de mapeamento são, portanto, desnecessárias. Com o IGNOREMAPPING ativado, o escopo MAPPED ou UNMAPPED não pode ser determinado, portanto, todas as instruções DDL são tratadas como escopo OTHER. Não use esse parâmetro quando os esquemas de origem e os nomes de objeto forem mapeados para diferentes nomes de esquema e objeto no destino.

MAPDERIVED | NOMAPDERIVED

Válido para Replicat (Oracle). Controla como nomes de objetos derivados são mapeados.

MAPDERIVED

Se existir uma instrução MAP para o objeto derivado, o nome será mapeado para o nome especificado nessa cláusula TARGET. Caso contrário, o nome será mapeado para o nome especificado na cláusula TARGET da instrução MAP que contém o objeto base. MAPDERIVED é o padrão.

NOMAPDERIVED

Impede o mapeamento de nomes. NOMAPDERIVED substitui qualquer instrução MAP explícita que contenha o nome do objeto derivado.

Para obter mais informações sobre como os objetos derivados são tratados durante a replicação do DDL, consulte Como o Oracle GoldenGate Trata Nomes de Objetos Derivados.

MAPSCHEMAS

Válido para Replicat (Oracle e Teradata). Use somente quando MAPSESSIONSCHEMA for usado.

Esse mapeamento ocorre após o mapeamento especificado na instrução MAP.

Como exemplo, suponha que a seguinte instrução DDL seja emitida em um Oracle AI Database de origem:

create table a.t as select from b.t;

Suponha que a instrução MAP no destino seja a seguinte:

MAP a.*, TARGET c.*;
DDLOPTIONS MAPSESSIONSCHEMA b, TARGET b1, MAPSCHEMAS

Como resultado desse mapeamento, o Replicat executa a seguinte instrução DDL no destino:

create table c.t as select from b1.t;

Sem MAPSCHEMAS, o objeto derivado seria mapeado para o esquema c (conforme especificado na cláusula TARGET), porque somente MAPSESSIONSCHEMA mapeia objetos não qualificados.

MAPSESSIONSCHEMA *source_schema* TARGET *target_schema*

Válido para Replicat (somente Oracle). Permite que um esquema de sessão de origem seja mapeado para (transformado para) um esquema de sessão diferente no destino.

Curingas não são suportados. Você pode usar vários parâmetros MAPSESSIONSCHEMA para mapear diferentes esquemas.

MAPSESSIONSCHEMA substitui qualquer mapeamento de nomes de esquema que se baseia em nomes de objeto mestre ou derivado

Veja o exemplo no final deste tópico para uso.

Consulte também MAPSCHEMAS.

NLSLENGTHSEMANTICS CHAR | BYTE | DEFAULT]

Válido para Replicat (somente Oracle).

Permite que o Replicat substitua a definição do parâmetro de sessão do Oracle AI Database NLS_LENGTH_SEMANTICS que faz parte do registro do arquivo de trilha de replicação DDL. Por exemplo, se o DDL for executado em uma sessão de banco de dados com o valor do parâmetro NLS_LENGTH_SEMANTICS como BYTE, por padrão, antes de o Replicat aplicar o DDL, ele definirá o parâmetro de sessão de banco de dados NLS_LENGTH_SEMANTICS como BYTE. Para substituir isso, você pode definir o parâmetro NLSLENGTHSEMANTICS como CHAR e, antes de o parâmetro DDL ser aplicado, o parâmetro de sessão NLS_LENGTH_SEMANTICS é definido como CHAR.

NOAPPLYGLOBALTEMPTABLE

Impede que o processo Replicat aplique Tabelas Temporárias Globais (GTT). Se essa opção não for especificada, o Replicat sempre aplicará DDLs a Tabelas Temporárias Globais (GTT) da trilha.

NOTAG

Válido para Replicat

Impede a tag DDL aplicada pelo Replicat com uma tag de redo (a tag padrão '00' ou uma definida com o parâmetro DBOPTIONS com a opção SETTAG).

O valor de tag padrão usado pelo Replicat é 00 e pode ser alterado manualmente usando o parâmetro DBOPTIONS SETTAG. Consulte DBOPTIONS.

PASSWORD *algorithm* ENCRYPTKEY {*key_name* | DEFAULT}

Válido para Extração (somente Oracle)

Direciona o Extract para criptografar todas as senhas na origem DDL antes de gravar o DDL na trilha.

<algorithm>

Especifica o algoritmo de criptografia a ser usado para criptografar a senha. Os valores válidos são AES128, AES192 ou AES256.

ENCRYPTKEY *key_name*

Especifica o nome lógico de uma chave de criptografia criada pelo usuário em uma pesquisa ENCKEYS.

ENCRYPTKEY DEFAULT

Instrui o Oracle GoldenGate a usar uma chave aleatória.

REMOVECOMMENTS {BEFORE | AFTER}

(Opcional) Válido para Extract e Replicat (somente Oracle). Controla a remoção ou não de comentários da operação DDL. Por padrão, os comentários não são removidos, de modo que possam ser usados para substituição de string com o parâmetro DDLSUBST. Consulte DDLSUBST para mais informações.

REMOVECOMMENTS BEFORE

Remove comentários antes que a operação DDL seja processada pelo Extract ou Replicat. Eles não estarão disponíveis para substituição de string.

REMOVECOMMENTS AFTER

Remove comentários depois que eles são usados para substituição de string. Esse será o comportamento padrão se REMOVECOMMENTS não for especificado.

REPLICATEPASSWORD | NOREPLICATEPASSWORD

Válido para Extração (somente Oracle). Aplica-se à senha em um comando {CREATE | ALTER} USER <user> IDENTIFIED BY <password>.

Ao usar o NOREPLICATEPASSWORD, especifique uma senha para a instrução DDL de destino usando uma instrução DDLOPTIONS com a opção DEFAULTUSERPASSWORD ou DEFAULTUSERPASSWORDALIAS no arquivo de parâmetros Replicat.

REPORT | NOREPORT

Válido para Extract e Replicat (Oracle e Teradata). Controla se as informações de processamento DDL expandidas serão ou não gravadas no arquivo de relatório. O padrão do NOREPORT reporta estatísticas básicas do DDL. REPORT adiciona os parâmetros que estão sendo usados e um histórico passo a passo das operações que foram processadas.

UPDATEMETADATA

Válido para Replicat (somente Oracle). Use em uma configuração bidirecional ativo-ativo. Esse parâmetro notifica o Replicat no sistema no qual DDL se originou de que esse DDL foi propagado para o outro sistema e que o Replicat agora deve atualizar seu cache de metadados de objeto para corresponder aos novos metadados. Isso mantém o cache de metadados do Replicat sincronizado com os metadados atuais do banco de dados local.

USEPASSWORDVERIFIERLEVEL {10|11}

Somente válido em uma configuração Oracle para Oracle. Verifica se o verificador de senha que está sendo enviado em uma instrução DDL CREATE USER requer modificação. O motivo dessa verificação é porque o Oracle tem diferentes verificadores de senha, dependendo da versão do banco de dados:

Os verificadores SHA-1, SHA-2 e HTTP são capturados no user$.spare4 no formato: 'S:<SHA-1-verifier>;H:<http-verifier>;T:<SHA-2-verifier>'. O processo Extract Integrado retorna o seguinte DDL em 12c para criar instruções do usuário DDL:

Se o Replicat for executado no Oracle 12c, esses forms do CREATE USER serão tratados no nível do RDBMS, mas se o Replicat for executado no Oracle 10g ou 11, esses forms não serão tratados pelo RDBMS. O Oracle 10g só aceita o verificador fraco, enquanto o Oracle 11g só aceita os verificadores S:SHA-1 e fraco.

Para permitir que o CREATE USER DDL gerado para um Extract conectado ao Oracle 12c funcione com um Replicat conectado ao Oracle 10g ou 11g, esse parâmetro pode ser usado para filtrar os verificadores indesejados da seguinte forma:

WARNONLARGEDDL

Esta opção é válida para a Extração.

Ele permite que você gere uma mensagem de aviso para Extract sem uma duração inferior, quando um DDL excede o tamanho de BUFFER.

Exemplos

Exemplo 1

Veja a seguir como o MAPSESSIONSCHEMA funciona para permitir o mapeamento de um esquema de sessão de origem para outro esquema no destino.

Suponha as seguintes configurações de captura e mapeamento DDL no Extract e no Replicat:

Extrair:

DDL INCLUDE OBJNAME SRC.* INCLUDE OBJNAME SRC1.*
TABLE SRC.*;
TABLE SRC1.*;
DDL INCLUDE OBJNAME SRC.* INCLUDE OBJNAME SRC1.*
TABLE SRC.*;
TABLE SRC1.*;

Replicat:

DDLOPTIONS MAPSESSIONSCHEMA SRC TARGET DST
DDLOPTIONS MAPSESSIONSCHEMA SRC1 TARGET DST1
MAP SRC.*, TARGET DST.*;
MAP SRC1.*, TARGET DST1.*;
DDL INCLUDE OBJNAME DST.* INCLUDE OBJNAME DST1.*

Suponha que as seguintes instruções DDL sejam emitidas pelo usuário conectado na origem:

ALTER SESSION SET CURRENT_SCHEMA=SRC;
CREATE TABLE tab (X NUMBER);
CREATE TABLE SRC1.tab (X NUMBER) AS SELECT * FROM tab;

O Replicat executará o DDL da seguinte forma (explicações precedem cada segmento de código):

-- Set session to DST, because SRC.* is mapped to DST.* in MAP statement.
ALTER SESION SET CURRENT_SCHEMA=DST;
-- Create the first TAB table in the DST schema, using the DST session schema.
CREATE TABLE DST.tab (X NUMBER);
-- Restore Replicat schema.
ALTER SESSION SET CURRENT_SCHEMA=REPUSER
-- Set session schema to DST, per MAPSESSIONSCHEMA, so that AS SELECT succeeds.
ALTER SESION SET CURRENT_SCHEMA=DST;
-- Create the DST1.TAB table AS SELECT * FROM the first table (DST.TAB).
CREATE TABLE DST1.tab (X NUMBER) AS SELECT * FROM tab;
-- Restore Replicat schema.
ALTER SESSION SET CURRENT_SCHEMA=REPUSER

Sem MAPSESSIONSCHEMA, o SELECT * FROM TAB tentaria selecionar em uma tabela SRC.TAB inexistente e falharia. O padrão é aplicar o esquema de origem a objetos não qualificados em uma instrução DDL de destino. A instrução DDL nesse caso teria a seguinte aparência e falharia:

-- Set session to DST, because SRC.* is mapped to DST.* in MAP statement.
ALTER SESION SET CURRENT_SCHEMA=DST;
-- Create the first TAB table in the DST schema, using the DST session schema.
CREATE TABLE DST.tab (X NUMBER);
-- Restore Replicat schema.
ALTER SESSION SET CURRENT_SCHEMA=REPUSER
-- Set session schema to SRC, because TAB in the AS SELECT is unqualified-- and SRC is the source session schema.
ALTER SESION SET CURRENT_SCHEMA=SRC;
-- Create DST1.TAB AS SELECT * from SRC.TAB (SRC=current session schema).
CREATE TABLE DST1.tab (X NUMBER) AS SELECT * FROM tab;
-- SRC.TAB does not exist.
-- Abend with an error unless the error is handled by a DDLERROR statement.

Exemplo 2

O seguinte mostra como usar DEFAULTUSERPASSWORDALIAS para especificar outra senha para uma instrução {CREATE | ALTER} USER <name> IDENTIFIED BY <password> replicada da usada na instrução de origem. Neste exemplo, o alias ddlalias está no domínio target no armazenamento de credenciais.

DDLOPTIONS DEFAULTUSERPASSWORDALIAS ddlalias DOMAIN target