Preparación de la Base de Datos para Oracle GoldenGate
Descubra cómo activar el registro complementario en las tablas de la base de datos origen que se van a utilizar para la captura por parte de Extract para SQL Server y cómo depurar datos temporales de CDC más antiguos.
Puede obtener más información sobre la captura de CDC mediante lo siguiente:
Uso de la replicación de captura CDC de Oracle GoldenGate for SQL Server http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/goldengate/12c/sql_cdcrep/sql_cdcrep.html.
Activación de Registro Complementario de CDC
Con el Extract de CDC, el método de captura de datos de cambio se realiza a través de las tablas de captura de datos de cambio de SQL Server, por lo que es imprescindible que siga los procedimientos y requisitos que se indican a continuación para que Extract active, mantenga y capture correctamente los datos de cambio.
Activará el registro complementario con el comando ADD TRANDATA para que Extract pueda capturar la información necesaria para reconstruir las transacciones.
Se debe emitir ADD TRANDATA para todas las tablas que va a capturar Oracle GoldenGate, y para ello se necesita que se utilice un esquema válido para crear las tablas y los procedimientos almacenados de Oracle GoldenGate necesarios.
La activación del registro complementario para un extracto de CDC hace lo siguiente:
-
Activa la captura de datos de cambio de SQL Server en el nivel de base de datos, si aún no está activada.
-
Crea una tabla temporal de captura de datos de cambio para cada tabla base activada con registro complementario mediante la ejecución de
EXECUTE sys.sp_cdc_enable_tabley crea un disparador para cada tabla CDC. La tabla CDC existe como parte de las tablas del sistema en la base de datos y tiene una convención de nomenclatura como, por ejemplo,cdc.OracleGG_basetableobjectid_CT. -
Crea una tabla de seguimiento de la convención de nomenclatura
ggschema.OracleGGTranTables. Esta tabla se utiliza para almacenar indicadores de transacción para las tablas CDC y se rellena cuando se dispara el disparador de una tabla CDC. La tabla será propiedad del esquema que se muestra en el parámetroGGSCHEMAdel archivoGLOBALS. -
Crea un procedimiento de recuperación almacenado único para cada tabla CDC, así como varios otros procedimientos almacenados que son necesarios para que Extract funcione. Estos procedimientos almacenados serán propiedad del esquema que se muestra en el parámetro
GGSCHEMAdel archivoGLOBALS. -
Además, como parte de la activación de CDC para tablas, SQL Server crea dos trabajos por base de datos:
cdc.dbname_capturecdc.dbname_cleanup -
El trabajo de captura de CDC es el trabajo que lee el log de transacciones de SQL Server y rellena los datos en las tablas de CDC, y es a partir de esas tablas de CDC que Extract capturará las transacciones. Por lo tanto, es de extrema importancia que el trabajo de captura de CDC se esté ejecutando en todo momento. Esto también requiere que SQL Server Agent se defina para que se ejecute en todo momento y se active para que se ejecute automáticamente cuando se inicie SQL Server.
Nota: Si la replicación transaccional de SQL Server también está activada para la base de datos, el trabajo de captura de CDC no existirá y, en su lugar, solo existirá el trabajo del agente del lector de logs de SQL Server.
-
El trabajo de captura de CDC se puede ajustar para obtener un mejor rendimiento y la información de ajuste se puede encontrar en Consideraciones operativas del método de captura de CDC.
-
El trabajo de limpieza de CDC creado por Microsoft no depende de si Oracle GoldenGate Extract ha capturado datos en las tablas de CDC o no. Por lo tanto, se necesitan pasos adicionales para desactivar o suprimir el trabajo de limpieza de CDC inmediatamente después de activar
TRANDATAy para activar la tarea de depuración de datos de cambio de Oracle GoldenGate. Consulte Depuración de datos de ubicación temporal de CDC para obtener más información.
Para activar el registro complementario mediante la interfaz de línea de comandos, realice los siguientes pasos de alto nivel:
-
Revise el tema Preparar usuarios y privilegios de base de datos para determinar los privilegios y pasos necesarios para activar la base de datos para la captura de datos de cambio, si aún no está definida. Es posible que se necesiten permisos elevados para GoldenGate si la base de datos no está activada para CDC, pero se pueden negar haciendo que un administrador active manualmente la base de datos para la captura de datos de cambio.
-
Para Google Cloud SQL para SQL Server, la base de datos debe activarse manualmente para la captura de cambios de datos por parte de un usuario administrador de servicio y ejecutar el siguiente comando:
EXEC msdb.dbo.gcloudsql_cdc_enable_db 'source_database'; -
Para SQL Server y Azure SQL Managed Instance, al agregar
TRANDATAse intentará definir la base de datos para Change Data Capture si el usuario tiene privilegios sysadmin; de lo contrario, un administrador de base de datos puede activar manualmente la base de datos para CDC antes de agregarTRANDATA, ejecutando el siguiente comando en la base de datos de origen:EXEC sys.sp_cdc_enable_db; -
Para Amazon RDS for SQL Server, la adición de
TRANDATAtambién intentará definir la base de datos para la captura de cambios de datos si se ha otorgado el permiso al usuario; de lo contrario, un administrador de base de datos con credenciales maestras puede activar manualmente la base de datos para CDC antes de agregarTRANDATA, ejecutando el siguiente comando en la base de datos origen:EXEC msdb.dbo.rds_cdc_enable_db 'source_database'
-
-
En la instalación de Oracle GoldenGate de origen, asegúrese de que el archivo
GLOBALStiene el parámetroGGSCHEMA schemanamey de que el nombre de esquema utilizado se ha creado (CREATE SCHEMA schemaname) en la base de datos de origen. Este esquema lo utilizarán todos los componentes posteriores de Oracle GoldenGate creados en la base de datos; por lo tanto, se recomienda crear un esquema único que solo utilice Oracle GoldenGate, como 'ggschema', y no utilizar los esquemas de SQL Serverdboocdc. -
En el sistema Oracle GoldenGate de origen, abra la interfaz de línea de comandos (cliente de administración).
-
Conéctese a la base de datos con las credenciales de conexión a la base de datos.
-
Ejecute el siguiente comando para cada tabla que vaya a capturar un Extract. Puede utilizar un comodín para especificar varios nombres de tabla.
ADD TRANDATA owner.tableADD TRANDATA owner.*Si lo desea, 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
FILEGROUPcon el nombre del grupo existente.ADD TRANDATA owner.table FILEGROUP cdctablesSee ADD TRANDATA
Consulte ADD TRANDATA para obtener más información.
Depurar datos de ubicación temporal de CDC
Al activar el registro complementario, los datos que necesita Extract para reconstruir transacciones se almacenan en una serie de tablas del sistema CDC de SQL Server, así como en objetos de Oracle GoldenGate que se utilizan para realizar un seguimiento del orden de las operaciones en una transacción. Estas tablas requieren una depuración rutinaria para reducir el almacenamiento de datos en la base de datos. Como parte de la activación del registro complementario mediante TRANDATA, SQL Server crea su propio trabajo de limpieza de captura de datos de cambio, sin embargo, este trabajo no sabe que un Extract puede seguir necesitando datos de estas tablas del sistema CDC y puede eliminar esos datos antes de que el Extract tenga la oportunidad de capturarlos.
Si los datos que necesita Extract durante el procesamiento se han eliminado de las tablas del sistema CDC, es posible que se requiera una de las siguientes acciones correctivas:
-
Alter Extract para capturar desde un punto posterior en el tiempo para el que los datos de CDC están disponibles (y aceptar la posible pérdida de datos en el destino).
-
Vuelva a sincronizar las tablas de origen y destino y, a continuación, vuelva a iniciar el entorno de Oracle GoldenGate.
Para solucionar la situación de que los datos de CDC se eliminen antes de que un Extract pueda procesarlos, Oracle GoldenGate for SQL Server necesita que se cree una tarea Depurar datos de cambio. Esta tarea depurará los datos temporales de CDC al tiempo que garantiza que no se depurará ningún dato que la extracción aún no haya procesado.
Utilice los siguientes pasos inmediatamente después de activar el registro complementario (TRANDATA) y antes de iniciar Extract, para crear la tarea Depurar datos de cambio de Oracle GoldenGate. La tarea Depurar datos de cambio se ejecuta en el servicio de administración y suprimirá automáticamente el trabajo de limpieza de CDC de SQL Server cuando se cree por primera vez. No hay ningún trabajo de agente de SQL Server para la tarea Depurar datos de cambio, ya que lo ejecuta el servicio de administración. Por lo tanto, el servicio de administración debe estar en ejecución para que la tarea de limpieza funcione correctamente.
Para crear una tarea Depurar datos de cambio:
Con Oracle GoldenGate for Microservices Architecture, después de agregar TRANDATA a las tablas, pero antes de iniciar Extract, se debe crear una tarea Depurar datos de cambio para realizar la limpieza de CDC en la base de datos. Esto se puede realizar mediante una de las siguientes acciones:
-
Solicitudes manuales de API de REST
-
Interfaz de usuario web del servidor de administración
Para crear una tarea Depurar datos de cambio mediante la interfaz de usuario web del servicio de administración: 1. Expanda la sección Tareas en el panel izquierdo.
-
Haga clic en Depurar datos de cambio en la página Tareas.
-
Haga clic en el signo más para mostrar un formulario y complete los campos necesarios para crear una nueva tarea de depuración de datos de cambio.
-
Nombre de operación: nombre de la tarea de depuración que se va a crear.
-
Activado: defina la tarea como activada, que es el valor por defecto.
-
Alias de Credencial y Dominio de Credencial: Seleccione un alias de credencial existente para la base de datos origen.
-
Mantener regla: este valor determina en horas o días la cantidad de datos temporales de CDC que se van a mantener en la base de datos de origen. En función de la versión de Oracle GoldenGate, los valores por defecto son 3 días o 1 hora. Los períodos de retención de datos CDC más bajos reducen la cantidad de datos temporales CDC almacenados en la base de datos, pero limitan la capacidad de un usuario para cambiar la posición de Extract a un tiempo anterior a los datos que existen en las tablas temporales.
-
Frecuencia de Depuración: este valor representa la frecuencia con la que se ejecuta la tarea, con un valor por defecto de cada 10 minutos. Se recomienda mantener el valor por defecto a menos que la sobrecarga de la tarea de depuración afecte al rendimiento de la base de datos durante períodos de alta actividad del usuario. Nota: Cree solo una tarea Depurar Datos de Cambio por base de datos de origen.
-
Puede encontrar información adicional sobre el trabajo de limpieza de CDC de Oracle GoldenGate en Consideraciones operativas del método de captura de CDC.
Activación de la detección de bucle bidireccional
La detección de bucles es un requisito para las implantaciones bidireccionales de Oracle GoldenGate, de modo que un Extract para una base de datos origen no vuelva a capturar las transacciones enviadas por un Replicat desde otra base de datos origen.
Con el método de captura de extracciones de CDC, por defecto, cualquier transacción confirmada por un Replicat en una base de datos en la que se configura un Extract volverá a capturar esa transacción desde el Replicat siempre que el registro complementario esté activado para las tablas a las que el Replicat entrega.
Para ignorar las transacciones de recaptura que se aplican mediante un Replicat, debe utilizar el parámetro TRANLOGOPTIONS EXCLUDEFILTERTABLE para el extracto de CDC. La tabla utilizada como tabla de filtrado será la tabla de puntos de control de Oracle GoldenGate que debe crear para Replicat.
Para crear una tabla de filtros y activar el registro adicional:
Los siguientes pasos requieren un usuario de base de datos que sea miembro del rol de administradores del sistema de SQL Server (sysadmin).
-
En el sistema de origen, ejecute Admin Client.
-
Conéctese al despliegue desde el cliente de administración.
-
Ejecute el siguiente comando para conectarse a la base de datos.
DBLOGIN USERIDALIAS alias -
Cree la tabla de puntos de control de Oracle GoldenGate que utiliza Replicat para entregar los datos a la base de datos origen.
Ejemplo:
ADD CHECKPOINTTABLE ogg.ggchkptSe recomienda utilizar el mismo nombre de esquema que el utilizado en el parámetro
GGSCHEMAdel archivoGLOBALS. -
Active el registro complementario para la tabla de puntos de control recién creada.
Ejemplo:
ADD TRANDATA ogg.ggchkpt -
Agregue el Replicat con la información de la tabla de puntos de control.
Ejemplo:
ADD REPLICAT repe, EXTTRAIL north/ea,checkpointtable ogg.ggchkpt -
Configure el Extract con el parámetro
EXCLUDEFILTERTABLEmediante la tabla de puntos de control de Replicat para la tabla de filtrado.TRANLOGOPTIONS EXCLUDEFILTERTABLE ogg.ggchkpt