Инструменты пользователя

Инструменты сайта


uni:uni

Обслуживание базы данных.

Номер регламентаВид обслуживанияПериодичностьНеобходимые программы
1Копирование базы данныхЕжедневносм. Batch-файл резервного копирования
2Удаление событий старше заданного периодаЕжемесячноDBClean
3Удаление неактивных пользователейЕжеквартальноС помощью программы IBExpert запросом
delete from people p where p."ACTIVE"=0
4Бэкап-Ресторе базы данныхЕжеквартальноDBClean
5Автоматическая чистка базы данныхЕжедневноdb_skud_service.zip
Открыть архив в любую папку.
Проверить пути к исполняемым файлам.
Настроить Назначенные задания на запуск файла db_SKUD_service.bat в указанное время (лучше ночью, т.к. процесс очистки может занимать длительное время).
Бухаров А.В. 11.01.2020 10:49 Содержимое файла db_SKUD_service.sql изменено согласно SQL запросы для удаления событий и содержит необходимые команды для удаления событий.

Перечень объектов

Бухаров А.В. 2019/06/17 08:58

№ п/пНазваниеIP адресЛогинПарольВерсия БДВерсия Сити
1Дххххххх192.168.222.1ХХХ
2Фххх192.168.230.9 СКД
3Вххххх 192.168.230.5Восток
4Рххххххххх192.168.183.200Артсек
5Дхххххх192.168.222.1Administrator
6Шххххххх192.168.230.4administrator1.2.5
7Зххххххх192.168.23.119Запад1.2.5

Комплект сервисных программ

№ п/пСервис, программа Объект
ДоминионРезиденцияЛайнер ВостокШуваловскийБалчуг
1Автоматический бэкап базы данныхНет.
Бухаров А.В. 2019/06/18 08:56
Есть, в папку C:\service.
Бухаров А.В. 2019/06/18 08:49
2Сбор статистики по контроллерам Есть, сбор данных разделен по типам контроллеров (Адемант и Артонит)
Бухаров А.В. 2019/06/18 08:58
Есть, проверен
Бухаров А.В. 2019/06/18 08:46
-Есть, проверен — Бухаров А.В. 10.03.2020 23:51
3Автоматическое удаление неизвестного идентификатораНет
Бухаров А.В. 2019/06/21 14:01
Есть
4Панель управления Артонит Сити вер. 1.2.5
5AServer1.2.0.271.2.0.27

Версии БД и их состояние на объектах

Бухаров А.В. 2019/06/17 09:04

БД СКУД не имеют версий. Есть отличительные признаки доработок, которые я излагаю ниже.

№ п/пВерсияКраткая характеристикаРезиденция
1Базовая Артонит 10Имеются таблица ZKSOFT_FP_TAMPLATE для хранения отпечатков пальца Есть
Бухаров А.В. 2019/06/18
2 Артонит Сити Имеются таблицы с характерным началом ss_.Есть
Бухаров А.В. 2019/06/18
3 Статистика Имеются таблицы с названием st_.
Запуск скрипта сбора статистики установлен в шедулер.
C:\xampp\curl.exe -L http://127.0.0.1/city/task/stat_device
Есть
Есть (был с ошибкой)
Бухаров А.В. 2019/06/18
4 Разделение идентификаторов, работа с ГРЗ CARDTYPE,
DEVTYPE_CARDTYPE
Есть
Есть
Бухаров А.В. 2019/06/18
5 Дабавлена аналитика событий В таблицу events добавлено поле analit.
В базу данных добавлена процедура EVENT_ANALIT.
ALTER TABLE EVENTS
ADD ANALIT INTEGER\\ update RDB$RELATION_FIELDS
set RDB$DESCRIPTION = 'Результат аналитики событий'
where (RDB$RELATION_NAME = 'EVENTS') and
(RDB$FIELD_NAME = 'ANALIT')

event_analit_процедура.zip
Обновлена процедура DEVICEEVENTS_INSERT. deviceevents_insert_with_event_analit.zip

Добавлена
Добавлена
Обновлена
Бухаров А.В. 2019/06/19
6Удаление неизвестного идентификатораПри возникновении события 80 (Проход неизвестного идентификатора) карта автоматически ставится на удаление из всех точек прохода.
delete_unknow_card_процедура.zip
events_del_unknow_card_trigger.zip

Добавлена
Добавлена
Бухаров А.В. 2019/06/19

Данные таблицы CARDTYPE

INSERT INTO CARDTYPE (ID, NAME, DESCRIPTION) VALUES (1, 'RFID', 'Карта EM-marine');
INSERT INTO CARDTYPE (ID, NAME, DESCRIPTION) VALUES (2, 'FP', 'Отпечаток пальца');
INSERT INTO CARDTYPE (ID, NAME, DESCRIPTION) VALUES (3, 'ШК', 'Штрих-код');
INSERT INTO CARDTYPE (ID, NAME, DESCRIPTION) VALUES (4, 'ГРЗ', 'Государственный регистрационный знак а/м');
COMMIT WORK;

Данные таблицы DEVTYPE_CARDTYPE

INSERT INTO DEVTYPE_CARDTYPE (ID_DEVTYPE, ID_CARDTYPE, ID_DB) VALUES (1, 1, 1);
INSERT INTO DEVTYPE_CARDTYPE (ID_DEVTYPE, ID_CARDTYPE, ID_DB) VALUES (5, 4, 1);
INSERT INTO DEVTYPE_CARDTYPE (ID_DEVTYPE, ID_CARDTYPE, ID_DB) VALUES (6, 1, 1);
INSERT INTO DEVTYPE_CARDTYPE (ID_DEVTYPE, ID_CARDTYPE, ID_DB) VALUES (4, 2, 1);
INSERT INTO DEVTYPE_CARDTYPE (ID_DEVTYPE, ID_CARDTYPE, ID_DB) VALUES (4, 1, 1);

COMMIT WORK;

Данные таблицы DEVTYPE

INSERT INTO DEVTYPE (ID_DEVTYPE, ID_DB, NAME, STANDALONE) VALUES (1, 1, 'Контроллеры Артонит/Адемант', 1);
INSERT INTO DEVTYPE (ID_DEVTYPE, ID_DB, NAME, STANDALONE) VALUES (2, 1, 'Контроллеры Артонит (резерв)', 1);
INSERT INTO DEVTYPE (ID_DEVTYPE, ID_DB, NAME, STANDALONE) VALUES (3, 1, 'UHF RFID контроллеры', 1);
INSERT INTO DEVTYPE (ID_DEVTYPE, ID_DB, NAME, STANDALONE) VALUES (4, 1, 'Biomrteical', 1);
INSERT INTO DEVTYPE (ID_DEVTYPE, ID_DB, NAME, STANDALONE) VALUES (5, 1, 'Система распознавания ГРЗ', 1);
INSERT INTO DEVTYPE (ID_DEVTYPE, ID_DB, NAME, STANDALONE) VALUES (6, 1, 'Артонит в режиме он-лайн', 0);

COMMIT WORK;
Batch-файл резервного копирования.
"C:\Program Files (x86)\Firebird\Firebird_1_5_6\bin\gbak.exe" -b -v -ig -g "127.0.0.1:C:\Program Files (x86)\Cardsoft\DuoSE\Access\SHIELDPRO_REST.GDB" C:\service\SHIELDPRO_REST_%date%.FBK -USER sysdba -PASSWORD temp 
Добавить поле ANALIT
ALTER TABLE EVENTS ADD ANALIT INTEGER

Обновление баз данных Артонит 10 до Артонит Сити.

  1. Обновить саму базу данных до последней версии.
  2. записать данные в таблицу CARDTYPE.
  3. записать данные в таблицу DEVTYPE_CARDTYPE.
  4. в таблице card всем пользователям установить категорию доступа NULL (update card set … = null).
  5. Очистить содержимое таблицы cardidx.
  6. Очистить содержимое таблицы cardindev.

База обновлена и готова к проверке и последующему использованию по назначению.

Удаление всех событий старше заданного количества дней.

Удаление - процесс опасный, поэтому я привожу пример select.
При необходимости удаления следует select * заменить на delete.

select * from events e
where e.datetime>CURRENT_DATE-2

либо

 select * from events e where e.datetime >DATE'today' - 2

Удаление указанных событий старше заданного количества дней.

9.08.2019 В ходе работы база данных быстро пополняется событиями, что приводит к росту размера базы данных. Большое количество событий в таблице events может приводить к замедлению вставки событий, получаемых от АСервера.

Для автоматизации контроля размера базы данных я предлагаю следующий алгоритм:

  1. Ввести типизацию событий, для каждого типа указать срок хранения,
  2. Административно определить какое событие к какому типу относится,
  3. подготовить необходимые SQL запросы, чтобы обеспечить удаление событий в соответствии с определенной политикой,
  4. в Назначение задания внести необходимые настройки, чтобы сформированные запросы запускались ежедневно в начале суток.

Типы данных

№ п/пНазначениеСрок хранения
1Оперативный анализ14
2Данные для отчетов45
3Важные данные60

Типы событий:

Код событияНазвание событияОперативный анализДанные для отчетовВажные данные
0неизвестное событие+
17добавлена карточка+
18удалена карточка+
19изменены параметры карточки+
32добавлен новый сотрудник+
33удален сотрудник+
34изменены данные сотрудника+
46неизвестная карточка+
49дверь открыта кнопкой+
50действительная карточка+
51дверь открыта пользователем+
52дверь открыта всегда+
55дверь закрыта всегда+
56дверь разблокирована+
65недействительная карточка+

SQL запросы для удаления событий

Удаление событий для оперативных отчетов

 Удаление указанных событий старше 30 дней
delete from events e 
where e.datetime < CURRENT_DATE-14
and e.id_eventtype in (0, 46, 49)

Удаление событий для отчетов

 Удаление указанных событий старше 30 дней
delete from events e
where e.datetime < CURRENT_DATE-45
and e.id_eventtype in (17, 18, 19, 32, 33, 34, 51)

Удаление важных данных

 Удаление указанных событий старше 30 дней
delete from events e
where e.datetime < CURRENT_DATE-60

Единый SQL запрос на очистку событий и сбора статистики.

Бухаров А.В. 28.02.2020 08:51
Т.к. в результате нам требуется выполнение всех запросов за один раз, то резонно их собрать в одном файле.
Для анализа состояния базы данных хорошо бы знать и количество событий в журнале, и их распределение по событиями. Все это реализуется в одном файле (см. ниже).
В лог-файле будет отображено время и окончания работы скрипта, количество событий после удаления событий и статистика по событиям:

 delete from events e
where e.datetime < CURRENT_DATE-45;
commit;;

delete from events e where e.datetime < CURRENT_DATE-5 and e.id_eventtype in (0, 46, 49, 53, 54, 57, 58); 
commit;;

delete from events e where e.datetime < CURRENT_DATE-5 and e.id_eventtype in (17, 18, 19, 32, 33, 34, 51);
commit;;

select count (*) from events;
commit;;


 select distinct e.id_eventtype, et.name, count(e.id_event) from events e
join eventtype et on et.id_eventtype=e.id_eventtype
group by e.id_eventtype, et.name ;
commit;;

select distinct e.analit, count (*) from events e
			where e.analit is not null
			and e.datetime> CURRENT_TIMESTAMP-1
			group by e.analit;
commit;;			

Статистика событий

Вывод информации о типах событий и их количество в базе данных.

 select distinct e.id_eventtype, et.name, count(e.id_event) from events e
join eventtype et on et.id_eventtype=e.id_eventtype
group by e.id_eventtype, et.name

Запрет удаления администратора.

Для запрета удаления пользователя Администратор необходимо выполнить указанный ниже скрипт.

/******************************************************************************/
/***               Generated by IBExpert 06.03.2020 16:28:50                ***/
/******************************************************************************/
SET SQL DIALECT 3;
SET NAMES WIN1251;
SET TERM ^ ;
CREATE TRIGGER PEOPLE_MET_DELETE_ADMIN FOR PEOPLE
ACTIVE BEFORE DELETE POSITION 0
AS
begin
  if (old.id_pep = 1) then exception deletenotallowed;
end
^
SET TERM ; ^
/home/cardsoft/artonit.ru/docs/wiki/data/pages/uni/uni.txt · Последние изменения: 06.06.2024 08:49 — buh