Detalles de Soporte de Objetos y Operaciones en Oracle DDL
Obtenga información sobre los objetos y las operaciones de Oracle que soporta Oracle GoldenGate para la captura y replicación de operaciones DDL.
Objetos y Operaciones Soportados en Oracle DDL
El soporte de captura de DDL se integra en el servidor de registro de la base de datos. Debe definir la compatibilidad del parámetro de base de datos en 11.2.0.4.0 o superior. Extract soporta DDL que incluye cifrado de columnas basado en contraseña, 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;
Las siguientes sentencias adicionales se aplican a Extract con respecto al soporte DDL.
-
Todas las configuraciones de topología de Oracle GoldenGate están soportadas para la replicación de DDL de Oracle.
-
La replicación activa-activa (bidireccional) del DDL de Oracle está soportada entre dos (y solo dos) bases de datos que contienen metadatos idénticos.
-
Oracle GoldenGate soporta DDL en los siguientes objetos:
-
clusters
-
Directorios
-
funciones
-
índices
-
paquetes
-
procedimiento
-
tablas
-
tablespaces
-
roles
-
secuencias
-
sinónimos
-
activadores
-
tipos
-
vistas
-
vistas materializadas
-
usuarios
-
columnas invisibles
-
-
La replicación de la base de datos de Oracle Edition-Based Redefinition (EBR) del DDL de Oracle está soportada para Extract para los siguientes objetos de Oracle AI Database:
-
funciones
-
biblioteca
-
paquetes (especificación y cuerpo)
-
procedimiento
-
sinónimos
-
tipos (especificación y cuerpo)
-
vistas
-
-
A partir de Oracle GoldenGate 21c, se proporcionará soporte de replicación a las DDL que tengan un tamaño superior a 4 MB.
-
Desde Oracle GoldenGate 23ai en adelante, los dominios SQL están soportados.
-
Oracle GoldenGate es capaz de gestionar tablas con 4000 columnas si el tamaño de fila es inferior a 4 MB.
-
Oracle GoldenGate soporta las operaciones DDL de tablas temporales globales (GTT) que se pueden ver en Extract para que se puedan replicar. Debe definir el parámetro
DDLOPTIONSpara activar esta operación porque no está definido por defecto. -
Oracle GoldenGate soporta el diccionario para su uso con
NOUSERIDyTRANLOGOPTIONS GETCTASDML. Esto significa que Extract recibe metadatos de objetos del diccionario LogMiner sin consultar los objetos del diccionario. Oracle GoldenGate utiliza el diccionario automáticamente cuando el parámetro de compatibilidad de la base de datos origen es mayor o igual que 11.2.0.4.Al utilizar el diccionario y el formato de pista en la versión 12.2.x de Oracle GoldenGate, Extract necesita que el parche Logminer se aplique en la base de datos de minería si la versión de Oracle Database es anterior a 12.1.0.2.
-
Oracle GoldenGate soporta la replicación de columnas invisibles en Extract. La versión de formato de pista 12.2 es necesaria. Replicat debe especificar el parámetro
MAPINVISIBLECOLUMNSo asignar explícitamente a columnas invisibles en la cláusulaCOLMAPdel parámetroMAP.Si se utiliza
SOURCEDEFSoTARGETDEFS, el formato de metadatos de un archivo de definición para las tablas de Oracle debe ser compatible con el formato de pista. El formato de metadatos 12.2 es compatible con el formato de pista 12.2 y el formato de metadatos anterior a 12.2 es compatible con el formato de pista anterior a 12.2. Para especificar el formato de metadatos de un archivo de definición, utilice la opciónFORMAT RELEASEdel parámetroDEFSFILEcuando el archivo de definición se genere enDEFGEN. -
Las sentencias DDL para crear un contexto de espacio de nombres (
CREATE CONTEXT) las captura Extract y las aplica Replicat. -
Extract en modo de bomba admite las siguientes opciones de DDL:
-
DDL INCLUDE ALL -
DDL EXCLUDE ALL -
DDL EXCLUDE OBJNAME
También se soporta la opción
SOURCECATALOGyALLCATALOGdeDDL EXCLUDE.Si no se especifica ningún parámetro DDL, todas las DDL se escriben en la pista. Si se especifica
DDL EXCLUDE OBJNAMEy el propietario del objeto no coincide con una regla de exclusión, se escribe en la pista. -
-
A partir de la base de datos Oracle 21c, está disponible el siguiente DDL para soportar el bloqueo de cambios de DML/DDL que no son replicados por Oracle GoldenGate:
ALTER DATABASE [ENABLE | DISABLE] goldengate blocking mode;Cuando el modo de bloqueo de Oracle GoldenGate está activado, los DML que utilizan
support_mode NONEen tablas y ejecutan sentencias PL/SQL Oracle no soportadas fallarán con el siguiente error:ORA-26981: "operation was unsupported during Oracle GoldenGate blocking mode"Para la base de datos Oracle 21c, las siguientes funciones hacen que una tabla tenga
support_mode NONEen Oracle GoldenGate:-
BFILEcomo atributo de columna ADT o tabla introducida -
Tabla sin escalares
-
Tabla AW$ de OLAP
-
Tabla de colas con particiones horizontales
-
Tabla de Cluster Hash Ordenada
-
Restricción de clave primaria en el atributo ADT en la tabla relacional
-
Restricción de clave primaria/clave única en
raw/varcharlargo (más de 4000 bytes) -
Columna
V$DATABASE, se puede consultarGoldengate_Blocking_Modepara determinar el estado del modo de bloqueo actual.
-
-
Para el modo de captura automática DDL:
-
Solo es relevante para
DDL INCLUDE MAPPEDporque Extract captura las DDL basadas en los parámetrosTABLEyTABLEEXCLUDE. -
Solo se pueden capturar automáticamente las DDL relacionadas con la tabla.
-
DDL para activar la captura automática en el nivel de tabla:
CREATE/ALTER TABLE ... ENABLE LOGICAL REPLICATION ALLKEYS;
o bien
<pre class="copy"><code>CREATE/ALTER TABLE ... ENABLE LOGICAL REPLICATION ALLOW NOVALIDATE KEYS;</code></pre>Consulte How to Capture Supplemental Logging for Oracle GoldenGate en la guía Oracle AI Database Utilities.
-
-
Las siguientes operaciones están soportadas para las DDL relacionadas con particiones y las operaciones de mantenimiento de particiones
- Borrar partición:
Si se vuelve a crear una partición con el mismo nombre, se obtiene un nuevo número de objeto. Las cachés internas se borran para minimizar el consumo de espacio cuando se procesa un DDL de partición de borrado.
- Truncar partición:
El nombre de la partición y el número de objeto permanecen iguales. La versión del objeto de tabla base permanece igual.
- Cambiar nombre de partición:
El número de objeto de partición sigue siendo el mismo, pero obtiene un nuevo nombre. Se devuelve la versión del objeto de la tabla base. En la caché de nombres de memoria se invalidará al ver este DDL y se volverá a rellenar en el siguiente DML. La caché, que almacena si un número de objeto de partición determinado es interesante o no, también tendrá que volver a evaluarse, ya que un nuevo nombre de partición puede cambiar de filtrado a no filtrado o viceversa.
- Partición de intercambio:
Intercambia datos en una partición con otra de una tabla o viceversa. El número de objeto de la partición que se está intercambiando no cambia. Dataobj# no cambia, pero Extract no lo utiliza. La propia partición sigue perteneciendo a la misma tabla.
- Fusión de partición:
Fusiona una o más particiones en una nueva partición. El DDL crea la nueva partición y borra las particiones de las que se ha fusionado. En las cachés de memoria se deben borrar para ahorrar espacio y el usuario debe garantizar las reglas de filtro adecuadas para la partición recién creada.
- División de partición:
La partición que se está dividiendo mantiene su nombre original y su número de objeto, y se crea una nueva partición para los datos divididos. El usuario debe asegurarse de que las reglas de filtro de partición sean correctas para la partición recién creada.
- Partición de fusión:
Reduce el número de particiones en una tabla particionada por hash. La base de datos selecciona una partición específica que se fusiona y se borra una vez su contenido se ha redistribuido. Las particiones restantes mantienen su mismo nombre y número de objeto. Las cachés internas se deben borrar para minimizar el consumo de espacio.
- Modificar partición:
Modifica los atributos reales y por defecto de las particiones, además de agregar o borrar valores para las particiones de lista. Todas las modificaciones dejan el nombre de las particiones y el número de objeto intactos.
- Mover partición:
Los datos de partición se mueven a un nuevo tablespace. El nombre y el número de la partición siguen siendo los mismos.
- Tabla de redefinición:
dbms_redefinitionse puede utilizar para particionar una tabla mediante el uso de una tabla temporal. Las particiones se crean en la tabla temporal y, después de la operaciónfinish_redef, las tablas intercambian nombres. Las particiones creadas en la tabla temporal mantienen sus nombres y números de objeto cuando se intercambian las tablas. La caché de filtro de Extract se debe volver a evaluar enfinish_redef, ya que las particiones ahora pertenecen a la tabla base. El usuario debe garantizar reglas de filtro adecuadas.- Redef Partición:
Al redefinir una tabla, las particiones pasan de la tabla original a la tabla temporal. Por ejemplo, considere el caso en el que la tabla original tiene particiones, que viven en el tablespace
USER, y la tabla temporal se crea sin particiones y la tabla reside en el tablespaceNEW. En este caso, después de la operaciónfinish_redef, cuando se intercambian las tablas, la partición permanece en el tablespaceUSER. La partición Redef permite mover una partición al tablespaceNEWde la tabla temporal. La partición conserva su nombre y número de objeto.- Nombres de partición generados por el sistema:
Cuando las particiones se crean automáticamente para operaciones y particiones hash, como la partición dividida, el nombre de la partición tiene el formato
SYS_P sequence value. Del mismo modo, las subparticiones tienen el formatoSYS_SUBP sequence value. Se recomienda cambiar el nombre de la partición antes de exceptuar DML para que se ajuste a las reglas de filtro.
Objetos y Operaciones No Soportados en Oracle DDL
A continuación se muestra una lista de objetos y operaciones no soportados en el DDL de Oracle.
Objetos Excluidos
Los siguientes nombres o prefijos de nombre se consideran reservados por Oracle y se deben excluir de la configuración de DDL de Oracle GoldenGate. Oracle GoldenGate ignorará los objetos que contengan estos nombres.
Esquemas Excluidos:
"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 especiales:
"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
Tablas excluidas (el comodín * indica cualquier esquema o cualquier carácter):
"*.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
Otras DDL no Soportadas
Oracle GoldenGate no soporta lo siguiente:
-
DDL en tablas anidadas.
-
DDL en columnas de identidad.
-
ALTER DATABASEyALTER SYSTEM(no se consideran DDL) Mediante el diccionario, puede replicarALTER DATABASE DEFAULT EDITIONyALTER PLUGGABLE DATABASE DEFAULT EDITION. Todos los demás comandosALTER [PLUGABLE] DATABASEse ignoran. -
DDL en una base de datos en espera.
-
DDL de enlace de base de datos.
-
DDL que crea tablas con la cláusula
FLASHBACK ARCHIVEy DDL que crea, modifica o suprime el flashback de archivo de datos en sí. DML en tablas conFLASHBACK ARCHIVEestá soportado. -
Algunas DDL generarán nombres de objeto generados por el sistema. Los nombres de los objetos generados por el sistema pueden no ser siempre los mismos entre dos bases de datos diferentes. Por lo tanto, las operaciones DDL en objetos con nombres generados por el sistema solo se deben realizar si el nombre es exactamente el mismo en el destino.