Les paramètres qui suivent permettent de travailler sur les sources de
PostgreSQL et, dans certains cas,
fournissent une aide à la récupération de bases de données sévèrement
endommagées. Il n'y a aucune raison de les utiliser en configuration de
production. En tant que tel, ils sont exclus du fichier d'exemple de
postgresql.conf
. Un certain nombre d'entre eux
requièrent des options de compilation spéciales pour fonctionner.
allow_in_place_tablespaces
(boolean
)
Autorise la création des tablespaces dans des répertoires situés à
l'intérieur de pg_tblspc
, quand une chaîne
d'emplacement vide est fournie à la commande CREATE
TABLESPACE
. Ceci a pour but de permettre de tester des
scénarios de réplication où le primaire et le secondaire sont exécutés
sur la même machine. Ces répertoires pourraient poser problème aux outils
de sauvegarde qui s'attendent à trouver uniquement des liens symboliques
à cet emplacement. Seuls les superutilisateurs peuvent modifier ce
paramètre.
allow_system_table_mods
(boolean
)
Autorise la modification de la structure des tables systèmes.
Ce paramètre, utilisé par initdb
,
n'est modifiable qu'au démarrage du serveur.
ignore_system_indexes
(boolean
)Ignore les index système lors de la lecture des tables système (mais continue de les mettre à jour lors de modifications des tables). Cela s'avère utile lors de la récupération d'index système endommagés. Ce paramètre ne peut pas être modifié après le démarrage de la session.
post_auth_delay
(integer
)Si ce paramètre est différent de zéro, un délai de ce nombre de secondes intervient, après l'étape d'authentification, lorsqu'un nouveau processus serveur est lancé. Ceci a pour but de donner l'opportunité aux développeurs d'attacher un débogueur au processus serveur. Ce paramètre ne peut pas être modifié après le démarrage de la session.
pre_auth_delay
(integer
)
Si ce paramètre est différent de zéro, un délai de ce nombre de secondes
intervient juste après la création d'un nouveau processus, avant le processus
d'authentification. Ceci a pour but de donner une opportunité aux développeurs d'attacher
un débogueur au processus serveur pour tracer les mauvais comportements
pendant l'authentification.
Ce paramètre ne peut être configuré que dans le fichier
postgresql.conf
ou indiqué sur la ligne de commande.
trace_notify
(boolean
)
Produit un grand nombre de sorties de débogage pour les commandes
LISTEN
et NOTIFY
.
client_min_messages ou
log_min_messages doivent être positionnées à
DEBUG1
ou plus bas pour envoyer cette sortie sur les
traces client ou serveur, respectivement.
trace_recovery_messages
(enum
)
Contrôle les niveaux des traces écrites dans le journal applicatif
pour les modules nécessaires lors du traitement de la restauration.
Cela permet à l'utilisateur de surcharger la configuration normale
de log_min_messages, mais seulement pour des
messages spécifiques. Ça a été ajouté principalement pour débugger Hot
Standby. Les valeurs valides sont DEBUG5
,
DEBUG4
, DEBUG3
,
DEBUG2
, DEBUG1
et
LOG
. La valeur par défaut, LOG
,
n'affecte pas les décisions de trace. Les autres valeurs causent
l'apparition de messages de débogage relatifs à la restauration pour
tous les messages de ce niveau et des niveaux supérieurs. Elles utilisent
malgré tout le niveau LOG
; pour les
configurations habituelles de log_min_messages
, cela
résulte en un envoi sans condition dans les traces du serveur.
Ce paramètre ne peut être configuré que dans le fichier
postgresql.conf
ou indiqué sur la ligne de commande.
trace_sort
(boolean
)
Si ce paramètre est actif, des informations concernant l'utilisation
des ressources lors des opérations de tri sont émises. Ce paramètre
n'est disponible que si la
macro TRACE_SORT
a été définie lors de la
compilation de PostgreSQL (néanmoins,
TRACE_SORT
est actuellement définie par défaut).
trace_locks
(boolean
)Si activé, émet des informations à propos de l'utilisation des verrous. L'information fournie inclut le type d'opération de verrouillage, le type de verrou et l'identifiant unique de l'objet verrouillé ou déverrouillé. Sont aussi inclus les masques de bits pour les types de verrous déjà accordés pour cet objet, ainsi que pour les types de verrous attendus sur cet objet. Pour chaque type de verrou un décompte du nombre de verrous accordés et en attente est aussi retourné, ainsi que les totaux. Un exemple de sortie dans le journal applicatif est montré ici :
LOG: LockAcquire: new: lock(0xb7acd844) id(24688,24696,0,0,0,1) grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0 wait(0) type(AccessShareLock) LOG: GrantLock: lock(0xb7acd844) id(24688,24696,0,0,0,1) grantMask(2) req(1,0,0,0,0,0,0)=1 grant(1,0,0,0,0,0,0)=1 wait(0) type(AccessShareLock) LOG: UnGrantLock: updated: lock(0xb7acd844) id(24688,24696,0,0,0,1) grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0 wait(0) type(AccessShareLock) LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1) grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0 wait(0) type(INVALID)
Les détails de la structure retournée peuvent être trouvés dans
src/include/storage/lock.h
.
Ce paramètre n'est disponible que si la macro LOCK_DEBUG
a été définie quand PostgreSQL a été
compilé.
trace_lwlocks
(boolean
)Si à on, génère des informations à propos de l'utilisation de verrous légers (lightweight lock). Les verrous légers servent principalement à fournir une exclusion mutuelle d'accès aux structures de données en mémoire partagée.
Ce paramètre n'est disponible que si la macro LOCK_DEBUG
a été définie quand PostgreSQL a été
compilé.
trace_userlocks
(boolean
)
Si activé, génère des informations à propos de l'utilisation de verrous
utilisateurs. La sortie est la même que pour trace_locks
,
mais restreinte aux verrous informatifs.
trace_lock_oidmin
(integer
)Si positionné, ne trace pas les verrouillages pour des tables en dessous de cet OID. (à utiliser pour ne pas avoir de sortie pour les tables systèmes)
Ce paramètre n'est disponible que si la macro LOCK_DEBUG
a été définie quand PostgreSQL a été
compilé.
trace_lock_table
(integer
)Tracer les verrouillages sur cette table de façon inconditionnelle.
Ce paramètre n'est disponible que si la macro LOCK_DEBUG
a été définie quand PostgreSQL a été
compilé.
debug_deadlocks
(boolean
)Si positionné, génère des informations à propos de tous les verrous en cours quand l'expiration de temps d'attente d'un verrou mortel se produit.
Ce paramètre n'est disponible que si la macro LOCK_DEBUG
a été définie quand PostgreSQL a été
compilé.
log_btree_build_stats
(boolean
)Si positionné, trace des statistiques d'utilisation de ressource système (mémoire et processeur) sur différentes opérations B-tree.
Ce paramètre n'est disponible que si la macro BTREE_BUILD_STATS
a été définie quand PostgreSQL a été
compilé.
wal_consistency_checking
(string
)
Ce paramètre est destiné à être utiliser pour vérifier la présence de bugs dans les routines d'application de WAL. Une fois activé, des images de l'intégralité des pages sont ajoutés aux enregistrements. Si l'enregistrement est ensuite rejoué, le système appliquera d'abord chaque enregistrement et testera ensuite si les tampons modifiés par l'enregistrement correspond aux images stockées. Dans certains cas (comme les hint bits), des variations mineures sont acceptables, et seront ignorées. Toute différence inattendue provoquera une erreur fatale, ce qui arrêtera la restauration.
La valeur par défaut pour ce paramètre est une chaîne cide, ce qui désactive la fonctionnalité.
Le paramètre peut être positionné à all
pour vérifier tous les enregistrements,
ou une liste séparée par des virgules de gestionnaires de sources afin de
vérifier uniquement les enregistrements en fonction de ces gestionnaires
de ressource. Actuellement, les gestionnaires de ressource supportés
sont heap
, heap2
,
btree
, hash
,
gin
, gist
,
sequence
, spgist
,
brin
, et generic
. Seuls les
superutilisateurs peuvent modifier ce paramètre.
wal_debug
(boolean
)
Si ce paramètre est positionné à on
, une sortie
de débogage relative aux WAL est émise.
Ce paramètre n'est disponible que si la macro WAL_DEBUG
a été définie au moment de la compilation de PostgreSQL.
ignore_checksum_failure
(boolean
)Ne fonctionne que si data checksums est activé.
La détection d'un échec des sommes de vérification lors d'une lecture
cause habituellement la levée d'une erreur par
PostgreSQL, ce qui annule la transaction en
cours. Activer ignore_checksum_failure
fait que le
système ignore l'échec (mais rapporte toujours un message d'avertissement)
et continue le traitement. Ce comportement pourrait être la
cause d'arrêts brutaux, de propagation ou de dissimulation de
corruption, ou d'autres problème sérieux. Néanmoins, il peut
vous permettre de dépasser l'erreur et de récupérer les lignes endommagées
qui pourraient toujours être présentes dans la table si l'en-tête du bloc
est sain. Si l'en-tête est corrompu, une erreur sera rapportée même si cette
option est activée. La configuration par défaut est off
,
et elle ne peut être modifiée que par un superutilisateur.
zero_damaged_pages
(boolean
)
La détection d'un en_tête de page endommagé cause normalement le
renvoi d'une erreur par PostgreSQL,
annulant du même coup la transaction en cours. Activer
zero_damaged_pages
fait que le système
renvoie un message d'avertissement, efface la page endommagée en
mémoire et continue son traitement. Ce comportement
détruit des données, très exactement toutes
les lignes comprises dans la page endommagée. Néanmoins, il vous
permet de passer l'erreur et de récupérer les lignes des pages
non endommagées qui pourraient être présentes dans la table.
C'est intéressant pour récupérer des données si une corruption
est survenue à cause d'une erreur logicielle ou matérielle. Vous
ne devriez pas activer cette option sauf si vous avez perdu tout
espoir de récupérer les données des pages endommagées d'une table.
L'effacement des pages n'est pas vidée sur disque donc il est
recommandé de recréer la table ou l'index avant de désactiver
de nouveau ce paramètre. La configuration par défaut est
off
, et peut seulement être modifiée par un
superutilisateur.