Re: How to recover when can't start database - Mailing list pgsql-admin

From Colin E. Freas
Subject Re: How to recover when can't start database
Date
Msg-id 42A9B2B9.80907@georgetown.edu
Whole thread Raw
In response to How to recover when can't start database  ("L.Boldareva" <pg@pierro.dds.nl>)
Responses Re: How to recover when can't start database
List pgsql-admin
Sorry if this post winds up as a duplicate on the list...

---

In an effort to disable all of the foreign key restraints on a set of
tables in my installation of PostgreSQL 8.0.1, I was fiddling with the
pg_class table and managed to elicit behavior similar to what L.
Boldareva ran into.

(This is Red Hat AS 4; Opteron w/4GB...)

pg_ctl can start and stop my postmaster, but I can't use psql to access
a database.  When I try, I get this on the command line:
---
psql: server closed the connection unexpectedly
      This probably means the server terminated abnormally
      before or while processing the request.
---
...and this in the log:
---
2005-06-07 16:44:37 EDTLOG:  connection received: host=[local] port=
2005-06-07 16:44:37 EDTLOG:  connection authorized: user=postgres
database=caarray
2005-06-07 16:44:43 EDTLOG:  server process (PID 14278) was terminated
by signal 11
2005-06-07 16:44:43 EDTLOG:  terminating any other active server processes
2005-06-07 16:44:43 EDTLOG:  all server processes terminated; reinitializing
2005-06-07 16:44:43 EDTLOG:  database system was interrupted at
2005-06-07 16:34:46 EDT
2005-06-07 16:44:43 EDTLOG:  checkpoint record is at 0/81F18770
2005-06-07 16:44:43 EDTLOG:  redo record is at 0/81F18770; undo record
is at 0/0; shutdown TRUE
2005-06-07 16:44:43 EDTLOG:  next transaction ID: 6196113; next OID: 6226772
2005-06-07 16:44:43 EDTLOG:  database system was not properly shut down;
automatic recovery in progress
2005-06-07 16:44:43 EDTLOG:  record with zero length at 0/81F187AC
2005-06-07 16:44:43 EDTLOG:  redo is not required
2005-06-07 16:44:43 EDTLOG:  database system is ready
---
I think I know exactly what caused this.  Postmaster seemed to crash
after I ran these two updates on pg_class:
---
2005-06-07 16:02:38 EDTLOG:  statement: update pg_class set
reltriggers=foo.c from (select relname,count(tgrelid) as c from
pg_class,pg_trigger where pg_class.oid=tgrelid and relnamespace=2200
group by relname) foo;
2005-06-07 16:03:21 EDTLOG:  statement: update pg_class set
reltriggers=foo.c from (select relname,count(tgrelid) as c from
pg_class,pg_trigger where pg_class.oid=tgrelid and relnamespace=2200
group by relname) foo where pg_class.relnamespace=2200;
2005-06-07 16:03:22 EDTLOG:  connection received: host=[local] port=
2005-06-07 16:03:22 EDTLOG:  connection authorized: user=postgres
database=caarray
2005-06-07 16:03:22 EDTLOG:  server process (PID 12845) was terminated
by signal 11
2005-06-07 16:03:22 EDTLOG:  terminating any other active server processes
---

If I can't ever get this database back up and running, it's no big
deal...  this isn't something in production, and I wouldn't do this on a
production machine.  However, it would save me enough time to get this
working that I'm trying this list.  The only possible saving grace I
seem to have is that immediately before I ran the updates, I made a copy
of the pg_class table.  So, if the only problem is the pg_class table,
then I'm thinking I could just copy the valid data back in, and be more
careful next time.  But, right now, I can't even get the server to talk
to me.

Also, if there's an easier way to disable and re-enable the foreign key
constraints, I'd certainly appreciate the tip as well.

Any help appreciated.

Colin Freas






pgsql-admin by date:

Previous
From: James Herbers
Date:
Subject: Re: select * and save into a text file failed
Next
From: Tom Lane
Date:
Subject: Re: PostgreSQL default data location