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

#1 15/10/2013 18:35:28

genamiga
Membre

en-tête de page invalide dans le bloc xxxxx de la relation base/xxxxx/

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

#2 15/10/2013 22:50:41

gleu
Administrateur

Re : en-tête de page invalide dans le bloc xxxxx de la relation base/xxxxx/

Ça dépend du schéma de votre base. Cherchez les colonnes de type lo ou oid.


Guillaume.

Hors ligne

#3 15/10/2013 22:57:54

genamiga
Membre

Re : en-tête de page invalide dans le bloc xxxxx de la relation base/xxxxx/

J'ai rechercher dans toutes mes tables l'oid 599662 mais je ne l'ai pas trouvé...étrange...

Hors ligne

#4 16/10/2013 14:15:11

rjuju
Administrateur

Re : en-tête de page invalide dans le bloc xxxxx de la relation base/xxxxx/

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é.

Hors ligne

Pied de page des forums