# Очистка базы данных



# Очистка базы от издержек тестирования с сохранением настроек

Часто, в следствие использования базы без бэкапирования, для целей обучения и/или обкатки объекта, появляется необходимость очистки базы, с сохранением всех настроек.

Удалить всех клиентов, оплаты и кассовые смены, сохранив при этом все настройки абонементов, тарфов и пр., возможно.

Для этого нужно:

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](https://docs.shelter.ru/attachments/70)

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

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

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

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

![](https://support.shelter.ru/sites/files/upload/images/nodes/1_2.png)

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

![](https://support.shelter.ru/sites/files/upload/images/nodes/2_3.png)

[![image.png](https://docs.shelter.ru/uploads/images/gallery/2024-12/scaled-1680-/image.png)](https://docs.shelter.ru/uploads/images/gallery/2024-12/image.png)

**<u> *Откроется окно в котором нужно будет нажать на кнопку "Retrieve Statistics";\\*</u>**

**<u>*Далее будет выведена статистика базы, переходим на вкладку "Tables" и обращаем внимание на колонку "Size, bytes".*</u>**

Исходя из размера ACCESS\_CONTROL\_LOG принимаем решение о необходимости применения скрипта очистки.

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

Скрипт состоит из 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.

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

#### После выполнения любых скриптов по очистке логов необходимо сделать **backup/restore** 

<div id="bkmrk-%C2%A0-1"> </div><div id="bkmrk-%C2%A0-2"> </div>#### <u>Пример использования скрипта, в результате которого будет поддерживаться актуальная информация о проходах за последние 90 дней в таблице **Access\_Control\_Log БД Абонемент**(Создание задачи в "Планировщике задач" MS Windows)</u>:

<div id="bkmrk-%2A%2A%2A%D0%94%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9-%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%2C-%D1%82%D0%B0"><u>*\*\*\*Данный пример, также актуален для использования скрипта **AutoDelete\_IBHistory\_Log.sql\*\*\****</u></div><div id="bkmrk--2">![](https://support.shelter.ru/sites/files/upload/images/nodes/1_bat.png)</div><div id="bkmrk-%D0%A0%D0%B8%D1%81.4-%22%D0%97%D0%B0%D1%85%D0%BE%D0%B4%D0%B8%D0%BC-%D0%BD%D0%B0-%D1%81%D0%B5"><u>***Заходим на сервере БД в &lt;Планировщик заданий&gt; MS Windows, переходим в списке в &lt;Библиотеку планировщика&gt; (слева) и в списке &lt;Действия&gt; (справа) нажимаем &lt;Создать задачу...&gt;***</u></div><div id="bkmrk-%C2%A0-3"> </div><div id="bkmrk--3">![](https://support.shelter.ru/sites/files/upload/images/nodes/2_bat.png)</div><div id="bkmrk-%D0%A0%D0%B8%D1%81.5-%D0%9D%D0%B0-%D0%B2%D0%BA%D0%BB%D0%B0%D0%B4%D0%BA%D0%B5-%3C%D0%9E%D0%B1"><u>***На вкладке &lt;Общие&gt; указываем &lt;Имя:&gt; задачи и параметр &lt;Настроить для:&gt; - соответствующую операционную систему*** </u></div><div id="bkmrk-%C2%A0-4"> </div><div id="bkmrk--4"><u>***![](https://support.shelter.ru/sites/files/upload/images/nodes/3_bat.png)***</u></div><div id="bkmrk-%D0%A0%D0%B8%D1%81.6-%D0%9F%D0%B5%D1%80%D0%B5%D1%85%D0%BE%D0%B4%D0%B8%D0%BC-%D0%BD%D0%B0-%D0%B2"><u>***Переходим на вкладку &lt;Триггеры&gt;, нажимаем кнопку &lt;Создать...&gt; и указываем параметры триггера: "Ежедневно", "Повторять каждые: 1 дн.", "Включено" и нажимаем кнопку "ОК"***</u></div><div id="bkmrk-%C2%A0-5"> </div><div id="bkmrk--5"><u>***![](https://support.shelter.ru/sites/files/upload/images/nodes/4_bat.png)***</u></div><div id="bkmrk-%D0%A0%D0%B8%D1%81.7%C2%A0%D0%9F%D0%B5%D1%80%D0%B5%D1%85%D0%BE%D0%B4%D0%B8%D0%BC-%D0%BD%D0%B0-%D0%B2"><u>***Переходим на вкладку &lt;Действия&gt;, нажимаем кнопку &lt;Создать...&gt; и указываем параметры действия: "Запуск программы", "Программа или сценарий: указываем путь к \*.bat файлу" и нажимаем кнопку "ОК"***</u></div><div id="bkmrk-%C2%A0-6"> </div><div id="bkmrk-%C2%A0-7"> </div><div id="bkmrk--6"><u>***![](https://support.shelter.ru/sites/files/upload/images/nodes/5_bat.png)***</u></div><div id="bkmrk-%D0%A0%D0%B8%D1%81.8-%D0%9F%D0%BE%D1%81%D0%BB%D0%B5-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F"><u>***После создания действия, нажимаем кнопку "ОК" - задача создана.***</u></div>