Configurar GoldenGate para Depurar Archivos Trail

Introducción

Cuando configuras una replicación con GoldenGate se van a generar muchísimos archivos trail que contienen la actividad de las transacciones extraídas de la base de datos o desde otros extrails. Esto se puede convertir en un problema para la disponibilidad del espacio en disco.
Es por ello que necesitamos configurar GoldenGate para que depure de forma automática los archivos trail cuando ya no sean necesarios:

  • Que ya hayan sido consumidos por los procesos de Replicat o data pump.
  • Que sean lo suficientemente antiguos para no ser requeridos en caso de un reproceso.

Configurar la Depuración de Extrails

El proceso de depuración automática se activa al usar el parámetro PURGEOLDEXTRACTS, de acuerdo a la documentación:

PURGEOLDEXTRACTS: Depura los archivos trail cuando Oracle GoldenGate ha terminado de procesarlos. Sin el PURGEOLDEXTRACTS, no se efectúa ninguna depuración y los archivos trail pueden consumir espacio en disco significante. Para mejores resultados, use el PURGEOLDEXTRACTS como parámetro del Manager, no como parámetro de un Extract o Replicat.

Detener los Procesos

Necesitamos parar todos los procesos de GoldenGate antes de detener el Manager para su reconfiguración:

[golden@patogolden golden]$ ./ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 19.1.0.0.4 OGGCORE_19.1.0.0.0_PLATFORMS_191017.1054_FBO
Linux, x64, 64bit (optimized), Oracle 19c on Oct 17 2019 21:16:29
Operating system character set identified as UTF-8.

GGSCI (patogolden) 1> stop *

Sending STOP request to EXTRACT EXTPATO ...
Request processed.

Sending STOP request to REPLICAT REPATO ...
Request processed.

GGSCI (patogolden) 2> stop mgr
Manager process is required by other GGS processes.
Are you sure you want to stop it (y/n)?y

Sending STOP request to MANAGER ...
Request processed.
Manager stopped.

GGSCI (patogolden) 3> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     STOPPED
EXTRACT     STOPPED     EXTPATO     00:00:00      00:15:20
REPLICAT    STOPPED     REPATO      00:00:00      00:15:14

Configuración de los Parámteros del Manager

Dentro de GoldenGate edita el archivo de parámetros con la nueva instrucción PURGEOLDEXTRACTS incluyendo:

  • USECHECKPOINTS para que un trail sólo sea borrado si ya fue procesado previamente.
  • MINKEEPFILES para preservar algunos trails previos para un posible reproceso.
GGSCI (patogolden) 4> edit params mgr
PORT 7809
DYNAMICPORTLIST 7810-7820
AUTOSTART ER *
PURGEOLDEXTRACTS /golden/dirdat/*, USECHECKPOINTS, MINKEEPFILES 4, FREQUENCYMINUTES 15

Iniciar el Manager y la Replicación

GGSCI (patogolden) 5> start mgr
Manager started.

GGSCI (patogolden) 6> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING
EXTRACT     RUNNING     EXTPATO     00:00:00      00:00:08
REPLICAT    RUNNING     REPATO      00:00:00      00:00:04

Validar la Depuración

Primero vamos a detener nuestro Replicat para que los archivos extrail se acumulen:

GGSCI (patogolden) 7> stop replicat repato

Sending STOP request to REPLICAT REPATO ...
Request processed.

Validar el USECHECKPOINT

Revisando el directorio dirdat podemos ver que tenemos 9 archivos trail en vez del máximo 4 que configuramos.
Esto se debe a que usamos el parámetro USECHECKPOINT. Como estos trails aún no han sido procesados ya que detuvimos el Replicat, ellos no son candidatos para el borrado:

[golden@patogolden golden]$ cd dirdat
[golden@patogolden dirdat]$ ls
tr000000021  tr000000023  tr000000025  tr000000027  tr000000029
tr000000022  tr000000024  tr000000026  tr000000028

Validar el MINKEEPFILES

Levantemos el Replicat y veamos qué pasa:

GGSCI (patogolden) 1> start replicat repato

Sending START request to MANAGER ...
REPLICAT REPATO starting

Después de algún tiempo podemos ver que el Replicat ha procesado todos los trails pendientes hasta el tr000000029:

GGSCI (patogolden) 2> info replicat repato

REPLICAT   REPATO    Last Started 2020-06-10 22:09   Status RUNNING
INTEGRATED
Checkpoint Lag       00:00:00 (updated 00:00:09 ago)
Process ID           27661
Log Read Checkpoint  File /golden/dirdat/tr000000029
                     2020-06-10 22:12:46.000000  RBA 720227

GGSCI (patogolden) 3> send mgr, getpurgeoldextracts

Sending GETPURGEOLDEXTRACTS request to MANAGER ...

PurgeOldExtracts Rules
Fileset                              MinHours MinFiles UseCP
/golden/dirdat/*                            0        4   Y
OK
Extract Trails
Filename                        Oldest_Chkpt_Seqno
/golden/dirdat/tr       29

Revisando el archivo de reporte del Manager podemos ver que estos 5 archivos fueron depurados de acuerdo a nuestra regla:

[golden@patogolden dirrpt]$ tail -f MGR.rpt

2020-06-10 22:15:42  INFO    OGG-00957  Purged old extract file '/golden/dirdat/tr000000021', applying UseCheckPoints purge rule: Oldest Chkpt Seqno 29 > 21.

2020-06-10 22:15:42  INFO    OGG-00957  Purged old extract file '/golden/dirdat/tr000000022', applying UseCheckPoints purge rule: Oldest Chkpt Seqno 29 > 22.

2020-06-10 22:15:42  INFO    OGG-00957  Purged old extract file '/golden/dirdat/tr000000023', applying UseCheckPoints purge rule: Oldest Chkpt Seqno 29 > 23.

2020-06-10 22:15:42  INFO    OGG-00957  Purged old extract file '/golden/dirdat/tr000000024', applying UseCheckPoints purge rule: Oldest Chkpt Seqno 29 > 24.

2020-06-10 22:15:42  INFO    OGG-00957  Purged old extract file '/golden/dirdat/tr000000025', applying UseCheckPoints purge rule: Oldest Chkpt Seqno 29 > 25.

Finalmente validemos en el directorio dirdat:

[golden@patogolden dirdat]$ ls
tr000000026  tr000000027  tr000000028  tr000000029

podemos ver que aunque los archivos tr000000026, tr000000027 y tr000000028 ya fueron completamente procesados están siendo preservados para cumplir con el mínimo de archivos que configuramos.

Conclusión

Hemos configurado y validado el parámetro PURGEOLDEXTRACTS en el Manager de GoldenGate y los subparámetros USECHECKPOINTS y MINKEEPFILES con el fin de automatizar la depuración de los archivos trail antiguos y así mantener nuestro directorio dirdat siempre con suficiente espacio libre.