Purge automatique des trails avec GoldenGate

Contexte

Lors d’une sychronisation GoldenGate (en ayant utilisé datapump), les fichiers trails (contenant tous les enregistrements) peuvent s’accumuler de façon très rapide dès lors qu’il y a beaucoup de modification sur la base source. Sur une base décisionnelle on peut se retrouver à saturer un FileSystem dès les premières heures de capture. Il est alors possible de mettre en place une purge automatique de ces fichiers en s’assurant qu’il ne soient plus nécessaires.

Vérifier l'état de la réplication

Les trails se trouvent dans le répertoire GoldenGate et le sous-répertoire dirdat. Il y a actuellement, plus de 200 fichiers.

  1. Répertoire des trails
  2. info extrac
  3. info replicat
[oracle@source]# cd /outils/ggate/dirdat
[oracle@source]# ll -lrt
-rw-r-----    1 oracle   oinstall  199993616 Feb 26 11:20 aa000000000
-rw-r-----    1 oracle   oinstall  199999788 Feb 26 11:33 aa000000001
-rw-r-----    1 oracle   oinstall  199999195 Feb 26 11:47 aa000000002
-rw-r-----    1 oracle   oinstall  199999633 Feb 26 12:02 aa000000003
[...]
-rw-r-----    1 oracle   oinstall  199999777 Mar  4 14:03 aa000000213
-rw-r-----    1 oracle   oinstall  199998658 Mar  4 14:17 aa000000214
-rw-r-----    1 oracle   oinstall  199997951 Mar  4 14:28 aa000000215
-rw-r-----    1 oracle   oinstall  119199341 Mar  4 14:35 aa000000216

 

Sur les informations liées au replicat on remarque que le trail actuel est le numéro 185. Il est donc possible d’en supprimer quelques uns.

GGSCI () 1> info replicat [NOM_REPLICAT]

REPLICAT  [NOM_REPLICAT] Last Started 2021-03-04 13:01   Status RUNNING
INTEGRATED
Checkpoint Lag       23:28:13 (updated 00:00:00 ago)
Process ID           125946
Log Read Checkpoint  File /OUTILS/ggate/dirdat/bb000000185
                     2021-03-03 15:13:23.472775  RBA 89870356

Purge manuelle

La suppression manuelle se fait de manière classique en sélectionnant les trails à supprimer. A noter que les trails sur le serveur source ont été nommés en « aa* » et ceux répliqués sur le serveur cible en « bb* ».

[oracle@source_target]# cd /outils/ggate/dirdat
[oracle@source]# find . -type f -name "aa*" -mtime +2 -exec rm -rf {} \;
[oracle@target]# find . -type f -name "bb*" -mtime +2 -exec rm -rf {} \;

Purge automatique par Extract / Replicat

Si nous sommes dans un format de réplication avec datapump et que nous avons un seul process EXTRACT ou REPLICAT utilisant les fichiers trails alors il est possible d’utiliser la méthode ci-dessous.

Pour l’EXTRACT, dès qu’un nouveau trail est créé, le précédent sera envoyé sur le serveur cible puis supprimé de la source.

Pour le REPLICAT, dès qu’un trail est appliqué dans son intégralité, il est supprimé.

[oracle@source]# ./ggsci
[oracle@source]# edit param [NOM_EXTRACT]

EXTRACT [NOM_EXTRACT]
SETENV (ORACLE_HOME = "/u01/app/oracle/product/19c/dbhome_1/
SETENV (ORACLE_SID = "[ORACLE_SID]")
[...]
PURGEOLDEXTRACT
[...]
SEQUENCE [SCHEMA].*;
TABLE [SCHEMA].*;
[oracle@source]# ./ggsci
[oracle@source]# edit param [NOM_REPLICAT]

EXTRACT [NOM_REPLICAT]
SETENV (ORACLE_HOME = "/u01/app/oracle/product/19c/dbhome_1/
SETENV (ORACLE_SID = "[ORACLE_SID]")
[...]
PURGEOLDEXTRACT
[...]
MAP [SCHEMA].*, TARGET [SCHEMA].*;

Purge automatique par Manager

L’avantage d’utiliser le process MANAGER plutôt que le process EXTRACT et REPLICAT pour purger les trails, est la possibilité de supprimer les fichiers même si plusieurs process les utilisent. De plus, la purge s’effectue de manière intelligente et les trails sont supprimés uniquement si tous les process GoldenGate ont fini d’utiliser les fichiers.

Par exemple, pour les fichiers « aa* » présents sur le serveur source, ils ne seront pas supprimés dès que les fichiers sont envoyés sur le serveur de destination mais uniquement quand ils seront appliqués avec succès sur la base cible.

[oracle@source]# ./ggsci
[oracle@source]# edit param MGR

PORT 7809
DYNAMICPORTLIST 7810-7820
PURGEOLDEXTRACTS /outils/ggate/dirdat/aa*, USECHECKPOINTS, MINKEEPDAYS 2
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 5, RESETMINUTES 30
[oracle@target]# ./ggsci
[oracle@target]# edit param MGR

PORT 7809
DYNAMICPORTLIST 7810-7820
PURGEOLDEXTRACTS /outils/ggate/dirdat/bb*, USECHECKPOINTS, MINKEEPDAYS 2
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 5, RESETMINUTES 30

Il est possible d’utiliser plusieurs options :

  • USECHECKPOINT : Supprimer uniquement si le trail n’est plus nécessaire
  • NOUSEHECKPOINT : Supprimer sans tenir compte de la nécessité du trail
  • MINKEEPHOURS : Nombre d’heures de trails à garder minimum
  • MINKEEPDAYS : Nombre de jours de trails à garder minimum
  • MINKEEPFILES : Nombre de trails à garder minimum
  • FREQUENCYHOURS : Purge toutes les X heures
  • FREQUENCYMINUTES : Purger toutes les X minutes

A noter que par défaut, la purge est effectuée toutes les 10 minutes.

Cette purge est associée au paramètre « CHECKMINUTES » qui est lié au process MANAGER. Il est donc possible de modifier toutes les actions du process MANAGER via ce paramètre sans passer par le paramètre FREQUENCY*.

Une fois le process MANAGER modifié, il est nécessaire de prendre en compte ce changement de paramétrage. Pour ne pas avoir à arrêter et relancer les réplication, il est possible de recharger la configuration.

[oracle@source]# cd /outils/ggate
[oracle@source]# ./ggsci
GGSCI (source) 1> REFRESH MGR
[oracle@target]# cd /outils/ggate
[oracle@target]# ./ggsci
GGSCI (target) 1> REFRESH MGR

Vérification

Il est alors possible de vérifier que la purge fonctionne correctement toutes les 10 minutes (par défaut).

[oracle@source_target]# cd /outils/ggate
[oracle@source_target]# vi ggserr.log

2021-03-04T17:41:25.070+0100  INFO    OGG-00957  Oracle GoldenGate Manager for Oracle, mgr.prm:  Purged old extract file '/outils/ggate/dirdat/bb000000147', applying UseCheckPoints purge rule: Oldest Chkpt Seqno 185 > 147.
2021-03-04T17:41:25.122+0100  INFO    OGG-00957  Oracle GoldenGate Manager for Oracle, mgr.prm:  Purged old extract file '/outils/ggate/dirdat/bb000000148', applying UseCheckPoints purge rule: Oldest Chkpt Seqno 185 > 148.
2021-03-04T17:41:25.163+0100  INFO    OGG-00957  Oracle GoldenGate Manager for Oracle, mgr.prm:  Purged old extract file '/outils/ggate/dirdat/bb000000149', applying UseCheckPoints purge rule: Oldest Chkpt Seqno 185 > 149.
2021-03-04T17:41:25.228+0100  INFO    OGG-00957  Oracle GoldenGate Manager for Oracle, mgr.prm:  Purged old extract file '/outils/ggate/dirdat/bb000000150', applying UseCheckPoints purge rule: Oldest Chkpt Seqno 185 > 150.
2021-03-04T17:41:25.286+0100  INFO    OGG-00957  Oracle GoldenGate Manager for Oracle, mgr.prm:  Purged old extract file '/outils/ggate/dirdat/bb000000151', applying UseCheckPoints purge rule: Oldest Chkpt Seqno 185 > 151.
2021-03-04T17:41:25.351+0100  INFO    OGG-00957  Oracle GoldenGate Manager for Oracle, mgr.prm:  Purged old extract file '/outils/ggate/dirdat/bb000000152', applying UseCheckPoints purge rule: Oldest Chkpt Seqno 185 > 152.
2021-03-04T17:51:14.226+0100  INFO    OGG-00957  Oracle GoldenGate Manager for Oracle, mgr.prm:  Purged old extract file '/outils/ggate/dirdat/bb000000153', applying UseCheckPoints purge rule: Oldest Chkpt Seqno 185 > 153.
2021-03-04T18:21:10.452+0100  INFO    OGG-00957  Oracle GoldenGate Manager for Oracle, mgr.prm:  Purged old extract file '/outils/ggate/dirdat/bb000000154', applying UseCheckPoints purge rule: Oldest Chkpt Seqno 185 > 154.