Eric Parusel <[EMAIL PROTECTED]> writes:
> ./pg_filedump -i -f -R 28393 /data1/pgsql/data/base/17760/18004
> --snip--
>  Item   2 -- Length: 1728  Offset: 6464 (0x1940)  Flags: USED
>   XMIN: 12  CMIN: 196608  XMAX: 122552335  CMAX|XVAC: 177664675
>   Block Id: 0  linp Index: 47241   Attributes: 3692   Size: 0
>   infomask: 0x0900 (XMIN_COMMITTED|XMAX_INVALID)
>   Error: Computed header length not equal to header size.
>          Computed <28>  Header: <0>
> --snip--

None of those fields seem very sensible.  I suspect what's actually
corrupt is the ItemId in the page header --- ie, it's pointing at
something that's not a tuple header.  You might eyeball the ItemId
array and see if any pattern of corruption is visible.

(Oh btw: are you certain you have the right version of pg_filedump?
If it's older than your postmaster it might be giving you wrong
answers.)

> What do I do now?  Can this be repaired?
> This tuple is not needed, I can "get rid of it" or somehow dereference 
> it if need be.

If you can do without the whole page, the easiest way is to zero out the
entire page with 'dd'.  If you just want to kill that one tuple you can
reset the LP_USED bit in its ItemId.  Either way the postmaster needs to
be stopped to be sure that it's not got the page buffered while you
change it.

                        regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings

Reply via email to