Vous n'êtes pas identifié(e).
Bonjour,
J'utilise PostreSQL 9.2.4, lors d'un vacuumdb : l'exécution de VACUUM sur la base de données « xxx » a échoué : ERREUR: en-tête de page invalide dans le bloc 39639 de la relation base/16384/599662
Après qlq recherches
Lors d'un
SELECT * FROM pg_catalog.pg_largeobject
Résultat
ERREUR: en-tête de page invalide dans le bloc 39639 de la relation base/16384/599662
Je suppose que les données du LargeObject 599662 sont corrompues...
La question est : Comment puis-je savoir où ce LargeObject est utilisé ?
Je peux, bien-sûr, ajouter l'option "zero_damaged_pages = on" au postgresql.conf. Puis faire un dump/restore.
Mais dans ce cas je ne saurais pas où est utilisé ce LargeObject corrompu...
Si vous avez une idée...
Merci d'avance.
Hors ligne
Ça dépend du schéma de votre base. Cherchez les colonnes de type lo ou oid.
Guillaume.
Hors ligne
J'ai rechercher dans toutes mes tables l'oid 599662 mais je ne l'ai pas trouvé...étrange...
Hors ligne
599662 correspond au champ relfilenode de pg_class (à priori correspondant à la table pg_largeobject).
Les largeobject sont généralement utilisés en créant une colonne de type oid dans une table utilisateur, ce champ pointant vers le numéro du largeobject (loid), dans la table pg_largeobject. Il faut donc rechercher des tables utilisateur avec ce type de champ pour savoir où il pourrait être utilisé.
Julien.
https://rjuju.github.io/
Hors ligne