ADD TRANDATA

Utilice ADD TRANDATA para activar Oracle GoldenGate para Adquirir la Información de Transacción que Necesita de los Registros de Transacción.

Antes de usar este comando, utilice el comando DBLOGIN para establecer una conexión de base de datos.

ADD TRANDATA es válido para las bases de datos que se muestran a continuación:

Para otras bases de datos soportadas, puede que ya exista esta funcionalidad o que deba configurarse a través de la interfaz de la base de datos.

Consulte las siguientes tablas para conocer el uso de comodines para diferentes bases datos al utilizar ADD TRANDATA:

Base de datos Uso de comodín
Db2 LUW, Db2 z/OS El comodín solo se puede usar con nombres de tabla. No con nombres de esquema.
Oracle El comodín se puede usar con nombres de esquema y de tabla. No con un nombre de PDB.
PostgreSQL y SQL Server El comodín se puede usar con nombres de esquema y de tabla

Db2 for i

Utilice ADD TRANDATA para iniciar el registro de los datos en el diario. El comando ADD TRANDATA llama a los STRJRNPF y es el método recomendado para iniciar el registro de diario para las tablas, ya que garantiza que el atributo de imagen de diario Record Images (IMAGES): *BOTH necesario se defina en el comando STRJRNPF.

Db2 LUW

Utilice ADD TRANDATA para activar DATA CAPTURE CHANGES en las tablas especificadas. Por defecto, ADD TRANDATA emite el siguiente comando a la base de datos:

ALTER TABLE name DATA CAPTURE CHANGES INCLUDE LONGVAR COLUMNS;

Puede excluir la cláusula LONGVAR utilizando ADD TRANDATA con la opción EXCLUDELONG.

Db2 z/OS

Utilice ADD TRANDATA para activar DATA CAPTURE CHANGES en las tablas especificadas. Por defecto, ADD TRANDATA emite el siguiente comando a la base de datos:

ALTER TABLE name DATA CAPTURE CHANGES;

Oracle Database

Oracle GoldenGate 26ai para Oracle AI Database 26ai y las versiones posteriores soportan la replicación para vistas del dualidad relacional de JSON y tablas de recogida de JSON. El comando ADD TRANDATA permite el registro complementario para vistas de dualidad relacional JSON y tablas de recopilación de JSON. Sin embargo, ADD TRANDATA no afecta a las tablas base de vista de dualidad de JSON y no agregará datos transaccionales para tablas base. Para obtener más información, consulte Requisitos para configurar la replicación para tablas de recopilación de JSON y DV de JSON en la documentación de microservicios de Oracle GoldenGate.

Tenga en cuenta que el uso de un comando similar al siguiente solo se aplicará a las tablas, y NO a vistas de dualidad relacional de JSON y tablas de recopilación de JSON:

ADD TRANDATA HR.*

Para realizar las capturas desde vistas JSON de dualidad y tablas de recopilación JSON, debe ejecutar el comando ADD TRANDATA para cada vista de dualidad de JSON y tabla JSON de recopilación que deba replicarse. Esto garantiza que sea consciente de las vistas de dualidad de JSON y las tablas de recopilación de JSON que se están configurando para la replicación para evitar la sobrecarga del sistema.

Nota: Los comodines no están soportados al activar la replicación lógica para las vistas de dualidad JSON mediante ADD TRANDATA. Sin embargo, las tablas de recopilación de JSON soportan comodines al igual que las tablas normales, por lo tanto, la sentencia TABLE/MAP también permite el uso de comodines.

A partir de la versión 21c, este comando también activa la captura automática en una tabla para la base de datos Oracle.

Por defecto, ADD TRANDATA para Oracle activa el registro incondicional de la clave primaria y el registro complementario condicional de todas las Claves únicas y de las Claves Ajenas de la tabla especificada; consulte Protección de la Unicidad de Filas en las Tablas de Origen y Destino para más información sobre cómo gestiona Oracle GoldenGate el registro suplementario para las bases de datos de Oracle AI Database.

Si se puede, utilice el comando ADD SCHEMATRANDATA en lugar del comando ADD TRANDATA. El comando ADD SCHEMATRANDATA garantiza la continuidad de la replicación si se produce DML en un objeto para el que se acaba a realizar DDL. Puede excluir objetos de la especificación de esquema utilizando los parámetros de exclusión.

Para utilizar la característica de replicación de Oracle GoldenGate DDL, debe utilizar el comando ADD SCHEMATRANDATA para registrar los datos complementarios necesarios.

Cuando utilice ADD SCHEMATRANDATA, puede usar ADD TRANDATA con la opción COLS para registrar todas la columnas no de clave, como las necesarias para las sentencias FILTER y las cláusulas KEYCOLS en los parámetros TABLE y MAP.

Nota: Es posible utilizar `ADD

           TRANDATA` for Oracle when DDL support is enabled, but only if you can stop DML on all tables before DDL is performed on them or, if that is not possible, you can guarantee that no users or applications will issue DDL that adds new tables whose names satisfy an object specification in a `TABLE` or `MAP` statement. There must be no possibility that users or applications will issue DDL that changes the key definitions of any tables that are already in the Oracle GoldenGate configuration.
           {: .infoboxnote}

Oracle recomienda poner la base de datos de origen en el modo de registro forzado y activar el registro complementario mínimo en el nivel de base de datos al utilizar Oracle GoldenGate. Al hacerlo, se agrega la información de encadenamiento de filas, si la hay, al redo log para las operaciones de actualización.

Tenga en cuenta lo siguiente al utilizar ADD TRANDATA para una instancia de Oracle AI Database:

PostgreSQL

Mediante el comando ADD TRANDATA, se modifica el valor REPLICA IDENTITY de la tabla. El valor REPLICA IDENTITY controla la imagen anterior de las columnas de una tabla que deben registrarse en el log de operaciones para UPDATE y DELETE.

SQL Server

Utilice ADD TRANDATA para proporcionar la información del registro ampliada que necesita Oracle GoldenGate para reconstruir operaciones SQL. El log de transacciones de SQL Server no proporciona suficiente información por defecto.

Al activar TRANDATA, Oracle GoldenGate activa la función de captura de datos de cambio de SQL Server para la base del dato y crea una tabla de captura de datos de cambio para cada instancia activada con TRANDATA.

Sintaxis

ADD TRANDATA container.owner.table]
[, FILEGROUP filegroup-name]
[, NOSCHEDULINGCOLS | ALLCOLS]
[, ALLOWNONVALIDATEKEYS]
[, PARTIALJSON]
[, PREPARECSN  {WAIT | LOCK | NOWAIT | NONE}]

[container.]owner.table

Válido para Db2 LUW, Db2 z/OS, Oracle, PostgreSQL y SQL Server.

Especificación de nombre de dos o tres partes. Utilice el nombre de dos partes owner.table para todas las bases que se soportan excepto una base de datos Oracle de contenedor multiinquilino.

Utilice un nombre de tres partes container.owner.table para una base de datos Oracle de contenedor multiinquilino. Se puede utilizar un comodín para cualquier componente. Si se utiliza con un comodín, ADD TRANDATA filtra los nombres que coinciden con los nombres de objetos del sistema. Para utilizar ADD TRANDATA para objetos que no son objetos de sistema pero tienen nombres que coinciden con los de los objetos de sistema en un modelo de comodines, emita ADD TRANDATA para esos objetos sin utilizar un comodín.

Si ejecuta el comando desde cdb$root, asegúrese también de configurar el siguiente privilegio del usuario en la base de datos:

ALTER USER userID SET CONTAINER_DATA = ALL  CONTAINER = CURRENT;

schema.table [JOURNAL library/journal] | library/file [JOURNAL library/journal]

Válido para Db2 for i.

Especifica el esquema SQL y el nombre de una tabla o la biblioteca nativa y el nombre de archivo. Si se define un diario por defecto con el comando DEFAULTJOURNAL, puede omitir la opción JOURNAL; en caso contrario, es necesaria.

FILEGROUP filegroup-name

Válido para SQL Server.

(Opcional) Puede designar el grupo del archivo en el que se colocarán las tablas temporales de captura de datos de cambio de SQL Server utilizando la opción FILEGROUP con un nombre en el grupo existente.

ADD TRANDATA owner.table FILEGROUP cdctables

También puede utilizar la opción FILEGROUP en el archivo GLOBALS si necesita utilizar el mismo FILEGROUP para cada tabla al activar TRANDATA.

En la siguiente muestra se muestra la definición de FILEGROUP myFileGroup en el archivo GLOBALS:

FILEGROUP myFileGroup

La salida es:

Logging of supplemental log data is enabled for table dbo.test1 in filegroup
myFileGroup

En este caso, el comando ADD TRANDATA utiliza myFileGroup para todas las tablas.

Si también utiliza el parámetro FILEGROUP con ADD TRANDATA, el comando sustituye el nombre del grupo de ficheros definido en el archivo GLOBALS.

Por ejemplo, si define FILEGROUP myFileGroup en el archivo GLOBALS y, a continuación, ejecuta el siguiente comando ADD TRANDATA:

ADD TRANDATA dbo.* FILEGROUP yourFileGroup

La salida es:

Logging of supplemental log data is enabled for table dbo.test1 in filegroup
yourFileGroup

En este caso, ADD TRANDATA utiliza yourFileGroup en lugar de myFileGroup para todas las tablas.

Si no especifica FILEGROUP ya sea en GLOBALS o con ADD TRANDATA, la línea de comandos considerará el valor por defecto FILEGROUP de la base de datos mientras agrega TRANDATA de la tabla. Por ejemplo, si ejecuta ADD TRANDATA dbo.*, la salida es:

Logging of supplemental log data is enabled for table dbo.test1 in filegroup
PRIMARY

En este caso, el valor por defecto de FILEGROUP es Primary. Si ejecuta el comando INFO TRANDATA, el nombre de FILEGROUP se muestra como PRIMARY.

NOSCHEDULINGCOLS | ALLCOLS

Válido para Oracle y PostgreSQL.

A partir de Oracle GoldenGate 21c, NOSCHEDULINGCOLS quedará en desuso para la base de Datos Oracle 21c y las versiones posteriores si la base de Datos en ejecución soporta prestaciones de captura automática.

Estas opciones cumplen los requisitos de registro de un Replicat integrado que procesará las tablas que especifique con ADD TRANDATA.

NOSCHEDULINGCOLS

Válido solo para Oracle.

Desactiva el registro de columnas de programación. Por defecto, ADD TRANDATA activa el registro incondicional de la clave primaria y el registro complementario condicional de todas las claves únicas y las claves ajenas de la tabla especificada. El registro incondicional fuerza los valores de la clave primaria en el registro tanto si se ha cambiado como si no la clave en la operación actual. El registro condicional registra todos los valores de columna de una clave ajena o única si se ha cambiado al menos una de ellas en la operación actual. La clave primaria, las claves únicas y las claves ajenas deben estar todas disponibles en el servidor entrante para calcular las dependencias.

ALLCOLS

Activa el registro complementario incondicional de todas las columnas de clave y no de clave de la tabla. Esta opción activa el registro de las claves necesarias para calcular las dependencias, además de todas las demás columnas para su uso en el filtrado, la resolución de conflictos y otros fines.


Para PostgreSQL, ALLCOLS define REPLICA IDENTITY de la tabla en FULL. ALLCOLS se especifica como parte del comando ADD TRANDATA para activar el registro de todas las columnas para la operaciones UPDATE y DELETE, incluso si esas columnas no se han modificado.

Para las tablas sin una Clave Primaria o el Índice único, la opción ALLCOLS es redundante. La sintaxis es:

ADD TRANDATA table_name ALLCOLS

COLS (columns)

Válido para Oracle.

Utilice la opción COLS para registrar columnas no de clave específicas. Se puede utilizar para registrar las columnas especificadas en una cláusula KEYCOLS y para registrar columnas que serán necesarias para fines de filtrado o manipulación, lo cual puede ser más eficaz que recuperar estos valores con una cláusula FETCHCOLS en una sentencia TABLE. Separe varias columnas con comas; por ejemplo NAME, ID, DOB.

INCLUDELONG | EXCLUDELONG

Válido para Db2 LUW.

Controla si ALTER TABLE emitido por ADD TRANDATA incluye el atributo INCLUDE LONGVAR COLUMNS. INCLUDELONG es el valor por defecto. Cuando se emite ADD TRANDATA con esta opción, Oracle GoldenGate emite la siguiente sentencia:

ALTER TABLE name DATA CAPTURE CHANGES INCLUDE LONGVAR COLUMNS;

Cuando se utiliza EXCLUDELONG, el comando es el siguiente:

ALTER TABLE name DATA CAPTURE CHANGES;

Cuando se utiliza EXCLUDELONG, Oracle GoldenGate no soporta una funcionalidad que requiere imágenes anteriores de tablas que incluyen columnas LONGVAR. Por ejemplo, el parámetro GETUPDATEBEFORES. Para soportar esta funcionalidad, los cambios en la columnas LONGVAR en los logs de transacción deben incluir las imágenes anteriores y posteriores del valor.

NOKEY

Válido para Db2 for i, Db2 LUW, Db2 z/OS, Oracle.

A partir de Oracle GoldenGate 21c, NOKEY quedará en desuso para Oracle Database 21c y las versiones posteriores si la base de Datos en ejecución soporta funciones de captura automática.

Suprime el registro complementario de columnas de clave primaria. Si utiliza NOKEY, utilice la opción COLS para registrar columnas alternativas que puedan servir como claves y designe estas columnas como claves para sustituir mediante la opción KEYCOLS del parámetro TABLE o MAP.

NOVALIDATE

Válido para Db2 for i, Db2 LUW, Db2 z/OS, Oracle.

Suprimir la información adicional sobre la tabla que se está gestionando y que está procesando ADD TRANDATA. Por defecto, esta opción está activada. Con el procesamiento de información adicional se produce un lapso de tiempo en la respuesta del comando, por lo que esta opción se puede usar para aumentar el tiempo de respuesta.

ALLOWNONVALIDATEDKEYS

Válido para Db2 for i, Db2 LUW, Db2 z/OS, Oracle.

Incluye las claves primarias NON VALIDATED y NOT VALID en el registro complementario. Estas claves sustituyen los criterios de selección de clave normales que utiliza Oracle GoldenGate. Si se está utilizando el parámetro GLOBALS ALLOWNONVALIDATEDKEYS, ADD SCHEMATRANDATA se ejecuta con ALLOWNONVALIDATEDKEYS tanto si se ha especificado como si no. Por defecto, las claves primarias NON VALIDATED y NOT VALID no están registradas.

PARTIALJSON

Válido para Oracle.

Recupera las actualizaciones parciales de JSON en el nivel de tabla. Si está activado, redo incluirá los registros de JSON parciales.

Consulte también el parámetro TRANLOGOPTIONS FETCHPARTIALJSON.

PREPARECSN {WAIT | LOCK | NOWAIT | NONE}

Válido para Oracle tanto para DML como para DDL. Prepara las tablas automáticamente en el origen de modo que el archivo de volcado de Export del pump de datos de Oracle incluirá los CSN de instanciación. Replicat utiliza el CSN de instanciación por tabla definido por el pump de datos de Oracle (en la importación) para filtrar los registros de pista. En el destino, la importación de la bomba de datos rellena las tablas y las vistas del sistema con SCN de instanciación utilizando el parámetro DBOPTIONS ENABLE_INSTANTIATION_FILTERING para activar la creación de filtros de instanciación en la tabla.

WAIT

Espere a las transacciones en curso y prepare la instanciación de la tabla.

LOCK

Coloque un bloqueo en la tabla (para prepararla para la instanciación de la tabla).

NOWAIT

Comportamiento por defecto, la preparación para la instanciación se realiza inmediatamente.

NONE

No se produce ninguna preparación de la instanciación.

Ejemplos


El siguiente ejemplo puede causar lo siguiente: que la clave primaria se registre para una tabla de Oracle o que la tabla complementaria se registre para una tabla de SQL Server o DB2. También activaría la captura automática en una tabla.

ADD TRANDATA hr.employees

En los siguientes ejemplos se activa el registro complementario incondicional de todas las columnas clave y no de claves de la tabla denominada acct. También activaría la captura automática en una tabla.

ADD TRANDATA hr.employees ALLCOLS

El siguiente ejemplo de la base de datos de Oracle AI Database permite registrar la clave primaria, además del nombre y dirección de la columna no de claves. También activaría la captura automática en una tabla.

ADD TRANDATA hr.employees, COLS (name, address)

El siguiente ejemplo de la base de datos Oracle AI Database impide que la clave primaria se registra, pero registra las columnas no de clave, name y pid en su lugar. También activaría la captura automática en una tabla.

ADD TRANDATA hr.employees, NOKEY, COLS (name, pid)

En el siguiente ejemplo se agrega el registro, aunque no se prepara la tabla para la instanciación. También activaría la captura automática en una tabla.

ADD TRANDATA hr.employees PREPARECSN NONE

En el siguiente ejemplo se suprime el procesamiento de la información de tabla adicional. También activaría la captura automática en una tabla.

ADD TRANDATA hr.employees.*name NOVALIDATE