Ошибка "Запись не найдена в менеджере имен базы данных" с катастрофическими последствиями и её лечение

24.05.24

База данных - Администрирование СУБД

Ситуация: при обновлении серверной базы данных произошёл сбой и теперь невозможно войти ни в конфигуратор, ни в 1С:Предприятие по причине ошибки, вынесенной в заголовок. Рецепт лечения.

Случилась сегодня ситуация: при обновлении конфигурации базы данных конфигуратор вывалился с ошибкой (суть которой не важна, да и не записали). После этого вход в базу стал невозможен: при попытке открыть её и клиентом, и конфигуратором, получили ошибку "Запись не найдена в менеджере имен базы данных".

Ситуацию усугубляло то, что бэкап перед обновлением, естественно, виновники торжества не сделали, последний бэкап датируется прошлой ночью, и за почти сутки десятки пользователей внесли сотни документов.

Зачем я пишу об этом? Затем, что в решении этой проблемы Гугл оказался не помощник:

  1. Гуглится огромная куча статей, где при аналогичной ошибке рекомендуется использовать утилиту восстановления файловых баз. А у них -- серверная.
  2. Гуглится огромная куча статей, где подобная ошибка возникает спорадически или при реструктуризации в результате каких-то манипуляций в расширении. В результате заход в конфигуратор и некие манипуляции там всё решают. А в нашем случае в конфигуратор зайти нельзя совсем.
  3. Что такое "менеджер имён базы данных", в какой таблице БД он хранится? Прямого ответа на этот вопрос Гугл не даёт.
  4. Есть несколько записей на разных форумах, когда человек столкнулся с такой же проблемой, ему советуют восстановить таблицы config, dbschema, files и т. п., но никакой информации о решении проблемы в итоге нет.

Итак, решение:

  1. Делаем копию битой базы при помощи pg_dump и куда-нибудь откладываем. Пока база бэкапится, виновнику торжества посылаем одну из картинок "Он не делал бэкапы".
  2. Разворачиваем из копии предыдущий ночной бэкап.
  3. "Менеджер имён базы данных" -- это данные, помимо прочих, хранящиеся в таблице params. Вот её нам и надо перетянуть из старого бэкапа в битую базу. Делаем дамп таблицы в развёрнутом бэкапе, очищаем таблицу в битой базе и загружаем из дампа.

Ответы на вопросы "как сделать дамп базы данных", "как сделать дамп отдельной таблицы", "как удалить содержимое таблицы" и "как загрузить данные из sql-дампа" в PostgreSQL Гугл уже знает достаточно хорошо.

Разумеется, эти советы надо применять осознанно и с умом. Возможно, параллельно стоит перетащить таблицу config. Также в нашем случае мы точно знали, что никаких других изменений в конфигурации между бэкапом и поломкой не происходило. Иначе можно получить разнообразные глюки.

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

См. также

Администрирование СУБД Системный администратор Абонемент ($m)

Всегда надо обслуживать индексы SQL. В том числе по рекомендации самой 1С. Но обслуживать все и сразу - долго, тяжело серверу и, главное, бессмысленно. Особенно для больших баз. Данный скрипт выбирает, что надо делать, и делает это автоматически. Готового полного аналога не нашел, поэтому сделал этот. Можно примерять для любых конфигураций и платформ 1С. Проверено на 8.3.25.1501.

10 стартмани

12.02.2025    632    23    GreyCardinal    14    

4

HighLoad оптимизация Администрирование СУБД Программист Платформа 1С v8.3 Бесплатно (free)

В рамках мастер-класса мы запустим нагрузочный тест на 3К пользователей и посмотрим, как будет вести себя PostgreSQL при такой нагрузке.

11.12.2024    1994    Tantor    1    

6

Администрирование СУБД Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Бесплатно (free)

Много вариантов определения номера собственного процесса самого 1С8. В ходе поиска, опираясь на общедоступную информацию, дополнил алгоритм, но с учетом определения ИД запущенного приложения.

09.12.2024    933    artly2000    6    

4

Администрирование СУБД Системный администратор Программист

В крупных компаниях, где много типовых и сильно доработанных баз с режимом работы 24/7, переход с MS SQL на PostgreSQL затягивается. Получается гетерогенная структура – когда прод уже на PostgreSQL, а разработка и тестирование – пока на MS SQL. О том, какие варианты помогут постепенно перевести прод с несколькими базами MS SQL на PostgreSQL, не сломав среду тестирования и разработки, пойдет речь в статье.

21.11.2024    4366    a.doroshkevich    9    

16

HighLoad оптимизация Администрирование СУБД Системный администратор Программист Платформа 1С v8.3 Россия Бесплатно (free)

Мы исследуем проблему долгого выполнения запросов PostgreSQL при использовании конструкции VALUES: когда она возникает, как на нее можно повлиять, а главное, почему ее продуманная отработка важна для более быстрого функционирования решений на базе 1С

12.11.2024    1709    Tantor    20    

19

HighLoad оптимизация Администрирование СУБД Механизмы платформы 1С Программист Платформа 1С v8.3 ИТ-компания Россия Бесплатно (free)

В данной статье мы рассмотрим, как работает механизм временных таблиц на postgres на платформе 8.3.23 и что изменилось в нем при добавлении новых возможностей в платформе 8.3.25. А также на примере покажу, как понимание работы платформы позволяет оптимизировать СУБД для работы с 1С.

29.10.2024    5544    Tantor    38    

37

Администрирование СУБД Системный администратор Программист Бесплатно (free)

CDC - очень мощный механизм, который можно использовать во многих сценариях, возможность развернуть его в Docker показывает простоту и лёгкость данной технологии.

08.10.2024    2050    AlexSvoykin    2    

7
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. mrcamomile 84 24.05.24 14:34 Сейчас в теме
Спасибо, напишите в статье платформу на которой поймали эту ошибку.
3. Kernelbug 54 24.05.24 19:32 Сейчас в теме
(1) Не имеет значения. Ну 8.3.22.1750
2. SerVer1C 880 24.05.24 15:00 Сейчас в теме
Вы целиком перетягивали params или отдельные записи?
4. Kernelbug 54 24.05.24 19:33 Сейчас в теме
(2) Перетянул целиком, но потом пришел к выводу, что надо будет подробнее разобрать содержимое и переносить конкретные записи.
5. gurd 5 07.06.24 14:11 Сейчас в теме
Словил себе такую ошибку сегодня. При обновлении с реструктуризацией вылетела ошибка исключительной блокировки, не удалось завершить обновление. Эту ошибку полечил, вроде, заработало, но на некоторых запросах сыпалась ошибка Запись не найдена в менеджере имен базы данных.
В обновлении добавлялись несколько новых реквизитов, возможно, при реструктуризации эти новые реквизиты корректно в базу не записались, поэтому удалил добавленные реквизиты, сохранил изменения с реструктуризацией ИБ и ошибка исчезла.
Теперь при обновлении будем не только завершать сеансы пользователей, блокировать регламентные задания, но и стопать веб сервер на время обновления, чтобы ничего случайно не могло в базу подключиться.
VyacheslavShilov; +1 Ответить
6. Kernelbug 54 13.06.24 18:20 Сейчас в теме
(5) Конечно, в нормальной ситуации бэкапы рулят. Но если база такая, что восстановление из бэкапа занимает часов 5 и есть способы починить напрямую и быстрее, эти способы рулят тоже. Но бэкапы всё равно рулят.
7. paulwist 18.06.24 09:33 Сейчас в теме
(6)
"Менеджер имён базы данных" -- это данные, помимо прочих, хранящиеся в таблице params.


Как поймали (с помощью какого инструмента) имя таблички params??
8. Kernelbug 54 18.06.24 17:15 Сейчас в теме
(7) Гугл, глаза, сумбурная документация
9. gurd 5 21.06.24 03:20 Сейчас в теме
Сегодня снова получил себе такую ошибку. Никого в базе не было, регламентные задания заблокированы, веб сервер остановлен. По идее, никто не должен был помешать принятию изменений, но после появления сообщения с кнопкой "Принять", вылетает ошибка блокировки и конфигуратор вылетает. При попытке войти снова такая ошибка, конфигуратор недоступен. Почистил delete fr om Config WH ERE FileName = 'commit', в конфигуратор пустила, но в режиме клиента не проводились документы, опять там, где добавлял новые реквизиты: ошибка Запись не найдена в таблице имен...
Теперь уже одно удаление проблемных реквизитов с последующей реструктуризацией не прокатило, точнее после удаления проблемных реквизитов и попытке сохранить изменения вылетала ошибка, что не найдено поле и указано имя этого поля (так понял этот новый реквизит). Выполнил тестирование и исправление с включенными режимами: Пересоздание автономной конфигурации и Обновление размещения таблиц информационной базы. После этого дала выполнить удаление проблемных реквизитов и сохранить изменения с реструктуризацией, а потом повторил обновление, которое в первый раз не прошло, и все заработало.
Возможно, кто-то из пользователей пытался войти в 1С как раз в тот момент, когда нажал "Принять" при сохранении изменений.
VyacheslavShilov; +1 Ответить
10. zina_b 25.02.25 19:01 Сейчас в теме
(9) у меня такая ошибка при обновлении БГУ файловой базы на 76%. Все стандартные действия (чистка кеша, тестирование и исправление, chdbfl, смена платформы не сработали) Бэкап есть, но он сомнительный, потому что он сделан во время обновления, предыдущий давнишний. Подскажите, что делать. Выключать обновленные объекты нет возможности, окна "объединения конфигураций" не вылетает.
11. gurd 5 25.02.25 19:05 Сейчас в теме
(10) У меня клиент-серверная база на Postgres, поэтому, может, не похоже быть. Помогло выполнить тестирование и исправление с включенными режимами: Пересоздание автономной конфигурации и Обновление размещения таблиц информационной базы.
Сейчас при обновлении блокируем начало сеансов, чтобы не появлялось таких ошибок.
VyacheslavShilov; +1 Ответить
12. zina_b 25.02.25 19:14 Сейчас в теме
(11) Это я пробовала, не помогло. Спасибо
13. zina_b 25.02.25 21:07 Сейчас в теме
(11) Получилось!!! Я все режимы выбрала в тестировании и исправлении, обновление пролетело по маслу! Спасибо за идею!
VyacheslavShilov; +1 Ответить
Оставьте свое сообщение