Очистка базы данных
Очистка базы от издержек тестирования с сохранением настроек
Часто, в следствие использования базы без бэкапирования, для целей обучения и/или обкатки объекта, появляется необходимость очистки базы, с сохранением всех настроек.
Удалить всех клиентов, оплаты и кассовые смены, сохранив при этом все настройки абонементов, тарфов и пр., возможно.
Для этого нужно:
1. Запустить IBExpert, подключится к базе.
2. Запустить sqlEditor и выполнить следующий запрос:
select text from SPADM_CLEARUP_PREPARE('&CHECK_FIELDS_IN_WORKTABLES=1' ||'&CHECK_WORKTABLES=1' ||'&DELETE_STAFF=0' ||'&DELETE_USER=0');
3. Результатом выполнения запроса будет скрипт, который требуется выполнить в Script Executive. По окончании выполнения скрипта, база будет очищена в соответствии с указанными параметрами.
Примечание:
Если два первых параметра установлены в 1, то скрипт на выходе, очистит все действия из базы (оплаты, трансферы, посещения, клиенты), третий параметр отвечает за очистку списка специалистов, и четвёртый отвечает за удаление всех зарегистрированных пользователей Абонемент.
ВАЖНО
После выполнения полученного скрипта, на существующих киосках становиться невозможно открыть смену.
Для устранения данной проблемы требуется применить скрипт:
update pos p set p.shift = 1 where p.id = 1 and p.shift = 0
Или же, можно средствами Абонемента создать новый киоск и продолжать работу на нём, деактивировав имеющийся.
Скрипт очистки будет поправлен в ближайших версиях и данная процедура больше не понадобится.
Обновление скрипта (146 версия, задача по трекеру http://tracker.shelter.ru/issues/201632) spadm_clearup_tableprepare_146 (4).sql
Удаление логов из БД
При продолжительном использовании ПО "Абонемент" работающего в связке с утилитами 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.
При выполнении скрипта отдавайте себе отчет, что вносимые изменения необратимы! Рекомендовано все скрипты выполнять изначально на тестовой БД!
Пример использования скрипта, в результате которого будет поддерживаться актуальная информация о проходах за последние 90 дней в таблице Access_Control_Log БД Абонемент(Создание задачи в "Планировщике задач" MS Windows):




