Re: More than one pg_database entry for database

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "James Wilford" <jwilford(at)mistral(dot)net>
Cc: pgsql-admin(at)postgresql(dot)org
Subject: Re: More than one pg_database entry for database
Date: 2007-07-05 17:38:49
Message-ID: 19238.1183657129@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-admin

"James Wilford" <jwilford(at)mistral(dot)net> writes:
> It's a redhat version of 7.3 - rh-postgresql-server-7.3.8-2 is the
> package.

That was obsoleted by Red Hat well over two years ago; you are overdue
for an update.

> xmin | cmin | xmax | cmax | oid | ctid | datname
> ----------+------------+------------+------+----------+--------+--------
> 59254726 | 0 | 0 | 0 | 31238435 | (0,28) | misp
> 2 | 2430588419 | 2430588419 | 0 | 6790290 | (0,37) | misp

It definitely looks to me like you have a problem with XID wraparound :-(
The (0,37) row was apparently deleted long ago, but never vacuumed away,
and now its xmax has wrapped around past the 2-billion-transaction event
horizon, causing it to appear visible to MVCC-using queries. So there's
something broken about your routine vacuuming procedures; you'd better
take a look at that.

As far as getting out of the situation, the only really good answer is a
dump and reload. I can't think of any simple way of getting rid of the
bogus row, but what you should be able to do to let pg_dump work is to
rename misp to something else. You can rename it back after getting
through the dump/reload, of course.

regards, tom lane

In response to

Responses

Browse pgsql-admin by date

  From Date Subject
Next Message Alvaro Herrera 2007-07-05 17:53:04 Re: More than one pg_database entry for database
Previous Message Chris Browne 2007-07-05 16:44:13 Re: Help me find a suitable replication solution