Detalhes do Suporte para Objetos e Operações no Oracle DDL
Saiba mais sobre os objetos e as operações do Oracle que o Oracle GoldenGate suporta para a captura e replicação de operações DDL.
Objetos e Operações Suportados no Oracle DDL
O suporte à captura de DDL é integrado ao servidor de logmining do banco de dados. Defina a compatibilidade do parâmetro de banco de dados como 11.2.0.4.0 ou superior. O Extract suporta DDL que inclui criptografia de coluna baseada em senha, como:
-
CREATE TABLE t1 (a number, b varchar2(32) ENCRYPT IDENTIFIED BY my_password); -
ALTER TABLE t1 ADD COLUMN c varchar2(64) ENCRYPT IDENTIFIED BY my_password;
As instruções adicionais a seguir se aplicam ao processo Extract com relação ao suporte a DDL.
-
Todas as configurações de topologia do Oracle GoldenGate são suportadas para a replicação de DDL do Oracle.
-
Há suporte para a replicação ativo-ativo (bidirecional) do Oracle DDL entre dois (e apenas dois) bancos de dados que contêm metadados idênticos.
-
O Oracle GoldenGate suporta DDL nos seguintes objetos:
-
clusters
-
diretórios
-
funções
-
índices
-
embalagens
-
procedimento
-
tabelas
-
tablespaces
-
funções
-
sequências
-
sinônimos
-
Acionadores
-
tipos
-
visualizações
-
views materializadas
-
usuários
-
colunas invisíveis
-
-
A replicação do banco de dados EBR (Oracle Edition-Based Redefinition) do Oracle DDL é suportada pelo Extract para os seguintes objetos do Oracle AI Database:
-
funções
-
biblioteca
-
pacotes (especificação e corpo)
-
procedimento
-
sinônimos
-
tipos (especificação e corpo)
-
visualizações
-
-
A partir do Oracle GoldenGate 21c, serão fornecidos suporte à replicação de DDLs maiores que 4 MB.
-
De Oracle GoldenGate 23ai em diante, os domínios SQL são suportados.
-
O Oracle GoldenGate será capaz de gerenciar tabelas com 4000 colunas se o tamanho da linha for menor que 4 MB.
-
O Oracle GoldenGate oferece suporte a operações DDL GTT (Global Temporary Tables) que ficam visíveis para o processo Extract para que possam ser replicadas. Defina o parâmetro
DDLOPTIONSpara ativar esta operação porque ele não está definido por padrão. -
O Oracle GoldenGate suporta dicionário para uso com
NOUSERIDeTRANLOGOPTIONS GETCTASDML. Isso significa que o Extract recebe metadados de objeto do dicionário LogMiner sem consultar os objetos de dicionário. O Oracle GoldenGate usa o dicionário automaticamente quando o parâmetro de compatibilidade do banco de dados de origem é maior ou igual a 11.2.0.4.Ao usar o formato de dicionário e trilha no Oracle GoldenGate release 12.2.x, o Extract exigirá que o patch do Logminer seja aplicado no banco de dados de mining se a release do Oracle Database for anterior a 12.1.0.2.
-
O Oracle GoldenGate suporta a replicação de colunas invisíveis no Extract. A versão 12.2 do formato de trilha é obrigatória. O Replicat deve especificar o parâmetro
MAPINVISIBLECOLUMNSou mapear explicitamente para colunas invisíveis na cláusulaCOLMAPdo parâmetroMAP.Se
SOURCEDEFSouTARGETDEFSfor usado, o formato de metadados de um arquivo de definição para tabelas Oracle deverá ser compatível com o formato de trilha. O formato de metadados 12.2 é compatível com o formato de trilha 12.2 e o formato de metadados anterior à 12.2 é compatível com o formato de trilha anterior à 12.2. Para especificar o formato de metadados de um arquivo de definição, use a opçãoFORMAT RELEASEdo parâmetroDEFSFILEquando o arquivo de definição for gerado noDEFGEN. -
As instruções DDL para criar um contexto de namespace (
CREATE CONTEXT) são capturadas pelo Extract e aplicadas pelo Replicat. -
O Extract no modo pump suporta as seguintes opções de DDL:
-
DDL INCLUDE ALL -
DDL EXCLUDE ALL -
DDL EXCLUDE OBJNAME
A opção
SOURCECATALOGeALLCATALOGdeDDL EXCLUDEtambém é suportada.Se nenhum parâmetro DDL for especificado, todas as DDLs serão gravadas na trilha. Se
DDL EXCLUDE OBJNAMEfor especificado e o proprietário do objeto não corresponder a uma regra de exclusão, ele será gravado na trilha. -
-
A partir do banco de dados Oracle 21c, a DDL a seguir está disponível para suportar o bloqueio de alterações de DML/DDL que não são replicadas pelo Oracle GoldenGate:
ALTER DATABASE [ENABLE | DISABLE] goldengate blocking mode;Quando o modo de bloqueio do Oracle GoldenGate estiver ativado, os DMLs que usam
support_mode NONEem tabelas e executam instruções Oracle PL/SQL não suportadas falharão com o seguinte erro:ORA-26981: "operation was unsupported during Oracle GoldenGate blocking mode"Para o banco de dados Oracle 21c, os seguintes recursos fazem com que uma tabela tenha
support_mode NONEno Oracle GoldenGate:-
BFILEcomo um atributo da coluna ADT ou tabela digitada -
Tabela sem escalares
-
Tabela AW$ OLAP
-
Tabela de filas fragmentadas
-
Tabela de Clusters de Hash Classificados
-
Restrição de chave primária no atributo ADT na tabela relacional
-
Restrição de chave primária/chave exclusiva em
raw/varcharlongo (mais de 4000 bytes) -
A coluna
V$DATABASE,Goldengate_Blocking_Mode, pode ser consultada para determinar o status do modo de bloqueio atual.
-
-
Para o modo de captura automática de DDL:
-
Só é relevante para
DDL INCLUDE MAPPEDporque o Extract captura DDLs com base no parâmetroTABLEeTABLEEXCLUDE. -
Somente DDLs relacionadas à tabela podem ser capturadas automaticamente.
-
DDLs para ativar a captura automática no nível da tabela:
CREATE/ALTER TABLE ... ENABLE LOGICAL REPLICATION ALLKEYS;
ou
<pre class="copy"><code>CREATE/ALTER TABLE ... ENABLE LOGICAL REPLICATION ALLOW NOVALIDATE KEYS;</code></pre>Consulte Como Capturar Log Complementar para Oracle GoldenGate no guia Oracle AI Database Utilities.
-
-
As operações a seguir são suportadas para DDLs e operações de manutenção de partição relacionadas
- Eliminar partição:
Se uma partição for recriada com o mesmo nome, ela receberá um novo número de objeto. Os caches internos são limpos para minimizar o consumo de espaço quando uma DDL de partição de eliminação é processada.
- Truncar partição:
O nome da partição e o número do objeto permanecem os mesmos. A versão do objeto da tabela base permanece a mesma.
- Renomear partição:
O número do objeto da partição permanece o mesmo, mas recebe um novo nome. A versão do objeto da tabela base é preenchida. O cache do nome da memória será invalidado ao ver esse DDL e preenchido novamente no próximo DML. O cache, que armazena se um determinado número de objeto de partição é interessante ou não, também precisará ser reavaliado como um novo nome de partição pode alternar de filtrado para não filtrado ou vice-versa.
- Partição de intercâmbio:
Troca dados em uma partição com os dados em uma tabela ou vice-versa. O obj# da partição que está sendo trocada não muda. Dataobj# é alterado, mas não é usado pelo Extract. A própria partição ainda pertence à mesma tabela.
- Intercalar partição:
Mescla uma ou mais partições em uma nova partição. A DDL cria a nova partição e elimina as partições das quais ela foi mesclada. Em caches de memória devem ser limpos para economizar espaço e o usuário deve garantir regras de filtro adequadas para a partição recém-criada.
- Dividir partição:
A partição que está sendo dividida mantém seu nome original e número de objeto e a nova partição é criada para os dados divididos. O usuário deve garantir que as regras de filtro de partição estejam corretas para a partição recém-criada.
- Partição de coalescimento:
Reduz o número de partições em uma tabela de particionamento por hash. A partição específica que é agrupada é selecionada pelo banco de dados e é eliminada após seu conteúdo ter sido redistribuído. As partições restantes mantêm seu mesmo nome e número de objeto. Os caches internos devem ser limpos para minimizar o consumo de espaço.
- Modificar partição:
Modifica atributos padrão e reais de partições, além de adicionar ou eliminar valores para partições de lista. Todas as modificações deixam o nome das partições e o número do objeto intactos.
- Mover partição:
Os dados da partição são movidos para um novo tablespace. O nome e o número da partição permanecem os mesmos.
- Tabela Redef:
dbms_redefinitionpode ser usado para particionar uma tabela através do uso de uma tabela provisória. As partições são criadas na tabela provisória e, após a operaçãofinish_redef, as tabelas trocam nomes. As partições criadas na tabela provisória mantêm seus nomes e números de objeto quando as tabelas são trocadas. O cache do filtro Extract precisa ser reavaliado emfinish_redef, pois as partições agora pertencem à tabela base. O usuário deve garantir as regras de filtro adequadas.- Partição de recife:
Ao redefinir uma tabela, as partições seguem da tabela original para a tabela provisória. Por exemplo, considere o caso em que a tabela original tem partições, que vivem no tablespace
USER, e a tabela provisória é criada sem partições e a tabela vive no tablespaceNEW. Nesse caso, após a operaçãofinish_redef, quando as tabelas são trocadas, a partição ainda permanece no tablespaceUSER. A partição Redef permite que uma partição seja movida para o tablespaceNEWda tabela provisória. A partição mantém seu nome e número de objeto.- Nomes de partição gerados pelo sistema:
Quando partições são criadas automaticamente para partições de hash e operações, como partição de divisão, o nome da partição está no formato
SYS_P sequence value. Da mesma forma, as subpartições são no formatoSYS_SUBP sequence value. Recomenda-se que a partição seja renomeada antes, exceto DML, para estar em conformidade com as regras de filtro.
Objetos e Operações Não Suportados no Oracle DDL
Veja a seguir uma lista de objetos e operações não suportados no Oracle DDL.
Objetos Excluídos
Os nomes ou prefixos de nome a seguir são considerados reservados pela Oracle e devem ser excluídos da configuração de DDL do Oracle GoldenGate. O Oracle GoldenGate ignorará os objetos que contêm esses nomes.
Esquemas excluídos:
"ANONYMOUS", // HTTP access to XDB
"APPQOSSYS", // QOS system user
"AUDSYS", // audit super user
"BI", // Business Intelligence
"CTXSYS", // Text
"DBSNMP", // SNMP agent for OEM
"DIP", // Directory Integration Platform
"DMSYS", // Data Mining
"DVF", // Database Vault
"DVSYS", // Database Vault
"EXDSYS", // External ODCI System User
"EXFSYS", // Expression Filter
"GSMADMIN_INTERNAL", // Global Service Manager
"GSMCATUSER", // Global Service Manager
"GSMUSER", // Global Service Manager
"LBACSYS", // Label Security
"MDSYS", // Spatial
"MGMT_VIEW", // OEM Database Control
"MDDATA",
"MTSSYS", // MS Transaction Server
"ODM", // Data Mining
"ODM_MTR", // Data Mining Repository
"OJVMSYS", // Java Policy SRO Schema
"OLAPSYS", // OLAP catalogs
"ORACLE_OCM", // Oracle Configuration Manager User
"ORDDATA", // Intermedia
"ORDPLUGINS", // Intermedia
"ORDSYS", // Intermedia
"OUTLN", // Outlines (Plan Stability)
"SI_INFORMTN_SCHEMA", // SQL/MM Still Image
"SPATIAL_CSW_ADMIN", // Spatial Catalog Services for Web
"SPATIAL_CSW_ADMIN_USR",
"SPATIAL_WFS_ADMIN", // Spatial Web Feature Service
"SPATIAL_WFS_ADMIN_USR",
"SYS",
"SYSBACKUP",
"SYSDG",
"SYSKM",
"SYSMAN", // Adminstrator OEM
"SYSTEM",
"TSMSYS", // Transparent Session Migration
"WKPROXY", // Ultrasearch
"WKSYS", // Ultrasearch
"WK_TEST",
"WMSYS", // Workspace Manager
"XDB", // XML DB
"XS$NULL",
"XTISYS", // Time Index
Esquemas especiais:
"AURORA$JIS$UTILITY$", // JSERV
"AURORA$ORB$UNAUTHENTICATED", // JSERV
"DSSYS", // Dynamic Services Secured Web Service
"OSE$HTTP$ADMIN", // JSERV
"PERFSTAT", // STATSPACK
"REPADMIN",
"TRACESVR" // Trace server for OEM
Tabelas excluídas (o curinga * indica qualquer esquema ou caractere):
"*.AQ$*", // advanced queues
"*.DR$*$*", // oracle text
"*.M*_*$$", // Spatial index
"*.MLOG$*", // materialized views
"*.OGGQT$*",
"*.OGG$*", // AQ OGG queue table
"*.ET$*", // Data Pump external tables
"*.RUPD$*", // materialized views
"*.SYS_C*", // constraints
"*.MDR*_*$", // Spatial Sequence and Table
"*.SYS_IMPORT_TABLE*",
"*.SYS_EXPORT_TABLE*",
"*.CMP*$*", // space management, rdbms >= 12.1
"*.DBMS_TABCOMP_TEMP_*", // space management, rdbms < 12.1
"*.MDXT_*$*" // Spatial extended statistics tables
Outra DDL não suportada
O Oracle GoldenGate não suporta o seguinte:
-
DDL em tabelas aninhadas.
-
DDL em colunas de identidade.
-
ALTER DATABASEeALTER SYSTEM(estes não são considerados DDL) Usando dicionário, você pode replicarALTER DATABASE DEFAULT EDITIONeALTER PLUGGABLE DATABASE DEFAULT EDITION. Todos os outros comandosALTER [PLUGABLE] DATABASEsão ignorados. -
DDL em um banco de dados stand-by.
-
DDL de link de banco de dados.
-
DDL que cria tabelas com a cláusula
FLASHBACK ARCHIVEe DDL que cria, altera ou exclui o próprio arquivo de dados de flashback. Há suporte para DML em tabelas comFLASHBACK ARCHIVE. -
Algumas DDL gerarão nomes de objetos gerados pelo sistema. Os nomes dos objetos gerados pelo sistema podem nem sempre ser os mesmos entre dois bancos de dados diferentes. Assim, as operações DDL em objetos com nomes gerados pelo sistema só deverão ser realizadas se o nome for exatamente o mesmo no destino.