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

Полезные скрипты для работы с БД.

Применительно к базам данных 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'

// shelter only !!?

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

Обязательный бэкап/рестор после выполнения скриптов!!!