Re: Unable to open DB: 2 Errors (unexpected zero page + could not open relation with OID)

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: dave sale <postgres(at)slipt(dot)net>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Unable to open DB: 2 Errors (unexpected zero page + could not open relation with OID)
Date: 2009-01-26 19:32:12
Message-ID: 21569.1232998332@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

dave sale <postgres(at)slipt(dot)net> writes:
> psql: FATAL: could not open relation with OID 3606

> I'm pretty sure the file is there for 3606, but it's another system index from what I can tell:

> postgres=> select oid,* from pg_class where oid=3606;
> oid | relname | relnamespace | reltype | relowner | relam | relfilenode | reltablespace | relpages | reltuples | reltoastrelid | reltoastidxid | relhasindex | relisshared | relkind | relnatts | relchecks | reltriggers | relukeys | relfkeys | relrefs | relhasoids | relhaspkey | relhasrules | relhassubclass | relfrozenxid | relacl | reloptions
> ------+----------------------------+--------------+---------+----------+-------+-------------+---------------+----------+-----------+---------------+---------------+-------------+-------------+---------+----------+-----------+-------------+----------+----------+---------+------------+------------+-------------+----------------+--------------+--------+------------
> 3606 | pg_ts_parser_prsname_index | 11 | 0 | 10 | 403 | 33505478 | 0 | 2 | 1 | 0 | 0 | f | f | i | 2 | 0 | 0 | 0 | 0 | 0 | f | f | f | f | 0 | |
> (1 row)

That's bizarre. A look into the source code says you can only get that
particular error message when the relcache code is unable to find a
pg_class row for OID 3606 ... so how come there is one? My best guess
at the moment is that the row looks valid to an MVCC snapshot but not
under SnapshotNow rules. What do the xmin and xmax fields of that row
contain?

Also, you might be able to get out of this problem (at least far enough
to dump the tables you need) by copying pg_internal.init from an
undamaged database into the damaged one. Better keep the old copy of
the file (if any) in case this makes things worse, though.

regards, tom lane

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message dave sale 2009-01-26 19:59:20 Re: Unable to open DB: 2 Errors (unexpected zero page + could not open relation with OID)
Previous Message dave sale 2009-01-26 17:13:05 Unable to open DB: 2 Errors (unexpected zero page + could not open relation with OID)