Сжатие журнала регистрации в формате SQLite (.lgd) с помощью программы "DB Browser for SQLite".

04.06.17

База данных - Журнал регистрации

Если журнал регистрации базы 1С заметно увеличился, Вы не сможете оперативно искать в нем нужную информацию. Более того, работа с таким журналом может вызывать блокировку работы всех пользователей. Для предотвращения разрастания журнала необходимо устранять настройками запись ненужных событий и перемещать в архивы события с неактуальными датами. Избавиться от уже записанной ненужной информации можно с помощью программы DB Browser for SQLite указанным в этой статье способом.

Порядок действий:

  1. Открыть файл  со списками баз  сервера 1С, найти в файле нужную запись поиском по имени базы. По найденной записи определить каталог хранения журнала нужной базы. 

Пример: 

Текст в файле:

{2ae78977-e8b2-4f7f-b31f-1f10edf9ae05,"Test_Base_001","","MSSQLServer","MyServer\Five","Test_Base_001","sa","nCOQ5/A0Nn/x3dLF/qZTwX+Ro0XYwOmsUMIgnklDHBs=","CrSQLDB=Y;DB=Test_Base_001;DBMS=MSSQLServer;DBSrvr=MyServer

Каталог  журнала:

C:\Program Files\1cv8\srvinfo\reg_1541\2ae78977-e8b2-4f7f-b31f-1f10edf9ae05\1Cv8Log)

  1. Остановить 1С Сервер.
  2. Сделать резервную копию каталога с журналом  1CV8Log.

  1. Скачать и установить программу "DB Browser for SQLite" с официального сайта:

http://sqlitebrowser.org

  1. Открыть базу журнала в программе (обязательно выбрать тип файла All Files)

  1. Определить признаки для поиска ненужной информации журнала и вставить в указанный ниже пример кода ( можно использовать  приведенный код без изменений-если это конфигурации на основе Бухгалтерия 3.0).

Пример для конфигураций на основе Бухгалтерия 3.0

6.1 Удаление записей с отбором по кодам событий:

Drop table Filter;

Create table Filter(Code int, name TEXT);

INSERT INTO Filter (Code,name) SELECT code,name from EventCodes where name Like '%СПАРК%';

INSERT INTO Filter (Code,name) SELECT code,name from EventCodes where name Like '%Новости%;'

delete from EventLog where EventCode in (Select code from Filter);

  1. 2 Удаление записей с отбором  по видам метаданных:

Drop table Filter;

Create table Filter(Code int, name TEXT); 

INSERT INTO Filter (Code,name) SELECT code,name from MetadataCodes where name Like '%ДанныеМонитораРуководителя%';

INSERT INTO Filter (Code,name) SELECT code,name from MetadataCodes where name Like '%бит_фн_Оповещения%';

INSERT INTO Filter (Code,name) SELECT code,name from MetadataCodes where name Like '%бит_фн_РегистрацияСобытийОповещений%';

delete from EventLog where MetadataCodes in (Select code from Filter);

  1. 3 Удаление всех записей с пустым полем Метаданные

Delete from EventLog where metadataCodes="";

7.

Копируем код группами в  браузер и выполняем (выделить нужные строки блоком или выбрать одну строку и нажать "F5").

Примечание

(Для проверки кода можно сначала заменить оператор “delete ” на  “ select *”

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

Select EL.Date, EL.UserCode, AC.Name,AC.Code , CC.Name,CC.Code from EventLog As EL LEFT OUTER JOIN AppCodes  As AC On EL.AppCode=AC.Code LEFT OUTER JOIN ComputerCodes  As CC On EL.ComputerCode=CC.Code where  AC.Code=3 And EL.computerCode=1 And  EL.rowID <10000

                               Или

Select EL.Date, EL.UserCode, AC.Name,AC.Code , CC.Name,CC.Code from EventLog As EL LEFT OUTER JOIN AppCodes  As AC On EL.AppCode=AC.Code LEFT OUTER JOIN ComputerCodes  As CC On EL.ComputerCode=CC.Code where  where metadataCodes=""   And  EL.rowID <10000)

8.После выполнения команд сохранить результат:

9. Сжать базу журнала

10. Обязательно закрыть  DB Browser for SQLite.

11. Запустить службу 1С Сервера.

12. Проверить результат, если удалили лишнее – тогда снов остановить службу Сервер 1С и возвратить из копии каталог  1Cv8Log.

Примечание:

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

- Можно проверить удаление  на копии журнала и увидеть результат, привязав журнал к копии рабочей базы. Если все хорошо – делайте свежую копию журнала и сжимайте рабочий.

- Сначала лучше выполнить операцию с максимальным количеством удаляемых записей (в примере 6.3)

- При указанных настройках у меня журнал сжался с 24 Гб до 1.8 Гб.  Время удаления составило 2 часа.

- Полезные ссылки:

http://forum.infostart.ru/forum9/topic118049/  - обсуждение темы о тонкой настройке событий регистрации

https://1c-programmer-blog.ru/programmirovanie/zhurnal-registracii-v-1s-8.html - описание журнала регистрации, подключение журнала как внешнего источника данных 1С.

http://forum.infostart.ru/forum83/topic144282/  - в обсуждении (ответ 3 - Виталий Чайкин (Vitaly1C8) ) приведен способ сжатия с помощью SQLite 3.

См. также

LogManager - Внешний журнал регистрации в SQL

Журнал регистрации Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Журнал регистрации платформы 1С в SQL. Общая база хранения всех журналов. Через com-подключение регламентным заданием периодически догружает журналы регистраций из рабочих баз. Предоставляет настраиваемый доступ к журналам по правам подразделений. Формирует отчеты по пользователям и данным.

10000 руб.

23.05.2014    55415    52    16    

47

Версионирование справочников, документов и регистров сведений на SQL-сервере

Журнал регистрации Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

История изменений реквизитов и табличных частей справочников, документов, независимых регистров сведений, возможность отката изменения, восстановление удаленных объектов, сбор статистики использования базы 1С. Альтернативный журнал регистрации.

22800 руб.

22.02.2018    35117    58    53    

55

Журнал изменений с восстановлением состояния ссылочных объектов и архивацией по HTTP / COM (расширение + конфигурация, 8.3.14+, ЛЮБАЯ конфигурация)

Архивирование (backup) Журнал регистрации Поиск данных Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

База данных «сама» меняет данные в документах/справочниках? Тогда данный журнал изменений для Вас! Практически не влияет на скорость записи объектов за счет быстрого алгоритма! Скорость работы почти в 2 раза выше типового механизма "История изменений"! Позволяет следить за изменениями и удалением в любых ссылочных объектах конфигурации, с возможностью архивации по HTTP(!) или COM, и сверткой данных. А так же, может восстановить состояние реквизитов (значения) до момента изменения или удаления объекта из базы. Есть ДЕМО-база где можно самостоятельно протестировать часть функционала! Работает на любых платформах выше 8.3.14+ и любых конфигурациях! Версия 3.1 от 24.08.2023!

19200 руб.

15.05.2017    42470    10    24    

38

Мониторинг баз и серверов 1С

Журнал регистрации Мониторинг Платформа 1С v8.3 Платные (руб)

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

9000 руб.

28.08.2019    30837    14    21    

65

Версионирование объектов для Альфа-авто, ред 4 и 5.

Оптовая торговля Розничная торговля Журнал регистрации Платформа 1С v8.3 Конфигурации 1cv8 Автомобили, автосервисы Управленческий учет Платные (руб)

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

4800 руб.

03.09.2016    42213    32    24    

36

Уведомления на почту по событиям журнала регистрации на email и в Telegram (для УНФ, УТ 11, БП 3.0, ЗУП 3.0, ERP)

Мессенджеры и боты Журнал регистрации Мониторинг Email рассылки Платформа 1С v8.3 Управляемые формы 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Платные (руб)

Рассылка уведомлений о событиях журнала регистрации на электронную почту и в Телеграмм. Программа позволяет анализировать журнал регистрации по заданным критериям, находить в нём интересующие события, и отправлять уведомления об этих событиях на электронную почту (одного или нескольких получателей) или в телеграмм. Может работать и как внешняя обработка, и как регламентное задание. Для УНФ, УТ 11, БП 3.0, ЗУП 3.0, ERP.

10800 руб.

18.06.2017    32254    3    2    

15

Регламентное сокращение журнала регистрации

Инструменты администратора БД Журнал регистрации Платформа 1С v8.3 1С:Управление торговлей 11 Абонемент ($m)

Внешняя обработка для регламентного сокращения журнала регистрации для конфигураций на базе БСП и платформы 8.3.20+

1 стартмани

29.12.2023    1215    11    dima_gsv    1    

12

Магия преобразований: ЖР, ТЖ, RAS/RAC, логи - универсальное решение Vector

Мониторинг Журнал регистрации Технологический журнал Абонемент ($m)

Как легко и быстро с помощью специализированных решений собирать, парсить и передавать логи и метрики.

1 стартмани

13.11.2023    2879    4    AlexSTAL    0    

42
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Jamms 07.06.17 08:23 Сейчас в теме
В линуксе если нужно просто дефрагментировать файл журнала (после сокращения, например), достаточно команды:
find /home/usr1cv8/ -iname "*.lgd" -exec sqlite3 {} VACUUM \;
2. DrSender 82 07.06.17 11:41 Сейчас в теме
В Windows тоже примерно так - если установить SQLite3:

(http://www.w3ii.com/ru/sqlite/sqlite_vacuum.html)

Руководство VACUUM
Ниже приводится простой синтаксис для выдачи команды VACUUM для всей базы данных из командной строки:

$sqlite3 database_name "VACUUM;"
Вы можете запустить VACUUM из SQLite запроса, а также следующим образом:

sqlite> VACUUM;
Вы также можете запустить VACUUM на конкретной таблице следующим образом:

sqlite> VACUUM table_name;


Но мне понравилось работать с DB Browser for SQLite - все удобно, наглядно.
3. DrSender 82 07.06.17 12:19 Сейчас в теме
Скопировал журнал для обработки на более мощный сервер. База журнала 25 Гб - по указанным в статье настройкам время выполнения:

Запрос успешно выполнен: delete from EventLog where metadataCodes="" (заняло 2151460мс, 141438660 строк изменено)
Запрос успешно выполнен: delete from EventLog where EventCode in (Select code from Filter); (заняло 321319мс, 2807 строк изменено)
Запрос успешно выполнен: delete from EventLog where MetadataCodes in (Select code from Filter); (заняло 292202мс, 2067792 строк изменено)

И примерно 10-20 минут на сжатие.
4. AlexO 135 08.09.18 17:49 Сейчас в теме
Странное "сжатие"... Сжатие - путем удаления?
Определить признаки для поиска ненужной информации журнала

Лог и подразумевает, что в него попадают все сообщения, там нет понятия "ненужная информация".
Есть "полная информация", и "отбор".
По каким вообще критериям здесь определяется "ненужная информация"?
Нормальная обрезка лога - это сохранение данных с даты до даты, усечение лога, и сжатие пустого пространства.
А тут - ну давайте, все сообщения вообще очистим, совсем хороший лог будет, в ноль, чистый и маленький.
Этот метод, кстати, и у Гилева описан, так что - неудивительно, что рабочий, но безграмотный в плане обработки БД. Там у него сообщения о фоновых заданиях удаляются - которые, например, вообще являются основными в базах, где все завязано на обмен.
aleks.public; +1 Ответить
5. DrSender 82 12.09.18 12:15 Сейчас в теме
Я показал методику с конкретными примерами. Каждый может удалить только то, что ему не нужно. Думаю, что каждый разберется, что ему оставить в логе.

Нас больше всего интересует история изменения объектов - кто, когда и каким способом, причем за достаточно длительный период - поэтому обрезать период неудобно.
6. ice-net 19 27.01.20 11:26 Сейчас в теме
(0) Спасибо, Очень полезно!
сильно разросся лог за 3 года около 30 ГБ, решили удалить все записи только по изменению регистров.

delete from EventLog where metadataCodes in ( select code from metadataCodes where (Name like '%РегистрСведений%') or (Name like '%РегистрНакопления%') );


Подскажите, не может Вы сталкивались с тем, что в колонке metadataCodes таблицы EventLog стоят значения разделенные пробелом и не соответсвуют данным в таблице metadataCodes ?
Оставьте свое сообщение