powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как пофиксить поврежденную таблицу?
24 сообщений из 24, страница 1 из 1
как пофиксить поврежденную таблицу?
    #33249824
_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

Насколько я понял, таблица повредилась во время апдейта.
Как это пофиксить и что сделать, чтобы предотвратить такие ошибки в будущем?
...
Рейтинг: 0 / 0
как пофиксить поврежденную таблицу?
    #33249831
_Arthur_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PS. PostgreSQL 7.3.4 on RedHat Linux 7.3
на этом линухе куча всего перекомпилена, так что он не совсем 7.3
...
Рейтинг: 0 / 0
как пофиксить поврежденную таблицу?
    #33254783
Hordi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Было аналогичное пару раз... Правда в моем случае такое получилось после reset'а. Полечить не удалось. Попробовал как последнее средство переинициализацию лога (за соломинку хватался) - не помогло. Пришлось прибить таблицу с данными и создать заново :(
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
как пофиксить поврежденную таблицу?
    #34618888
4_Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_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

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

аналогичная проблема, кто то решал её? постгрес 8.1.2, таблицу убивать нельзя
...
Рейтинг: 0 / 0
как пофиксить поврежденную таблицу?
    #34619148
Dan Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделать проверку оперативной памяти и жестких дисков, и почаще обновлять софт

З.Ы.
Гугл рулит ;)

Verba volent, scripta manent
...
Рейтинг: 0 / 0
как пофиксить поврежденную таблицу?
    #34619172
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Была аналогичная проблема. Данные были легко восстановимы, поэтому пересоздали таблицу, перезалили в нее данные.

Можно много нагуглить по этой ошибке. Кажется был даже тул для порсмотра файлов таблиц постгреса. И не делайте сейчас vacuum, vacuum full.
...
Рейтинг: 0 / 0
как пофиксить поврежденную таблицу?
    #34620029
4_Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dan BlackСделать проверку оперативной памяти и жестких дисков, и почаще обновлять софт

З.Ы.
Гугл рулит ;)

Verba volent, scripta manent

С железом проблем нет,
раз в сутки удаляеться часть записей и делаеться вакум
По поводу восстановления, это про бекап ресторе?
...
Рейтинг: 0 / 0
как пофиксить поврежденную таблицу?
    #34629164
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
Проблема в индексе, скорее всего. Покажите команду, которой индекс(ы) на таблицу создавали.
...
Рейтинг: 0 / 0
как пофиксить поврежденную таблицу?
    #34629255
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBGПроблема в индексе, скорее всего.Нет, здесь проблема не в индексе. Так как с такой ошибкой вылетает в частности безусловный селект, выполняющийся через SeqScan, то есть не затрагивающий индексы. И в тексте ошибки явно написано, что "invalid page header" относится к таблице.
...
Рейтинг: 0 / 0
как пофиксить поврежденную таблицу?
    #34629385
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
Позволю себе не согласиться с утверждением выше, поскольку уже сталкивался с такой ситуацией, когда ошибка в индексе приводит к повреждению таблицы.
...
Рейтинг: 0 / 0
как пофиксить поврежденную таблицу?
    #34630315
4_Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MBGПозволю себе не согласиться с утверждением выше, поскольку уже сталкивался с такой ситуацией, когда ошибка в индексе приводит к повреждению таблицы.

таки не в индексе дело, а в таблице, сделал "новую" таблицу, залил туда данные, потому в "старой" позволил себе удалить индексы, проблема осталась та же
...
Рейтинг: 0 / 0
как пофиксить поврежденную таблицу?
    #34630346
iz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
iz
Гость
_Arthur_что сделать, чтобы предотвратить такие ошибки в будущем?

обновиться до чего-нибудь более пристойного :)
...
Рейтинг: 0 / 0
как пофиксить поврежденную таблицу?
    #34630414
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
4_Alex MBGПозволю себе не согласиться с утверждением выше, поскольку уже сталкивался с такой ситуацией, когда ошибка в индексе приводит к повреждению таблицы.

таки не в индексе дело, а в таблице, сделал "новую" таблицу, залил туда данные, потому в "старой" позволил себе удалить индексы, проблема осталась та же


Если таблица уже повреждена, после удаления индексов она чудом не восстановится.

P.S. И все же, какой командой были созданы индексы? Я ведь не просто так спросил...
...
Рейтинг: 0 / 0
как пофиксить поврежденную таблицу?
    #34630738
4_Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MBG 4_Alex MBGПозволю себе не согласиться с утверждением выше, поскольку уже сталкивался с такой ситуацией, когда ошибка в индексе приводит к повреждению таблицы.

таки не в индексе дело, а в таблице, сделал "новую" таблицу, залил туда данные, потому в "старой" позволил себе удалить индексы, проблема осталась та же


Если таблица уже повреждена, после удаления индексов она чудом не восстановится.

P.S. И все же, какой командой были созданы индексы? Я ведь не просто так спросил...

CREATE INDEX ix_index
ON T1
USING btree
(c1);

уточню, индексы были созданы с самого "рождения" таблицы, а не добавлены после, вообще я заметил что при увеличении кол записей более 5млн (приблизительно) таблица начинает подтормаживать например в селектах, хотя до этого предела нет разницы, что 2 записи в таблице что скажем 4млн. может что то не так в настройках БД?
...
Рейтинг: 0 / 0
как пофиксить поврежденную таблицу?
    #34630806
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
4_Alex
CREATE INDEX ix_index
ON T1
USING btree
(c1);

уточню, индексы были созданы с самого "рождения" таблицы, а не добавлены после, вообще я заметил что при увеличении кол записей более 5млн (приблизительно) таблица начинает подтормаживать например в селектах, хотя до этого предела нет разницы, что 2 записи в таблице что скажем 4млн. может что то не так в настройках БД?

С такими индексами вроде никаких граблей не должно быть.
Насчет объема записей в таблице - настройки базы определяют, сколько данных будет кэшироваться в памяти. Также под линуксом очень хорошо работает кэширование на уровне операционной системы. Настроить кое-что можно, по крайней мере с shared buffers поиграться, но это все имеет смысл только при наличии свободной оперативной памяти. Например, на целероне 2 ГГц с 256 метрами ОЗУ и SATA HDD разделенная таблица до 100 миллионов записей тормозить на обычных выборках не должна (про агрегирование большого набора данных разговор отдельный). Думаю, проблема в разбросанности записей в файле таблицы, слишком много операций для чтения результирующего набора на физическом уровне. Таблица с несколькими миллионами записей занимает порядка гигабайта места на винте (учитывая индексы), чтение раскиданных по такому файлу записей (равно как и чтение самих индексов) занимает много времени и в этом случае стоит посмотреть в сторону кластеризации и разделения таблиц.

Cм. кластеризацию

http://postgrestips.blogspot.com/2007/06/cluster.html

См. разделенные таблицы

http://postgrestips.blogspot.com/2007/06/partitial-table.html
...
Рейтинг: 0 / 0
как пофиксить поврежденную таблицу?
    #34631264
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iz _Arthur_что сделать, чтобы предотвратить такие ошибки в будущем?обновиться до чего-нибудь более пристойного :)К сожалению, у меня такая ошибка возникала на 8.1. :-(

MBGС такими индексами вроде никаких граблей не должно быть.А с какими индексами могут быть проблемы? Если в нете есть инфа, киньте пожалуйста ссылку.
...
Рейтинг: 0 / 0
как пофиксить поврежденную таблицу?
    #34631707
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
LeXa NalBat А с какими индексами могут быть проблемы? Если в нете есть инфа, киньте пожалуйста ссылку.

С типом hash, см. на opennet.ru упоминание и еще где-то было подробнее. Индексом hash сейчас уже почти не пользуются. Я на этом сам напарывался пару раз, перешел на btree везде и больше проблем нет.
...
Рейтинг: 0 / 0
как пофиксить поврежденную таблицу?
    #34655568
Gadsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SET PSQL_PATH="C:\Program Files\PostgreSQL\8.0\bin\psql.exe"
%PSQL_PATH% -c "set zero_damaged_pages=true; VACUUM FULL;" -U admin mydb

обычно так спасает...
...
Рейтинг: 0 / 0
как пофиксить поврежденную таблицу?
    #35099828
vbgd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеем следующий опыт в борьбе с page header
1 Postgres 7.3, установили в декабре 2004.
Работает сейчас примерно на 20 машинах, на некоторых круглосуточно.
Сейчас Linux 2.6.17 .
2 Ошибка page header возникает как при sql- запросах, так и при вакууме.
Считаем это полезным средством проверки базы.
3 Раз в сутки делаем архив базы, pgdump. Перед этим делаем vacuum full.
4 Если по какой-то причине появляется page header, то делаем pgrestore
из архива.

Эта ошибка появляется нечасто, но регулярно. Раз в неделю где-нибудь,
да выскочит.

А теперь ВОПРОС. Может быть, перейти на версию 8.x ?
...
Рейтинг: 0 / 0
как пофиксить поврежденную таблицу?
    #35100229
Serik Akhmetov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vbgdМожет быть, перейти на версию 8.x ?Однозначно нужно перейти на последнюю стабильную версию.
Каждая новая версия традиционно быстрее и надежнее.
А 7.3 уже не поддерживается.
...
Рейтинг: 0 / 0
как пофиксить поврежденную таблицу?
    #35100670
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vbgd
А теперь ВОПРОС. Может быть, перейти на версию 8.x ?
Разработчики Постгреса в принципе крайне рекомендуют, вне зависимости от ошибок переходить на более свежие версии (на текущий момент 8.2 - вполне стабильная ветка).
Не считая общего ускорения было пофиксано немало ошибок приводящих к потерям данных.
...
Рейтинг: 0 / 0
как пофиксить поврежденную таблицу?
    #35283448
vbgd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу добавить.
При запуске постгреса появляются минимум три процесса.
Кроме того, внутри еще могут быть потоки.

Эти процессы (потоки) не в нужное время пишут
в файлы таблиц, индексов. Фактически, одновременно.
Наверное, повреждения надо понимать так.

Наблюдал также неоднократно повреждение файлов
postmaster.pid, postgresql.conf.

Возникали ситуации, когда записи вместо журнала
постгреса попадали в файл журнала параллельно работающего
приложения.

Что это может быть: ошибки самого постгреса или системы ?
...
Рейтинг: 0 / 0
как пофиксить поврежденную таблицу?
    #35283983
Serik Akhmetov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vbgdЧто это может быть: ошибки самого постгреса или системы ?Я бы добавил еще один вариант:
или админа

По сути, раскажите подробнее: ОС, версия, кол-во клиентов...
...
Рейтинг: 0 / 0
как пофиксить поврежденную таблицу?
    #35286007
vbgd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или админа ...
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как пофиксить поврежденную таблицу?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]