From: Tom Lane <tgl@sss.pgh.pa.us>
To: Ian Burrell <imb@rentrak.com>
Cc: pgsql-admin@postgresql.org
Subject: Re: Invalid page header
Date: Thu, 22 Jul 2004 14:24:07 -0400
Message-ID: <11036.1090520647@sss.pgh.pa.us> (raw)
In-Reply-To: <40FFF98C.3000309@rentrak.com>
References: <40FFF98C.3000309@rentrak.com>
Ian Burrell <imb@rentrak.com> writes:
> I get the following error message when doing a select on a table:
> ERROR: invalid page header in block 295 of relation "reported_titles"
> How do I fix this corruption?
You can zap just the failed block by turning on "zero_damaged_pages";
that will at least allow you to recover the rest of the table. If you
want to try harder, you could look at the damaged page with pg_filedump
(http://sources.redhat.com/rhdb/) or a similar tool and try to intuit
how to fix it manually.
> What could cause the corruption? We are using custom C code. Could
> bugs in this be causing it? Or is hardware problems more likely?
Hmm. A scribble-on-memory kind of bug could cause this, but in my
experience it's unusual for coding errors to trash the disk buffers ---
that's a relatively small part of your address space, and usually a
memory clobber will crash the backend elsewhere before it hits a disk
buffer. (BTW, one reason we force a database restart after a backend
crash is in hopes of not letting any such clobber make it to disk. The
contents of shared disk buffers are simply thrown away in a restart.)
It would probably be worth your while to look at the damaged page with
pg_filedump before you zap it. The symptoms of hardware misfeasance and
software errors are enough different that you can often tell which
theory to believe by examining the bits.
regards, tom lane
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-admin@postgresql.org
Cc: tgl@sss.pgh.pa.us, imb@rentrak.com
Subject: Re: Invalid page header
In-Reply-To: <11036.1090520647@sss.pgh.pa.us>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox