как пофиксить поврежденную таблицу?

Dr Arthur

Новичок
как пофиксить поврежденную таблицу?

Такая вот трабла:

добавил в таблицу новое поле (bigint), потом создал уникальный индекс. После этого создал sequence и запустил запрос

UPDATE "PROF"
SET "IncId" = nextval('public."IncId_seq"'::text);

В таблице 300 000 записей. Запрос отрабатывал около 5 минут.
После этого при попытках сделать SELECT, VACUUM FULL и т.п. возникает ошибка:

ERROR: Invalid page header in block 13305 of PROF

Насколько я понял, таблица повредилась во время апдейта.
Как это пофиксить и что сделать, чтобы предотвратить такие ошибки в будущем?

-~{}~ 03.09.05 13:24:

PS. PostgreSQL 7.3.4 on RedHat Linux 7.3
на этом линухе куча всего перекомпилена, так что он не совсем 7.3
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Во-первых, последняя версия в ветке 7.3.x --- 7.3.10, в которой наверняка мно-о-ого багов исправлено.

Во-вторых, просто так таблицы не портятся (особенно если никто провод из компа не выдёргивал / кулаком по корпусу не долбил). Рекомендуется проверить железо.

Поиск по сообщению об ошибке дал советы занулить побитый блок. Но если есть бэкап, то лучше из бэкапа, мало ли какие там данные побились.
 

Dr Arthur

Новичок
Спасибо за рекомендации,

В гугле я тоже поискал и на irc постгресовскую заходил. Все в один голос говорят, что проблемы с железом. Надо будет пнуть провайдера, это на хостинге приключилось.

К счастью у меня есть бэкап базы и я все восстановил, но хотелось бы избежать такого в будущем.

Кстати, чем можно было бы потетить железо на хостинге, если доступ к линху есть только через консоль (рутовый доступ есть).
 
Сверху