Documentation PostgreSQL 15.15 » Référence » Applications client de PostgreSQL » pg_amcheck

Précédent | Niveau supérieur | Suivant
ecpg | Sommaire | pg_basebackup

## 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 :

`--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.

## Notes

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

## Voir aussi

amcheck