Eu já tive esse problema antes. Abaixo estão minhas anotações de como eu consertei
Você precisa corrigir o problema executando um vácuo, como o erro sugere convenientemente. Para fazer isso, primeiro, desligue postgres
sudo /sbin/service postgresql stop
Agora, você precisará passar por cada banco de dados e executar um vácuo com o back-end independente. Como o usuário postgres Run:
postgres -D /opt/pgsql/data/ postgres
Onde / opt / pgsql / data é o caminho para o diretório de dados do postgres, e postgres é o nome do banco de dados que você deseja corrigir.
Você receberá um aviso como:
PostgreSQL stand-alone backend 8.1.18
backend>
Basta digitar VACUUM
no backend > prompt.
Você provavelmente terá algo como AVISO: banco de dados "template1" deve ser aspirado dentro de 999407 transações DICA: Para evitar o desligamento do banco de dados, execute um VACUUM de banco de dados completo em "template1".
Continue repetindo as etapas, alterando o DBNAME toda vez até não receber mais os avisos. Quando isso acontece, você pode reiniciar o postgres e tudo estará certo novamente.
Editar: Também devo mencionar que depois de fazermos esse processo algumas vezes; Decidimos implementar o processo de autovacuum: link