PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#101 Re : Général » Problèmes en transférant ma base de donnée Postgres » 16/08/2023 03:57:22

Ce message indique une corruption dans le fichier global/pg_control, fichier qui contient des informations critiques sur l'instance et notamment à partir d'où rejouer les données en cas d'arrêt brutal.


Si ce fichier est corrompu il n'est pas possible de démarrer l'instance sans perdre ou corrompre des données.  Mais plus grave que ça, ce fichier est tellement critique qu'il contient moins de 512 octets, c'est-à-dire suffisament petit pour tenir sur un bloc physique d'un disque et donc garantir des écritures atomiques.  Si ce fichier est corrompu, il est à peu près sûr qu'il y a eu un gros problème sur les disques et que le reste des données a également souffert, et qu'il n'y a pas grand chose à récupérer.  Votre meilleur espoir est de repartir depuis votre sauvegarde la plus récente.

#102 Re : Général » Problèmes en transférant ma base de donnée Postgres » 15/08/2023 08:31:29

Il nous faut plus de détail que "il y avais un problème avec le checksum data" pour pouvoir vous aider.  Pouvez-vous préciser la version de postgres (version 13 j'imagine, mais quelle version mineure ?), la liste des répertoires utilisés par postgres (répertoire data, répertoire pg_wal, tablespace etc) que vous avez récupérés, la commande utilisée pour démarrer postgres ainsi que toutes les erreurs apparaissant dans la logs.  Si vous avez également des précisions sur le système disque associé à votre serveur vps, notamment si vous avez la garantie qu'un fsync est bien durable et résiste à un crash de l'OS.


De plus, avec le packaging debian la majorité des fichiers de configuration se trouver dans /etc et non /var, avez-vous également récupérés ceux-ci?

#103 Re : Général » Problèmes en transférant ma base de donnée Postgres » 15/08/2023 01:51:35

Bonjour,


Le service postgres était-il démarré lors de l'accès FTP en "rescue mode" ?  Si oui, la copie est inutile et la base est corrompue.  Sinon, la copie aurait du fonctionner, pour peu que vous ayez bien sauvegardé toutes les données (répertoire pg_wal s'il était ailleurs, tablespaces ...).


l y avais un problème avec le checksum data (problème que j'ai réussi à régler avec la commande pg_resetwal)

Vous n'avez pas réglé le problème, vous avez définitivement corrompu les données.  Si vous avez toujours la copie originale il est possible de voir quel était le problème et peut être le régler, sinon il n'y a pas grand chose à faire.


Il est également possible que soit postgres soit l'OS étaient mal configurés et ne garantissaient pas qu'un fsync écrivait bien les données sur disque de manière durable.  Si c'est le cas, il est fort probable que le crash ait définitivement corrompu les données.

#104 Re : Installation » Bonjour » 14/08/2023 04:43:40

Bonjour,


Tout d'abord j'ai déplacé la discussion dans une section qui me semble plus pertinente.


ayant installé ubuntu 22.04 "classique", je me demande si il ne faut pas que j'installe ubuntu server ? ou alors pgsql s'en occupe t'il ?


Postgres ne changera jamais la distribution installée, et un paquet en lui-même ne pourrait pas le faire de toutes façons.  Je ne suis pas certain de la différence entre ubuntu et ubuntu serveur, mais il est très probable que la version serveur soit simplement une version un peu plus épurée ne contenant pas de paquet généralement utiles pour un serveur, mais il ne devrait pas y avoir de différence fondamentale.  Par exemple pas d'interface graphique, pas de navigateur web etc.  Vous pouvez tout à fait supprimer ces paquets manuellement si vous le souhaitez.


Y a t'il un ordre pour organiser chaque install ou je réinstale tout sans m'en préoccuper ?

Je ne comprends pas spécialement la question, mais à priori il n'y a pas d'ordre spécifique.  Les paquets ont une gestion des dépendances donc le système s'occupera d'installer ce qui manque en cas de besoin.

#106 Re : Général » Mots triés différemment entre Postgresql 12 et Postgresql 15 » 08/08/2023 13:40:05

Le problème vient très probablement de la mise à jour de glibc (2.24 sur strech et 2.31 sur bullseye).  Vous devriez avoir le même comportement au niveau de l'OS avec un simple "sort" en utilisant la même collation.

#107 Re : Installation » PostgreSQL 15 - impossible de modifier adresse et port écouté » 05/08/2023 09:04:59

Bonjour,


À priori soit vous n'avez pas redémarré postgres après avoir changé le port et listen_addresses, soit le service ne démarrage pas et impossible de vous donner la raison sans les logs.

#108 Re : Optimisation » Fragmentation des tables et indexes » 01/08/2023 03:35:36

Je suis plutôt du même avis qu'Hervé, partir sur une approche basée sur faire des VACUUM FULL plutôt que corriger la configuration autovacuum ou des tâches planifiées VACUUM me parait une mauvaise idée.

#109 Re : PL/pgSQL » Gestion de la nullabilite dans un select » 25/07/2023 01:55:28

Pour information, le lien que vous postez est pour la version 8.1, j'espère que vous utiliser une version toujours supportée.


La documentation est précise, et spécifie ce qui est conservé et non l'inverse.  De la même manière toutes les autres contraintes, indexes, trigger etc ne sont pas récupérés.


car, sauf erreur de ma part, Oracle ou DB2 notamment, le font.

Que se passe-t-il lorsqu'un attribut déclaré NOT NULL est rendu possiblement NULL, type LEFT JOIN etc?


Durant le runtime, j'ai des warnings indiquant que les données lues (select) sont null alors que déclarés not null dans le flux ... bien que le select porte sur des colonnes not null.

Le warning n'est pas très clair.  S'agit-il d'un NULL dans les données, ou d'une colonne dans une table déclarée NULL alors que l'ETL indique NOT NULL?

#110 Re : PL/pgSQL » Gestion de la nullabilite dans un select » 20/07/2023 10:12:00

Bonjour,

Le jeu de données retourné ne contient pas d'information sur la nullabilité "globale" d'une colonne.  Je ne suis pas certain de ce que vous voulez faire, mais si vous voulez créer une seconde table avec les bonnes contraintes vous pouvez utiliser à la place


CREATE TABLE reponse (LIKE mytable);
INSERT INTO reponse SELECT * FROM mytable;

#111 Re : Général » Choix architecture » 06/07/2023 05:33:27

Bonjour,


Honnêtement une base de données n'est pas faite pour stocker des documents.  La meilleure solution est de stocker ces documents dans une arborescence dédiée et ne stocker que certaines métadonnées (typiquement le chemin d'accès vers le fichier en question) en base.  Vous aurez de bien meilleures performances en tout point, que ce soit pour l'écriture des fichiers, utilisation de la base de données, sauvegardes etc.

#112 Re : Général » création d'une fonction pg_catalog.text » 03/07/2023 11:17:22

Bonjour,


Ces requêtes permettent d'avoir un transtypage automatique entre les types integer/numeric et text.


Il s'agit d'une extrêmement mauvaise idée.  Cela conduira à peu près certainement a des dysfonctionnement divers (requête erronnées qui fonctionnent quand même, très mauvaises performances...).


Y a t'il un autre moyen de répondre à leur problématique sans toucher au schéma pg_catalog ?

Oui, ils peuvent corriger leur applicatif et gérer correctement les types.  Il y a une bonne raison pour que ces transtypage n'existent pas par défaut.

#113 Re : Migration » Impossible de lancer Postgres » 27/06/2023 19:10:13

Qu'entendez-vous exactement par "un check sur pg_upgrade" ?


Si vous n'avez rien changé pourquoi la moitié des logs à l'air d'être dans un encodage différent ?


Sinon, les logs indique que le serveur a été arrêté explicitement.  On dirait cependant que 2 instances étaient démarrées sur le même répertoire de données, est-ce le cas ?


D'après ce que j'ai trouvé la solution est d'utiliser pg_resetlogx

Non, pg_resetxlog / pg_resetwal n'est JAMAIS une solution.  Cet outil permet de forcer le démarrage de l'instance malgré des problèmes en forçant une corruption définitive des données.

#114 Re : Général » Mauvaise configuration des log dans postgresql.conf. » 14/06/2023 14:17:32

Pourquoi ne pas mettre en place une rotation des fichiers ou autre ?

#116 Re : Général » Choix SGBDR » 09/06/2023 17:37:50

Bonjour,

De nos jours gérer 20000 enregistrements ne représente vraiment aucun soucis quelquesoit le moteur de base de données.  Vous devriez plutôt choisir un moteur selon les fonctionnalités dont vous avez besoin.  Si votre utilisation se limlite à des types classiques (entier, chaine de texte etc), et du SQL vraiment classique, n'importe quel moteur fera l'affaire.  Dans votre cas si vous n'avez pas spécialement de compétences sur postgres je vous conseillerais plutôt de partie sur sqlite.  La maintenance / sauvegarde est bien plus facile et vous pouvez stocker la base avec votre code.

#117 Re : Migration » Migration postegre 12.6 d'une machine à l'autre ou trouver la source ? » 09/06/2023 02:36:20

Utiliser une ancienne version mineure est une très mauvaise idée.  Vous pouvez consulter cette page pour plus de détails sur la politique de mise à jour majeure / mineure : https://www.postgresql.org/support/versioning/

#118 Re : Général » Creation d'un serveur distant » 07/06/2023 03:17:38

À mon avis le plus simple serait de demander directement sur aux auteurs du foreign data wrapper.

#119 Re : Optimisation » Lenteur Postgres version 14 et version15 par rapport à une postgres 11 » 30/05/2023 09:06:37

Avez-vous effectué un VACUUM ou un ANALYZE ?  Je parlais bien d'un ANALYZE (voire VACUUM ANALYZE, mais pas VACUUM seul ni VACUUM FULL).


Pouvez-vous montrer le résultat d'un EXPLAIN (ANALYZE, BUFFERS) sur une requête rapide avec l'ancien derveur et lente avec le nouveau ?

#120 Re : Optimisation » Lenteur Postgres version 14 et version15 par rapport à une postgres 11 » 30/05/2023 04:23:08

Un VACUUM FULL après un pg_restore n'est pas nécessaire.  Je crois cependant qu'un VACUUM FULL ANALYZE ne revient pas au même qu'un VACUUM FULL suivi d'un ANALYZE.  Pouvez-vous essayer d'effectuer un ANALYZE sur toutes vos bases et voir si cela corrige le problème ?

#121 Re : Optimisation » Lenteur Postgres version 14 et version15 par rapport à une postgres 11 » 29/05/2023 08:37:19

Bonjour,


Comment avez-vous fait la migration vers pg15?  En cas de pg_upgrade, avez-vous effectué les différentes commandes générées par pg_upgrade, cf https://www.postgresql.org/docs/current/pgupgrade.html étapes 14 et 15 ?

#122 Re : pgAdmin4 » Accès WAN aux tâches & Job de PgAgent » 26/05/2023 10:06:59

Bonjour,

Si vous parvenez à vous connecter mais qu'une partie des informations semble manquer, le plus probable est que vous vous connectiez sur un mauvais serveur.  Etes-vous sur du routage etc et que vous êtes bien sur le même serveur ?

#123 Re : Général » sequence pour generer une cle primaire - creation a posteriori ... » 17/05/2023 06:49:56

Oui c'est le comportement normal : la séquence n'est pas transactionnelle.  Autrement il serait impossible de garantir des valeurs strictement monotones.

#124 Re : Général » sequence pour generer une cle primaire - creation a posteriori ... » 16/05/2023 02:34:18

Bonjour,


Si vous ne faites que créer une séquence, celle-ci va générer des valeurs en partant de 1.  Il vous faut donc assigner la valeur courante en fonction de la valeur maximum de la table en utilisant setval() (voir https://www.postgresql.org/docs/current … uence.html ), idéalement en détenant un verrou exclusif sur la table afin d'éviter des problème en cas d'insertion concurrente.


J'aurais aimé être certain que la séquence 'ma_nouvelle_sequence' ne va pas chercher à créer des valeurs de clé primaire déjà existantes ? Même si d'après ma modeste expérience de base de données, j'imagine que le système va chercher une autre clé primaire en cas de conflit ?... ou bien ça bloque la nouvelle insertion ?

Une séquence ne fait que fournir des entiers strictement croissants, si l'entier fourni existe déjà dans une table vous aurez donc une erreur pour cause de violation de contrainte s'il s'agit d'une clé primaire de la même manière que si vous assigniez la valeur manuellement.  Je suis d'ailleurs assez dubitatif sur votre choix d'utiliser une séquence après coup pour un champ existant.  À priori l'applicatif fournit lui même une valeur, donc sans modification de tout le code qui peut insérer dans cette table la séquence ne sera jamais utilisée.  De plus, si vous ne modifiez qu'une partie du code client il est possible que des valeurs soient insérées manuellement sans passer par la séquence, ce qui mènera a une erreur à la prochaine insertion effecutée avec la séquence utilisée en valeur par défaut.

#125 Re : Général » [Résolu] question à propos des déclencheurs » 10/05/2023 15:18:01

De la même façon, en utilisant "date_part('year', now())" en expression pour la clause DEFAULT.


Attention toutefois, ce n'est pas exactement le même comportement qu'un trigger: la valeur par défaut, comme son nom l'indique, est uniquement utilisée pour spécifier une valeur si la requête qui insert la ligne n'en spécifie pas, mais ne garantit donc pas que la ligne contiendra l'année en cours si un utilisateur insère une ligne avec explicitement une autre année.

Pied de page des forums

Propulsé par FluxBB