vacuumlo — supprimer les Large Objects orphelins à partir d'une base de données PostgreSQL
vacuumlo
[option
...] nom_base
...
vacuumlo est un outil simple qui supprimera tous
les « Large Objects » « orphelins » d'une base de
données PostgreSQL. Un « Large
Object » orphelin est tout « Large Object » dont l'OID
n'apparaît dans aucune colonne oid
ou lo
de la
base de données.
Si vous l'utilisez, vous pourriez être intéressé par le trigger
lo_manage
du module lo.
lo_manage
est utile pour tenter d'éviter la création
de « Large Object » orphelins.
Toutes les bases de données indiquées sur la ligne de commande sont traitées.
vacuumlo accepte les arguments suivants en ligne de commande :
-l
limite
Supprime pas plus que limite
Large Objects par
transactions (par défaut 1000). Comme le serveur acquiert un verrou par
Large Object à supprimer, supprimer beaucoup de Large Objects en une seule
transaction risque de dépasser la limite imposée par le paramètre
max_locks_per_transaction. Configurez la limite à
zéro si vous voulez tout supprimer en une seule transaction.
-n
Ne supprime rien, affiche simplement ce qu'il aurait fait.
-v
Écrit de nombreux messages de progression.
-V
--version
Affiche la version de vacuumlo, puis quitte.
-?
--help
Affiche l'aide sur les arguments en ligne de commande de vacuumlo, puis quitte.
vacuumlo accepte aussi les arguments en ligne de commande pour les paramètres de connexion :
-h
nom_hôte
Hôte du serveur de la base.
-p
port
Port du serveur.
-U
nom_utilisateur
Nom d'utilisateur pour la connexion.
-w
--no-password
Ne demande jamais un mot de passe. Si le serveur en réclame un pour
l'authentification et qu'un mot de passe n'est pas disponible d'une autre
façon (par exemple avec le fichier .pgpass
), la
tentative de connexion échouera. Cette option peut être utile pour les
scripts où aucun utilisateur n'est présent pour saisir un mot de passe.
-W
Force vacuumlo à demander un mot de passe avant la connexion à une base de données.
Cette option n'est jamais obligatoire car
vacuumlo demandera automatiquement un mot de
passe si le serveur exige une authentification par mot de passe.
Néanmoins, vacuumlo perdra une tentative de
connexion pour trouver que le serveur veut un mot de passe. Dans certains
cas, il est préférable d'ajouter l'option -W
pour éviter
la tentative de connexion.
vacuumlo fonctionne avec la méthode suivante.
Tout d'abord, vacuumlo construit une table
temporaire contenant tous les OID des Large Objects se trouvant dans la base
sélectionnée. Puis, il parcourt toutes les colonnes de la base qui sont du
type oid
ou lo
, et supprime toutes entrées
correspondant à la table temporaire. (Note : seuls sont pris en compte
les types de ces noms ; en particulier, les domaines utilisant ces
types ne sont pas pris en compte.) Les enregistrements restants dans la
table temporaires sont identifiés comme les Large Objects orphelins. Ils sont
supprimés.
Peter Mount <peter@retep.org.uk>