[OGG] OGG-01431 OGG-01151 OGG-01296 Error mapping from {0} to {1}

David SanzDavid Sanz
3 min read

Mientras configuraba GoldenGate recientemente para sincronizar dos entornos hasta el día del cutover, me encontré con el siguiente error:

2025-02-04 15:49:09  WARNING OGG-01431  Aborted grouped transaction on XXXX.XXXX.XXX, Mapping error.
2025-02-04 15:49:09  WARNING OGG-01003  Repositioning to rba 52166587 in seqno 8.
2025-02-04 15:49:09  WARNING OGG-01151  Error mapping from XXXX.XX to XXX.XXX.XXXX.

A simple vista, el mensaje no aporta mucha claridad, no es un error interno del propio Oracle sino más bien del Golden Gate, con lo que tendremos que utilizar su propia herramienta, logdump.

Para quienes no estén familiarizados, logdump es la utilidad del golden gate para filtrar, ver y guardar datos que son almacenados en los ficheros de extracción.

Ejecutaremos el comando logdump para entrar en logdump ya que queremos ver la definición que tiene la tabla en los ficheros de extracción

Logdump 248 >open /ogg/19.1/dirdat/ek000000008
Current LogTrail is /ogg/19.1/dirdat/ek000000008
Logdump 249 >
GHDR ON
DETAIL ON
DETAIL DATA
USERTOKEN ON
FILEHEADER ON
ggstoken detail data
Logdump 255 >pos 0
Logdump 256 >FILTER INCLUDE FILENAME <SCHEMA>.<TABLE>
Logdump 257 >n

Explico cada uno de los comandos que he ejecutando dentro de logdump

  • La primera línea siempre tiene que ser “open _”. Para indicar el fichero de extracción que queremos leer.

  • Formateo para la visualización: GHDR (Encabezados de registros), DETAIL ON y DETAIL DATA (Datos de columna detallados)…

  • Pos 0: Nos posicionamos al principio del fichero

  • FILTER INCLUDE FILENAME Aplicamos un filtro para ver solo la información de la tabla afectada

  • n o next para los registros

Ejecutamos y analizamos la salida:

Todas las columnas encajan con la definición de la tabla excepto las dos últimas. Esas dos columnas no corresponden con lo definición de la tabla. Quizás ahí esta el problema.

Tras revisar varias tablas del diccionario para identificar su origen, finalmente las encontré en DBA_IND_COLUMNS. Había el mismo problema en origen como destino

SQL> r
  1   Select Table_Name, Index_Name, Column_Name
  2      From Dba_Ind_Columns
  3     Where Table_Name = 'XXXXXXX'
  4*

TABLE_NAME      INDEX_NAME                               COLUMN_NAME
--------------- ---------------------------------------- --------------------
XXXXXXX         XXXXXXX                                  XXXXXXX                                  
XXXXXXX         XXXXXXX                                  XXXXXXX                                  
XXXXXXX         XXXXXXX                                  XXXXXXX                                  
XXXXXXX         XXXXXXX                                  XXXXXXX                                  
XXXXXXX         XXXXXXX                                  XXXXXXX                                  
XXXXXXX         XXXXXXX                                  SYS_NC00035$
XXXXXXX         XXXXXXX                                  SYS_NC00036$

Recreamos esos índices y arrancamos de nuevo el proceso:

2025-02-04T16:35:51.608+0100  INFO    OGG-01407  Oracle GoldenGate Delivery for Oracle, xxxx.prm:  Setting current schema for DDL operation to xxxx.
2025-02-04T16:35:52.810+0100  INFO    OGG-01408  Oracle GoldenGate Delivery for Oracle, xxxx.prm:  Restoring current schema for DDL operation to C##GGATE.
2025-02-04T16:35:52.845+0100  INFO    OGG-01407  Oracle GoldenGate Delivery for Oracle, xxxx.prm:  Setting current schema for DDL operation to xxxx.
2025-02-04T16:35:53.929+0100  INFO    OGG-01408  Oracle GoldenGate Delivery for Oracle, xxxx.prm:  Restoring current schema for DDL operation to C##GGATE
2025-02-04T16:35:54.073+0100  INFO    OGG-02232  Oracle GoldenGate Delivery for Oracle, xxxx.prm:  Switching to next trail file /ogg/19.1/dirdat/ek000000009 at 2025-02-04T16:35:54.073 due to EOF. with current RBA 499,999,769.
2025-02-04T16:35:54.205+0100  INFO    OGG-01407  Oracle GoldenGate Delivery for Oracle, xxxx.prm:  Setting current schema for DDL operation to xxxx.
2025-02-04T16:35:54.211+0100  INFO    OGG-01408  Oracle GoldenGate Delivery for Oracle, xxxx.prm:  Restoring current schema for DDL operation to C##GGATE.

Listo. Espero que os sirva.

2
Subscribe to my newsletter

Read articles from David Sanz directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

David Sanz
David Sanz

Soy desarrollador, Analista, DBA Oracle y Arquitecto OCI, certificado en OCI Migration and Integration Certified Professional y Certified Architect Associate con más de 15 años de experiencia en plataformas Oracle además de especialista en temas de rendimiento.