2014-07-21 11:20 GMT-03:00 <[email protected]>:
> Executei o comando acima:
>
> oid | relkind
> ---------------------------+---------
> pg_toast.pg_toast_1088147 | t
>
>
> Olhei em [1] o tipo t (TOAST table) e nao faço ideia do que seja isto.
> _
>
humm... Não tenho boas notícias pra você. As tabelas TOAST armazenam dados
de uma determinada tabela. De forma superficial, dados que ocupam muito
espaço são comprimidos e salvos na TOAST, veja [1] para mais detalhes.
Uma tabela TOAST está sempre associada a outra tabela, para achar qual é a
tabela que realmente apresenta problemas, você deve executar a seguinte
consulta:
SELECT oid::regclass
FROM pg_class
WHERE reltoastrelid = 'pg_toast.pg_toast_1088147'::regclass;
>
>
>
> É exatamente no meio do dump que ocorre o problema.
>
Na verdade é na consulta do COPY. O fato é que qualquer consulta que
atingir (no caso fazer um "detoast") do(s) registro(s) corrompidos na
tabela TOAST vão apresentar problema. A solução seria identificar qual(is)
é(são) o(s) registro(s) problemático(s) e atualizá-lo(s) ou removê-lo(s).
Uma forma é usar LIMIT/OFFSET ou o ctid e ir recuperando registro por
registro até um erro ser apresentado.
> Tem como fazer o dump ignorando esta pg_toast?
>
Não. E nem faria sentido, tabelas tipo TOAST não são descartáveis, elas
realmente possuem partes dos dados de suas tabelas.
> Posso fazer isso e restaurar sem problemas?
>
Não. :-(
[1] http://www.postgresql.org/docs/current/static/storage-toast.html
--
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