Skip to main content

Command Palette

Search for a command to run...

[OGG] Lentitud de replicat

Updated
4 min read
[OGG] Lentitud de replicat

El artículo también se encuentra publicado en Ingles English version.

Hoy vamos a ver un caso sencillo de un proceso de replicat en OGG que corre demasiado lento.

La situación del OGG cuando me pidieron ayuda era la siguiente:

GGSCI 1> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING
EXTRACT     RUNNING     EXXX        00:00:06      00:00:09
REPLICAT    RUNNING     Rxxx        53:14:49      00:00:03

El proceso de replicat RXXX llevaba una semana donde el lag siempre estaba en constante crecimiento, nunca disminuyendo.

Antes de entra en faena, hay que decir que la versión del ogg es una 19.1.0.0.4.

Lo primero que vamos a ver son las estadísticas del proceso con la tasa de procesamiento en minutos a ver si nos da alguna pista:

GGSCI 4> stats replicat Rxxx, totalsonly *.*, reportrate min

Sending STATS request to REPLICAT Rxxx...

Start of Statistics at 2025-09-28 00:23:05.

DDL replication statistics:

*** Total statistics since replicat started     ***
        Operations                                       104.00
        Mapped operations                                  0.00
        Unmapped operations                              104.00
        Other operations                                   0.00
        Excluded operations                                0.00
        Errors                                             0.00
        Retried errors                                     0.00
        Discarded errors                                   0.00
        Ignored errors                                     0.00

Cumulative totals for specified table(s):

*** Total statistics since 2025-09-27 23:19:02 ***
        Total inserts/minute                       0.00
        Total updates/minute                       0.00
        Total deletes/minute                       0.00
        Total upserts/minute                       0.00
        Total discards/minute                  13497.48
        Total operations/minute                    0.00

*** Daily statistics since 2025-09-28 00:00:00 ***

        No database operations have been performed.

*** Hourly statistics since 2025-09-28 00:00:00 ***

        No database operations have been performed.

*** Latest statistics since 2025-09-27 23:19:02 ***
        Total inserts/minute                       0.00
        Total updates/minute                       0.00
        Total deletes/minute                       0.00
        Total upserts/minute                       0.00
        Total discards/minute                 864456.00
        Total operations/minute                    0.00

End of Statistics.

Ahí ya podemos ver algún problema de performance ya que el nº de operations es muy bajo al igual que apenas hay estadísticas en las operaciones dml.

Miramos las definición del proceso:

REPLICAT Rxxx

useridalias ogg_xxxx
assumetargetdefs

DDL INCLUDE ALL
DDLERROR DEFAULT IGNORE

discardfile ./dirrpt/Rxxx.dsc, Append,megabytes 4000
REPERROR (0001,discard)
REPERROR (1403,discard)

TABLE SCHEMA.TABLE , TARGET PDB.SCHEMA.TABLE;

Ahí podemos ver que el origen es un single instance y el destino es multitenant, esto no tiene que tener percance en el performance, pero si es un dato que hay que tener en cuenta.

Mirando las distintas propiedades, hecho en falta el HANDLECOLLISIONS, este parámetro es muy útil para ayudar a resolver conflictos a la hora de replicar la información, estos conflictos son llamados colisiones.

Este parámetro ayuda a OGG a resolver esas colisiones más eficientemente como son:

  • Insert: Se intenta realizar un insert cuando la fila ya existe en el destino.

  • Update: Se intenta realiza una operación de update en el destino cuándo la fila aún no existe

  • Delete: Se intentan hacer el borrado de un registro cuando la fila no existe en el destino.

Modificamos nuestro proceso para incluir el parámetro quedando de la siguiente manera:

REPLICAT Rxxx

useridalias ogg_xxxx
assumetargetdefs

DDL INCLUDE ALL
DDLERROR DEFAULT IGNORE
HANDLECOLLISIONS

discardfile ./dirrpt/Rxxx.dsc, Append,megabytes 4000
REPERROR (0001,discard)
REPERROR (1403,discard)

TABLE SCHEMA.TABLE , TARGET PDB.SCHEMA.TABLE;

Activamos y esperamos unas horas para ver si ya va mejor.

Efectivamente, el proceso de replicat va mucho mejor, cada vez el lag está más cerca del valor cero.

GGSCI 1> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING
EXTRACT     RUNNING     EXXX        00:00:02      00:00:07
REPLICAT    RUNNING     Rxxx        26:38:41      00:00:00

Vamos a ver de nuevo las estadísticas del proceso:

GGSCI 3>   stats replicat Rxxx, totalsonly *.*, reportrate min

Sending STATS request to REPLICAT Rxxx...

Start of Statistics at 2025-09-28 12:19:43.

DDL replication statistics:

*** Total statistics since replicat started     ***
        Operations                                      4804.00
        Mapped operations                                  5.00
        Unmapped operations                             4799.00
        Other operations                                   0.00
        Excluded operations                                0.00
        Errors                                             7.00
        Retried errors                                     0.00
        Discarded errors                                   0.00
        Ignored errors                                     6.00

Cumulative totals for specified table(s):

*** Total statistics since 2025-09-28 00:26:27 ***
        Total inserts/minute                   63670.08
        Total updates/minute                       0.00
        Total deletes/minute                   54358.40
        Total upserts/minute                       0.00
        Total discards/minute                      0.00
        Total operations/minute               118028.47
        Total insert collisions/minute         63670.08
        Total delete collisions/minute         31318.92

*** Daily statistics since 2025-09-28 00:26:27 ***
        Total inserts/minute                   63670.08
        Total updates/minute                       0.00
        Total deletes/minute                   54358.40
        Total upserts/minute                       0.00
        Total discards/minute                      0.00
        Total operations/minute               118028.47
        Total insert collisions/minute         63670.08
        Total delete collisions/minute         31318.92

*** Hourly statistics since 2025-09-28 12:00:00 ***
        Total inserts/minute                    7272.71
        Total updates/minute                       0.00
        Total deletes/minute                  421092.52
        Total upserts/minute                       0.00
        Total discards/minute                      0.00
        Total operations/minute               428365.24
        Total insert collisions/minute          7272.71
        Total delete collisions/minute        421092.52

*** Latest statistics since 2025-09-28 00:26:27 ***
        Total inserts/minute                45413289.00
        Total updates/minute                       0.00
        Total deletes/minute                38771646.00
        Total upserts/minute                       0.00
        Total discards/minute                      0.00
        Total operations/minute             84184935.00
        Total insert collisions/minute      45413289.00
        Total delete collisions/minute      22338520.00

End of Statistics.

El nº de operations ha pasado de 104, a tener más de 4000 con un flujo de operaciones dml correcto.

El problema de performance se ha resuelto.

Caso Cerrado Telemundo GIF by Universo (imagen GIF)

Espero que os sirva :)