Hi Tom,
Thank you much for the timely help. I continued executing vacuum for the select tables in single user mode (ignoring warning) and the database is back to accepting writes.
Thanks
Ganesh
From: Tom Lane <tgl@xxxxxxxxxxxxx>
Sent: Wednesday, February 8, 2017 11:13:47 AM
To: Ganesh Kannan
Cc: pgsql-admin@xxxxxxxxxxxxxx
Subject: Re: Recovery from Transaction wraparound failure
Sent: Wednesday, February 8, 2017 11:13:47 AM
To: Ganesh Kannan
Cc: pgsql-admin@xxxxxxxxxxxxxx
Subject: Re: Recovery from Transaction wraparound failure
Ganesh Kannan <ganesh.kannan@xxxxxxxxxxxxxxxxxxxx> writes:
> 1) After reading the documentation, I thought I could try to vacuum
> those 20 tables that were never vacuumed individually ( with relfrozenid
> more than 2 billion) in single-user mode, but it is not working (error
> copied below).
That is not an error, it's just a warning:
> backend> vacuum freeze schema.wd_p51_y2015;
> 2017-02-07 23:25:15 EST [54045]: [8-1] user=,db=,app=,client= WARNING: database "db1" must be vacuumed within 999999 transactions
> 2017-02-07 23:25:15 EST [54045]: [9-1] user=,db=,app=,client= HINT: To avoid a database shutdown, execute a database-wide VACUUM in that database.
It's telling you that you haven't finished fixing the problem, not that
this command didn't do anything.
> Is there a way to do vacuum of individual tables in
> single-user mode?
You're doing it. I don't think you really need the "freeze" modifier
though, and that may be forcing more I/O than is needed to get out of
trouble.
regards, tom lane
> 1) After reading the documentation, I thought I could try to vacuum
> those 20 tables that were never vacuumed individually ( with relfrozenid
> more than 2 billion) in single-user mode, but it is not working (error
> copied below).
That is not an error, it's just a warning:
> backend> vacuum freeze schema.wd_p51_y2015;
> 2017-02-07 23:25:15 EST [54045]: [8-1] user=,db=,app=,client= WARNING: database "db1" must be vacuumed within 999999 transactions
> 2017-02-07 23:25:15 EST [54045]: [9-1] user=,db=,app=,client= HINT: To avoid a database shutdown, execute a database-wide VACUUM in that database.
It's telling you that you haven't finished fixing the problem, not that
this command didn't do anything.
> Is there a way to do vacuum of individual tables in
> single-user mode?
You're doing it. I don't think you really need the "freeze" modifier
though, and that may be forcing more I/O than is needed to get out of
trouble.
regards, tom lane