The vacuum of two pg_catalog tables runs into the following error and stops there.

found xmin X from before relfrozenxid Y during vacuum

I could find a lot of discussions about this problem but solutions are hard to find. Is there any solution for this problem other then restoring the database from a backup?

postgresql 9.3.22 (I know it is old, the server is being phased out but needs to continue working for now).

1 Answer 1


You might be in luck.

The last but one point release for 9.3 has this change:

  • Ensure that updates to the relfrozenxid and relminmxid values for "nailed" system catalogs are processed in a timely fashion (Andres Freund)

    Overoptimistic caching rules could prevent these updates from being seen by other sessions, leading to spurious errors and/or data corruption. The problem was significantly worse for shared catalogs, such as pg_authid, because the stale cache data could persist into new sessions as well as existing ones.

See the discussion on the -hackers list.

  • Sounds indeed like the likely cause, on the other hand we already have planned to bring it offline sunday and do a backup restore to a new server. Think it is safer to leave it running till then. I'll try restarting it afterwards would be nice to know nothing serious was wrong.
    – Eelke
    Commented Jun 7, 2019 at 18:02
  • Make sure the new server is running the latest minor release fo 9.3. Even better would be to upgrade. Commented Jun 11, 2019 at 5:56
  • Yes we switched to the latest 10.8 on a new server. Restart of postgresql on old server also fixed the issue so it was indeed the problem described in your answer.
    – Eelke
    Commented Jun 11, 2019 at 7:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.