Проблема с базами на PostgreSQL

1. dimonas 19.06.20 16:31 Сейчас в теме
Всем привет, выручайте, может кто сталкивался или знает куда копать?
1С вылетает с ошибкой каждые 2 часа, потом восстанавливается сама спустя 5 мин, ошибка http://joxi.ru/eAO49R6u9Rz1er

Базы 2. Бекапы 1С делаются через постгресс, но битые, при восстановлении ошибка http://joxi.ru/5mdWLvnC3MBdZr

У второй базы бекапы даже не делаются, скрипт вылетает при попытке создания бекапа.

При попытке произвести тестирование и исправление падает с ошибкой тут http://joxi.ru/ZrJq9djTwOxnLA

При попытке выгрузить базу в dt ошибка http://joxi.ru/n2Yz9Z0Fb9aVnA

PostgreSQL версии 11-5-7-1C

1С клиент серверный вариант 1С:Предприятие 8.3 (8.3.15.1830) Управление нашей фирмой, редакция 1.6 (1.6.19.160)
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. uriah 18 19.06.20 17:07 Сейчас в теме
(1)
выручайте, может кто сталкивался или знает куда копать?
1С вылетает с ошибкой каждые 2 часа, потом восстанавливается сама спустя 5 мин,

Что в логах Postgres при падении базы в режим восстановления.
3. dimonas 19.06.20 17:18 Сейчас в теме
(2)
Прикладываю логи сегодняшние
Прикрепленные файлы:
postgresql-Fri.log
4. uriah 18 19.06.20 18:10 Сейчас в теме
(2) Повторяющаяся ошибка Postgres при запросе
FROM _InfoRg15978 T1
INNER JOIN _InfoRg15970 T2
ON (T1._Fld15980RRef = T2._Fld15972RRef) AND (T1._Fld15981 = T2._Fld15973)
LEFT OUTER JOIN _Document175 T3
и как следствие
не удалось отправить данные клиенту: установленное соединение было прервано программным обеспечением на вашем хост-компьютере.
Характеристики сервера, что установлено, сколько баз, сколько пользователей?
ТИИ в режиме конфигуратора выполняли?
29. hasustorm 11.12.20 10:17 Сейчас в теме
(4) < 2020-06-19 16:51:06.364 MSK >LOG: server process (PID 113280) was terminated by exception 0xC0000005

У вас падает postgres с ошибкой доступа к памяти. Попробуйте сделать reindex/vacuum. Либо где-то поврежден неудачно индекс, либо проблемы с оперативной памятью на сервере. Или попробуйте обновить его на более свежий в пределах релиза. Где-то возможно где-то баг в самом постгресе.

Соответственно при такой ошибке он кладет все подпроцессы:

< 2020-06-19 16:51:06.365 MSK >DETAIL: The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory.

Это нормальное его поведение если память общая была повреждена.
30. uriah 18 11.12.20 10:48 Сейчас в теме
(29)
У вас падает postgres с ошибкой доступа к памяти. Попробуйте сделать reindex/vacuum. Либо где-то поврежден неудачно индекс, либо проблемы с оперативной памятью на сервере. Или попробуйте обновить его на более свежий в пределах релиза. Где-то возможно где-то баг в самом постгресе.

Это не ко мне, я вопрос не задавал.
5. uriah 18 19.06.20 18:15 Сейчас в теме
(1)
При попытке произвести тестирование и исправление падает с ошибкой тут http://joxi.ru/ZrJq9djTwOxnLA

Не обратил внимание - этот регистр сведений поврежден.
Я решал таким образом.
https://forum.infostart.ru/forum16/topic237617/
8. dimonas 19.06.20 18:32 Сейчас в теме
(5) Вот это не совсем понял
(12) Постгрес на винде
Я решил проблему по другому. Так как информационная база была целой, за исключением "Регистра сведений Ресурсы механизмов онлайн сервисов РО" и был архив базы dt на начало февраля, выгрузив данные из базы с битой таблицей загрузил в новую информационную базу.
10. uriah 18 19.06.20 18:39 Сейчас в теме
(8) У меня была выгрузка из базы .dt. Создал новую базу, загрузил dt. Из поврежденной базы выгрузил все данные за период, кроме битого регистра, загрузил в новую базу.
Мне кажется, для вас это не подойдет. Если попробовать остановить отправку и прием электронных писем, и найти визуально ошибку?
11. dimonas 19.06.20 18:51 Сейчас в теме
(10) Как искать то? Визуально. Не совсем понял
12. uriah 18 19.06.20 18:57 Сейчас в теме
(11)
Как искать то? Визуально. Не совсем понял

Если б знать? Нужна структура таблицы этого регистра, открыть таблицу в просмотровщике, там ведь и скрытые поля есть.
Ошибка связана с длиной какого то реквизита регистра, размер его превышен.
6. uriah 18 19.06.20 18:27 Сейчас в теме
В вашем случае можно поступить проще - конфигурация открывается - открыть этот регистр сведений, найти запись, с поврежденными данными и ее удалить, или написать обработку по очищению этого регистра.
Валится 1С на выполнении какого-то регламентного задания при обращении к поврежденной записи регистра сведений.
7. dimonas 19.06.20 18:29 Сейчас в теме
(6) А как найти эту запись? Это регистр исходящих и входящих сообщений по всем учетным записям электронной почты в 1С. Если вообще все очищу, то пропадут исходящие письма из структуры подчиненности документов которые были отправлены
9. uriah 18 19.06.20 18:33 Сейчас в теме
(7)
Это регистр исходящих и входящих сообщений по всем учетным записям электронной почты в 1С.

Наверное, писать обработку по поиску битой записи, только как локализовать ошибку и понять, что в ней неверно?
13. uriah 18 19.06.20 19:15 Сейчас в теме
А как найти эту запись? Это регистр исходящих и входящих сообщений по всем учетным записям электронной почты в 1С. Если вообще все очищу

Или попробовать через отладчик прогнать Регламентное задание Загрузка Электронной почты, найти сообщение, которое валит базу. Руками удалить запись регистра и связанный документ Событие.
14. shmalevoz 309 19.06.20 19:39 Сейчас в теме
Это вроде виндовая ошибка, неопределенного происхождения. Вот вроде похожие симптомы
https://www.sql.ru/forum/1253643/regulyarno-padaet-baza-fatal-the-database-system-is-in-recovery-mode
По коду ошибки поиск выдает советы по исправлению направления танцев с бубном
Посоветовал бы во-первых конечно сделать физическую копию баз и попробовать перенести их на физически другую машину. Лучше с линуксами, там стабильней =)
15. uriah 18 19.06.20 19:49 Сейчас в теме
(14)
Это вроде виндовая ошибка, неопределенного происхождения.

В логах PostgreSQL валится процесс при отправке и получении электронной почты. Вернее в регламентном задании, при попытке записи в регистр сведений ИдентификаторыСообщений.
16. shmalevoz 309 19.06.20 20:35 Сейчас в теме
Полистал логи, действительно ошибка на одном и том-же запросе, сорри. Битый регистр это бывает. Тогда восстанавливать данные таблицы из бэкапа чаще всего.
Физическая копия для начала обязательна =) да и экспериментируем на копиях =)
pg_dump выгружает данные plain текстом, psql загружает из него же
вот команды
# Выгрузить проблемную таблицу
pg_dump -t my_problem_table(s) ... > my_screwed_up_data.sql
# Выгрузить все КРОМЕ проблемной
pg_dump -T my_problem_table(s) ... > my_not_screwed_up_data.sql
Тут можно и глазами посмотреть на содержимое таблицы, а можно и заскриптовать что-нибудь, простой текст
А дальше загружаем (отредактированные) файлики. В новую БД
cat my_screwed_up_data.sql | psql
cat my_not_screwed_up_data.sql | psql
Аналогично можно просто сдернуть табличку с развернутого бэкапа
17. uriah 18 19.06.20 21:11 Сейчас в теме
(16)
[IS-QUOTE]Физическая копия для начала обязательна =) да и экспериментируем на копиях =)
[/IS-QUOTE]
Проблема в том, что у вопрошавшего походу архивов нет и создать архив не представляется возможным, для восстановления. Это первое. Второе, ошибка такова, что восстановление ее не решишь, только найти и удалить поврежденную или ошибочную запись в РС. Можно средствами pgadmin, можно средствами 1С.
18. dimonas 19.06.20 23:11 Сейчас в теме
< 2020-06-19 19:38:27.298 MSK >LOG: server process (PID 122432) was terminated by exception 0xC0000005
< 2020-06-19 19:38:27.298 MSK >DETAIL: Failed process was running: SEL ECT
T1._Fld15979RRef,
T1._Fld15980RRef,
T1._Fld15981,
T1._Fld15982
FR OM _InfoRg15978 T1
WHERE (T1._Fld333 = CAST(0 AS NUMERIC))
< 2020-06-19 19:38:27.298 MSK >HINT: See C include file "ntstatus.h" for a description of the hexadecimal value.

Это из лога постгресса
Получив структуру данных видим

_InfoRg15978 РегистрСведений.ИдентификаторыСообщений РегистрСведений.ИдентификаторыСообщений Основная
Колонки
_Fld15979RRef УчетнаяЗапись РегистрСведений.ИдентификаторыСообщений.Измерение.УчетнаяЗапись
_Fld15980RRef Событие РегистрСведений.ИдентификаторыСообщений.Измерение.Событие
_Fld15981 Ключ РегистрСведений.ИдентификаторыСообщений.Измерение.Ключ
_Fld15982 ИдентификаторСообщения РегистрСведений.ИдентификаторыСообщений.Ресурс.ИдентификаторСообщения
_Fld333 ОбластьДанныхОсновныеДанные ОбщийРеквизит.ОбластьДанныхОсновныеДанные
Индексы
_InfoRg15978_ByDims
_Fld333 ОбластьДанныхОсновныеДанные ОбщийРеквизит.ОбластьДанныхОсновныеДанные
_Fld15979RRef УчетнаяЗапись РегистрСведений.ИдентификаторыСообщений.Измерение.УчетнаяЗапись
_Fld15980RRef Событие РегистрСведений.ИдентификаторыСообщений.Измерение.Событие
_Fld15981 Ключ РегистрСведений.ИдентификаторыСообщений.Измерение.Ключ
_InfoRg15978_ByDims15983
_Fld333 ОбластьДанныхОсновныеДанные ОбщийРеквизит.ОбластьДанныхОсновныеДанные
_Fld15980RRef Событие РегистрСведений.ИдентификаторыСообщений.Измерение.Событие
_Fld15979RRef УчетнаяЗапись РегистрСведений.ИдентификаторыСообщений.Измерение.УчетнаяЗапись
_Fld15981 Ключ РегистрСведений.ИдентификаторыСообщений.Измерение.Ключ
_InfoRg15978_ByDims15984
_Fld333 ОбластьДанныхОсновныеДанные ОбщийРеквизит.ОбластьДанныхОсновныеДанные
_Fld15981 Ключ РегистрСведений.ИдентификаторыСообщений.Измерение.Ключ
_Fld15979RRef УчетнаяЗапись РегистрСведений.ИдентификаторыСообщений.Измерение.УчетнаяЗапись
_Fld15980RRef Событие РегистрСведений.ИдентификаторыСообщений.Измерение.Событие

Видимо ссылается на служебное поле?
19. uriah 18 19.06.20 23:22 Сейчас в теме
(18)
Видимо ссылается на служебное поле?

Это не приближает вас к решению задачи. Нужно найти проблемную запись в регистре сведений и удалить ее или исправить. Ошибка у вас при тестировании invalid string enlargement request size: -4 - превышен размер строки
20. dimonas 20.06.20 08:15 Сейчас в теме
Нужно найти проблемную запись в регистре сведений и удалить ее или исправить.


Регистр мы нашли, это РегистрСведений.ИдентификаторыСообщений

Осталось понять как найти проблемную запись
21. uriah 18 21.06.20 07:35 Сейчас в теме
(20)
Осталось понять как найти проблемную запись

в (16) ответили
# Выгрузить проблемную таблицу
pg_dump -t my_problem_table(s) ... > my_screwed_up_data.sql

Тут можно и глазами посмотреть на содержимое таблицы, а можно и заскриптовать
22. dimonas 21.06.20 19:10 Сейчас в теме
(21) Как это сделать?

Кстати, при попытке снять бекап с проблемной базы скрипт падает с ошибкой
D:\skript_bekap>"C:\Program Files\PostgreSQL\11.5-7.1C\bin\pg_dump.exe" -U postg
res -Fp base_am 1>"D:\backup\base_am-20200621.backup"
pg_dump: Dumping the contents of table "_inforg15978" failed: PQgetResult() fail
ed.
pg_dump: Error message from server: ERROR: invalid memory alloc request size 18
446744073709551609
pg_dump: The command was: COPY public._inforg15978 (_fld15979rref, _fld15980rref
, _fld15981, _fld15982, _fld333) TO stdout;
23. uriah 18 21.06.20 19:25 Сейчас в теме
(22)
Как это сделать?

Попробовать физически скопировать всю базу Postgresql, в другую папку и с ней уже работать далее по инструкции из (16)
Ошибка понятная ошибка: недопустимый размер запроса выделения памяти
таблица _inforg15978, поля _fld15979rref, _fld15980rref
, _fld15981, _fld15982, _fld333
Вот эти поля нужно чистить.
24. dimonas 21.06.20 19:39 Сейчас в теме
Попробовать физически скопировать всю базу Postgresql

Это я сделал, но как из этой папки запустить 1С?
_inforg15978, поля _fld15979rref, _fld15980rref
, _fld15981, _fld15982, _fld333
Вот эти поля нужно чистить.

Колонки
_Fld15979RRef УчетнаяЗапись РегистрСведений.ИдентификаторыСообщений.Измерение.УчетнаяЗапись
_Fld15980RRef Событие РегистрСведений.ИдентификаторыСообщений.Измерение.Событие
_Fld15981 Ключ РегистрСведений.ИдентификаторыСообщений.Измерение.Ключ
_Fld15982 ИдентификаторСообщения РегистрСведений.ИдентификаторыСообщений.Ресурс.ИдентификаторСообщения
_Fld333 ОбластьДанныхОсновныеДанные ОбщийРеквизит.ОбластьДанныхОсновныеДанные


Это колонки, служебные поля, получается конкретной строки нет
27. a.doroshkevich 1496 22.06.20 09:29 Сейчас в теме
(24)
Это я сделал, но как из этой папки запустить 1С?


Нужно службе postgres поменять путь до каталога на тот, в который был скопировать каталог data.
Копировать нужно именно полностью весь каталог data со всеми подкаталогами и копировать при остановленной службе postgresql
28. uriah 18 24.06.20 12:39 Сейчас в теме
(27)
Нужно службе postgres поменять путь до каталога на тот, в который был скопировать каталог data.
Копировать нужно именно полностью весь каталог data со всеми подкаталогами и копировать при остановленной службе postgresql

Еще изменить скрипт запуска службы postgresql.
Но, вообще, лучше это делать на другой машине.
25. shmalevoz 309 21.06.20 22:37 Сейчас в теме
Все эксперименты надо проводить только на физической копии БД. Лучше вообще на другой машине. Вот например
Как перенести postgres в другое место
копирование аналогично, только без удаления исходного =) и на этой отдельной БД экспериментировать, создав под нее конечно и отдельную ИБ в 1С

Вот говорят решили такую=же вроде проблему. Но правда при потере данных одной страницы из таблицы
https://www.endpoint.com/blog/2010/06/01/tracking-down-database-corruption-with
MarchTomCat; uriah; +2 Ответить
26. uriah 18 21.06.20 22:49 Сейчас в теме
(25) Полностью с вами солидарен
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот