Выбрать главу

Вы можете использовать результирующий текстовый файл для:

* проверки текущего состояния системных таблиц базы данных перед планированием изменений. Это особенно полезно, если база данных значительно изменялась после ее создания;

* создания базы данных со схемой, идентичной схеме извлекаемой базы данных;

* открытия в вашем текстовом редакторе для выполнения изменений определения базы данных или для создания нового исходного файла базы данных.

! ! !

ПРИМЕЧАНИЕ. Функция -extract не всегда бывает столь разумной, как должна бы быть по отношению к зависимостям. Иногда необходимо редактировать выходной файл для изменения порядка создания таблиц.

. ! .

Использование isql -extract

Следующий оператор извлекает схему SQL из базы данных employee.fdb в файл скрипта схемы с именем employee.sqclass="underline"

isql -extract -output /data/scripts/employee.sql /data/employee.fdb Эта команда эквивалентна:

isql -x -output /data/scripts/employee.sql /data/employee.fdb He извлекаются следующие объекты и элементы:

* системные таблицы и просмотры, системные триггеры;

* коды внешних функций и фильтров BLOB (они не являются частью базы данных);

* атрибуты владельца объектов.

Использование isql -a

Режим -(е)x (tract) извлекает метаданные только для объектов SQL. Если вы хотите извлечь скрипт схемы, который включает такие объявления, как DECLARE EXTERNAL FUNCTION и DECLARE FILTER, используйте режим -а.

Например, для извлечения операторов DDL из базы данных employee.fdb и помещения в файл employee.sql введите:

isql -a -output /data/scripts/employee.sql /data/employee.fdb

Пора дальше

Теперь мы рассмотрим gbak, утилиту командной строки для резервного копирования и чистки базы данных.

ГЛАВА 38. Резервное копирование и восстановление баз данных (gbak).

Корректное резервное копирование базы данных Firebird компактно сохраняет метаданные и данные базы данных в файле на жестком диске или на другом запоминающем устройстве. Настоятельно рекомендуется перезаписывать файлы резервных копий на сменные носители и хранить в физически защищенном месте в стороне от сервера.

Регулярное резервное копирование является основной для поддержания базы данных в хорошем состоянии, обеспечения целостности данных, безопасности и возможности избежать неприятностей. Утилита командной строки резервного копирования и восстановления данных в Firebird gbak создает и восстанавливает резервные копии ваших баз данных. Она создает независимый от платформы архив фиксированного снимка базы данных, который может быть записан в дисковый файл, и он при желании может быть сжат посредством утилит сторонних разработчиков.

Резервная копия Firebird является "горячей" копией - нормальная работа с базой данных может продолжаться в то время, как gbak анализирует метаданные и записывает файл копии. Операция выполняется в транзакции SNAPSHOT, захватывающей состояние базы данных, которое она имела на момент старта транзакции. Изменения данных, которые клиенты подтверждают в базе данных после начала резервного копирования, не записываются в файл копии.

! ! !

ВНИМАНИЕ! Операционные системы обычно включают средства для архивирования файлов баз данных. Не полагайтесь на копии ваших баз данных Firebird, выполненные такими утилитами или утилитами файловой системы, или утилитами сжатия данных, такими как gzip или WinZip, если работа базы данных полностью не завершена. Подобные копии баз данных не являются "гигиеничными" - неубранный мусор будет восстановлен вместе с другими данными файла. Поскольку эти утилиты обычно используют низкоуровневые блокировки диска, их использование приводит к разрушению базы данных, если при их выполнении сохраняются живые соединения с базой данных.

. ! .

Файлы gbak

Утилита gbak анализирует и разбивает на части файлы Firebird, сохраняя отдельно метаданные и данные в компактном формате. Копия, сделанная gbak, не является файлом базы данных и не будет распознаваться сервером. Чтобы стать используемой, она должна быть восстановлена в формат Firebird, который будет читаем сервером с учетом версии gbak, соответствующей версии выполняемого сервера Firebird.

При восстановлении файлов копии в формат базы данных gbak выполняет проверку метаданных и данных перед внутренним использованием языка запросов для воссоздания базы данных и наполнения ее данными.

Если обнаружено разрушение данных, gbak останавливает восстановление и выдает сообщение. Возможность этой утилиты анализировать проблемы делает ее неоценимо полезной при попытках восстановления разрушенной базы данных. Если вы находитесь в такой грустной ситуации, обратитесь к приложению 4.

! ! !

ВНИМАНИЕ! Выполнение резервного копирования является лишь одной стороной защиты схемы. Если вы ослеплены верой в сохранение целостности при резервном копировании, то, независимо от используемой вами системы резервного копирования, вы будете неизбежно наказаны. Тот факт, что копирование завершилось, не является гарантией, что копия будет восстановлена. Делайте тестовое восстановление периодически или регулярно вместе с резервным копированием.

. ! .

Другие таланты gbak

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

В процессе копирования gbak выполняет сборку мусора устаревших записей - необязательный переключатель, выполняется по умолчанию. Если он включен, его действие появляется, даже если вы не восстанавливаете копию, а начинаете работать с чистым файлом. Заметьте при этом, что выполнение gbak не упаковывает базу, как это делает копирование - выполняйте полную сборку мусора для выполнения этого.

Задачи восстановления могут включать:

* балансировку индексов для улучшения производительности вашей базы данных;

* освобождение пространства, занимаемого удаленными записями, и упаковку остальных данных. Это часто уменьшает размер базы данных и улучшает производительность с "упакованными" данными;

* по желанию изменение размера страницы при восстановлении;

* изменение владельца базы данных. Это по желанию- но смотрите! Это может привести к авариям, если вы не будете осторожны;

* обновление базы данных InterBase до Firebird или с меньшей версии базы данных Firebird до более высокой версии (например, обновление ODS);

* разделение базы данных на множество файлов или изменение размеров существующих нескольких файлов. Это выполняется по желанию;

* распределение многофайловой базы данных на несколько дисков. Это выполняется по желанию.

Копирование и восстановление также играют важную роль при наличии неприятных событий, которые могут разрушать базы данных. Подробности осуществления стратегии восстановления базы данных см. в приложении 4.

Обновление структуры на диске (ODS)

Вероятно, основным изменением в новых релизах сервера Firebird является изменение структуры на диске (Оп-Disk Structure, ODS). Если ODS изменилась, и вы хотите использовать преимущества новых возможностей Firebird, обновите ваши базы данных до новой ODS. Новая версия сервера может работать с базами данных, созданными в некоторых предыдущих версиях, однако сервер не может использовать свои новые возможности для старой базы данных с более низким значением ODS.

Вы можете использовать большинство баз данных Firebird 1.0.x непосредственно в Firebird 1.5, хотя ODS версии 1.5 (10.1) выше, чем в версии 1.0.x (10.0). Тем не менее рекомендуется выполнить процедуру обновления для ваших баз данных, обновив их с 10.0 до 10.1, для получения преимуществ повышения производительности за счет возможности индексирования системных таблиц в версии 1.5.