recuperando postgres.txt Postgres para recuperar bancos conecte via psql no banco, Vacuum(VERBOSE, FULL) ou então vacuum(VERBOSE, FREEZE) na tabela que deu erro, veja se mostra o numero do bloco que está com erro Descobrindo a pasta de dados do postgres veja a variavel data_directory no arquivo postgresql.conf que normalmente está na pasta /etc/postgresql/13/main (para a versao 13 do postgres) normalmente o diretorio é: /var/lib/postgresql/13/main (para a veresao 13) e os dados estão na pasta "base" Descobrindo o nome fisico do banco: select oid from pg_database where datname = 'Nome_do_banco'; (faça isto conectado no postgres) Descobrindo o nome fisico da tabela: select relfilenode from pg_class where relname = 'nome_da_tabela'; (faça isto conectado banco a ser corrigido) Descubra o tamanho do bloco nas tabelas SELECT current_setting('block_size'); com o numero da tabela, o bloco que está com problema e o tamanho do bloco, limpe os dados do bloco danificado dd if=/dev/zero conv=notrunc of=base/16387/16402.182 bs=8192 count=1 seek=107958 considerando: - 16387 nome fisico do bancodd if=/dev/zero conv=notrunc of=base/16387/16402.182 bs=8192 count=1 seek=107958 - 16402.182 nome fisico da tabela - 8192 tamanho do bloco de dados - 107958 - numero do bloco corrompido Faça isto para todos os blocos corrompidos VACUUM FULL FREEZE VERBOSE ANALYZE;