Contexte
Sur un annuaire Sun/Oracle DSEE (ancien annuaire, encore pas mal répandu), nous avons activé le retroChangelog, afin de pouvoir identifier quelles opérations de modifications sont faites.
Pour rappel, ceci est fait via une commande dsconf :
dsconf set-server-prop -h localhost -p 389 retro-cl-enabled:on
Le paramétrage a été fait en sorte de ne garder que 30 jours de modifications :
dsconf set-server-prop -h localhost -p 389 retro-cl-max-age:30d
Malheureusement, la taille prise par les fichiers de base pour ce suffixe devient monstrueuse : plus de 500 Go :
/db/changelog# ls -l |sort -rn |head -11
-rw------- 1 root root 417548738560 Jan 2 10:54 changelog_id2entry.db3
-rw------- 1 root root 51864346624 Jan 2 10:54 changelog_entrydn.db3
-rw------- 1 root root 51318890496 Jan 2 10:54 changelog_nsuniqueid.db3
-rw------- 1 root root 25551052800 Jan 2 10:54 changelog_replicationCSN.db3
-rw------- 1 root root 16718430208 Jan 2 10:54 changelog_changenumber.db3
-rw------- 1 root root 32768 Sep 23 08:30 changelog_objectclass.db3
-rw------- 1 root root 24576 Sep 23 08:30 changelog_parentid.db3
-rw------- 1 root root 24576 Sep 23 08:30 changelog_ancestorid.db3
-rw------- 1 root root 16384 Sep 23 08:30 changelog_numsubordinates.db3
-rw------- 1 root root 16384 Sep 23 08:29 changelog_uniquemember.db3
Il est donc urgent de pouvoir récupérer de l'espace disque.
La documentation précise que l'on peut compacter un suffixe :
dsadm repack instance-path suffix-dn
Par exemple dans notre cas
opt/dsee7/bin/dsadm repack /var/lib/dsee/example cn=changelog
Malheureusement, ceci ne permet pas de récupérer plus de quelques Mo.
La documentation le précise d'ailleurs : "Since application data is not processed and based on the way the database keys are managed, it is not guaranteed that the storage space can be reclaimed."
Solution : désactiver le suffixe et supprimer les fichiers
La seule solution que j'ai pu tester est la suivante (acceptable pour le cn=changelog) :
- désactiver le retroChangelog
- arrêter l'instance d'annuaire
- supprimer les fichiers db3
- démarrer l'instance.
Dans l'ordre, voici les commandes passées :
$ /opt/dsee7/bin/dsconf set-server-prop -h localhost -p 389 retro-cl-enabled:off
$ /opt/dsee7/bin/dsadm stop /var/lib/dsee/example
$ rm -f /var/lib/dsee/example/db/changelog/*db3
A ce stade il doit juste rester le fichier DBVERSION dans le répertoire. On peut ensuite démarrer l'instance
$ ls /var/lib/dsee/example/db/changelog
DBVERSION
$ /opt/dsee7/bin/dsadm start /var/lib/dsee/example
On peut constater que les fichiers db3 dans la database changelog on été recréés et initialisés.
Si la solution fonctionne correctement pour retroChangelog (dont nous pouvons nous passer dans notre contexte) , ce n'est évidemment pas le cas s'il s'agit de données utiles.
A utiliser donc avec précaution.
Ajouter un commentaire