Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ошбика базы 1С на Postgresql
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Базы данных
Fabri
Собственно ошибка - ERROR: unexpected chunk number 62 (expected 60) for toast value 331184 in pg_toast_331172

Пробовал REINDEX, VACUUM FULL, ANALYZE - не помогает.

Тестирование и исправление так же не помогает, завершает работу с такой же ошибкой.

Возможно кто-то встречался и решал такую проблему, буду благодарен.
alex040269
выгрузить и загрузить базу?
Acid
А какой размер таблицы?
Fabri
Цитата(alex040269 @ 22.07.14, 13:02) необходимо зарегистрироваться для просмотра ссылки
выгрузить и загрузить базу?


Критическая ошибка при выгрузке. Думаю из-за этой ошибки.

Цитата(Acid @ 22.07.14, 15:20) необходимо зарегистрироваться для просмотра ссылки
А какой размер таблицы?


Незнаю, таблицы pg_toast не видно в PgAdmin-е, это типа служебной таблицы или что-то подобное.
Размер базы около 6.5 Гб.
DartRomanius
Цитата(Fabri @ 22.07.14, 15:38) необходимо зарегистрироваться для просмотра ссылки
Критическая ошибка при выгрузке. Думаю из-за этой ошибки.



Незнаю, таблицы pg_toast не видно в PgAdmin-е, это типа служебной таблицы или что-то подобное.
Размер базы около 6.5 Гб.


необходимо зарегистрироваться для просмотра ссылки
Fabri
Я б уже и рад был сохранить DT-шку, и прогнать её утилиткой chdbfl - но никак. Может кто-то знает как сохранить dt пропуская ошибки?
Возможно есть утилита, обработка?
DartRomanius
Бекап есть?
Fabri
Есть, но бекапы тоже битые (вылетали с этой же ошибкой). Причем уже где-то с неделю. А за неделю накладных и т.д. насобиралось не мало.
DartRomanius
Цитата(Fabri @ 22.07.14, 15:51) необходимо зарегистрироваться для просмотра ссылки
Есть, но бекапы тоже битые (вылетали с этой же ошибкой). Причем уже где-то с неделю. А за неделю накладных и т.д. насобиралось не мало.


Ну смысл в следующем, у тебя талица битая, причем таблица для разделения длинных записей.
В ошибке так и писало, типа неожиданно блок за номером 62, а ждало за номером 60.

Попробовать восстановить таблицу (не всю базу) из бекапа.
Либо че там у postgre есть для тестирования и лечения базы.
Сама 1С-ка тут врядли поможет.
Fabri
Но как восстановить если эту таблицу pg_toast не видно?

Определил что ошибка выскакивает при проверке таблицы "files", я так понимаю таблица хранит фото номенклатуры и прочие файлы.
Попробую восстановить именно эту таблицу из старого бэкапа, увижу что и как получится.
alex040269
а у постгри есть свой чек? может ним прогнать. и забэкапить средствами этого же постгри.
DartRomanius
Цитата(Fabri @ 22.07.14, 16:19) необходимо зарегистрироваться для просмотра ссылки
Но как восстановить если эту таблицу pg_toast не видно?

Определил что ошибка выскакивает при проверке таблицы "files", я так понимаю таблица хранит фото номенклатуры и прочие файлы.
Попробую восстановить именно эту таблицу из старого бэкапа, увижу что и как получится.


Не факт что поможет.
ЗЫ: У меня щас интернет частично забанен. Посмотрите на запрос в гугле:
fix corrupt pg_toast table

там первый ссыль будет на сайт postgre , тока скорее всего на аглицком.

ЗЫ: Сами тосты в общей схеме не видны, это связанные таблицы.
Fabri
alex040269 - Есть, пробовал уже все что можно. И Reindex, и Vacuum(это и есть утилита для проверки/лечения базы) с параметрами - FULL, FREEZE, ANALYZE - ничего не помогает.

DartRomanius, попробую, спасибо.

DartRomanius - это все уже смотрел, пробовал - ничего не помогает.
Единое к чему дошел что получаю sql запросом строки с таблицы pg_toast, действительно идут записи с номером - 58, 59 и потом сразу 61, 62.
Пробую INSERT INTO - добавить пустую запись с номером 60 - ошибка, типа не разрешено.
UPDATE - сменить номер записи 61 на 60 - аналогично.
Хотя в PgAdmin под админом и все права на базу имею.

Нашел на форуме решение (на русском smile.gif) необходимо зарегистрироваться для просмотра ссылки
Текст решения:
Цитата
1) При помощи анализатора из EMS SQL Manager for PostgreSQL определили поля, где содержатся битые данные. Заходили в каждую схему и на каждой таблице делали "Анализ и сборка мусора", выбирали VERBOSE, галочку на очистке не ставили, а дальше смотрели на какое поле ругается.
2) Удалили все ссылки на данные поля
3) Сменили тип поля на char
4 )Сменили назад на text
5) Вернули все ссылки

vacum проходит на этой базе.


Сегодня вечером ПОПРОБУЮ! Если и мне поможет, отпишусь.
DartRomanius
Да на будущее.

Поставить какой-нибудь скрипт по регламенту, на проверку базы. Что-бы сигнализировало.

Как говорится: "Лучше день потерять, потом за пять минут долететь".

Это я к тому, что день проще восстановить будет если что.

ЗЫ: С нетерпением жду продолжения истории.
Fabri
Та работаем около 1.5 года, не было ошибок никогда, каждый вечер автоматом делался бэкап базы, но как-то и не задумывался чтоб при ошибке информировать на почту к примеру.
Fabri
Короч, нашел бекап за 16.07.2014, который меньше объемом за предыдущие, залил в отдельную базу на postgresql. Сохранил таблицу "files" (на тестировании в оной было ошибка), и восстановил текущую базу.
Сохранил dt-штку, проблем небыло. Сейчас делаю тестирование и исправление базы средствами 1С, завтра дам результат.
Fabri
После восстановления из бэкапа таблицы "files" все ошибки пропали, целый день работали в базе - полет нормальный. Единый глюк - слетели настройки форм, но это ерунда, все наново настроили.
Сейчас сделал копию базы средствами - pg_dump - без ошибок.
Всем спасибо за помощь.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.