On Fri, Jun 14, 2013 at 6:06 PM, Miguel Bezerra <[email protected]>wrote:
> Prezados,
>
> Durante a execução do vacuum full via vacuumdb (vacuumdb -d locadora01
> -f), na versão 9.1.3, ocorre o erro de "ERROR: missing chunk number 0 for
> toast value 31115602 in pg_toast_2619".
>
> Isso se trata de um bug ou de base corrompida?
>
>
>
Esse erro realmente significa base de dados corrompida. Nesse caso é na
tabela cujo oid seja 2619, para encontrá-la, execute o seguinte:
SELECT 2619::regclass;
Isso te dará a tabela problemática. Mas, infelizmente, pode ter outras com
problemas. Nesse caso, você terá que tentar executar um pg_dump de tudo que
conseguir, e restaurar numa base zerada (remova o PGDATA - faça um backup,
claro-, execute um initdb novamente, e restaure).
Provavelmente o pg_dump não vai rodar de primeira (apresentando o mesmo
erro). A primeira tentativa que deve fazer é tentar reindex a tabela toast,
se tiver sorte, apenas o indice dela está de fato corrompido:
REINDEX TABLE pg_toast.pg_toast_2619;
Se ainda assim o erro continuar, significa que você teve perda de dados.
Nesse caso você terá que ir selecionando dados da tabela em etapas para
tentar determinar a "porção" de registros que está com erro, uma vez
encontrado os registros, remova-os (talvez você conseguirá recuperar
algumas colunas) e em seguida rode o pg_dump e restaure numa base zerada.
Com relação à corrupção, duas coisas me vêm à cabeça:
1. Hardware com problema: verifique disco e memória.
2. Má administração. Por acaso você não removeu nenhum arquivo do pg_xlog
ou algo do tipo não né? Algumas pessoas insistem em fazer isso. Ou ainda,
desligou algum parâmetro de segurança, como full_page_writes? Uso o
pg_resetxlog?
Atenciosamente,
--
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral