Requisitos para la Configuración de DDL

Las sentencias CREATE TABLE AS SELECT (CTAS) incluyen sentencias SELECT y sentencias INSERT que hacen referencia a cualquier número de objetos subyacentes. Por defecto, Oracle GoldenGate obtiene los datos de la cláusula AS SELECT de la base de datos de destino. Puede forzar la operación CTAS para conservar las inserciones originales mediante este parámetro.

Nota:

Por este motivo, las tablas XMLType de Oracle creadas a partir de una sentencia CTAS (CREATE TABLE AS SELECT) no se pueden soportar. Para las tablas XMLType, los ID de objeto de fila deben coincidir entre el origen y el destino, lo que no se puede mantener en este escenario. Las tablas XMLType creadas por una sentencia CTAS vacía (que no inserta datos en la nueva tabla) se pueden mantener correctamente.

Además, puede utilizar el parámetro GETCTASDML que permite a CTAS reproducir las inserciones de CTAS, conservando así los OID durante la replicación. Este parámetro solo está soportado con el diccionario integrado y cualquier Replicat descendente debe ser 12.1.2.1 o superior para consumir la pista; de lo contrario, puede haber divergencia.

Los objetos de la cláusula AS SELECT deben existir en la base de datos de destino y sus nombres deben ser idénticos a los del origen.

En una sentencia MAP, Oracle GoldenGate solo asigna el nombre de la nueva tabla (CREATE TABLE name) a la especificación TARGET, pero no asigna los nombres de los objetos subyacentes de la cláusula AS SELECT. Podría haber dependencias en esos objetos que podrían causar inconsistencias en los datos si los nombres se convirtieran en la especificación TARGET.

A continuación se muestra un ejemplo de una sentencia CREATE TABLE AS SELECT en el origen y cómo la replicaría Oracle GoldenGate en el destino.

CREATE TABLE a.tab1 AS SELECT * FROM a.tab2;

La sentencia MAP para Replicat es la siguiente:

MAP a.tab*, TARGET a.x*;

La sentencia DDL de destino que aplica Replicat es la siguiente:

CREATE TABLE a.xtab1 AS SELECT * FROM a.tab2;

El nombre de la tabla en la cláusula AS SELECT * FROM sigue siendo el mismo que el del origen: tab2 (en lugar de xtab2).

Para mantener la coherencia de los datos de los objetos subyacentes en el origen y el destino, puede configurarlos para la replicación de datos por parte de Oracle GoldenGate. En el ejemplo anterior, puede utilizar las siguientes sentencias para cumplir este requisito:

Origen

TABLE a.tab*;

Destino

MAPEXCLUDE a.tab2
MAP a.tab*, TARGET a.x*;
MAP a.tab2, TARGET a.tab2;

Consulte Identificación Correcta de Nombres de Objetos No Cualificados en DDL.