Уменьшение размера базы данных M.E.Doc

Ваші пропозиції щодо розширення функціоналу програми.
san-d
Повідомлень: 3
З нами з: 19 березня 2015, 17:35

Уменьшение размера базы данных M.E.Doc

Повідомлення san-d » 01 лютого 2019, 20:56

База банных программы (.\zvit.fdb) увеличивается. Со временем может вырасти до огромных размеров. Единственный способ уменьшения размера базы - через резервное копирование/восстановление. При этом все настройки доступа (пользователи роли) теряются.
Со слов техподдержки, невозможность сжать базу - специфика движка (Firebird).

У нас развёрнута сетевая версия, много ОКПО.
Архивирование документов средствами программы - 1 раз в год.

Теперь по сути.
В таких условиях уменьшить размер базы у нас - это катастрофа! Во-первых, весь процесс отнимает полных 10 часов минимум (бывало, что и сутки). Полных, потому что процесс нужно контролировать (сбой - запустил снова, бывает такое). Во-вторых, несколько часов на настройку программы, а также всех прав доступа и ролей. Последнее - вообще ужас, страшно приступать к процессу архивирования: зафиксировать ВРУЧНУЮ состояние модуля безопасности, параметры системы, затем по сделанным записям всё восстанавливать. После таких процедур админу неделю снятся флажки, опции программы, бухгалтерия поимённо...

Огромная просьба ОБЛЕГЧИТЬ страдания админа и придумать что-то, чтобы процесс уменьшения размера БД был лёгким и безопасным.
Ниже варианты, которые для нас лично будут достаточными:
1. Отдельный инструмент (выполнил - забыл за проблему).
2. Сохранить состояние системы (роли, пользователи, параметры настроек почты и т.д. и т.п.), сделать архивирование/восстановление как обычно (чёрт с ними с 10 часами), восстановить состояние системы (роли, пользователи, параметры настроек почты и т.д. и т.п.).
3. Любой другой вариант, которых облегчит страдания админа.

Почему очень важно поддерживать оптимальный размер базы, думаю, объяснять не нужно.

Спасибо.

Angry
Повідомлень: 28
З нами з: 30 липня 2013, 08:21

Re: Уменьшение размера базы данных M.E.Doc

Повідомлення Angry » 15 березня 2019, 12:19

Можно попробовать ужать копию базы средствами ФБ:

Переходите в папку MedocSRV\Firebird_M\bin\

Запускаете командную строку CMD

Устанавливаете системные переменные (по очереди строки копируете в консоль, потом ввод)
SET ISC_USER=SYSDBA
SET ISC_PASSWORD=masterkey

Запишем информацию в Bak-файл
gbak -b -v -ig -g -user SYSDBA -pas masterkey D:\DB\zvit.fdb D:\DB\zvit.fbk

Восстановим в новую базу
gbak -c -v -user SYSDBA -pas masterkey D:\DB\zvit.fbk D:\DB\newzvit.fbd

После каждой команды смотрите в консоли на отсутствие ошибок.

Потом newzvit.fbd переименовываете zvit.fdb, ставите на сервер в папку на место (MedocSRV\db\) и запускаете службы медка

Gora Kornev
Повідомлень: 104
З нами з: 26 вересня 2018, 07:46

Re: Уменьшение размера базы данных M.E.Doc

Повідомлення Gora Kornev » 16 березня 2019, 11:35

Angry писав:
15 березня 2019, 12:19
Можно попробовать ужать копию базы средствами ФБ:

Переходите в папку MedocSRV\Firebird_M\bin\

Запускаете командную строку CMD

Устанавливаете системные переменные (по очереди строки копируете в консоль, потом ввод)
SET ISC_USER=SYSDBA
SET ISC_PASSWORD=masterkey

Запишем информацию в Bak-файл
gbak -b -v -ig -g -user SYSDBA -pas masterkey D:\DB\zvit.fdb D:\DB\zvit.fbk

Восстановим в новую базу
gbak -c -v -user SYSDBA -pas masterkey D:\DB\zvit.fbk D:\DB\newzvit.fbd

После каждой команды смотрите в консоли на отсутствие ошибок.

Потом newzvit.fbd переименовываете zvit.fdb, ставите на сервер в папку на место (MedocSRV\db\) и запускаете службы медка
А як таке повторити для ORACLE :?: :?

Medoc Man
Повідомлень: 864
З нами з: 07 червня 2018, 14:28
Звідки: Kiev

Re: Уменьшение размера базы данных M.E.Doc

Повідомлення Medoc Man » 16 березня 2019, 21:29

Gora Kornev писав:
16 березня 2019, 11:35
А як таке повторити для ORACLE :?: :?
Shrink + Resize.
Человек-волшебник
Людина-чарівник
Wizard man

Gora Kornev
Повідомлень: 104
З нами з: 26 вересня 2018, 07:46

Re: Уменьшение размера базы данных M.E.Doc

Повідомлення Gora Kornev » 17 березня 2019, 20:39

Medoc Man писав:
16 березня 2019, 21:29
Gora Kornev писав:
16 березня 2019, 11:35
А як таке повторити для ORACLE :?: :?
Shrink + Resize.


Судячи з Посилання, щоб застосувати shrink & resize потрібно спочатку видалити данні ( видалення можливе у випадках коли дані не підписані та не відправлені ), а що робити зі звітами та податковими яким майже по 10 років і були перенесені з FireBird?
Чи існує механізм так званого "обрізання бази" шляхом видалення старих відправлених або перенесення в нову базу документів не старших наприклад за 2 роки, з часу, коли відбулася остання перевірка ДФС?
Востаннє редагувалось 18 березня 2019, 11:14 користувачем Gora Kornev, всього редагувалось 1 раз.

Gora Kornev
Повідомлень: 104
З нами з: 26 вересня 2018, 07:46

Re: Уменьшение размера базы данных M.E.Doc

Повідомлення Gora Kornev » 18 березня 2019, 11:08

Доречі ось ПОСИЛАННЯ на утиліту в "конкурентів" для перевірки та виправлення помилок в FireBird з якою впорається навіть моя бабця декларант. Вона вміститься на одній вкладці ZvitServerMonitor.exe або ConnectionSetup.exe та сталаб в нагоді для величезної килькості бухгалтерів та "юних одмінів".

olga_p
Повідомлень: 170
З нами з: 18 жовтня 2011, 17:03

Re: Уменьшение размера базы данных M.E.Doc

Повідомлення olga_p » 21 березня 2019, 10:47

Gora Kornev писав:
17 березня 2019, 20:39
Чи існує механізм так званого "обрізання бази" шляхом видалення старих відправлених або перенесення в нову базу документів не старших наприклад за 2 роки, з часу, коли відбулася остання перевірка ДФС?
Изучите модуль Адміністрування - Архівування документів. В результате его работы все старые архивные документы извлекаются из БД в отдельный файл.

Gora Kornev
Повідомлень: 104
З нами з: 26 вересня 2018, 07:46

Re: Уменьшение размера базы данных M.E.Doc

Повідомлення Gora Kornev » 21 березня 2019, 11:04

olga_p писав:
21 березня 2019, 10:47
Gora Kornev писав:
17 березня 2019, 20:39
Чи існує механізм так званого "обрізання бази" шляхом видалення старих відправлених або перенесення в нову базу документів не старших наприклад за 2 роки, з часу, коли відбулася остання перевірка ДФС?
Изучите модуль Адміністрування - Архівування документів. В результате его работы все старые архивные документы извлекаются из БД в отдельный файл.
FB так, а ORACLE?
fb.png
fb.png (17.92 Кіб) Переглянуто 5672 разів

olga_p
Повідомлень: 170
З нами з: 18 жовтня 2011, 17:03

Re: Уменьшение размера базы данных M.E.Doc

Повідомлення olga_p » 21 березня 2019, 11:11

Gora Kornev писав:
21 березня 2019, 11:04
olga_p писав:
21 березня 2019, 10:47
Gora Kornev писав:
17 березня 2019, 20:39
Чи існує механізм так званого "обрізання бази" шляхом видалення старих відправлених або перенесення в нову базу документів не старших наприклад за 2 роки, з часу, коли відбулася остання перевірка ДФС?
Изучите модуль Адміністрування - Архівування документів. В результате его работы все старые архивные документы извлекаются из БД в отдельный файл.
FB так, а ORACLE?
Извините, не знала, что с Oracle не работает :( Рекомендую обратиться напрямую к Разработчику.

priup
Повідомлень: 7713
З нами з: 22 червня 2011, 12:23

Re: Уменьшение размера базы данных M.E.Doc

Повідомлення priup » 21 березня 2019, 11:32

Разработчика проинформировал.
Будем ждать!

Шоловей Олександр
Повідомлень: 99
З нами з: 03 жовтня 2017, 10:25

Re: Уменьшение размера базы данных M.E.Doc

Повідомлення Шоловей Олександр » 21 березня 2019, 12:27

Согласно функционала программы подписанные и отправленные отчеты из базы данных не удаляются.
База данных хранит только ту информацию которую наработал пользователь за период работы, средств и механизмов для уменьшения БД - нет.

Gora Kornev
Повідомлень: 104
З нами з: 26 вересня 2018, 07:46

Re: Уменьшение размера базы данных M.E.Doc

Повідомлення Gora Kornev » 21 березня 2019, 13:32

San_2017 писав:
21 березня 2019, 12:27
Согласно функционала программы подписанные и отправленные отчеты из базы данных не удаляются.
База данных хранит только ту информацию которую наработал пользователь за период работы, средств и механизмов для уменьшения БД - нет.
Яким чином організувати роботе у випадку:
Заплановано створення нової бази з 01.01.2020, попередня залишається як "архів", але в стару база можуть приходити повідомлення до первинних документив про погодження/затвердження протягом принаймні пів року, як сортувати повідомлення/квитанції?

Колпаков Б.И.
Повідомлень: 8802
З нами з: 29 липня 2011, 14:59
Звідки: Украина, Донецкая область, Бахмут
Контактна інформація:

Re: Уменьшение размера базы данных M.E.Doc

Повідомлення Колпаков Б.И. » 21 березня 2019, 15:03

Gora Kornev писав:
21 березня 2019, 13:32
Яким чином організувати роботе у випадку:
Заплановано створення нової бази з 01.01.2020, попередня залишається як "архів", але в стару база можуть приходити повідомлення до первинних документив про погодження/затвердження протягом принаймні пів року, як сортувати повідомлення/квитанції?
В старую базу уведомления не придут, если в нем не принимать почту. Это настроить легко.

Так же рекомендую Вам дождаться следующего обновления программы, после чего принимать решение.

priup
Повідомлень: 7713
З нами з: 22 червня 2011, 12:23

Re: Уменьшение размера базы данных M.E.Doc

Повідомлення priup » 21 березня 2019, 15:36

San_2017 писав:
21 березня 2019, 12:27
Согласно функционала программы подписанные и отправленные отчеты из базы данных не удаляются.
База данных хранит только ту информацию которую наработал пользователь за период работы, средств и механизмов для уменьшения БД - нет.
Не верное утверждение!

Шоловей Олександр
Повідомлень: 99
З нами з: 03 жовтня 2017, 10:25

Re: Уменьшение размера базы данных M.E.Doc

Повідомлення Шоловей Олександр » 21 березня 2019, 17:03

priup писав:
21 березня 2019, 15:36
San_2017 писав:
21 березня 2019, 12:27
Согласно функционала программы подписанные и отправленные отчеты из базы данных не удаляются.
База данных хранит только ту информацию которую наработал пользователь за период работы, средств и механизмов для уменьшения БД - нет.
Не верное утверждение!
Согласно реализованного функционала программы под управлением на БД ORACLE нет возможности архивировать первичные документы. В функционале самого ORACLE достаточно функционала с помощью которого можно бекапировать данные.
В программе Медок нет функционала для уменьшения БД . При архивировании первичных документов БД не уменьшается . Это связано с особенностями работы Firebird (Firebird после создания архивной БД все равно резервирует пустые страницы). Что бы размер БД уменьшился (убрать пустые страницы )необходимо средствами Firebird выполнить backup - restore (пересобрать БД по новой) либо создать резервную копию и восстановится на чистую БД.

priup
Повідомлень: 7713
З нами з: 22 червня 2011, 12:23

Re: Уменьшение размера базы данных M.E.Doc

Повідомлення priup » 21 березня 2019, 17:31

Шоловей Александр писав:
21 березня 2019, 17:03

Согласно реализованного функционала программы под управлением на БД ORACLE нет возможности архивировать первичные документы. В функционале самого ORACLE достаточно функционала с помощью которого можно бекапировать данные.
В программе Медок нет функционала для уменьшения БД . При архивировании первичных документов БД не уменьшается . Это связано с особенностями работы Firebird (Firebird после создания архивной БД все равно резервирует пустые страницы). Что бы размер БД уменьшился (убрать пустые страницы )необходимо средствами Firebird выполнить backup - restore (пересобрать БД по новой) либо создать резервную копию и восстановится на чистую БД.
верное утверждение!
(я про Firebird ...., про ORACLE ничего не знаю)

Gora Kornev
Повідомлень: 104
З нами з: 26 вересня 2018, 07:46

Re: Уменьшение размера базы данных M.E.Doc

Повідомлення Gora Kornev » 21 березня 2019, 18:42

В функционале самого ORACLE достаточно функционала с помощью которого можно бекапировать данные.
В мене немає досвіду 10 років адміністрування ORACLE, поділіться власними надбанняма ( best practice ), накшталт:
Можно попробовать ужать копию базы средствами ФБ:

Переходите в папку MedocSRV\Firebird_M\bin\

Запускаете командную строку CMD

Устанавливаете системные переменные (по очереди строки копируете в консоль, потом ввод)
SET ISC_USER=SYSDBA
SET ISC_PASSWORD=masterkey

Запишем информацию в Bak-файл
gbak -b -v -ig -g -user SYSDBA -pas masterkey D:\DB\zvit.fdb D:\DB\zvit.fbk

Восстановим в новую базу
gbak -c -v -user SYSDBA -pas masterkey D:\DB\zvit.fbk D:\DB\newzvit.fbd

После каждой команды смотрите в консоли на отсутствие ошибок.

Потом newzvit.fbd переименовываете zvit.fdb, ставите на сервер в папку на место (MedocSRV\db\) и запускаете службы медка

Шоловей Олександр
Повідомлень: 99
З нами з: 03 жовтня 2017, 10:25

Re: Уменьшение размера базы данных M.E.Doc

Повідомлення Шоловей Олександр » 29 березня 2019, 09:27

К примеру если делать под пользователем MEDOC можно пересоздать таблицу.
1) create table card_copy as select * from card
2) создать все объекты для таблицы card_copy (триггеры, индексы, констренты)
3) потом переименовать card и card_copy
RENAME TABLE card TO card_old
RENAME TABLE card_copy TO card
4) удалить таблицу card_old

Gora Kornev
Повідомлень: 104
З нами з: 26 вересня 2018, 07:46

Re: Уменьшение размера базы данных M.E.Doc

Повідомлення Gora Kornev » 29 березня 2019, 10:12

Код: Виділити все

BEGIN
execute immediate 'DROP TABLE TBL_TMP_CARDJOURNALOPERBLOB CASCADE CONSTRAINTS';
    EXCEPTION
    WHEN OTHERS THEN
    IF SQLCODE != -00942 THEN RAISE; END IF;
END;
/

declare
p_sql varchar2(1000);
p_sql2 varchar2(1000);
lobs_status number;
max_org_row number;
max_row number;
p_rows number;
s_rows number;
begin
select count(*) into max_org_row from org;
IF max_org_row <100000 then
IF DBMS_DB_VERSION.VERSION>10 then
p_sql :='select count(*) from user_lobs where table_name = ''CARDJOURNALOPERBLOB'' AND SECUREFILE=''YES''';
p_sql2:='select count(*) from CARDJOURNALOPERBLOB';
execute immediate p_sql into lobs_status;
execute immediate p_sql2 into max_row;
    IF lobs_status >0 and max_row <=1000000 THEN
       
        execute immediate 'ALTER SESSION FORCE PARALLEL DML PARALLEL 8';
        execute immediate 'ALTER SESSION FORCE PARALLEL QUERY PARALLEL 8';
        execute immediate 'CREATE TABLE TBL_TMP_CARDJOURNALOPERBLOB(CODE NUMBER,DATAFILE BLOB,TEXTFILE BLOB) LOB (DATAFILE) STORE AS BASICFILE,LOB (TEXTFILE) STORE AS BASICFILE';
        execute immediate 'INSERT INTO TBL_TMP_CARDJOURNALOPERBLOB SELECT CR.* FROM CARDJOURNALOPERBLOB CR';
        execute immediate 'select count(*) into :p_rows from CARDJOURNALOPERBLOB' INTO p_rows;
        execute immediate 'select count(*) into :s_rows from TBL_TMP_CARDJOURNALOPERBLOB' INTO s_rows;
        IF p_rows=s_rows THEN
        execute immediate 'ALTER TABLE CARDJOURNALOPERBLOB RENAME TO CARDJOURNALOPERBLOB_OLD';
        execute immediate 'ALTER TABLE TBL_TMP_CARDJOURNALOPERBLOB RENAME TO CARDJOURNALOPERBLOB';
        execute immediate 'DROP TABLE CARDJOURNALOPERBLOB_OLD';
        execute immediate 'CREATE INDEX IDX_CARDJOURNALOPERBLOB_CODE ON CARDJOURNALOPERBLOB(CODE)';
        
       END IF;
    END IF;
END IF;

END IF;
   EXCEPTION
    WHEN OTHERS THEN
    NULL;
end;
/
Знайшов приклад у розробника.
Але такі скрипти для таблиць з вкладеними файлами, від розробника, були б дуже доречні :idea: 8-)

Levis
Повідомлень: 115
З нами з: 05 жовтня 2016, 17:34
Звідки: Україна

Re: Уменьшение размера базы данных M.E.Doc

Повідомлення Levis » 02 квітня 2019, 16:44

Потрібно доопрацювати видалення неприйнятих звітів не тільки в корзину, ай назавжди, бо після попереднього року, база збільшилася вдвоє тому що багато розблоковували ПН, але ще більше документів з вкладеннями було неприйнятими, тому всі вони місце бази, якийсь контроль потрібно додати щоб можна було з корзини видалити всі неприйняті документи!
Плюс ще моє попереднє побажання додати корзину до звіту ЄСВ!
Дякую!
Важливий кінцевий результат - а як його досягти справа кожного!

Відповісти

Повернутись до “Побажання”