2014-07-21 11:20 GMT-03:00 <ngonz...@ig.com.br>:

> 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
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a