Полезные скрипты для работы с БД.
Применительно к базам данных Abonement/Shelter.
1. Удаление логов из базы данных.
1.1. Удаление логирования из таблицы LOG$FIELDS
delete from log$fields;
commit;
1.2. Удаление логирования из таблицы LOG$TABLES
delete from log$tables;
commit;
1.3. Для удаления логов за определенный период необходимо выполнить следующий скрипт:
delete from LOG$TABLES LT where LT.DATE_TIME < d2dbl('now') - 30;
delete from LOG$FIELDS LF where not LF.LOG_TABLES_ID in (select LT.ID from LOG$TABLES LT where LT.ID = LF.LOG_TABLES_ID);
commit;
После выполнения данного скрипта, в БД останутся логи за 30 дней, остальные будут удалены.
Для уменьшения размера БД необходимо сделать backup / restore.
1.4. Для автоматического удаления логов необходимо в «Планировщик заданий» Windows добавить простую задачу с выполнением .bat файла, рядом с котором должен быть файл script.sql.
Содержание .bat файла:
@rem Указать путь до isql.exe
@echo off
set isql="C:\Program Files (x86)\Shelter\Firebird\bin\isql.exe"
set sqlPath=%~dp0
set sqlFile=%sqlPath%script.sql
%isql% -input %sqlFile%
Содержание script.sql:
CONNECT 'localhost/3080:C:\_BASE\SHELTER.FDB' user 'ucs' PASSWORD 'ucs';
delete from LOG$TABLES LT where LT.DATE_TIME < d2dbl('now') - 30;
delete from LOG$FIELDS LF where not LF.LOG_TABLES_ID in (select LT.ID from LOG$TABLES LT where LT.ID = LF.LOG_TABLES_ID);
commit;
2. Запрос и скрипт на перестыковку платежей.
2.1. Сначала выполняем запрос в разделе Tools - SQL Editor.
Запрос:
select distinct cc.CHK
from CHECK_CONTENTS cc
where not exists(select i.id from INVOICES i where i.id = cc.CHK)
order by 1
2.2. Если после выполнения запроса в таблице появляются данные (таблица не пуста), то применяем скрипт.
Скрипт:
delete from CHECK_CONTENTS_JOINS ccd where ccd.CHK in (
select distinct cc.CHK from CHECK_CONTENTS cc
where not exists(
select i.id from INVOICES i where i.id = cc.CHK)
);
---------------------
delete from CHECK_CONTENTS ccd where ccd.CHK in (
select
distinct cc.CHK from CHECK_CONTENTS cc
where
not exists(select i.id from INVOICES i where i.id = cc.CHK)
);
3. Скрипт для смены адреса глобального сервера обновлений.
3.1. Скрипт:
update DEFAULT_VALUES dv set dv.STRVALUE = 'udpate.shelter.ru' where dv.STRVALUE = 'shelter2.ucs.ru'
4. Получение сведений о клиентских приложениях.
4.1. Через SQL-Editor:
SELECT MON$USER, MON$REMOTE_ADDRESS, MON$REMOTE_PID, MON$TIMESTAMP
FROM MON$ATTACHMENTS
WHERE MON$ATTACHMENT_ID <> CURRENT_CONNECTION
4.2. Отключение всех соединений с базой, за исключением своего:
DELETE FROM MON$ATTACHMENTS
WHERE MON$ATTACHMENT_ID <> CURRENT_CONNECTION
Обязательный бэкап/рестор после выполнения скриптов!!!