Форма "Первичное восстановление структуры базы данных"

Проект «Агбис Сервисные работы«

Предназначена для исправление ошибок в структуре базы данных.

«Клона» с помощью программ Surgeon FirebirdFirstAid и GFIX.

Восстановление структуры записей базы данных

В процессе работы при аварийном отключении питания, при появлении физических дефектов на жестком диске или по другим причинам могут теряться записи. База данных продолжает работать однако происходит потеря данных и ее целостность нарушается. Это рано или поздно приводить к потере доступа и к остальным данным. Поэтому нужно своевременно устранять эти ошибки. Часть ошибок может быть устранена в автоматическом режиме с помощью программ Surgeon FirebirdFirstAid и GFIX.
Потерянные записи таким образом восстановить невозможно. Для того чтобы можно было выполнить процедуру Backup/Restory добавляются фиктивные записи.
В дальнейшем эти фиктивные записи должны быть заменены на реальные на основании бумажных документов или из более ранних резервных копий, которые подключаются как БД Эталонная.
Все операции выполняются в БД Копия.

Surgeon FirebirdFirstAid

Surgeon FirebirdFirstAid предназначен для проверки структуры базы данных и исправление некоторых ошибок.
Файл для запуска программы указывается в поле «Файл программы». По умолчанию ..\FirstAID\FirebirdFirstAID.exe.
Запуск выполняется кнопкой Запуск FBFirstAID

Нажимается Later

Для проверки используется базы данных «Копия». Для того чтобы не выбирать файл визуально, он копируется в буфер обмена при запуске программы FirebirdFirstAID.exe.
При выборе базы данных можно вставит ее в диалог открытия базы данных.

Результат выполнения операций с помощью Surgeon FirebirdFirstAid не передаются в программу AgbDBAdmin.
Поэтому решение о продолжении восстановления принимается пользователем.
После выполнения всех операций с помощью Surgeon FirebirdFirstAid программа закрывается.
Начинаем проверки с помощью GFIX.

GFIX

GFIX: Проверка

Команда вызывается кнопкой GFIX: Проверка.
Для проверки используется командный файл d:\Agbis\agbDBAdmin\Temp\tmp_gfix_v.cmd

"C:\Program Files\Firebird\Firebird_2_5\bin\gfix.exe" -v -full -user sysdba -pa masterkey "d:\DB\FB2\ForRecovery\Orenburg\ARM_clone.FDB" 2>"d:\DB\FB2\ForRecovery\Orenburg\gfix_v.log"

Опции
-full - Используется вместе с -v[alidate] для проверки структур записей и страниц; освобождает неназначенные фрагменты записей.
-v[alidate] - validate database structure
Определяет и освобождает страницы, которые были выделены, не назначены никакой структуре данных. Также сообщает о разрушенных структурах.
Результаты проверки фиксируются в лог-файле gfix_v.log, который размещается в папке с базой данных.

В случае отсутствия ошибок файл лога остается пустым.
Если в файле лога есть записи, то считается, что проверка завешена с ошибками.

GFIX: Исправление ошибок

Команда вызывается кнопкой GFIX: Исправление ошибок.

Для исправления ошибок используется командный файл d:\Agbis\agbDBAdmin\Temp\tmp_gfix_m.cmd

"C:\Program Files\Firebird\Firebird_2_5\bin\gfix.exe" -mend -user sysdba -pa masterkey "d:\DB\FB2\ForRecovery\Orenburg\ARM_clone.FDB" 2>"d:\DB\FB2\ForRecovery\Orenburg\gfix_m.log"

Опции -m[end] - prepare corrupt database for backup
Отмечает разрушенные записи как неиспользуемые, следовательно, они будут пропущены при последующей проверке или копировании.

Результаты проверки фиксируются в лог-файле gfix_m.log, который размещается в папке с базой данных.

В случае отсутствия ошибок файл лога остается пустым.
Если в файле лога есть записи, то считается, что проверка завешена с ошибками.


Результат работы команды виден в поле статуса.

Проверка целостности БД

Команда вызывается кнопкой Проверка целостности БД.
При сбоях в работе базы данных: из-за выключения питания, аварийном завершении работы приложений, физическом повреждении диска и других, возникают потерянные записи и потерянные значения полей.
Из-за нарушения связей по вторичным ключам или потери значений в полях с признаком NOT NULL операция Backup / Restory завершается с ошибкой.
Поэтому перед выполнением операции Backup / Restory требуется устранить такие ошибки.
Для качественного исправления нужно найти действительные значения, например, сверяясь с бумажными копиями документов или резервными копиями.
Для восстановления целостности выполняются следующие действия

  • записи с PRIMARY KEY равным NULL удаляются
  • для полей с признаком NOT NULL значение NULL заменяется на -1
  • для вторичных ключей создаются фиктивные записи документов с PRIMARY KEY равным -1, а значения полей связи заменяются на -1
  • в домене D_ID_INT64 устанавливается признак NOT NULL, если необходимо

Все изменения записываются в таблицу dba_log.
Это позволяет восстановить работу с базой данных.
Для окончательного восстановления нужно будет восстановить испорченные данные в поврежденных документах.

  1. Создается список корректированных во время восстановления записей.
  2. Открываются соответствующие документы и сверяются с бумажными или другими достоверными копиями.


Дополнительная информация