Как устранить ошибку Недостаточно памяти при обновлении большой файловой базы 1С?

Системный администратор 1С v8.3 (Управляемые формы) 1С:Документооборот IT и автоматизация бизнеса
← На главную

При обновлении конфигураций 1С (особенно таких ресурсоемких, как «1С:Документооборот») в файловом режиме нередко возникает критическая ошибка «Недостаточно памяти». Ситуация часто ставит в тупик, когда на сервере или рабочей станции установлено достаточное количество оперативной памяти, свободного места на жестком диске с избытком, а системный кэш и временные файлы предварительно очищены. Разберем детально, почему возникает данная ошибка, как проанализировать внутреннюю структуру файла базы данных 1Cv8.1CD и какими способами можно успешно выполнить обновление.

Проанализируем ключевые технические причины, которые приводят к сбою:

  1. 32-разрядный процесс Конфигуратора. По умолчанию запуск 32-битного клиента платформы 1cv8.exe жестко ограничен адресным пространством процесса в 2–3 ГБ. При масштабной реструктуризации метаданных и сопоставлении объектов этот лимит моментально исчерпывается независимо от общего объема физической оперативной памяти.
  2. Ограничение файловой СУБД 1С на размер одной таблицы. В файловом формате со стандартным размером страницы (4 Кб) максимальный размер любой внутренней таблицы базы данных не может превышать 4 ГБ. Если в процессе реструктуризации таблица превышает этот порог, процесс аварийно завершается.
  3. Хранение файлов и версий объектов внутри базы. В конфигурации «1С:Документооборот» хранение бинарных файлов (сканов, документов) непосредственно в таблицах базы, а также активное ведение истории версий приводят к разрастанию таблиц до десятков гигабайт.

Способ 1. Анализ распределения дискового пространства внутри файла базы

Прежде чем приступать к оптимизации, выясним, какие именно объекты конфигурации занимают основной объем файла 1Cv8.1CD. Для этого используем специализированные инструменты анализа файловых баз:

  1. Используем специализированные утилиты для анализа структуры файла базы данных (например, утилиту Tools_1cd), которые позволяют открыть файл без запуска платформы и увидеть точный физический размер каждой таблицы и ее индексов.
  2. Применяем специализированные внешние обработки для анализа размера таблиц файловой базы. Они считывают служебные метаданные и показывают, какие именно регистры и справочники занимают больше всего места.
  3. Обращаем пристальное внимание на следующие структуры: регистр сведений ВерсииОбъектов, таблицы хранения прикрепленных файлов (например, справочники файлов и присоединенных файлов) и журнал регистрации.

Способ 2. Очистка версий объектов и перенос файлов в тома

Если анализ показал сильное разрастание регистров хранения истории или бинарных данных, выполним предварительную оптимизацию информационной базы:

  1. Очистка версионирования. В разделе администрирования открываем настройку хранения версий объектов и удаляем устаревшие версии за прошлые периоды. Для некритичных справочников и документов отключаем версионирование или настраиваем срок автоматической очистки.
  2. Вынос файлов на диск. Переводим хранение файлов из таблиц базы в тома на сервере. В разделе администрирования настраиваем «Тома хранения файлов» в файловой системе и запускаем обработку по переносу уже сохраненных файлов из базы данных в созданные каталоги. Это может уменьшить размер файла 1Cv8.1CD в несколько раз.
  3. Сжатие таблиц. После очистки данных выполняем тестирование и исправление информационной базы в Конфигураторе (меню Администрирование → Тестирование и исправление...) с обязательной установкой флага Сжатие таблиц информационной базы. Также можно воспользоваться утилитой проверки chdbfl.exe из каталога платформы.

Способ 3. Запуск Конфигуратора в 64-разрядном режиме

Для снятия ограничений по используемой виртуальной памяти процесса перейдем на 64-разрядный клиент платформы:

  1. Убеждаемся, что на компьютере установлена 64-битная версия платформы «1С:Предприятие 8.3».
  2. Запускаем исполняемый файл 1cv8.exe строго из каталога C:\Program Files\1cv8\8.3.X.XXXX\bin\ (не из папки Program Files (x86)).
  3. Повторяем процедуру обновления конфигурации. 64-разрядный процесс сможет адресовать весь доступный объем оперативной памяти, что исключит падение Конфигуратора по нехватке памяти процесса.

Способ 4. Изменение размера страницы базы через cnvdbfl.exe

Если размер отдельных таблиц приближается к 4 ГБ, а перевод на клиент-серверный вариант не планируется в ближайшее время, снимем ограничение путем увеличения размера страницы базы данных:

  1. Создаем полную резервную копию файла 1Cv8.1CD.
  2. Закрываем все клиентские сеансы и службу Конфигуратора.
  3. Запускаем утилиту cnvdbfl.exe, расположенную в папке bin установленной платформы 1С.
  4. Выбираем файл базы данных и устанавливаем новый размер страницы (например, 8 Кб, 16 Кб, 32 Кб или 64 Кб).
  5. Выполняем конвертацию. Увеличение страницы базы до 64 Кб кратно увеличивает максимальный поддерживаемый размер отдельных таблиц и предотвращает сбои реструктуризации.

Способ 5. Обновление через временную клиент-серверную базу (СУБД)

Для гарантированного обновления баз размером более 10 ГБ наилучшим техническим решением является выполнение процедуры в среде СУБД:

  1. Выполняем выгрузку информационной базы в файл .dt через меню Администрирование → Выгрузить информационную базу....
  2. Создаем временную информационную базу на сервере СУБД (PostgreSQL или Microsoft SQL Server).
  3. Загружаем файл выгрузки в серверную базу.
  4. Выполняем обновление конфигурации и обновление конфигурации базы данных. В среде СУБД отсутствуют файловые ограничения на размер таблиц и поддерживается эффективное управление памятью.
  5. После успешного обновления и проведения реструктуризации делаем обратную выгрузку в .dt и загружаем ее в чистую файловую базу.

Способ 6. Пакетное обновление из командной строки

Интерфейс сравнения и объединения конфигураций потребляет значительное количество ресурсов. Для экономии памяти выполним обновление в пакетном режиме с помощью пакетных параметров запуска Конфигуратора:

Разберем пример команды для пакетного обновления:


"C:\Program Files\1cv8\8.3.23.1865\bin\1cv8.exe" CONFIG /F "D:\Bases\DO_Base" /N "Администратор" /P "Пароль" /UpdateCfg "D:\Updates\1Cv8.cf" /UpdateDBCfg

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

← На главную