Восстановление баз данных Interbase

Практика, к сожалению, показывает, что каким бы устойчивым не был Firebird/InterBase, при выключении питания или "зависании" компьютера база иногда таки портится. Возникают ошибки о не правильных контрольных суммах или "достигнут конец файла". Эта статья написана для того, чтобы помочь Вам решить данную проблему.

[Рудюк С.А (www.rudjuk.kiev.ua)]

Восстановление баз данных Interbase

Введение

Сегодня Interbase (и его клоны FireBird, Yafill) - это один из самых популярных серверов. И это не удивительно, ведь он кроссплатформенный, не больших размеров, легко устанавливается, не требует особого обучения администраторов, быстро работает, устойчивый и при этом всём ещё и бесплатный...

Однако практика показывает, что каким бы устойчивым InterBase ни был,  но  при выключении питания или "зависании" компьютера база иногда таки портится. Возникают ошибки о не правильных контрольных суммах или "достигнут конец файла".

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

Как восстановить данные

Вы спросите: "Как же восстановить данные испорченной базы, ведь Interbase Console и EMS QuickDesk ничего не хотят делать в этом случае!".

Единственный способ остаётся скопировать данные из одной базы данных в другую.

Используемые интсрументы

Для копирования баз данных можно использовать различные инструменты. Я использую для этих целей специально разработанную программу копирования баз данных, под названием "Репликатор". Её можно скачать по адресу replicator.htm 

Что же эта программа умеет?

Она умеет выполнять скрипты, копировать таблицы в нужной последовательности, отключать триггера, ключи, ограничения. А так же обходит ошибки вынося их текст в Лог и не обрывая соединение. А это нам и нужно для восстановления и перегенерации баз данных.

Описание программы "Репликатор"

Для начала, скачаем и установим программу "Репликатор", благо она распространяется свободно  replicator.htm.

Войдём в программу под именем и паролем администратора (SYSDBA).

Входим в меню Репликация -> Генерация базы данных.

В верхней таблице перечисляются проекты и пути к базам данных. В нижней таблице перечисляется последовательность копируемых таблиц. Копируются те таблицы, у которых установлена галочка в поле И (Используется).

Поле ID должно быть уникальным во всех проектах.

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

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

Если у Вас имя и пароль администратора не совпадает с SYSDBA, masterkey, то Вам понадобится указать имена и пароли в  закладке Пароли.

 

Копирование на практике

Произведём копирование данных на практике. Для этого создадим новый проект под названием Test. Вносим название баз данных.

Примечание: Новая база данных (куда мы копируем) должна быть совершенно пустой. У меня её размер составляет 230 Кб. Т.е. в ней нет ничего, кроме системных таблиц InterBase и т.п..

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

Примечание: Последовательность важна, если мы при копировании информации не блокируем триггера и ограничения по вторичным ключам.

Там где поле Название заполняем название таблицы. Можно указать Русское название - поле чисто для информации на русском языке.

Если Вы применяете генераторы для ключевого поля, то необходимо заполнить поля Первичный, Название генератора, Название процедуры генератора. Тогда программа автоматически будет создавать генератор, устанавливать его значение по максимальному значению указанного Вами поля, а так же создавать хранимую процедуру для выборки значения генератора.

Так как мы копируем информацию в полностью пустую базу данных, то необходимо указать скрипты генерации базы данных. Для этого щёлкаем на закладке Файлы скриптов и указываем заполняем таблицу.

Если указана галочка в поле П, то это означает, что скрипт будет выполнен перед копированием информации в базе данных. Обычно, это скрипт генерируемый системами проектирования баз данных (например ErWin).

Если указана галочка И, то это означает, что скрипт будет выполняться.

Примечание: В качестве раздалителя в скриптах используется ^.

Вот и завершена предварительная работа перед копированием базы данных. Теперь можно перейти на закладку Проекты, отметить галочки отключений (если нужно и нажать на Перекачать информацию. (В моём случае даже не нужно отключение триггеров и ограничений).

Появится окно с информацией о процессе копирования информации и выполнения скриптов.

Это процесс длительный. Программа не забирает всё процессорное время и позволяет в это время Вам работать над другими задачам. При копировании таблиц показывается номер копируемой строки.

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

Вот мы и сгенерировали полностью работоспособную базу данных. И обошлось практически без потерь информации.

Автор: Рудюк С.А.
Internet: www.rudjuk.kiev.ua

[ опубликовано 15/10/2004 ]

Рудюк С.А (www.rudjuk.kiev.ua) - Восстановление баз данных Interbase   Версия для печати