мета-данные страницы
  •  

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
dba_agbdbadmin [11.11.2020 12:59]
admin ↷ Операцией перемещения обновлены ссылки
dba_agbdbadmin [24.10.2022 10:28] (текущий)
gileva_ms
Строка 1: Строка 1:
-====== Агбис Сервисные работы ======+====== ​Проект "Агбис Сервисные работы" ​======
  
-Проект **"Агбис Сервисные ​работы"​**\\ +===== Установка программы ===== 
-E:​\_Projects\Agbis.dxe\AgbDBAdmin\AgbDBAdmin.dpr\\+
  
-Предназначен для выполнения следующих операций+Программу можно загрузить ​по ссылке\\  
-  ​* ​тестирования ​базы данных +<​code>​ 
-  * восстановления базы данных +http://​agbis.co/​download/​admin_tools/​agbdbadmin.zip ​или ​http://​download.agbis.ru/​download/​admin_tools/​agbdbadmin.zip 
-  * конвертации базы данных при изменении версии Firebird+</​code>​ 
 +для ​тестирования\\ 
 +<​code>​ 
 +\\\WebDAV\AgbisShare\Agbis\_TestBuilds\Boris\agbdbadmin\agbdbadmin.exe 
 +</​code>​
  
-Выступает как дополнение к действиям проекта "​Восстановление базы данных"​ (RecoveryDB).\\+Папку AgbDBAdmin с программой AgbDBAdmin.exe следует разместить в папку с программами АГБИС.\\ 
 +Обычно это **e:​\Agbis\agbDBAdmin\agbDBAdmin.exe**\\
  
-===== Схема работы =====+===== Запуск программы =====  
 + 
 +Параметры задачи могут быть заданы в файле **agbDBAdmin.ini** или непосредственно в командной строке.\\ 
 +Параметры в командной строке имеют более высокий приоритет.\\ 
 + 
 +Пример **agbDBAdmin.ini**\\ 
 +<​code>​ 
 +AliasBase="​Agbis"​ 
 +FirebirdNum= 
 +CLIENT_DEP_ID= 
 +timeout= 
 +</​code>​ 
 + 
 +Если параметры не заданы,​ то из agbis.xml берется последняя активная запись базы данных и выполняется оптимизация.\\ 
 + 
 +Программа запускается от имени администратора,​ для того чтобы была возможность установить необходимые службы и клиенты Firebird.\\ 
 + 
 +==== Параметры задачи ==== 
 + 
 +Файл agbis.xml ищется в родительской папке. Если agbis.xml не найден,​ то нужно будет задавать параметры БД "​Исходная"​ вручную.\\ 
 + 
 +  * **AliasBase** - алиас "​Исходной"​ БД для поиска в списке БД agbis.xml. По умолчанию берется последняя активная БД. 
 +  * **FirebirdNum** - версия Firebird для новой базы данных при конвертировании (используется только первая цифра). По умолчанию совпадает с версией "​Исходной"​ БД 
 +  * **CLIENT_DEP_ID** - номер подразделения в БД PC (client_dep_params.id). Используется для отправки отчета в PC при запуске из ReplIn. По умолчанию отчет не отправляется. 
 +  * **timeout** - задержка в секундах перед выполнением основной части программы. Используется для остановки ReplIn перед обработкой БД. По умолчанию 0. 
 + 
 +Пример команды\\ 
 +<​code>​ 
 +AgbDBAdmin.exe AliasBase="​Agbis"​ FirebirdNum=3 
 +</​code>​ 
 + 
 +Хост, порт и файл **"​Исходной"​** базы данных берутся из agbis.xml  
 +Если база данных работает под Firebird 2, то будет выполнена конвертация базы данных для работы под Firebird 3.\\ 
 +Если база данных работает под Firebird 3, то будет выполнена оптимизация базы данных.\\ 
 +Настройки выставляются как значения по умолчанию и перед выполнением операций их можно изменить.\\ 
 + 
 +<alert info> 
 +Подключение к **"​Исходной"​** базе данных должно быть локальным,​ так как для выполнения операций требуется прямой доступ к файлам для  
 +переименования и копирования,​ а также используется режим Embedded Firebird.\\ 
 +</​alert>​ 
 + 
 +===== Режимы работы =====  
 + 
 +Для удобства пользователя добавлена возможность выбора режима работы в соответствии с уровнем его подготовки:​\\ 
 +  * Экспресс 
 +  * Нормальный 
 +  * Эксперт 
 + 
 +===== Режимы работы "​Нормальный"​ =====  
 + 
 +Предназначен для использования сотрудниками технической поддержки.\\  
 +Предназначен для пошагового выполнения процедуры восстановления.\\ 
 +В частности возможно конвертирование базы данных при изменении версии Firebird.\\ 
 +Доступно расширенное тестирования базы данных.\\ 
 + 
 +При этом некоторые операции возможно выполнить в ручном режиме сторонними средствами.\\ 
 + 
 +{{:​dba_agbdbadmin_tformmain_detail.png}}\\ 
 + 
 +==== Этапы выполнения ==== 
 + 
 +Процесс восстановления база данных проходит несколько этапов:​ \\ 
 +  - Подготовка базы данных к восстановлению.\\ 
 +  - Восстановление структуры записей базы данных.\\ 
 +  - Оптимизация базы данных.\\ 
 +  - Тестирование БД **Новая**.\\ 
 +  - Возвращение в режим обслуживания пользователей.\\ 
 + 
 +В процессе восстановления будут использоваться разные файлы базы данных.  
 +Для того чтобы отслеживать эти изменения создаются объекты с параметрами баз данных,​ которые будем называть  
 + 
 +  * БД **Исходная** 
 +  * БД **Переименованная** 
 +  * БД **Копия** 
 +  * БД **Новая** 
 +Кроме этого будет использоваться еще один объект,​ который ссылается на базу данных с данными для сверки \\ 
 +  * БД **Эталонная** 
 + 
 +Ниже рассматривается движение базы данных по этапам восстановления 
 + 
 +=== Подготовка базы данных к восстановлению === 
 + 
 +Требования:​ 
 +  * Требуется гарантировать возвращение базы данных в рабочее состояние.\\ 
 +  * Так как в результате процедур восстановления база данных может быть разрушена,​ то перед восстановлением должна обязательно быть сделана резервная копия.\\ 
 +  * В момент выполнения процедур восстановления база данных должна работать в монопольном режиме,​ чтобы исключить конфликты обработки записей.\\ 
 + 
 +Объект БД **Исходная** содержит параметры:​ имя файла, порт и др. - которые соответствуют рабочему режму базы данных,​ когда база данных выполняет свои основные функции,​ к ней подключаются пользовательские приложения.\\ 
 +После завершения процедуры восстановления база данных должна соответствовать этим параметрам.\\ 
 + 
 +Для гарантии восстановления рабочего режима базы данных и обеспечения монопольного доступа выполняется  
 +отключение всех пользователей,​ переименование файла базы данных и создание копии файла базы данных.\\ 
 + 
 +БД **Переименованная** содержит параметры переименованной базы данных. По умолчанию в имени файла базы данных добавляется подчерк.\\ 
 +Пусть, например,​ БД **Исходная** имеет файл D:​\DB\TestConv\ARM.fdb,​ тогда БД **Переименованная** будет иметь файл D:​\DB\TestConv\ARM_.fdb\\ 
 +БД **Копия** содержит параметры переименованной базы данных. По умолчанию в имени файла базы данных добавляется суффикс "​_clone"​.\\ 
 +Пусть, например,​ БД **Исходная** имеет файл D:​\DB\TestConv\ARM.fdb,​ тогда БД **Копия** будет иметь файл D:​\DB\TestConv\ARM_clone.fdb\\ 
 + 
 +C БД **Переименованная** никакие действия не выполняются. Переименование делается только с целью блокировать изменения базы данных на время восстановления и  
 +таким образом избежать потери данных при замене исходной базы данных исправленную.\\  
 +Все обработки будут выполняться в БД **Копия** и БД **Новая**.\\ 
 + 
 +Операции выполняются на [[:​dba_TFormDBCopy_Prepare|форме "​Переименование и копирование базы данных"​]]\\ 
 + 
 +=== Восстановление структуры записей базы данных === 
 + 
 +В процессе работы при аварийном отключении питания,​ при появлении физических дефектов на жестком диске или по другим причинам могут теряться записи.  
 +База данных продолжает работать однако происходит потеря данных и ее целостность нарушается. Это рано или поздно приводить к потере доступа и к остальным данным.  
 +Поэтому нужно своевременно устранять эти ошибки. Часть ошибок может быть устранена в автоматическом режиме. 
 +Однако потерянные записи таким образом восстановить невозможно. Поэтому восстановление выполняется в два этапа:​ 
 +  - добавляются фиктивные записи,​ для того чтобы можно было завершить процедуры восстановления и оптимизации. При этом составляется список документов,​ которые требуют восстановления.\\ 
 +  - исправляются ​ испорченные документы вручную на основании бумажных документов или из более ранних резервных копий, которые подключаются как БД **Эталонная**. 
 +Второй этап может выполняться позже после завершения работы программы восстановления.\\ 
 + 
 +Все операции выполняются в БД **Копия**.\\ 
 + 
 +Операции выполняются на [[:​dba_TFormDBFirstAid|форме "​Первичное восстановление структуры базы данных"​]]\\ 
 + 
 +=== Оптимизация базы данных === 
 + 
 +В процессе работы данные размещаются на различных страницах в результате чего для чтения одной записи может потребоваться считывание нескольких страниц  
 +размещенных достаточно далеко друг от друга.\\ 
 +В момент создания бэкапа из базы данных удаляется уже неиспользуемая информация:​ удаленные записи,​ удаленные значения BLOB-полей. 
 +После восстановления базы данных размер базы может существенно сократиться,​ а также записи располагаются на страницах компактно. 
 +В результате быстродействие работы базы данных может возрасти в несколько раз. 
 +Для выполнения операции Backup/​Restory требуется,​ чтобы успешно завершился предыдущий этап.\\ 
 + 
 +**Backup** делается из БД **Копия** программой GBAK, **Restory** выполняется в БД **Новая** другой программой GBAK.\\ 
 +Операция Backup/​Restory формируется конвейер программ GBAK. Это позволяет сократить требуемый объем свободного места на диске, так как не создается промежуточный фал бэкапа,​ а сразу делается резервная копия. 
 +И дополнительно сокращается время выполнения операции.\\ 
 + 
 +Есть возможность для операции **Backup** использовать одну версию Firebird, а для **Restory** другую версию Firebird.\\ 
 +В этом случае получится конвертирование базы данных под новую версию Firebird.\\  
 +В этом случае есть особенность - нужно переключить работу приложений на новую версию Firebird.\\ 
 + 
 +Операции выполняются на [[:​dba_TFormDBBackup|форме "​Оптимизация/​Конвертирование"​]]\\ 
 + 
 +=== Тестирование БД **Новая** === 
 + 
 +Во время операции Backup/​Restory возможна потеря данных. Поэтому требуется проверка результата выполнения этой операции.\\ 
 +  * Сравнение структуры 
 +  * Активация индексов базы данных 
 + 
 +Для проверки выполняется сравнение БД **Новая** и БД **Эталонная**\\ 
 +В качестве БД **Эталонная** по умолчанию используется БД **Переименованная**,​ то есть фактически БД **Исходная**.\\ 
 +Однако можно заменить БД **Переименованная** на любую другую.  
 + 
 +== Сравнение структуры == 
 + 
 +Сейчас просто сравнивается количество объектов разного типа. 
 + 
 +  * Сравнение количества доменов 
 +  * Сравнение количества таблиц 
 +  * Сравнение количества представлений 
 +  * Сравнение количества процедур 
 +  * Сравнение количества триггеров 
 +  * Сравнение количества генераторов 
 +  * Сравнение количества исключений 
 +  * Сравнение количества UDF 
 +  * Сравнение количества ролей 
 +  * Сравнение количества индексов 
 + 
 +Операции выполняются на [[:​dba_TFormDBVerify|форме "​Проверка успешности оптимизации/​конвертации"​]]\\ 
 +  * [[:​dba_TFormDBVerify|Форма "​Проверка успешности оптимизации/​конвертации"​]]\\ 
 + 
 +== Активация индексов базы данных ​==  
 + 
 +В момент оптимизации базы данных часть индексов может не включится. Это может произойти,​ например,​ из-за потерянных записей и, как следствие,​ нарушении целостности базы данных.\\ 
 +Запускается процедура включения всех индексов БД **Новая**.\\ 
 + 
 +Операции выполняются на [[:​dba_TFormDBIndexes|форме "​Активация индексов базы данных"​]]\\ 
 +Выполняются работы,​ которые делались через xStarter и программу «Восстановление базы данных» (RecoveryDB). 
 + 
 +=== Возвращение в режим обслуживания пользователей === 
 + 
 +Для того чтобы база данных могла отвечать на запросы пользователей нужно восстановить базу данных указанную в объекте БД **Исходная**.\\ 
 +Восстановление выполняется в зависимости от результатов выполнения процедур восстановления.\\ 
 +  * Если при восстановлении возникла ошибка,​ то в качестве БД **Исходная** берется БД **Переименованная**,​ то есть просто просто возвращаем к работе старую базу данных.\\ 
 +  * Если при восстановлении выполнен этап **Восстановление структуры записей базы данных**,​ а этап **Оптимизация базы данных** и дальше не выполнялись,​  
 +    то в качестве БД **Исходная** берется БД **Копия**,​ то есть файл БД **Копия** переименовываем в файл БД **Исходная**.\\ 
 +  * Если при восстановлении выполнены все этапы,  
 +    то в качестве БД **Исходная** берется БД **Новая**,​ то есть файл БД **Новая** переименовываем в файл БД **Исходная**.\\ 
 + 
 +Операции выполняются на [[:​dba_TFormDBCopy|форме "​Возвращение в режим обслуживания пользователей"​]]\\ 
 + 
 + 
 +===== Режимы работы "​Экспресс"​ =====  
 + 
 +Предназначен для выполнения работ по восстановлению базы данных в режиме максимальной автоматизации.\\ 
 +{{:​dba_agbdbadmin_tformmain_express.png}}\\ 
 +В этом случае для работы доступна только одна форма [[:​dba_TFormExpressRecovery| "​Экспресс восстановление"​]]\\ 
 +Работа по восстановлению не требует специальных знаний по архитектуре базы данных АГБИС.\\ 
 +Достаточно знать в какой папке размещается файл базы данных.\\ 
 +Работа может выполняться,​ например,​ системными админиcтраторами.\\ 
 +<alert info> 
 +Если повреждения оказываются более серьезными и в автоматическом режиме их исправить не удается,​  
 +то система будет возвращена в состояние до момента запуска восстановления.\\ 
 +</​alert>​ 
 +В этом случае рекомендуется обратится в отдел технической поддержки АГБИС для проведения восстановления.\\ 
 +Если будут предоставлены журналы выполнения восстановления,​ то процесс выяснения проблем в базе данных и самого восстановления займет меньше времени.\\ 
 + 
 +===== Режимы работы "​Эксперт"​ =====  
 + 
 +Предназначен для использования сотрудниками технической поддержки.\\  
 + 
 +Предназначен для пошагового выполнения процедуры восстановления и настройки базы данных для работы на новом компьютере.\\ 
 +К возможностям доступным в режиме работы "​Нормальный"​ добавляются возможности по переключению номера подразделения,​ установка и настройка Firbird и др.\\ 
 +{{:​dba_agbdbadmin_tformmain_Expert.png}}\\ 
 + 
 +Для выполнения операций используются формы:​\\  
 +  * [[:​dba_TFormFirebird|Форма "​Подразделения"​]]\\ 
 +Показывает список подразделений из таблицы DEPS\\ 
 +  * [[:​dba_TFormFirebird|Форма "​Идентификация базы данных"​]]\\ 
 +Показывает параметры,​ которые используются при идентификации базы данных.\\ 
 +Позволяет изменить DEP_ID в базе данных. (Требует доработки)\\ 
 +  * [[:​dba_TFormFirebird|Форма "​Настройка Firebird"​]]\\ 
 +Позволяет настроить службы Firebird.\\ 
 +Переустановить клиентов Firebird. (Требует доработки)\\
  
-  - На главной форме проекта размещаются кнопки для выбора вида работ 
-    * [[:​dbr_Test|Тестирование базы данных]]\\ ​ 
-    * [[:​dbr_Recovery|Восстановление базы данных]]\\ ​ 
-    * [[dba_coversion|Конвертация базы данных]]\\ ​ 
  
 ===== Дополнительная информация ===== ===== Дополнительная информация =====
  
 +  * [[:​dba_TFormExpressRecovery|Форма "​Экспресс восстановление"​]]\\
 +
 +  * [[:​dba_TFormDBCopy_Prepare|Форма "​Переименование и копирование базы данных"​]]\\
 +  * [[:​dba_TFormDBFirstAid|Форма "​Первичное восстановление структуры базы данных"​]]\\
 +  * [[:​dba_TFormDBBackup|Форма "​Оптимизация/​Конвертирование"​]]\\
 +  * [[:​dba_TFormDBVerify|Форма "​Проверка успешности оптимизации/​конвертации"​]]\\
 +  * [[:​dba_TFormDBIndexes|Форма "​Активация индексов базы данных"​]]\\
 +  * [[:​dba_TFormDBCopy_Revert|Форма "​Возвращение в режим обслуживания пользователей"​]]\\
 +
 +  * [[:​dba_TFormFirebird|Форма "​Подразделения"​]]\\
 +  * [[:​dba_TFormFirebird|Форма "​Идентификация базы данных"​]]\\
 +  * [[:​dba_TFormFirebird|Форма "​Настройка Firebird"​]]\\
  
-[[:|Назад]]\\+  * [[:|Проекты ​]]\\