Ручное "сжатие" внутренней базы Dr.Web® Enterprise Suite

Материал из wiki.drweb.com
Перейти к: навигация, поиск

1. Остановить ES сервер (Пуск->Программы->DrWeb Enterprise Server->Server control->Stop).

2. Скопировать куда-нибудь, где много места, базу (C:\Program Files\DrWeb Enterprise Server\var\dbinternal.dbs) и drwidbsh.exe (C:\Program Files\DrWeb Enterprise Server\bin\drwidbsh.exe). Лучше всего, что бы свободного места было раза в 4 или 5 больше, чем размер dbinternal.dbs.

3. Стартовать ES сервер (Пуск->Программы->DrWeb Enterprise Server->Server control->Restart).

4. Создать там, куда Вы скопировали базу и drwidbsh.exe, текстовый файл delold с таким содержимым:

BEGIN;
DELETE FROM run WHERE beginrecvtime <= ?;
DELETE FROM infection WHERE infectionrecvtime <= ?;
DELETE FROM scanstat WHERE recievetime <= ?;
DELETE FROM installation WHERE starttime <= ?;
DELETE FROM procerror WHERE errrecvtime <= ?;
DELETE FROM station_components WHERE modtime <= ?;
DELETE FROM station_environment WHERE createtime <= ?;
DELETE FROM station_vdb WHERE createtime <= ?;
DELETE FROM station_status WHERE createtime <= ?;
DELETE FROM station_running WHERE starttime <= ?;
DELETE FROM station_offline WHERE starttime <= ?;  -- таблица имеется только начиная с версии 4.33.2, и отсутствует в 5.00
DELETE FROM srv_run WHERE arrived <= ?;
DELETE FROM srv_infection WHERE arrived <= ?;
DELETE FROM srv_procerror WHERE arrived <= ?;
DELETE FROM srv_scanstat WHERE arrived <= ?;
DELETE FROM srv_installation WHERE arrived <= ?;
DELETE FROM srv_unsent WHERE arrived <= ?;
DELETE FROM srv_recvhistory WHERE arrived <= ?;
DELETE FROM srv_names WHERE updatetime <= ?;
DELETE FROM update_state WHERE rectime <= ?;
DELETE FROM srv_status WHERE arrived <= ?;
DELETE FROM deleted_stations WHERE created <= ?;
DELETE FROM jobs_log WHERE completed <= ?; -- таблица имеется начиная с версии 5.00
DELETE FROM station_modules WHERE createtime <= ?; -- таблица имеется начиная с версии 5.00
DELETE FROM server_jobs_log WHERE completed <= ?; -- таблица имеется начиная с версии 5.00
DELETE FROM station_offline_cmd WHERE created <= ?; -- таблица имеется начиная с версии 5.00
DELETE FROM admin_activity WHERE createtime <= ?; -- таблица имеется начиная с версии 5.00
DELETE FROM activity_data WHERE createtime <= ?; -- таблица имеется начиная с версии 5.00
COMMIT;
VACUUM;

Знак вопроса заменить на дату YYYYMMDDHHMMSSTTT, например 20060801000000000. Это удалит все данные до 01/08/2006.

5. Запустить drwidbsh.exe dbinternal.dbs

6. Выполнить команду .databases и убедиться, что база подключилась нормально.

7. Выполнить команду .read delold

8. Дождаться завершения процедуры (она может длиться несколько часов).

9. Выполнить команду .exit

10. Остановить ES сервер (Пуск->Программы->DrWeb Enterprise Server->Server control->Stop).

11. Сохранить куда-нибудь на всякий случай старую базу, а на ее место записать сжатую.

12. Стартовать ES сервер (Пуск->Программы->DrWeb Enterprise Server->Server control->Restart).

13. Подключиться из консоли и отредактировать задания на удаление старых данных из базы (п. 6.5.3 документации).

(Начиная с версии 4.33.2 процедура доступна через консоль)


См. так же ЧаВо: Dr.Web® Enterprise Suite