DDL
Válido Para
Extract e Replicat
Observação: só há suporte para a replicação DDL entre bancos de dados Oracle para Oracle e entre bancos de dados MySQL e MySQL.
Descrição
Use o parâmetro DDL para:
-
ativar o suporte a
DDL -
operações filter
DDL -
configurar uma ação de processamento com base em um registro
DDL
Quando usado sem opções, o parâmetro DDL não executa filtragem e faz com que todas as operações DDL sejam propagadas da seguinte forma:
-
Como parâmetro Extract, ele captura todas as operações
DDLsuportadas que são geradas em todos os objetos de banco de dados suportados e as envia para a trilha. -
Como parâmetro de Replicat, ele replica todas as operações
DDLda trilha do Oracle GoldenGate e as aplica ao destino. É o mesmo que o comportamento padrão sem esse parâmetro.
Quando usado com opções, o parâmetro DDL atua como um agente de filtragem para incluir ou excluir operações DDL com base em:
-
escopo
-
tipo de objeto
-
tipo da operação
-
nome do objeto
-
strings na sintaxe ou nos comentários do comando
DDL, ou ambos
Somente um parâmetro DDL pode ser usado em um arquivo de parâmetros, mas você pode combinar várias opções de inclusão e exclusão para filtrar o DDL para o nível necessário.
-
As opções de filtragem do parâmetro
DDLsão válidas para um Extract principal que é capturado da origem da transação, mas não para um Extract de data-pump. -
Quando combinadas, várias especificações de opção de filtro são vinculadas logicamente como instruções
AND. -
Todos os critérios de filtro especificados com várias opções devem ser atendidos para que uma instrução
DDLseja replicada. -
Ao usar critérios de filtragem complexos em uma instrução de parâmetro
DDL, é recomendável testar a configuração em um ambiente de teste antes de usá-la na produção. -
Consulte Exemplo 1, "Exemplo" para obter mais informações.
Observação: Não use o parâmetro DDL para um data pump de Extração. Esses tipos de processo não permitem o mapeamento ou a conversão de DDL e propagarão registros DDL automaticamente no modo de passagem. O DDL executado em uma tabela de origem (por exemplo, ALTER TABLE TableA...) será aplicado pelo Replicat com o mesmo nome de tabela (ALTER TABLE TableA). Não é possível mapeá-lo como ALTER TABLE TableB.
Para obter informações adicionais sobre como usar o suporte ao Oracle GoldenGate DDL, consulte Oracle: DDL Replication e MySQL: DDL Replication na Documentação de Microsserviços do Oracle GoldenGate.
Sintaxe
DDL [
{AUTOSCHEMA}
{INCLUDE | EXCLUDE}
[, ALLOWEMPTYOBJECT]
[, ALLOWEMPTYOWNER]
[, MAPPED | UNMAPPED | OTHER | ALL]
[, OPTYPE <type>]
[, OBJTYPE '<type>']
[, OBJNAME <name>]
[, INSTR '<string>']
[, INSTRWORDS '<word_list>']
[, INSTRCOMMENTS '<comment_string>']
[, INSTRCOMMENTSWORDS '<word_list>']
[, SOURCECATALOG <catalog> | ALLCATALOGS]
[, STAYMETADATA]
[, EVENTACTIONS (<action>)]
]
[...]
AUTOSCHEMA
Válido para Replicação em MySQL para Oracle, Oracle para MySQL e MySQL para MySQL replicação de dados.
A opção de parâmetro DDL AUTOSCHEMA é usada para ativar a funcionalidade de evolução automática do esquema. Por padrão, esta opção está desativada.
Sintaxe
DDL AUTOSCHEMA
Somente as operações DDL MAPPED são relevantes para a Automatic Schema Evolution. Portanto, os nomes de objeto especificados como parte da cláusula OBJNAME nos critérios de inclusão/exclusão devem corresponder aos nomes de tabela de destino (e não aos nomes de tabela de origem).
Ao usar OBJNAME com MAPPED em um arquivo de parâmetros de Replicat, o valor de OBJNAME deve fazer referência ao nome especificado com a cláusula TARGET da instrução MAP.
Para obter detalhes, consulte Usando a Evolução Automática do Esquema
INCLUDE | EXCLUDE
DDL Opções de Filtragem
As opções de sintaxe a seguir permitem filtragem e operação no DDL que é replicado pelo Oracle GoldenGate. Essas opções se aplicam às cláusulas INCLUDE e EXCLUDE do parâmetro DDL e a outros parâmetros que suportam a replicação DDL.
Use INCLUDE ou EXCLUDE para identificar o início de uma cláusula de inclusão ou exclusão.
-
Uma cláusula de inclusão contém critérios de filtragem que identificam o
DDLque esse parâmetro afetará. -
Uma cláusula de exclusão contém critérios de filtragem que excluem
DDLespecífico desse parâmetro.
A cláusula de inclusão ou exclusão deve consistir na palavra-chave INCLUDE ou EXCLUDE seguida por qualquer combinação válida das outras opções de filtragem do parâmetro DDL.
Se você usar EXCLUDE, deverá criar uma cláusula INCLUDE correspondente. Por exemplo, as seguintes informações são inválidas
DDL EXCLUDE OBJNAME "hr".*
No entanto, você pode usar uma das seguintes opções:
DDL INCLUDE ALL, EXCLUDE OBJNAME "hr"."*"
DDL INCLUDE OBJNAME fin.* EXCLUDE OBJNAME "fin.ss"
Uma EXCLUDE tem prioridade sobre qualquer INCLUDEs que contenha os mesmos critérios. É possível usar várias cláusulas de inclusão e exclusão.
Não inclua objetos DDL instalados do Oracle GoldenGate em um parâmetro DDL, em um parâmetro TABLE, em um parâmetro MAP, nem em um parâmetro TABLEEXCLUDE ou MAPEXCLUDE. Certifique-se de que as especificações curinga nesses parâmetros não incluam objetos DDL instalados pelo Oracle GoldenGate. Esses objetos não devem fazer parte da configuração do Oracle GoldenGate, mas o processo Extract deve estar ciente das operações neles. É por isso que você não deve excluí-los explicitamente da configuração com uma instrução de parâmetro EXCLUDE, TABLEEXCLUDE ou MAPEXCLUDE.
ALLOWEMPTYOBJECT
Use ALLOWEMPTYOBJECT para permitir que uma especificação OBJNAME processe DDL que não contenha nome de objeto. Por exemplo:
DDL INCLUDE OBJNAME sch.* ALLOWEMPTYOBJECT
ALLOWEMPTYOWNER
Use ALLOWEMPTYOWNER para permitir que uma especificação OBJNAME processe DDL que não contenha nome de proprietário. Por exemplo:
DDL INCLUDE OBJNAME pdb.sch.* ALLOWEMPTYOWNER
EVENTACTIONS (action)
Faz com que o processo Extract ou Replicat execute uma ação definida com base em um registro DDL no log ou na trilha de transações, conhecido como registro de evento. O evento DDL será acionado se o registro DDL estiver qualificado para ser gravado na trilha pelo Extract ou por um data pump, ou para ser executado pelo Replicat, conforme determinado pelas outras opções de filtragem do parâmetro DDL. Você pode usar este sistema para personalizar o processamento com base em eventos de banco de dados.
Para <action>, consulte EVENTACTIONS em MAP e TABLE parâmetros.
Diretrizes para usar EVENTACTIONS em registros DDL:
-
CHECKPOINTBEFORE: Como cada registroDDLé autônomo, o registroDDLé garantido para ser o início de uma transação; portanto, a ação do eventoCHECKPOINT BEFOREestá implícita para um registroDDL. -
IGNORE: Esta opção não é válida para registrosDDL. Como as operaçõesDDLsão autônomas, ignorar um registro equivale a ignorar toda a transação.
EVENTACTIONS não suporta os seguintes objetos DDL porque eles são objetos derivados:
-
índices
-
Acionadores
-
sinônimos
-
RENAMEem uma tabela eALTER TABLE RENAME
MAPPED | UNMAPPED | OTHER | ALL
Use MAPPED, UNMAPPED, OTHER e ALL para aplicar INCLUDE ou EXCLUDE com base no escopo da operação DDL.
-
MAPPEDaplica operaçõesINCLUDEouEXCLUDEaDDLque são de escopoMAPPED. A filtragemMAPPEDé executada antes da filtragem especificada com outras opções de parâmetroDDL. -
UNMAPPEDaplica operaçõesINCLUDEouEXCLUDEaDDLque são de escopoUNMAPPED. -
OTHERaplica operaçõesINCLUDEouEXCLUDEaDDLque são de escopoOTHER. -
ALLaplicaINCLUDEouEXCLUDEa operaçõesDDLde todos os escopos.
DDL EXCLUDE ALL é uma opção de processamento especial que mantém metadados de objeto atualizados para o Oracle GoldenGate, enquanto bloqueia a replicação das próprias operações DDL. Você pode usar DDL EXCLUDE ALL ao usar um método diferente do Oracle GoldenGate para aplicar DDL ao destino, mas deseja que o Oracle GoldenGate replique alterações de dados nos objetos de destino. Ele fornece os metadados atuais para o Oracle GoldenGate à medida que os objetos são alterados, evitando a necessidade de interromper e iniciar os processos do Oracle GoldenGate. As seguintes condições especiais aplicam-se a DDL EXCLUDE ALL:
-
DDL EXCLUDE ALLnão requer o uso de uma cláusulaINCLUDE. -
Ao usar
DDL EXCLUDE ALL, você pode definir o parâmetroWILDCARDRESOLVEcomoIMMEDIATEpara permitir a resolução imediata deDML, se necessário.
OBJNAME name
Use OBJNAME para aplicar INCLUDE ou EXCLUDE ao nome totalmente qualificado de um objeto. Para especificar nomes e curingas de objetos de duas e três partes corretamente, consulte Usando Curingas em Argumentos de Comando.
Coloque nomes de objetos com distinção entre maiúsculas e minúsculas dentro de aspas duplas.
Exemplo sem distinção entre maiúsculas e minúsculas:
DDL INCLUDE OBJNAME accounts.*
Exemplo que distingue maiúsculas de minúsculas:
DDL INCLUDE OBJNAME accounts."cust"
Não use OBJNAME para o objeto USER da Oracle, porque OBJNAME espera <owner.object> ou <container.owner.object>, enquanto USER só tem um esquema.
Ao usar OBJNAME com MAPPED em um arquivo de parâmetros de Replicat, o valor de OBJNAME deve fazer referência ao nome especificado com a cláusula TARGET da instrução MAP. Por exemplo, dado o seguinte comando MAP, o valor correto é OBJNAME fin2.*.
MAP fin.exp_*, TARGET fin2.*;
No exemplo a seguir, uma instrução CREATE TABLE é executada da seguinte forma no <source>:
CREATE TABLE fin.exp_phone;
Essa mesma instrução é executada da seguinte maneira no destino:
CREATE TABLE fin2.exp_phone;
Se um proprietário de destino não for especificado na instrução MAP, o Replicat a mapeará para o usuário do banco de dados especificado com o parâmetro USERIDALIAS.
Para DDL que cria objetos derivados, como um trigger, o valor de OBJNAME deve ser o nome do objeto base, não o nome do objeto derivado.
Por exemplo, para incluir a instrução DDL a seguir, o valor correto é hr.accounts, não hr.insert_trig.
CREATE TRIGGER hr.insert_trig ON hr.accounts;
Para operações RENAME, o valor de OBJNAME deve ser o novo nome da tabela. Por exemplo, para incluir a instrução DDL a seguir, o valor correto é hr.acct.
ALTER TABLE hr.accounts RENAME TO acct;
OBJTYPE <type>
Use OBJTYPE para aplicar INCLUDE ou EXCLUDE a um tipo específico de objeto de banco de dados. Para <type>, use qualquer tipo de objeto que seja válido para o banco de dados, como TABLE, INDEX e TRIGGER. Para uma view materializada da Oracle e um log de views materializadas, os tipos corretos são snapshot e snapshot log, respectivamente. Coloque o nome do tipo de objeto entre aspas simples. Por exemplo:
DDL INCLUDE OBJTYPE 'INDEX'
DDL INCLUDE OBJTYPE 'SNAPSHOT'
Para o tipo de objeto Oracle USER, não use a opção OBJNAME, porque OBJNAME espera owner.object ou <container.owner.object>, enquanto USER só tem um esquema.
OPTYPE <type>
Use OPTYPE para aplicar INCLUDE ou EXCLUDE a um tipo específico de operação DDL, como CREATE, ALTER e RENAME. Para <type>, use qualquer comando DDL válido para o banco de dados. Por exemplo, para incluir operações ALTER, a sintaxe correta é:
DDL INCLUDE OPTYPE ALTER
INSTR string
Use INSTR para aplicar INCLUDE ou EXCLUDE a instruções DDL que contenham uma string de caracteres específica na própria sintaxe de comando, mas não nos comentários. Por exemplo, o seguinte exclui DDL que cria um índice.
DDL INCLUDE ALL EXCLUDE INSTR 'CREATE INDEX'
Coloque a string entre aspas simples. A pesquisa de string não faz distinção entre maiúsculas e minúsculas.
INSTR não suporta aspas simples (' ') que estão dentro da string, nem suporta valores NULL.
INSTRCOMMENTS comment_string
(Válido para Oracle) Use INSTRCOMMENTS para aplicar instruções INCLUDE ou EXCLUDE a DDL que contenham uma string de caracteres específica em um comentário, mas não no próprio comando DDL. Usando INSTRCOMMENTS, você pode usar comentários como agente de filtragem.
Por exemplo, o seguinte exclui instruções DDL que incluem a string 'somente origem' nos comentários.
DDL INCLUDE ALL EXCLUDE INSTRCOMMENTS 'SOURCE ONLY'
Neste exemplo, instruções DDL, como as seguintes, não são replicadas.
CREATE USER john IDENTIFIED BY john /<source only>/;
Coloque a string entre aspas simples. A pesquisa de string não faz distinção entre maiúsculas e minúsculas. Você pode combinar INSTR e INSTRCOMMENTS para filtrar em uma string na sintaxe de comando e nos comentários da mesma instrução DDL.
INSTRCOMMENTS não suporta aspas simples (' ') que estão dentro da string, nem suporta valores NULL.
INSTRWORDS word_list
Use INSTRWORDS para aplicar INCLUDE ou EXCLUDE a instruções DDL que contenham as palavras especificadas.
Para <word_list>, forneça as palavras em qualquer ordem, entre aspas simples. Para incluir espaços, coloque o espaço (e a palavra, se aplicável) entre aspas duplas. Aspas duplas também podem ser usadas para colocar frases entre elas.
Todas as palavras especificadas devem estar presentes no DDL para que o INSTRWORDS entre em vigor.
Exemplo:
DDL INCLUDE OPTYPE ALTER OBJTEYP 'TABLE' INSTRWORDS 'ALTER CONSTRAINT " xyz"'
Este exemplo corresponde às seguintes instruções DDL:
ALTER TABLE ADD CONSTRAINT xyz CHECK
ALTER TABLE DROP CONSTRAINT xyz
INSTRWORDS não suporta aspas simples (' ') que estão dentro da string, nem suporta valores NULL.
INSTRCOMMENTSWORDS word_list
(Válido para Oracle) Funciona da mesma forma que INSTRWORDS, mas só se aplica a comentários em uma instrução DDL, não à própria sintaxe DDL. Usando INSTRCOMMENTS, você pode usar comentários como agente de filtragem.
INSTRCOMMENTSWORDS não suporta aspas simples (' ') que estão dentro da string, nem suporta valores NULL.
Você pode combinar INSTRWORDS e INSTRCOMMENTSWORDS para filtrar em uma string na sintaxe de comando e nos comentários da mesma instrução DDL.
SOURCECATALOG catalog | ALLCATALOGS
Use essas opções para especificar como os nomes de objetos não qualificados em uma cláusula OBJNAME são resolvidos para o contêiner correto. Use essas opções quando o banco de dados de origem for um banco de dados contêiner Oracle.
SOURCECATALOG especifica um contêiner padrão para todos os nomes de objetos especificados na mesma cláusula INCLUDE ou EXCLUDE. Para entrar em vigor, SOURCECATALOG deve ser especificado antes da especificação OBJNAME. Consulte "SOURCECATALOG" para obter mais informações, incluindo o uso de instruções que contêm nomes de duas partes, em que nomes de objetos de três partes são necessários para identificar totalmente um objeto.
ALLCATALOGS especifica que todos os contêineres do banco de dados devem ser considerados ao resolver nomes de objetos especificados na mesma cláusula INCLUDE ou EXCLUDE. ALLCATALOGS pode ser colocado antes ou depois da especificação OBJNAME.
Segue-se a ordem de precedência que é dada quando há diferentes especificações de catálogo em um arquivo de parâmetros:
-
ALLCATALOGSem uma cláusulaINCLUDEouEXCLUDEsubstitui todas as especificaçõesSOURCECATALOGna cláusulaINCLUDEouEXCLUDEe na raiz do arquivo de parâmetros, e substitui a especificação de contêiner de um nome de objeto totalmente qualificado na cláusulaOBJNAME. -
Uma especificação de catálogo explícita na cláusula
OBJNAMEsubstitui todas as instâncias deSOURCECATALOG(mas não deALLCATALOGS). -
SOURCECATALOGem uma cláusulaINCLUDEouEXCLUDEsubstitui o parâmetroSOURCECATALOGglobal especificado na raiz da instruçãoTABLEouMAP. -
O parâmetro
SOURCECATALOGglobal entrará em vigor para qualquer nome de objeto não qualificado nas cláusulasOBJNAMEse a cláusulaINCLUDEouEXCLUDEnão especificarSOURCECATALOGouALLCATALOGS. -
Na ausência de qualquer um dos parâmetros anteriores, todos os catálogos são considerados.
STAYMETADATA
(Válido para Oracle). Impede que os metadados sejam capturados pelo Extract ou aplicados pelo Replicat.
Quando o Extract encontra pela primeira vez DML em uma tabela, ele recupera os metadados dessa tabela. Quando DDL é encontrado nessa tabela, os metadados antigos são invalidados. O próximo DML nessa tabela é correspondido aos novos metadados para que a estrutura da tabela de destino esteja sempre atualizada com a da origem.
No entanto, se você souber que uma operação DDL específica não afetará os metadados da tabela, poderá usar STAYMETADATA para que os metadados atuais não sejam recuperados ou replicados. Essa é uma melhoria de desempenho que tem benefícios para operações como importações e exportações, em que DDL como truncamentos e a desativação de restrições geralmente são executados. Essas operações não afetam a estrutura da tabela, pois se relacionam à integridade da replicação de dados subsequente, para que possam ser ignoradas nesses casos. Por exemplo, ALTER TABLE ADD FOREIGN KEY não afeta os metadados da tabela.
Um exemplo de como isso pode ser aplicado seletivamente é o seguinte:
DDL INCLUDE ALL INCLUDE STAYMETADATA OBJNAME xyz
Este exemplo indica que todos os DDL devem ser incluídos para replicação, mas somente DDL que opera no objeto xyz estará sujeito a STAYMETADATA.
O STAYMETADATA também pode ser usado da mesma forma em uma cláusula EXCLUDE.
O STAYMETADATA deve ser usado da mesma forma na origem e no destino para garantir a integridade dos metadados.
Quando o STAYMETADATA está em uso, uma mensagem é adicionada ao arquivo de relatório. O relatório DDL é controlado pelo parâmetro DDLOPTIONS com a opção REPORT.
Essa mesma funcionalidade pode ser aplicada globalmente a todos os DDL que ocorrem na origem usando os scripts @ddl_staymetadata:
-
O
@ddl_staymetadata_ondesativa globalmente o controle de versão de metadados. -
O
@ddl_staymetadata_offativa globalmente o controle de versão de metadados novamente.
Essa opção deve ser usada com a assistência da equipe de suporte técnico do Oracle GoldenGate, pois pode nem sempre ser aparente qual DDL afeta os metadados do objeto. Se usado incorretamente, ele poderá comprometer a integridade do ambiente de replicação.
Exemplos
Veja a seguir alguns exemplos de diferentes casos de uso:
Exemplo 1: Usando DDL AUTOSCHEMA
-
Exemplo A:
Para ativar o
AUTOSCHEMAem todas as tabelas no esquema de origematssrce no esquema de destinoatstgt:DDL AUTOSCHEMA INCLUDE ALL MAP atssrc.*, TARGET atstgt.*; -
Exemplo B:
A filtragem (semelhante à mostrada no Exemplo 1) também pode ser ativada com base em tipos de DDL, usando a cláusula DDL AUTOSCHEMA INCLUDE/EXCLUDE OPTYPE.
Por exemplo, para ativar AUTOSCHEMA para o esquema hr, mas excluir o esquema finance, use o seguinte script:
DDL AUTOSCHEMA &
INCLUDE OBJNAME hr.* &
EXCLUDE OBJNAME finance.*
MAP hr.*, TARGET hr.*;
MAP finance.*, TARGET finance.*;
-
Exemplo C:
Para ativar o
AUTOSCHEMApara todas as tabelas e usar umTYPEMAPpersonalizado para usar umbigintna tabela de destino para todas as colunas de tipointde origem aplicáveis a todas as tabelas.DDL AUTOSCHEMA INCLUDE ALL AUTOSCHEMAOPTIONS TYPEMAP 'int'= 'bigint' MAP atssrc.*, TARGET atstgt.tgt_* -
Exemplo D:
Para ativar
AUTOSCHEMApara todas as tabelas e usar umTYPEMAPpersonalizado para usar umbigintna tabela de destino para todas as colunas do tipointde origem aplicáveis a todas as tabelas, mas para usarsmallintcomo o tipo de coluna de destino para o tipointde origem todas as tabelas sob o esquema financeiro.DDL AUTOSCHEMA INCLUDE ALL AUTOSCHEMAOPTIONS TYPEMAP 'int'= 'bigint' MAP hr.*, TARGET hr.*; MAP finance.*, TARGET finance.*, AUTOSCHEMAOPTIONS (TYPEMAP 'smallint'='bigint');<–>
Exemplo 2: Combinando Opções de Parâmetro DDL
Veja a seguir um exemplo de como combinar as opções do parâmetro DDL.
DDL &
INCLUDE UNMAPPED &
OPTYPE alter &
OBJTYPE 'table' &
OBJNAME users.tab* &
INCLUDE MAPPED OBJNAME * &
EXCLUDE MAPPED OBJNAME temporary.tab
Os critérios de filtro combinados nesta instrução especificam o seguinte:
-
INCLUDEtodas as instruçõesALTER TABLEpara tabelas não mapeadas com uma instruçãoTABLEouMAP(escopoUNMAPPED), mas somente se essas tabelas forem de propriedade deuserse seus nomes começarem comtab, -
INCLUDEtodos os tipos de operaçãoDDLpara todas as tabelas que são mapeadas com uma instruçãoTABLEouMAP(escopoMAPPED), -
EXCLUDEtodos os tipos de operaçãoDDLpara todas as tabelas que sãoMAPPEDno escopo, mas somente se essas tabelas forem de propriedade detemporarye somente se seus nomes começarem comtab.
Exemplo 3: Incluindo uma Ação de Evento
O exemplo a seguir especifica uma ação de evento de REPORT para todos os registros DDL.
DDL INCLUDE ALL EVENTACTIONS (REPORT)
Exemplo 4: Usando uma Ação de Evento em um Subconjunto de DDL
O exemplo a seguir mostra como o EVENTACTIONS pode ser usado em um subconjunto do DDL. Todos os DDL devem ser replicados, mas somente o DDL executado em objetos explicitamente nomeados se qualifica para acionar as ações de evento de REPORT e LOG.
DDL INCLUDE ALL &
INCLUDE OBJNAME sales.t* EVENTACTIONS (REPORT) &
INCLUDE OBJNAME fin.my_tab EVENTACTIONS (LOG INFO)
Exemplo 5: Diferentes maneiras de especificar nomes <catalog> para DDL emitidos em objetos em um banco de dados contêiner Oracle <source>
O exemplo a seguir demonstra as diferentes maneiras de especificar nomes de catálogo para DDL que são emitidos em objetos em um banco de dados contêiner Oracle de origem.
- O seguinte inclui
pdb1.sch1.obj1epdb2.sch2.obj2para processamento deDDL.
SOURCECATALOG pdb1
DDL INCLUDE OBJNAME sch1.obj1 INCLUDE SOURCECATALOG pdb2 OBJNAME sch2.obj2
- O seguinte inclui todos os objetos com o nome
sch.objem qualquer catálogo para processamentoDDL.
DDL INCLUDE ALLCATALOGS OBJNAME sch.obj
- O seguinte inclui todos os objetos com o nome
sch.objem qualquer catálogo para processamentoDDL, porqueALLCATALOGSsubstitui qualquer outra especificação de catálogo.
DDL INCLUDE ALLCATALOGS OBJNAME pdb.sch.obj
Exemplo 6: mostra o uso combinado de ALLOWEMPTYOBJECT e ALLOWEMPTYOWNER
A seguir, mostra o uso combinado de ALLOWEMPTYOBJECT e ALLOWEMPTYOWNER.
DDL INCLUDE pdb.*.* ALLOWEMPTYOWNER ALLOWEMPTYOBJECT