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.
- Répertoire des trails
- info extrac
- 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.