Из-за выхода из строя жесткого диска повреждается база данных с ошибкой вида
invalid page in block 0 of relation base/1233/112
Как-правило рушится без возможности восстановления одна из таблиц, которую можно вычислить по логу. Очистить битые страницы и восстановить из резервной копии.
В PgAdmin от пользователя postgres выполняем команды (для примера возьмём таблицу contracts_history).
select count(*) from contracts_history;
ОШИБКА: неверная страница в блоке 1385 отношения base/16394/17647
show zero_damaged_pages;
zero_damaged_pages
off
(1 row)
zero_damaged_pageson
(1 row)
count97189
(1 row)
ALTER TABLE public.dictionary_scope ALTER COLUMN id SET DEFAULT 0;
DROP SEQUENCE public.dictionary_scope_id_seq;
CREATE SEQUENCE public.dictionary_scope_id_seq; ALTER TABLE public.dictionary_scope_id_seq OWNER TO clubis;
ALTER TABLE public.dictionary_scope ALTER COLUMN id SET DEFAULT nextval('dictionary_scope_id_seq'::regclass);
base/database_oid/filenode id. Например xxxx=33264, yyyy=49743
Сначала выясняем что за бд
select datname from pg_database where oid = 33264;
Потом выясняем что за таблица
SELECT pg_filenode_relation(0, 49743);