Столкнулись с тем, что управленческая база организации не разворачивается в файловом режиме работы, несмотря на то, что размер ни одной таблиц и ни одного индекса таблицы не превышает 4 Гб. Как разбирались с этой проблемой, расскажем в этой статье.
Исправление ошибки через конвертацию формата базы данных утилитой CNVDBFL.EXE
Начиная с версии платформы 1С 8.3.8 появилась возможность увеличить размер страницы для таблиц базы данных 1С, работающей в файловом режиме. Для этого используется утилита CNVDBFL.EXE.
Узнать размер страницы:
"C:\Program Files\1cv8\8.3.25.1374\bin\CNVDBFL.EXE" -i "F:\Рабочие файлы\Базы 1С\Упр база врем файловая\1Cv8.1CD"
Изменить:
"C:\Program Files\1cv8\8.3.25.1374\bin\CNVDBFL.EXE" -c -f 8.3.8 -p 64k "F:\Рабочие файлы\Базы 1С\Упр база врем файловая\1Cv8.1CD"
Формат в момент загрузки dt-файла остается тем, который был у базы до начала загрузки.
Пример выполнения изменения размера страницы:
Статья на ИТС Работа с новым форматом базы данных
https://its.1c.ru/db/metod8dev#content:5924:hdoc
Однако в нашем случае просто исправление размера страницы не помогло.
Анализ размера таблиц и индексов для таблиц базы данных 1С
Для анализа размера таблиц базы данных 1С, работающей в клиент-серверном режиме на СУБД PostgreSQL использовали обработку с Инфостарта SQLБазомер. Она показала, что ни у одной из таблиц не превышен размер 4Гб. Результат после выполнения очистки старых версий объектов выглядел следующим образом:
Это означает, что ошибка загрузки базы в файловый режим работы связана с особенностями индексов.
У одной из таблиц именно в файловом режиме работы таблица индексов превышает 4 Гб. Из-за этого база не разворачивается в файловом режиме.
Как определить эту таблицу, рассказано в следующем пункте статьи.
Для удаления старых версий объектов использовали обработку УдалениеИсторииДанных. Выбрали в ней сначала настройку удаление версий без изменений. А после этого выбрали настройку удаления версий до начала года. Вторая настройка гораздо быстрее отработала, т.к. в этом случае версии удалялись за период одним запросом, а не одна за другой.
Выглядит интерфейс этой обработки следующим образом:
Поиск таблицы, на которой превышены индексы в файловом режиме работы
Файловая база - это СУБД от фирмы 1С.
Она по-другому строит индексы.
И, возможно, у какой-то из таблиц он превышен.
Как найти?
Включить технологический журнал:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<dump create="true" location="D:\1CBASES\dumps" type="0" prntscrn="true"/>
<log history="3" location="D:\1CBASES\logs">
<event>
<eq property="name" value="dbv8dbeng"/>
</event>
<event>
<eq property="name" value="excp"/>
</event>
<property name="all"/>
</log>
</config>
Включаем технологический журнал - в папку "С:\Program Files\1cv83\__НомерВерсииПлатформы__\bin\conf\" (или аналогичную, __НомерВерсииПлатформы__ подставьте свой) кладем файл logcfg.xml
В логах технологического журнала выполнили поиск по тексту ошибки “Превышен максимально допустимый размер внутреннего файла” и увидели, что ошибка возникает на таблице внешнего источника данных. У нас это таблица mysql сайта, в которой хранятся таблицы helpdesk сайта. После изменения способа работы без внешнего источника данных (удалили внешний источник данных из конфигурации) база стала успешно разворачивать в файловом варианте.
На этом история решения проблемы решена! Желаем вам успехов в решении рабочих задач!