Сторінка 1 з 2

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

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

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

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

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

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

Спасибо.

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

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

Переходите в папку 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\) и запускаете службы медка

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

Додано: 16 березня 2019, 11:35
Gora Kornev
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 :?: :?

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

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

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

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


Судячи з Посилання, щоб застосувати shrink & resize потрібно спочатку видалити данні ( видалення можливе у випадках коли дані не підписані та не відправлені ), а що робити зі звітами та податковими яким майже по 10 років і були перенесені з FireBird?
Чи існує механізм так званого "обрізання бази" шляхом видалення старих відправлених або перенесення в нову базу документів не старших наприклад за 2 роки, з часу, коли відбулася остання перевірка ДФС?

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

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

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

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

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

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

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

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

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

Додано: 21 березня 2019, 11:32
priup
Разработчика проинформировал.
Будем ждать!

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

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

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

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

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

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

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

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

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

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 (пересобрать БД по новой) либо создать резервную копию и восстановится на чистую БД.

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

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

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

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

Додано: 21 березня 2019, 18:42
Gora Kornev
В функционале самого 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\) и запускаете службы медка

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

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

Додано: 29 березня 2019, 10:12
Gora Kornev

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

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-)

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

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