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
)Permet les modifications de la structure de tables systèmes ainsi que certaines autres actions risquées sur les tables systèmes. Ceci n'est autrement pas autorisé, y compris pour les superutilisateurs. Une mauvaise utilisation de ce paramètre peut causer des pertes de données irrécupérables ou une corruption sérieuse du système de bases de données. Seuls les superutilisateurs peuvent modifier ce paramètre.
backtrace_functions
(string
)
Ce paramètre contient une liste de noms de fonctions C séparés par des virgules. Si une erreur est levée et que le nom d'une fonction C où une erreur survient correspond à une valeur de la liste, alors la pile d'appel est écrite dans les traces du serveur avec le message d'erreur. Ceci peut être utilisé pour déboguer des aires spécifiques du code source.
Cette fonctionnalité n'est pas disponibles sur toutes les plateformes et la qualité des traces dépend des options de compilation.
Ce paramètre peut seulement être configuré par les superutilisateurs.
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
)Durée d'attente, 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. Si cette valeur est indiquée sans unité, elle est comprise pour un nombre de secondes. La valeur par défaut, 0, désactive ce délai. Ce paramètre ne peut pas être modifié après le démarrage de la session.
pre_auth_delay
(integer
)
Durée d'attente, 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. Si cette valeur est indiquée sans unité, elle est
comprise pour un nombre de secondes. La valeur par défaut, 0, désactive
ce délai. 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.
ignore_invalid_pages
(boolean
)
Si configuré à off
(la valeur par défaut), la
détection d'enregistrements de journaux de transactions ayant des
références à des pages invalides lors de la restauration fait que
PostgreSQL lève une erreur de niveau PANIC,
annulant la restauration. Configurer
ignore_invalid_pages
à on
fait que
le système ignore les références invalides de page dans les
enregistrements des journaux de transactions (tout en renvoyant malgré
tout un message d'avertissement) et continue la restauration. Ce
comportement peut causer des crashs, des pertes de données,
propager ou cacher la corruption, ainsi que différents autres problèmes
sérieux. Néanmoins, il peut vous permettre de passer l'erreur
de niveau PANIC pour finir la restauration, et permettre ainsi au
serveur de démarrer. Ce paramètre peut seulement être configuré au
démarrage du serveur. Il a seulement un effet lors de la restauration et
dans le mode standby.
jit_debugging_support
(boolean
)
Si LLVM en est capable, enregistre les fonctions générées auprès de
GDB. Cela facilite le débogage.
Le paramètrage par défaut est off
.
Ce paramètre peut seulement être configuré au démarrage du serveur.
jit_dump_bitcode
(boolean
)
Écrit l'IR (intermediate representation)
de LLVM dans le système de fichiers, dans
data_directory. Ce n'est utile que pour travailler
sur le fonctionnement interne de l'implémentation JIT.
Le défaut est off
.
Ce paramètre peut seulement être configuré au démarrage du serveur.
jit_expressions
(boolean
)
Détermine si les expressions sont compilées par JIT quand la
compilation JIT est activée (voir Section 31.2). La
valeur par défaut est on
.
jit_profiling_support
(boolean
)
Si LLVM le peut, pour que perf puisse
profiler les fonctions générées par le JIT, écrit les données
nécessaires dans des fichiers dans $HOME/.debug/jit/
; l'utilisateur est responsable du nettoyage en temps
voulu.
Le paramétrage par défaut est off
,.
Il ne peut être mis en place qu'au démarrage du serveur.
jit_tuple_deforming
(boolean
)
Détermine si le décodage d'enregistrement est compilé par le JIT,
quand la compilation JIT est activée (voir Section 31.2). Le défaut est on
.