PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 17.1 » Référence » Applications client de PostgreSQL » pg_amcheck

pg_amcheck

pg_amcheck — vérifie la corruption d'une ou plusieurs bases de données PostgreSQL

Synopsis

pg_amcheck [option...] [nom_base]

Description

pg_amcheck exécute les fonctions de vérification de corruption fournies par amcheck sur une ou plusieurs bases de données, avec des options pour sélectionner schémas, tables et index à vérifier, et s'il faut réaliser les tests en parallèle et, si oui, le nombre de connexions parallélisées à établir et utiliser.

Seuls les relations de tables ordinaires et de tables TOAST, les vues matérialisées, les séquences et les index BTree sont actuellement acceptés. Les autres types de relation sont silencieusement ignorés.

Si nom_base est précisé, elle devra correspondre au nom d'une base à vérifier, et aucune autre option de sélection de base ne devra être présente. Sinon, toutes les bases correspondantes seront vérifiées. Si aucune de ces options n'est présente, la base de données par défaut sera vérifiée. Les options de sélection de bases incluent --all, --database et --exclude-database. Elles incluent aussi --relation, --exclude-relation, --table, --exclude-table, --index et --exclude-index, mais seulement quand de telles options sont utilisées avec un motif en trois parties(par exemple, mabase*.monschema*.marelation*). Enfin, elles incluent --schema et --exclude-schema quand ces options sont utilisées avec un motif en deux parties(par exemple, mabase*.monschema*).

nom_base peut aussi être remplacé par une chaîne de connexion.

Options

Les lignes de commande suivante contrôlent ce qui doit être vérifié :

-a
--all

Vérifie toutes les bases de données, sauf celles exclues avec --exclude-database.

-d motif
--database=motif

Vérifie les bases de données correspondant au motif, indiqué en dehors de celles exclues par l'option --exclude-database. Cette option peut être utilisée plus d'une fois.

-D motif
--exclude-database=motif

Exclut les bases de données correspondant au motif indiqué. Cette option peut être utilisée plus d'une fois.

-i motif
--index=motif

Vérifie les index correspondant au motif indiqué, sauf s'ils sont exclus d'une autre façon. Cette option peut être utilisée plus d'une fois.

Ceci est similaire à l'option --relation, sauf qu'il s'applique seulement aux index, et non pas aux autres types de relation.

-I motif
--exclude-index=motif

Exclut les index correspondant au motif indiqué. Cette option peut être utilisée plus d'une fois.

Ceci est similaire à l'option --exclude-relation, sauf qu'il s'applique seulement aux index, et non pas aux autres types de relation.

-r motif
--relation=motif

Vérifie les relations correspondant au motif indiqué, sauf si elles sont exclues autrement. Cette option peut être utilisée plus d'une fois.

Les motifs peuvent être sans qualification de schéma, par exemple marelation*, ou ils peuvent avoir une qualification comme monschema*.marelation* ou une qualification de base et de schéma, par exemple mabase*.monschema*.marelation*. Un motif avec une qualification de base ajoutera la correspondance de bases à la liste des bases de données à vérifier.

-R motif
--exclude-relation=motif

Exclut les relations correspondant au motif indiqué. Cette option peut être utilisée plus d'une fois.

Comme avec --relation, le motif peut être sans qualification, qualité du schéma, qualifié du schéma et de la base.

-s motif
--schema=motif

Vérifie les tables et indexes des schémas correspondant au motif indiqué, sauf s'ils sont exclus autrement. Cette option peut être utilisée plus d'une fois.

Pour sélectionner seulement les tables dans les schémas correspondant à un motif particulier, considérez l'utilisation de quelque chose comme --table=MOTIFSCHEMA.* --no-dependent-indexes. Pour sélectionner seulement les index, considérez l'utilisation de quelque chose comme --index=MOTIFSCHEMA.*.

Un motif de schémas pourrait être qualifié du nom de base. Par exemple, vous pourriez écrire --schema=mabase*.monschema* pour sélectionner les schémas correspondant à monschema* dans les bases de données correspondant à mabase*.

-S motif
--exclude-schema=motif

Exclut les tables et index dans les schémas correspondant au motif indiqué. Cette option peut être utilisée plus d'une fois.

Comme avec --schema, le motif peut être qualifié du nom de la base.

-t motif
--table=motif

Vérifie les tables correspondant au motif indiqué, sauf si elles sont exclues autrement. Cette option peut être utilisée plus d'une fois.

Ceci est similaire à l'option --relation, sauf qu'elle s'applique seulement aux tables, vues matérialisées et séquences, et non pas aux index.

-T motif
--exclude-table=motif

Exclut les tables correspondant au motif indiqué. Cette option peut être utilisée plus d'une fois.

Ceci est similaire à l'option --exclude-relation, sauf qu'elle s'applique seulement aux tables, vues matérialisées et séquences, et non pas aux index.

--no-dependent-indexes

Par défaut, si une table est vérifiée, tout index btree de cette table est lui-aussi vérifié, même s'ils ne sont pas explicitement sélectionnés par une option telle que --index ou --relation. Cette option désactive ce comportement.

--no-dependent-toast

Par défaut, si une table est vérifiée, sa table TOAST sera aussi vérifiée, même si elle n'est pas explicitement sélectionnée par une option telle que --table ou --relation. Cette option désactive ce comportement.

--no-strict-names

Par défaut, si un argument de --database, --table, --index ou --relation ne correspond à aucun objet, ceci est traité comme une erreur fatale. Cette option diminue le niveau de l'erreur à un simple message d'avertissement.

Les options en ligne de commande suivantes contrôlent la vérification des tables :

--exclude-toast-pointers

Par défaut, quand un pointeur TOAST est rencontré sur une table, une recherche est réalisée pour s'assurer qu'elle référence toujours des entrés apparemment valides dans la table TOAST. Ces vérifications peuvent être assez lentes, et cette option peut être utilisée pour ne pas les faire.

--on-error-stop

Après avoir affiché toutes les corruptions du premier bloc d'une table om une corruption a été trouvé, arrête le traitement de cette table et continue avec la prochaine table ou le prochain index.

Notez que cette vérification des index s'arrête toujours après le premier bloc corrompu. Cette option a seulement les tables pour cible.

--skip=option

Si all-frozen est indiqué, les vérifications de corruption de table ignoreront les blocs des tables marqués comme gelés entièrement.

Si all-visible est indiqué, les vérifications de corruption de table ignoreront les blocs des tables marqués comme visibles entièrement.

Par défaut, aucun bloc n'est ignoré. Ceci peut être indiqué avec none mais comme il s'agit de la valeur par défaut, il n'est pas nécessaire de le mentionner.

--startblock=bloc

Commence la vérification au numéro de bloc mentionné. Une erreur surviendra si la table en cours de vérification a moins de blocs que ce numéro. Cette option ne s'applique pas aux index et est probablement uniquement utile lors de la vérification d'une seule table. Voir --endblock pour d'autres mises en garde.

--endblock=bloc

Termine la vérification au numéro de bloc mentionné. Une erreur surviendra si la table en cours de vérification a moins de blocs que ce numéro. Cette option ne s'applique pas aux index et est probablement uniquement utile lors de la vérification d'une seule table. Si une table normale et une table TOAST sont vérifiées, cette option s'appliquera aux deux mais des blocs supérieurs du TOAST pourraient être accédés pour valider les pointeurs des valeurs TOAST, sauf si cela est désactivé avec l'option --exclude-toast-pointers.

Les options en ligne de commande suivantes contrôlent la vérification des index B-tree :

--checkunique

Pour chaque index vérifié avec une contrainte d'unicité, vérifie que pas plus d'une entrée parmi les entrées dupliquées n'est visible dans un index utilisant l'option checkunique de amcheck.

--heapallindexed

Pour chaque index vérifié, vérifie la présence de toutes les lignes de la table comme enregistrements dans l'index en utilisant l'option heapallindexed d'amcheck.

--parent-check

Pour chaque index btree vérifié, utilisez la fonction bt_index_parent_check d' amcheck, qui réalise des vérifications supplémentaires des relations parent/enfant lors de la vérification de l'index.

Le comportement par défaut est d'utiliser la fonction bt_index_check d'amcheck, mais notez que l'utilisation de l'option --rootdescend sélectionne implicitement bt_index_parent_check.

--rootdescend

Pour chaque index vérifié, retrouve les lignes au niveau feuille en réalisant une nouvelle recherche du bloc racine pour chaque ligne en utilisant l'option rootdescend d'amcheck.

Utiliser cette option implicitement sélectionne aussi l'option --parent-check.

Cette forme de vérification a été écrit à l'origine pour aider au développement des fonctionnalités de l'index btree. Elle sera d'utilisation limitée, voire inutile, pour aider à la détection de corruptions survenant réellement. Elle pourrait aussi faire que la vérification de corruption prenne beaucoup plus de temps et consomme beaucoup plus de ressources sur le serveur.

Avertissement

Les vérifications supplémentaires réalisées avec les index B-tree quand l'option --parent-check ou l'option --rootdescend sont spécifiées nécessitent des verrous relativement fort sur les relations. Ce sont les seules vérifications qui bloquent les modifications concurrentes de données par les commandes INSERT, UPDATE et DELETE.

Les options en ligne de commande suivantes contrôlent la connexion au serveur :

-h nom_hôte
--host=nom_hôte

Indique le nom d'hôte de la machine qui héberge le serveur de bases de données. Si la valeur commence par une barre oblique (/), elle est utilisée comme répertoire pour la socket de domaine Unix.

-p port
--port=port

Indique le port TCP ou l'extension du fichier local de la socket de domaine Unix sur lequel le serveur attend les connexions.

-U
--username=nom_rôle

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
--password

Force pg_amcheck à demander un mot de passe avant la connexion à une base de données.

Cette option n'est jamais obligatoire car pg_amcheck demandera automatiquement un mot de passe si le serveur exige une authentification par mot de passe. Néanmoins, pg_amcheck 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.

--maintenance-db=nom_base

Indique le nom de la base ou une chaîne de connexion à utiliser pour récupérer la liste des bases à vérifier. Si ni --all ni d'autres options incluant un motif de nom de bases de données n'est utilisé, cette connexion n'est pas nécessaire et cette option ne fera rien. Sinon, tous les paramètres de la chaîne de connexion autre que le nom de le base, qui sont inclus dans la valeur pour cette option, seront aussi utilisés pour se connecter aux bases de données à vérifier. Si cette option est omise, la valeur par défaut est postgres ou, en cas d'échec, template1.

D'autres options sont aussi disponibles :

-e
--echo

Afficher sur la sortie standard toutes les requêtes SQL envoyées au serveur.

-j nombre
--jobs=nombre

Utilise nombre connexions concurrentes au serveur ou une par objet à vérifier, suivant ce qui fera le moins de connexions.

Par défaut, utilise une seule connexion.

-P
--progress

Affiche des informations de progression. Ces dernières inclient le nombre de relations pour lesquelles la vérification est terminée, et la taille totale de ces relations. Elles incluent aussi le nombre total de relations qui devront être vérifiées et la taille estimée de ces relations.

-v
--verbose

Affiche plus de messages. En particulier, cela affichera un message pour chaque relation en cours de vérification, et cela accroitera le niveau de détails utilisé pour les erreurs du serveur.

-V
--version

Affiche la version de pg_amcheck, puis quitte.

--install-missing
--install-missing=schema

Installe toute extension manquante requise pour vérifier les bases de données. S'ils ne sont pas encore installés, les objets de chaque extension seront installés dans le schéma schema. S'il n'est pas spécifié, ils iront dans le schéma pg_catalog.

Actuellement, la seule extension requise est amcheck.

-?
--help

Affiche l'aide sur les arguments en ligne de commande de pg_amcheck, puis quitte.

Environment

pg_amcheck, comme la plupart des outils de la distribution PostgreSQL, utilise aussi les variables d'environnement acceptées par libpq (voir Section 32.15).

La variable d'environnement PG_COLOR indique s'il faut utiliser, ou pas, les couleurs dans les messages de diagnostique. Les valeurs possibles sont always, auto et never.

Notes

pg_amcheck est conçu pour fonctionner avec PostgreSQL 14.0 et ultérieur.

Voir aussi

amcheck