

postgres — Serveur de bases de données PostgreSQL
postgres [option...]
   postgres est le serveur de bases de données
   PostgreSQL. Pour qu'une application cliente puisse
   accéder à une base de données, elle se connecte (soit via le réseau soit
   localement) à un processus postgres en cours d'exécution.
   L'instance postgres démarre ensuite un processus serveur
   séparé pour gérer la connexion.
  
   Une instance postgres gère toujours les données d'un
   seul cluster. Un cluster est un ensemble de bases de données stocké à un même
   emplacement dans le système de fichiers (le « répertoire des
    données »).
   Plus d'un processus postgres peut être en cours
   d'exécution sur un système à un moment donné, s'ils utilisent des répertoires
   différents et des ports de communication différents (voir ci-dessous). Quand
   postgres se lance, il a besoin de connaître l'emplacement
   du répertoire des données. Cet emplacement doit être indiquée par l'option
   -D ou par la variable d'environnement PGDATA ;
   il n'y a pas de valeur par défaut. Typiquement, -D ou
   PGDATA pointe directement vers le répertoire des données créé
   par initdb. D'autres dispositions de fichiers
   possibles sont discutés dans Section 20.2.
   Un répertoire de données est créé avec initdb.
  
   Par défaut, postgres s'exécute en avant-plan et affiche
   ses messages dans le flux standard des erreurs. En pratique,
   postgres devrait être exécuté en tant que processus en
   arrière-plan, par exemple au lancement.
  
   La commande postgres peut aussi être appelé en mode
   mono-utilisateur. L'utilisation principal de ce mode est lors du
   « bootstrap » utilisé par initdb.
   Quelque fois, il est utilisé pour du débogage et de la récupération suite à
   un problème (mais noter qu'exécuter un serveur en mode mono-utilisateur
   n'est pas vraiment convenable pour déboguer le serveur car aucune
   communication inter-processus réaliste et aucun verrouillage n'interviennent.)
   Quand il est appelé en mode interactif à partir du shell,
   l'utilisateur peut saisir des requêtes et le résultat sera affiché à l'écran
   mais dans une forme qui est plus utile aux développeurs qu'aux utilisateurs.
   Dans le mode mono-utilisateur, la session ouverte par l'utilisateur sera
   configurée avec l'utilisateur d'identifiant 1 et les droits
   implicites du superutilisateur lui sont donnés. Cet utilisateur n'a pas besoin
   d'exister, donc le mode mono-utilisateur peut être utilisé pour récupérer
   manuellement après certains types de dommages accidentels dans les catalogues
   systèmes.
  
   postgres accepte les arguments suivants en ligne de
   commande. Pour une discussion détaillée des options, consultez Chapitre 20. Vous pouvez éviter de saisir la plupart
   de ces options en les initialisant dans le fichier de configuration.
   Certaines options (sûres) peuvent aussi être configurées à partir du
   client en cours de connexion d'une façon dépendante de l'application,
   configuration qui ne sera appliquée qu'à cette session. Par exemple
   si la variable d'environnement PGOPTIONS est
   configurée, alors les clients basés sur libpq
   passeront cette chaîne au serveur qui les interprétera comme les options
   en ligne de commande de postgres.
  
-B ntamponsConfigure le nombre de tampons partagés utilisés par les processus serveur. La valeur par défaut de ce paramètre est choisi automatiquement par initdb. Indiquer cette option est équivalent à configurer le paramètre shared_buffers.
-c nom=valeur
       Configure un parammètre d'exécution nommé. Les paramètres de configuration
       supportés par PostgreSQL sont décrits dans
       Chapitre 20. La plupart des autres options en ligne
       de commande sont en fait des formes courtes d'une affectation de
       paramètres. -c peut apparaître plusieurs fois pour
       configurer différents paramètres.
      
-C nom
       Affiche la valeur d'un paramètre d'exécution nommé, ouis quitte.
       (Voir l'option -c ci-dessus pour les détails.) Cela
       renvoie les
       valeurs du postgresql.conf, modifiées par tout
       paramètre fourni lors de cet appel. Cela ne reflète pas les paramètres
       fournis lors de la création de l'instance.
      
Ceci peut être utilisé sur un serveur en cours d'exécutio pour la plupart des paramètres. Néanmoins, le serveur doit être arrêté pour certains paramètres calculés à l'exécution (par exemple shared_memory_size, shared_memory_size_in_huge_pages et wal_segment_size).
       Cette option a pour but de permettre aux autres programmes d'interagir
       avec un outil comme pg_ctl pour récupérer des
       valeurs de configuration. Les applications utilisateurs devraient
       plutôt utiliser la commande SHOW ou la vue
       pg_settings.
      
-d niveau-débogage
       Configure le niveau de débogage. Plus haute est sa valeur, plus importante
       seront les traces écrites dans les journaux. Les valeurs vont de 1 à 5.
       Il est aussi possible de passer -d 0 pour une session
       spécifique qui empêchera le niveau des traces serveur du processus
       postgres parent d'être propagé jusqu'à cette session.
      
-D repdonnéesIndique le répertoire des fichier(s) de configuration. Voir Section 20.2 pour les détails.
-e
       Configure le style de date par défaut à « European »,
       c'est-à-dire l'ordre DMY pour les champs en entrée.
       Ceci cause aussi l'affichage de la date avant le mois dans certains
       formats de sortie de date. Voir Section 8.5 pour
       plus d'informations.
      
-F
       Désactive les appels fsync pour améliorer les
       performances au risque de corrompre des données dans l'idée d'un
       arrêt brutal du système. Spécifier cette option est équivalent à
       désactiver le paramètre de configuration fsync. Lisez la documentation détaillée avant d'utiliser
       ceci !
      
-h hôte
       Indique le nom d'hôte ou l'adresse IP sur lequel
       postgres attend les connexions TCP/IP d'applications
       clientes. La valeur peut aussi être une liste d'adresses séparées par
       des virgules ou * pour indiquer l'attente sur toutes
       les interfaces disponibles. Une valeur vide indique qu'il n'attend
       sur aucune adresse IP, auquel cas seuls les sockets de domaine Unix
       peuvent être utilisés pour se connecter au serveur.
       Par défaut, attend les connexions seulement
       sur localhost. Spécifier
       cette option est équivalent à la configurer dans le paramètre listen_addresses.
      
-i
       Autorise les clients distants à se connecter via TCP/IP (domaine
       Internet). Sans cette option, seules les connexions locales sont
       autorisées. Cette option est équivalent à la configuration du
       paramètre listen_addresses à *
       dans postgresql.conf ou via -h.
      
       Cette option est obsolète car il ne permet plus l'accès à toutes les
       fonctionnalités de listen_addresses. Il est
       généralement mieux de configurer directement
       listen_addresses.
      
-k directory
       Indique le répertoire de la socket de domaine Unix sur laquelle
       postgres est en attente des connexions des
       applications clients. Ce paramètre peut aussi contenir une liste
       de répertoires séparés par des virgules. Une valeur vide précise
       que le serveur ne doit pas écouter à des sockets de domaine Unix,
       auquel cas seul les sockets TCP/IP pourront être utilisés pour se
       connecter. La valeur par défaut est habituellement
       /tmp, mais cela peut être changé au moment de
       la compilation. Spécifier cette option est équivalent à configurer
       le paramètre unix_socket_directories.
      
-lActive les connexions sécurisées utilisant SSL. PostgreSQL doit avoir été compilé avec SSL pour que cette option soit disponible. Pour plus d'informations sur SSL, référez-vous à Section 19.9.
-N max-connectionsInitialise le nombre maximum de connexions clientes que le serveur acceptera. La valeur par défaut de ce paramètre est choisi automatiquement par initdb. Indiquer cette option est équivalent à configurer le paramètre max_connections.
-p port
       Indique le port TCP/IP ou l'extension du fichier socket de domaine Unix
       sur lequel postgres attend les connexions des
       applications clientes. Par défaut, la valeur de la variable
       d'environnement PGPORT environment ou, si cette variable
       n'est pas configurer, la valeur connue à la compilation (habituellement
       5432). Si vous indiquez un port autre que celui par défaut, alors toutes
       les applications clientes doivent indiquer le même numéro de port soit
       dans les options en ligne de commande soit avec PGPORT.
      
-sAffiche une information de temps et d'autres statistiques à la fin de chaque commande. Ceci est utile pour créer des rapports de performance ou pour configurer finement le nombre de tampons.
-S work-mem
       Indique la quantité de mémoire à utiliser par les tris internes et par
       les hachages avant d'utiliser des fichiers disque temporaires. Voir la
       description du paramètre work_mem dans Section 20.4.1.
      
-V--versionAffiche la version de postgres, puis quitte.
--nom=valeur
       Configure un paramètre à l'exécution ; c'est une version courte de
       -c.
      
--describe-config
       Cette option affiche les variables de configuration internes du serveur,
       leurs descriptions et leurs valeurs par défaut dans un format
       COPY délimité par des tabulations. Elle est conçue
       principalement pour les outils d'administration.
      
-?--helpAffiche l'aide des arguments en ligne de commande sur postgres, puis quitte.
Les options décrites ici sont utilisées principalement dans un but de débogage et pouvant quelque fois aider à la récupération de bases de données très endommagées/ Il n'y a aucune raison pour les utiliser dans la configuration d'un système en production. Elles sont listées ici à l'intention des développeurs PostgreSQL. De plus, une de ces options pourrait disparaître ou changer dans le futur sans avertissement.
-f { s | i | o | b | t | n | m | h }
       Interdit l'utilisation de parcours et de méthode de jointure
       particulières. s et i
       désactivent respectivement les parcours séquentiels et d'index,
       o, b et t
       désactivent respectivement les parcours d'index seul, les parcours
       d'index bitmap et les parcours de TID alors que n,
       m et h désactivent respectivement
       les jointures de boucles imbriquées, jointures de fusion et de hachage.
      
       Ni les parcours séquentiels ni les jointures de boucles imbriquées ne
       peuvent être désactivés complètement ; les options
       -fs et -fn ne font que décourager
       l'optimiseur d'utiliser ce type de plans.
      
-n
       Cette option est présente pour les problèmes de débogage du genre
       mort brutal d'un processus serveur. La stratégie habituelle dans cette
       situation est de notifier tous les autres processus serveur qu'ils
       doivent se terminer, puis réinitialiser la mémoire partagée et les
       sémaphores. Tout ceci parce qu'un processus serveur errant peut avoir
       corrompu certains états partagés avant de terminer. Cette option
       spécifie seulement que postgres ne réinitialisera
       pas les structures de données partagées. Un développeur système avec
       quelques connaissances peut utiliser un débogueur pour examiner l'état
       de la mémoire partagée et des sémaphores.
      
-O
       Autorise la modification de la structure des tables système. C'est
       utilisé par initdb.
      
-PIgnore les index système lors de la lecture des tables système (mais les met à jour lors de la modification des tables). Ceci est utile lors de la récupération d'index système endommagés.
-t pa[rser] | pl[anner] | e[xecutor]
       Affiche les statistiques en temps pour chaque requête en relation avec
       un des modules majeurs du système. Cette option ne peut pas être utilisée
       avec l'option -s.
      
-T
       Cette option est présente pour les problèmes de débogage du genre
       mort brutal d'un processus serveur. La stratégie habituelle dans cette
       situation est de notifier tous les autres processus serveur qu'ils
       doivent se terminer, puis réinitialiser la mémoire partagée et les
       sémaphores. Tout ceci parce qu'un processus serveur errant peut avoir
       corrompu certains états partagés avant de terminer. Cette option
       spécifie seulement que postgres arrêtera tous les
       autres processus serveur en leur envoyant le signal
       SIGSTOP mais ne les arrêtera pas. Ceci permet aux
       développeurs système de récupérer manuellement des « core dumps »
       de tous les processus serveur.
      
-v protocoleIndique le numéro de version utilisé par le protocole interface/moteur pour une session particulière. Cette option est uniquement utilisée en interne.
-W secondesUn délai de ce nombre de secondes survient quand un nouveau processus serveur est lancé, une fois la procédure d'authentification terminée. Ceci a pour but de permettre au développeur d'attacher un débogueur au processus serveur.
Les options suivantes s'appliquent uniquement en mode mono-utilisateur (voir Mode simple utilisateur ci-dessous).
--singleSélectionne le mode mono-utilisateur. Cette option doit être la première sur la ligne de commande.
baseIndique le nom de la base à accèder. Il doit être le dernier argument. Si elle est omise, le nom de l'utilisateur est utilisé par défaut.
-EAffiche toutes les commandes sur la sortie standard avant de les exécuter.
-jUtilise un point-virgule suivi par deux retours à la ligne, plutôt qu'une seule comme marqueur de fin de commande.
-r fichier
       Envoie toute la sortie des traces du serveur dans fichier. Cette option est seulement
       honorée quand elle est fournie en tant qu'option de ligne de
       commande.
      
PGCLIENTENCODINGJeu de caractères utilisé par défaut par tous les clients. (Les clients peuvent surcharger ce paramètre individuellement.) Cette valeur est aussi configurable dans le fichier de configuration.
PGDATAEmplacement du répertoire des données par défaut
PGDATESTYLEValeur par défaut du paramètre en exécution datestyle. (Cette variable d'environnement est obsolète.)
PGPORTNuméro de port par défaut (à configurer de préférence dans le fichier de configuration)
   Un message d'erreur mentionnant semget ou
   shmget indique probablement que vous devez configurer
   votre noyau pour fournir la mémoire partagée et les sémaphores adéquates.
   Pour plus de discussion, voir Section 19.4. Vous
   pouvez aussi repousser la configuration du noyau en diminuant shared_buffers pour réduire la consommation de la
   mémoire partagée utilisée par PostgreSQL, et/ou
   en diminuant max_connections pour réduire la
   consommation de sémaphores.
  
Un message d'erreur suggérant qu'un autre serveur est déjà en cours d'exécution devra vous demander une vérification attentive, par exemple en utilisant ls commandes
$ps ax | grep postgres
ou
$ps -ef | grep postgres
suivant votre système. Si vous êtes certain qu'il n'y a aucun serveur en conflit, vous pouvez supprimer le fichier verrou mentionné dans le message et tenter de nouveau.
   Un message d'erreur indiquant une incapacité à se lier à un port indique
   que ce port est déjà utilisé par des processus autres que
   PostgreSQL. Vous pouvez aussi obtenir cette
   erreur si vous quittez postgres et le relancez
   immédiatement en utilisant le même port ; dans ce cas, vous
   devez tout simplement attendre quelques secondes pour que le système
   d'exploitation ferme bien le port avant de tenter de nouveau. Enfin,
   vous pouvez obtenir cette erreur si vous indiquez un numéro de port
   que le système considère comme réservé. Par exemple, beaucoup de
   versions d'Unix considèrent les numéros de port sous 1024 comme
   de « confiance » et permettent seulement leur accès par le
   superutilisateur Unix.
  
   L'outil pg_ctl est utilisable pour lancer et
   arrêter le serveur postgres de façon sûre et confortable.
  
   Si possible, ne pas utiliser
   SIGKILL pour tuer le serveur
   postgres principal. Le fait empêchera
   postgres de libérer les ressources système
   (c'est-à-dire mémoire partagée et sémaphores) qu'il détient avant de
   s'arrêter. Ceci peut poser problèmes lors du lancement d'un
   postgres frais.
  
   Pour terminer le serveur postgres normalement, les signaux
   SIGTERM, SIGINT ou
   SIGQUIT peuvent être utilisés. Le premier attendra que
   tous les clients terminent avant de quitter, le second forcera la déconnexion
   de tous les clients et le troisième quittera immédiatement sans arrêt propre.
   Ce dernier amènera une récupération lors du redémarrage.
  
   Le signal SIGHUP rechargera les fichiers de configuration
   du serveur. Il est aussi possible d'envoyer SIGHUP à un
   processus serveur individuel mais ce n'est pas perceptible.
  
   Pour annuler une requête en cours d'exécution, envoyez le signal
   SIGINT au processus exécutant cette commande. Pour
   tuer un processus serveur de façon propre, envoyez le signal
   SIGTERM à ce processus. Voir aussi
   pg_cancel_backend et pg_terminate_backend
   dans Section 9.27.2 pour leur équivalents appelables
   avec une requête SQL.
  
   Le serveur postgres utilise aussi SIGQUIT
   pour dire à ses processus-fils de terminer sans le nettoyage habituel.
   Ce signal ne doit pas être envoyé par les utilisateurs.
   Il est aussi déconseillé d'envoyer SIGKILL
   à un processus serveur  --  le serveur postgres
   principal interprétera ceci comme un arrêt brutal et forcera tous les
   autres processus serveur à quitter dans le cas d'une procédure standard
   de récupération après arrêt brutal.
  
   Les options -- ne fonctionneront pas sous FreeBSD et OpenBSD.
   Utilisez -c à la place. C'est un bogue dans les systèmes
   d'exploitation affectés ; une prochaine version de
   PostgreSQL fournira un contournement si ce n'est
   pas corrigé.
  
Pour démarrer un serveur en mode mono-utilisateur, utilisez une commande comme
postgres --single -D /usr/local/pgsql/data autres-options ma_base
   
   Fournissez le bon chemin vers le répertoire des bases avec l'option
   -D ou assurez-vous que la variable d'environnement
   PGDATA est configurée. De plus, spécifiez le nom de la base
   particulière avec laquelle vous souhaitez travailler.
  
Habituellement, le serveur en mode mono-utilisateur traite le retour chariot comme le terminateur d'une saisie ; il n'y a pas le concept du point-virgule contraitement à psql. Pour saisir une commande sur plusieurs lignes, vous devez saisir un antislash juste avant un retour chariot, sauf pour le dernier. L'antislash et le retour à la ligne qui suit sont supprimés de la saisie en entrée. Notez que ceci survient même à l'intérieur d'un chaîne litérale ou d'un commentaire.
   Si vous utilisez l'option en ligne de commande -j, un seul
   retour à la ligne ne suffira pas à terminer la saisie. Dans
   ce cas, il faut utiliser la séquence point-virgule - retour à la ligne -
   retour à la ligne. Autrement dit, saisir un point-virgule suivi d'une ligne
   entièrement vide. La séquence antislash - retour à la ligne n'est pas traitée
   spécialement dans ce mode. Encore une fois, il n'y a aucune intelligence sur
   une séquence apparaissant à l'intérieur d'une chaîne litérale ou d'un
   commentaire.
  
Dans les modes de saisie, si vous saisissez un point-virgule qui ne se trouve ni avant ni partie prenant d'une fin de saisie, il est considéré comme un séparateur de commande. Quand vous saisissez une fin de commande, les différentes requêtes saisies seront exécutées dans la même transaction.
Pour quitter la session, saisissez EOF (habituellement, Control+D). Si vous avez saisi du texte depuis la fin de la commande précédente, alors EOF sera pris comme une fin de commande et un autre EOF sera nécessaire pour quitter.
Notez que le serveur en mode mono-utilisateur ne fournit pas de fonctionnalités avancées sur l'édition de lignes (par exemple, pas d'historique des commandes). De plus, le mode mono-utilisateur ne lance pas de processus en tâche de fond, comme par exemple les checkpoints automatiques ou la réplication.
   Pour lancer postgres en tâche de fond avec les valeurs
   par défaut, saisissez :
   
$nohup postgres >logfile 2>&1 </dev/null &
   Pour lancer postgres avec un port spécifique, e.g. 1234 :
   
$postgres -p 1234
Pour se connecter à ce serveur avec psql, indiquez le numéro de port avec l'option -p :
$psql -p 1234
   ou de configurer la variable d'environnement PGPORT :
   
$export PGPORT=1234$psql
Les paramètres nommés peuvent être configurés suivant deux façons :
$postgres -c work_mem=1234$postgres --work-mem=1234
   Ces deux formes surchargent le paramétrage qui pourrait exister pour
   work_mem dans postgresql.conf. Notez
   que les tirets bas dans les noms de paramètres sont écrits avec soir des
   tirets bas soit des tirets sur la ligne de commande. Sauf pour les expériences
   à court terme, il est probablement mieux de modifier le paramétrage dans
   postgresql.conf que de se baser sur une option en ligne
   de commande.