Версия для печати темы (https://pro1c.org.ua/index.php?s=3e1dafa6c73330cc73bced22db636c39&showtopic=18916)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Базы данных _ Ошбика базы 1С на Postgresql

Автор: Fabri 22.07.14, 11:06

Собственно ошибка - ERROR: unexpected chunk number 62 (expected 60) for toast value 331184 in pg_toast_331172

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

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

Возможно кто-то встречался и решал такую проблему, буду благодарен.

Автор: alex040269 22.07.14, 12:02

выгрузить и загрузить базу?

Автор: Acid 22.07.14, 14:20

А какой размер таблицы?

Автор: Fabri 22.07.14, 14:38

Цитата(alex040269 @ 22.07.14, 13:02) http://pro1c.org.ua/index.php?act=findpost&pid=89110
А какой размер таблицы?


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

Автор: DartRomanius 22.07.14, 14:47

Цитата(Fabri @ 22.07.14, 15:38) http://pro1c.org.ua/index.php?act=findpost&pid=89122

Автор: Fabri 22.07.14, 14:48

Я б уже и рад был сохранить DT-шку, и прогнать её утилиткой chdbfl - но никак. Может кто-то знает как сохранить dt пропуская ошибки?
Возможно есть утилита, обработка?

Автор: DartRomanius 22.07.14, 14:49

Бекап есть?

Автор: Fabri 22.07.14, 14:51

Есть, но бекапы тоже битые (вылетали с этой же ошибкой). Причем уже где-то с неделю. А за неделю накладных и т.д. насобиралось не мало.

Автор: DartRomanius 22.07.14, 14:59

Цитата(Fabri @ 22.07.14, 15:51) *
Есть, но бекапы тоже битые (вылетали с этой же ошибкой). Причем уже где-то с неделю. А за неделю накладных и т.д. насобиралось не мало.


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

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

Автор: Fabri 22.07.14, 15:19

Но как восстановить если эту таблицу pg_toast не видно?

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

Автор: alex040269 22.07.14, 15:19

а у постгри есть свой чек? может ним прогнать. и забэкапить средствами этого же постгри.

Автор: DartRomanius 22.07.14, 15:24

Цитата(Fabri @ 22.07.14, 16:19) *
Но как восстановить если эту таблицу pg_toast не видно?

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


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

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

ЗЫ: Сами тосты в общей схеме не видны, это связанные таблицы.

Автор: Fabri 22.07.14, 16:18

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

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

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

Нашел на форуме решение (на русском smile.gif) http://pro1c.org.ua/redirect.php?http://www.sql.ru/forum/1058995/missing-chunk-number-0-for-toast-value-xxx-in-pg-toast-yyy
Текст решения:

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

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


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

Автор: DartRomanius 22.07.14, 16:22

Да на будущее.

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

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

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

ЗЫ: С нетерпением жду продолжения истории.

Автор: Fabri 22.07.14, 16:31

Та работаем около 1.5 года, не было ошибок никогда, каждый вечер автоматом делался бэкап базы, но как-то и не задумывался чтоб при ошибке информировать на почту к примеру.

Автор: Fabri 22.07.14, 23:29

Короч, нашел бекап за 16.07.2014, который меньше объемом за предыдущие, залил в отдельную базу на postgresql. Сохранил таблицу "files" (на тестировании в оной было ошибка), и восстановил текущую базу.
Сохранил dt-штку, проблем небыло. Сейчас делаю тестирование и исправление базы средствами 1С, завтра дам результат.

Автор: Fabri 23.07.14, 18:16

После восстановления из бэкапа таблицы "files" все ошибки пропали, целый день работали в базе - полет нормальный. Единый глюк - слетели настройки форм, но это ерунда, все наново настроили.
Сейчас сделал копию базы средствами - pg_dump - без ошибок.
Всем спасибо за помощь.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua