Перейти к основному контенту

Удаление логов из БД

  При продолжительном использовании ПО "Абонемент" работающего в связке с утилитами gkHost и GkHostConnect (модуль управления турникетами), вся информация о каждой попытке прохода сохраняется в таблице Access_Control_Log, которая может достигать больших размеров (порядка нескольких гигабайт).

  Для данного случая был подготовлен скрипт "AutoDelete_Access_Control_Log", оставляющий в упомянутом выше файле информацию за последние 90 дней.

  На Рисунках 1,2,3 отражена последовательность действий в программе IBExpert для уточнения размера служебного файла (имеется ли смысл в применении данного скрипта).

Рис.1 "Заходим в программу IBExpert, щелкаем левой кнопкой мыши (один раз) по алиасу нашей рабочей базы в списке "Database Explorer", далее  нажимаем "Services" -> "Database Statistics";

Рис.2 "Откроется окно в котором нужно будет нажать на кнопку "Retrieve Statistics";

Рис.3 "Далее будет выведена статистика базы, переходим на вкладку "Tables" и обращаем внимание на колонку "Size, bytes".

 

Соответственно из "Рис.3" видим - файл ACCESS_CONTROL_LOG занимает 4.8 Гб, понимаем, что применение скрипта в данном случае актуально.

Удаление логов взаимодействия оборудования с БД "Абонемент"

Скрипт состоит из 2 частей ("*.bat" и "*.sql"):

Содержание файла "AutoDelete_Access_Control_Log.bat":

set isql="C:\Program Files (x86)\Firebird\FireBird_2_5\bin\isql.exe"  
set sqlPath=%~dp0
set sqlFile=%sqlPath%AutoDelete_access_control_log.sql
%isql% -input %sqlFile% 

Содержание файла "AutoDelete_Access_Control_Log.sql":

/*Удаляет логи взаимодействия с оборудованием.
Оставляет только последние 90 дней*/
CONNECT '127.0.0.1/3080:D:\_FITNESS\IBData\FITNESS.FDB' USER 'ucs' PASSWORD 'ucs';
delete from access_control_log acl where acl.regdate < d2dbl('now') - 90;
commit work;

Удаление логов действий пользователей из БД "Абонемент" до заданной даты

Совместно со скриптом указанным выше, возможно (на усмотрение Заказчика) удаление логов действий пользователей в БД "Абонемент".

Содержание файла "AutoDelete_IBHistory_Log.bat":

set isql="C:\Program Files (x86)\Firebird\FireBird_2_5\bin\isql.exe"  
set sqlPath=%~dp0
set sqlFile=%sqlPath%AutoDelete_IBHistory_Log.sql
%isql% -input %sqlFile% 

Содержание файла "AutoDelete_IBHistory_Log.sql":

/*Удаляет логи до заданной даты. */ 
CONNECT '127.0.0.1/3080:D:\_FITNESS\IBData\FITNESS.FDB' USER 'ucs' PASSWORD 'ucs';
delete from sys_history;
delete from sys$log sl where sl.regdate<d2dbl('ДД.ММ.ГГГГ');
commit work;

Вся история изменений до ДД.ММ.ГГГГ будет удалена.

Скрипт AutoDelete_IBHistory_Log.sql, как и в случае AutoDelete_Access_Control_Log.sql, можно настроить на периодическое выполнение через "Планировщик задач" MS Windows.

При выполнении скрипта отдавайте себе отчет, что вносимые изменения необратимы! Рекомендовано все скрипты выполнять изначально на тестовой БД!

 
* - В строках выделенных желтым цветом необходимо указать путь к вашей базе.
  После выполнения "AutoDelete_Access_Control_Log.bat" необходимо будет сделать backup/restore (Чтобы изменился размер базы данных ПО "Абонемент").
 
 

Пример использования скрипта, в результате которого будет поддерживаться актуальная информация о проходах за последние 90 дней в таблице Access_Control_Log БД Абонемент(Создание задачи в "Планировщике задач" MS Windows):

***Данный пример, также актуален для использования скрипта AutoDelete_IBHistory_Log.sql***
Рис.4 "Заходим на сервере БД в <Планировщик заданий> MS Windows, переходим в списке  в <Библиотеку планировщика> (слева) и в списке <Действия> (справа) нажимаем <Создать задачу...>
 
Рис.5 На вкладке <Общие> указываем <Имя:> задачи и параметр <Настроить для:> - соответствующую операционную систему 
 
Рис.6 Переходим на вкладку <Триггеры>, нажимаем кнопку <Создать...> и указываем параметры триггера: "Ежедневно", "Повторять каждые: 1 дн.", "Включено" и нажимаем кнопку "ОК"
 
Рис.7 Переходим на вкладку <Действия>, нажимаем кнопку <Создать...> и указываем параметры действия: "Запуск программы", "Программа или сценарий: указываем путь к *.bat файлу" и нажимаем кнопку "ОК"
 
 
Рис.8 После создания действия, нажимаем кнопку  "ОК" - задача создана.