ALTER EXTRACT
Utilice ALTER EXTRACT para los siguientes fines:
-
Para cambiar los atributos de un grupo de Extract creado con el comando
ADD EXTRACT. -
Para aumentar una pista hasta el siguiente archivo en una secuencia.
-
Para cambiar de versión a una configuración de captura integrada.
-
Para volver a una versión anterior desde una configuración de captura integrada.
-
Para posicionar cualquier diario de Db2 for i especificado en un número de secuencia de diario específico.
Para utilizar este comando, pare el Extract con el comando STOP EXTRACT group_name.
Sintaxis
ALTER EXTRACT group-name
[, BEGIN {NOW | yyyy-mm-dd[ hh:mi:[ss[.cccccc]]]} |
| [, EXTRBA archive-offset-number]
| [, ADD_EXTRACT_attribute | SCN value]
| [, LSN
| [, EOL
| [, DESC
| [ CRITICAL [ YES | NO ] ]
| [ ENCRYPTIONPROFILE encryption-profile-name]
| [ PROFILE
| [ AUTOSTART [ YES | NO ]
| [ DELAY delay-number ] ]
| [ AUTORESTART [ YES | NO ]
| [ RETRIES retries-number ]
| [ WAITSECONDS wait-number ]
| [ RESETSECONDS reset-number ]
| [ DISABLEONFAILURE [ YES | NO ] ] ] ]
| [ LOGNUM lognum]
| [ LOGPOS logpos
Las siguientes opciones ALTER EXTRACT están soportadas para Db2 para i para posicionar Extract para un diario proporcionado:
ALTER EXTRACT {BEGIN {NOW | yyyy-mm-ddT[ hh:mi:[ss[.cccccc]]Z]}
[JOURNAL journal_library/journal_name [JRNRCV receiver_library/
receiver_name]] |
, EOL [JOURNAL journal_library/journal_name
[JRNRCV receiver_library/receiver_name]] |
, SEQNO sequence_number [JOURNAL journal_library/journal_name
[JRNRCV receiver_library/receiver_name]]}
BEGIN {NOW | yyyy-mm-ddT[ hh:mi:[ss[.cccccc]]]Z} [JOURNAL journal_library/journal_name [JRNRCV receiver_library/ receiver_name]] | , EOL [JOURNAL journal_library/journal_name [JRNRCV receiver_library/receiver_name]] | , SEQNO sequence_number [JOURNAL journal_library/journal_name [JRNRCV receiver_library/receiver_name]]
Estas opciones de IBM for i permiten un posicionamiento de Extract específico de diario tras emitir el punto de inicio global con ADD EXTRACT. Una posición de diario específica definida con ALTER EXTRACT no afecta a ninguna posición global que se haya definido previamente con ADD EXTRACT o ALTER EXTRACT; sin embargo, una posición global definida con ALTER EXTRACT sustituye todos los puestos de diario específicos que se hayan definido previamente en la misma configuración de Extract.
Nota: SEQNO, cuando se utiliza con un asiento en `ALTER
EXTRACT`, is the journal sequence number that is relative to that specific journal, not the system sequence number that is global across journals.
{: .infoboxnote}
group-name
Nombre del grupo de Extract que se va a modificar.
{BEGIN {NOW |
Tyyyy-mm-dd[ hh:mi:[ss[.cccccc]]]Z} |
NOW
Para todas las bases, excepto Db2 LUW, NOW especifica la hora a la que se emite la orden ALTER EXTRACT.
NOW especifica la hora a la que se emite la orden ALTER EXTRACT.
Para Db2 LUW, solo los registros de finalización y confirmación de transacciones contienen registros de hora, por lo que la posición de inicio del Extract solo se puede calcular en relación con dichos registros de horas. Esta es una limitación de la API que se utiliza en Oracle GoldenGate. Debe tenerse en cuenta que el posicionamiento por registro de hora no es preciso y también que puede tardar mucho tiempo. Se recomienda utilizar las opciones LRI o EOL cuando sea posible.
YYYY-MM-DDThh:mm:ssZ
Fecha y hora (registro de hora) en el formato especificado. Por ejemplo, 2017-07-14T14:54:45Z.
yyyy-mm-dd[ hh:mi:[ss[.cccccc]]]
Fecha y hora (registro de hora) en el formato especificado. Para un Oracle Extract en modo integrado, el valor del registro de hora debe ser mayor que el registro de hora en el que se ha registrado el Extract con la base de datos.
El posicionamiento por registro de hora en un log de transacciones de SQL Server se ve afectado por las siguientes características de SQL Server:
-
Los registros de hora registrados en el log de transacciones de SQL Server utilizan una granularidad de 3,3333 microsegundos (ms). Es posible que este nivel de granularidad no permita el posicionamiento por tiempo entre dos transacciones, si las transacciones han comenzado en el mismo intervalo de tiempo de 3,3333 ms.
-
Los registros de hora no están registrados en cada registro del log de SQL Server, sino solo en los registros que empiezan y confirman la transacción, así como en algunos otros que no contienen datos.
-
Los registros de hora de SQL Server no proceden del reloj del sistema, sino del reloj interno específico de los procesadores individuales en uso. Este reloj actualiza varias veces en un segundo, pero entre las actualizaciones podría desincronizarse con el reloj del sistema. Esto reduce aún más la precisión del posicionamiento por tiempo.
-
Puede que los registros de hora registrados para los archivos log de copia de seguridad no correspondan de forma precisa a los tiempos registrados en la copia de seguridad (no obstante, esta imprecisión es inferior a un segundo).
El posicionamiento en un LSN es preciso.
El posicionamiento por registro de hora en PostgreSQL incluye los siguientes escenarios:
-
Escenario 1
Si
track_commit_timestampesoff, se mostrará la siguiente salida cuando se inicie el proceso Extract independientemente del método del posicionamiento que se utilice:2020-04-29 02:15:54 INFO OGG-01517 Position of first record processed LSN: 0/2222C20, Jan 1, 1970 12:00:00 PM. -
Escenario 2
Si se activa
track_commit_timestampantes de que Se registre Extract, se mostrará el registro a hora correcto una vez que se haya transferido los registros en la base del datos de origen como Se menciona en el siguiente ejemplo:2020-04-29 02:19:07 INFO OGG-01515 Positioning to begin time Apr 29,2020 2:18:38 AM. -
Escenario 3
Si se activa
track_commit_timestampdespués del registro Extract, es posible que los registros antiguos estén disponibles en el log para el cual no se haya creado el registro a hora de confirmación con eltransaction IDasociado. En ese caso, si Extract no obtiene el registro de hora, utilizará la reserva mediante el registro de hora por defecto que se menciona en el escenario 1. La salida será similar a la siguiente:020-04-29 01:55:07 INFO OGG-01517 Position of first record processed LSN: 0/221D028, Jan 1, 1970 12:00:00 PM. -
No se puede especificar el registro de hora en el pasado si se ha movido el espacio de replicación.
START
Válido para PostgreSQL.
Agrega un Extract sin mencionar BEGIN NOW o LSN. Extract empezará desde la posición de reinicio del espacio de replicación de forma automática.
ADD_EXTRACT_attribute
Puede cambiar cualquiera de los atributos especificados con el comando ALTER EXTRACT, excepto lo siguiente:
-
La modificación de un Extract especificado con la opción
EXTTRAILSOURCE. -
La modificación del número de threads de RAC especificado con la opción
THREADS.
Para estas excepciones, suprima el grupo de Extract y, a continuación, vuelva a agregarlo.
Si utiliza la opción BEGIN, no combine otras opciones en la sentencia. Emita sentencias independientes; por ejemplo:
ALTER EXTRACT exte, BEGIN 2019-01-01
ALTER EXTRACT exte, ETROLLOVER
ALTER EXTRACT exte, SCN 789000
Si utiliza la opción SCN o BEGIN para Integrated Extract, esta requiere DBLOGIN, y el valor de SCN o de registro del hora especificado no puede ser inferior al primer SCN o registro del hora del servidor saliente. Para buscar el primer SCN del servidor saliente, emita el siguiente comando:
INFO EXTRACT group_name, SHOWCH DETAIL
El valor del primer SCN se muestra como aparece en el siguiente ejemplo:
Integrated Extract outbound server first scn: 0.665884 (665884)
EXTRBA offset_number
Válido para Db2 z/OS.
Especifica la dirección de byte relativa en un log de transacciones en la que se va a empezar la captura de datos.
El formato necesario es 0Xnnn, donde nnn es un número hexadecimal de 1 a 20 dígitos (el primer carácter es el dígito cero, y el segundo puede ser el dígito mayúscula o minúscula x).
EOL
Válido para Db2 for i, Db2 LUW, MySQL, PostgreSQL y SQL Server.
Configura que el procesamiento se inicie al final de los archivos log (o los diarios) en los que se escribirá el siguiente registro. No se capturará ninguna transacción activa.
Para Db2 LUW, configura el procesamiento para que se inicie en el valor LRI activo en los archivos log. La LRI activa es la posición al final de los archivos log, en la que se escribirá el siguiente registro. No se capturará ninguna transacción activa.
Para PostgreSQL, DBLOGIN es necesario para la posición por EOL.
Para MySQL, busca la posición que corresponde al final del archivo e inicia la lectura de las transacción desde esta. La posición de EOL no es exacta si los datos se escriben continuamente en el log binario.
TRANLOG LRI LRI_number
(Db2 LUW) Puede utilizar esta opción para sistemas Db2 LUW para especificar el valor del registro de LRI para el log de transacciones de punto de control.
Para PostgreSQL, DBLOGIN es necesario para la posición por EOL.
REPORT file_name
Especifica el nombre de ruta completo de un archivo de informe de Extract en una ubicación distinta de la que se define por defecto en dirrpt en el directorio Oracle GoldenGate.
SCN value
Válido para Oracle.
Inicia Extract en la transacción en el redo log que tiene el número de cambio del sistema (SCN) de Oracle. Para Extract, el valor de SCN debe ser mayor que el SCN en el que se ha registrado el Extract con la base de datos. Para la opción SCN o BEGIN, DBLOGIN es necesario, y el valor de SCN o de registro del tiempo especificado no puede ser inferior al primer SCN o registro del tiempo del servidor saliente.
LSN value
Válido para Db2 z/OS, PostgreSQL y SQL Server.
Especifica la transacción LSN en la que se va a iniciar la captura de datos. El alias de esta opción es EXTLSN.
Para Db2 z/OS, el valor de LSN puede ser una serie de dígitos hexadecimales o una serie de dígitos decimales. Si el formato es hexadecimal, debe llevar un prefijo 0X o 0x seguido de 1 a 20 dígitos hexadecimales: 0-9, a-g o A-G. Si el formato es decimal, no hay prefijo y hay 1-25 dígitos decimales: 0-9.
Para PostgreSQL, el valor de LSN puede ser hi o lo. Defina el valor como hi para el punto de entrada del archivo log. Lo es el desplazamiento en el archivo log. La Posición de LSN debe estar entre la Posición de Reinicio del Intervalo de Replicación y el Log de Escritura Avanzada de Ubicación Actual. Si la propia posición especificada existe entre el rango mencionado, Extract devolverá un error.
Para SQL Server, LSN especifica la transacción LSN en la que se va a iniciar la captura de datos. El alias de esta opción es EXTLSN.
El LSN especificado debe existir como un tran_begin_lsn válido encontrado en la tabla del sistema cdc.lsn_time_mapping; en caso contrario, el Extract intentará posicionarse después del valor del LSN proporcionado.
Las especificaciones LSN válidas para SQL Server constan de lo siguiente:
-
Una cadena hexadecimal separada por dos puntos (8:8:4) rellenada con ceros iniciales y el prefijo 0X, como en 0X00000d7e:0000036b:0001
-
Una cadena hexadecimal separada por dos puntos con el prefijo 0X y sin ceros iniciales, como en 0Xd7e:36b:1
Puede encontrar el LSN mínimo disponible realizando una consulta de lo siguiente:
SELECT min([tran_begin_lsn]) FROM [cdc].[lsn_time_mapping] with (nolock) where tran_id <> 0x00
Los siguientes ejemplos muestran el uso del valor de LSN para Db2 z/OS:
Ejemplo 1:
ALTER EXTRACT extn TRANLOG, LSN 0xDEE40E4F27A3245400
Ejemplo 2:
ALTER EXTRACT extn TRANLOG, LSN 22216433159121980904448
El siguiente ejemplo muestra el valor de LSN para SQL Server:
ALTER EXTRACT extn TRANLOG, LSN 0X00000d7e:0000036b:0001
LOGNUM
Válido para MySQL.
Es el número de archivo log. Por ejemplo, si el nombre del archivo log necesario es test.000034, el valor de LOGNUM es 34. Extract buscará este archivo log. Nota: en Microservices Architecture, ALTER EXTRACT fallará si el valor de LOGNUM contiene ceros delante del valor. Por ejemplo, ALTER EXTRACT ext1, TRANLOG, LOGNUM 000001, LOGPOS 0 fallará. En su lugar, defina LOGNUM en 1 para poder que este ejemplo se ejecute correctamente.
LOGPOS
Válido para MySQL.
Es un valor de desfase de evento dentro del archivo log que identifica un registro de transacción específico. Los valores de desfase de evento se almacenan en la sección de cabecera de un registro de log. Para posicionarse al principio de un archivo binlog, defina LOGPOS como 0.
ETROLLOVER
Utilícelo para situaciones de recuperación que requieran un reposicionamiento y una regeneración de archivos de pista para un Extract primario y al cambiar de versión de Oracle GoldenGate desde una versión anterior.
Hace que Extract cree una nueva encarnación del archivo de pista y se incrementa hasta el siguiente archivo en la secuencia de pista al reiniciar, lo cual requiere que lectores como pump o Replicat se reposicionen de forma manual en el nuevo número de secuencia de pista.
Con ETROLLOVER, el Extract captura todos los registros después del SCN especificado con el que se está iniciando Extract, independientemente de si ya se había capturado y escrito en la pista o no. Sin ETROLLOVER, el Extract omitirá la captura de cualquier archivo que ya se haya capturado o escrito en la pista.
A partir de la versión 19c, durante el procesamiento del servicio de distribución:
-
Si se actualiza la versión de Extract primario en el despliegue del origen con el archivo
ETROLLOVERde pista del destino, el servicio theDistribution detecta de modo automático el archivoETROLLOVERde pista del origen y empieza a leer desde el archivo del pista siguiente. Este es el mismo comando queALTER EXTRACT groupname EXTSEQNO seqno+1 EXTRBA 0de la bomba de datos. -
Después de cambiar la versión del servicio de Distribución, este realiza, de forma automática, el
ETROLLOVERpara el archivo del pista de salida al reiniciar y escribe el archivo del siguiente pista correctamente. Este es el mismo comando queALTER EXTRACT groupname ETROLLOVERde la bomba de datos.
DESC ‘description’
Especifica una descripción del grupo, como 'Extracts account_tab on Serv1'. Incluya la descripción entre comillas simples. Puede utilizar la palabra abreviada DESC o la palabra completa DESCRIPTION.
ENCRYPTIONPROFILE
Especifica el nombre del perfil de cifrado para el Extract. Este nombre es sensible a mayúsculas/minúsculas; por lo tanto, debe utilizar el nombre exacto que ha introducido con ADD EXTRACT.
GTIDSET gtidset
Válido para MySQL.
Especifica el posicionamiento inicial de un Extract mediante el tipo de posición en la opción de juego de GTID para la captura basada en GTID para MySQL. Los orígenes de MySQL soportados para el juego de GTID son MySQL Server 8.0, MySQL Server 5.7, MySQL Database Service (MDS). El tamaño máximo de juego de GTID soportado es de 64 KB.
Sintaxis:
ALTER EXTRACT extract_name, TRANLOG, GTIDSET gtidset
Los siguientes ejemplos incluyen todas las combinaciones de formatos válidos de juego de GTID.
Ejemplo 1:
ALTER EXTRACT exte, TRANLOG, GTIDSET "E11FA47-71CA-11E1-9E33-C80AA9429562:4"
Ejemplo 2:
ALTER EXTRACT exts, TRANLOG, GTIDSET "3E11FA47-71CA-11E1-9E33-C80AA9429562:1-10"
Ejemplo 3:
ALTER EXTRACT extn, TRANLOG, GTIDSET "3E11FA47-71CA-11E1-9E33-C80AA9429562:1-3:11:47-49"
Ejemplo 4:
ALTER EXTRACT extw, TRANLOG, GTIDSET "2174B383-5441-11E8-B90A-C80AA9429562:1-3,24DA167-0C0C-11E8-8442-00059A3C7B00:1-19"
Nota: Como se muestra en el ejemplo 4, cuando el juego de GTID contiene varios uuids, para formar una solicitud de API de REST, este juego de GTID se divide en varios juegos de GTID mediante el separador de comas.
CRITICAL
Indica si el proceso es crítico para el despliegue.
PROFILE
Nombre del perfil de inicio automático. Este nombre es sensible a mayúsculas/minúsculas, por lo cual debe utilizar el nombre exacto que ha introducido con ALTER EXTRACT.
AUTOSTART
Especifica si el proceso gestionado se tiene que iniciar automáticamente cuando se inicia el servicio de administración. El valor por defecto es YES.
RETRIES
Número máximo de intentos para reiniciar la tarea antes de cancelar los esfuerzos de reintento. Esto es opcional.
WAITSECONDS
Duración (en segundos) en la que se cuentan los reintentos.
RESETSECONDS
Restablece la duración en la que se cuentan los reintentos.
DISABLEONFAILURE
Si se define en TRUE, la tarea se desactiva cuando se agota el número de reintentos.
INFO EXTRACT group-name, SHOWCH DETAIL
El valor del primer SCN se muestra como aparece en el siguiente ejemplo:
Integrated Extract outbound server first scn: 0.665884 (665884)
Ejemplos
En el siguiente ejemplo se modifica Extract para que inicie el procesamiento de los datos a partir del 1 de enero de 2019.
ALTER EXTRACT exte, BEGIN 2019-01-01
En el siguiente ejemplo se modifica Extract para que inicie el procesamiento en una ubicación específica de la pista.
ALTER EXTRACT exte, EXTSEQNO 26, EXTRBA 338
En el siguiente ejemplo se modifica Extract en un entorno de SQL Server para que se inicie en un LSN específico.
ALTER EXTRACT exte, LSN 0Xd7e:36b:1
En el siguiente ejemplo se modifica Extract para que se incremente hasta el siguiente archivo en la secuencia de pista.
ALTER EXTRACT exte, ETROLLOVER
En el siguiente ejemplo se modifica Extract para que cambie a la versión de captura integrada.
ALTER EXTRACT exte, UPGRADE INTEGRATED TRANLOG
El siguiente comando utiliza ETROLLOVER para evitar el filtrado de registros duplicados con la SCN invertida 778899.
ALTER EXTRACT exte, SCN 778899
ALTER EXTRACT exte ETROLLOVER
START EXTRACT exte
Si no utiliza ETROLLOVER, si modifica Extract al valor previo del SCN, no procesará registros duplicados. El comando para modificar el Extract y que filtre registros duplicados es como sigue:
ALTER EXTRACT exte, SCN 778899
START EXTRACT exte
En el siguiente ejemplo se muestra ALTER EXTRACT para un punto inicial de diario y de IBM para i.
ALTER EXTRACT exte, SEQNO 1234 JOURNAL accts/acctsjrn
En el siguiente ejemplo se muestra ALTER EXTRACT para un punto del inicio del receptor y de diario i de IBM para i.
ALTER EXTRACT exte, SEQNO 1234 JOURNAL accts/acctsjrn JRNRCV accts/jrnrcv0005
En el siguiente ejemplo se modifica un Extract en un sistema Db2 LUW.
ALTER EXTRACT exte, TRANLOG LRI 8066.322711
El siguiente ejemplo muestra las opciones de ALTER EXTRACT utilizadas con PostgreSQL:
ALTER EXTRACT exte, EOL
ALTER EXTRACT POSTEXT, LSN 0/156784
ALTER EXTRACT POSTEXT, BEGIN 2022-02-18T14:50:43.4230Z