Da última vez que isso me aconteceu foi causado por um pente de memória defeituoso. Dados em memória ficavam corrompidos antes de serem despejados para o disco. Não dá pra dizer cruamente se o erro foi parar no disco durante um checkpoint ou causado por buffers do sistema operacional.Estou tendo problemas em um cliente (com uma base de dados muito pequena, aproximadamente 80MB).
Nos ultimos 3 dias, esse erro ocorreu 2 vezes, fazendo que houvesse perda de alguns dados, por eu não ter conseguido recuperar a tabela/registro.
Fiz algumas pesquisas, e pelo que entendi é um problema num registro especifico da tabela.
O erro acontece ao tentar selecionar um determinado registro ou grupo de registros, e ocorre em diversas tabelas. O pg_dump também é interrompido quando chega a tabela.
Gostaria de saber se alguem da lista ja passou por algo parecido, se existe alguma solução, e quais seriam as possiveis causas.
Por isso é recomendado usar memória com correção de erro em servidores sérios de produção.
A única solução 100% válida é restaurar um backup que você tenha.
Caso você não tenha um backup restaurável, soluções paliativas incluem fazer um pg_dump sem a tabela corrompida (possível com pg_dump >= 8.4), restaurar em outro banco e depois fazer um pg_dump só da tabela corrompida. A parte dos dados da tabela que estão integros irão pro arquivo de dump mas tudo irá parar ao encontrar a página problemática. Daí em diante você perde os dados. O arquivo de dump precisará ser corrigido manualmente para ser restaurável.
Você pode também transferir dados do banco ruim para um bom usando uma ferramenta de migração, por exemplo o Kettle da suíte Pentaho faz isso muito bem.
[]s
Flavio Henrique A. Gurgel
tel. 55-11-2125.4786
cel. 55-11-6429.0496
www.4linux.com.br
FREE SOFTWARE SOLUTIONS
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
