Читаем Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ полностью

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

Условная теневая копия

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

В случае теневой копии режима MANUAL это то, что нам нужно. Мы выбираем данный режим, потому что хотим, чтобы соединения с базой данных оставались заблокированными, пока мы вручную не создадим новую теневую копию.

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

Как было описано ранее в этом разделе, мы можем улучшить эту ситуацию, включив ключевое слово CONDITIONAL В определение теневой копии режима AUTO. Результатом будет то, что когда старая теневая копия станет недоступной, сервер Firebird выполнит все необходимые вспомогательные действия и автоматически создаст новую теневую копию, например:

CREATE SHADOW 33 CONDITIONAL '/shadows/employee.shd';

<p>Увеличение размера теневой копии</p>

В некоторых случаях бывает необходимым увеличить размер и количество файлов в теневой копии. Просто удалите теневую копию (как описано в следующем разделе) и создайте новую.

<p>Удаление теневой копии</p>

Теневую копию нужно удалять в следующих ситуациях:

* это "ручная" теневая копия, которая по разным причинам была отключена от системы. Удаление ненужной теневой копии является необходимым для создания новой теневой копии и возобновления обслуживания базы данных;

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

* вам нужно изменить размеры файлов теневой копии, добавить больше файлов или установить новую теневую копию с другими атрибутами;

* теневое копирование больше не требуется. Удаление теневой копии означает отключение теневого копирования.

Удаление теневой копии удаляет не только физические файлы, но также и ссылки на нее из метаданных базы данных. Чтобы иметь право на выполнение этой команды, вы должны быть соединены с базой данных как пользователь, который создал теневую копию, пользователь SYSDBA или (в POSIX) пользователь с привилегиями операционной системы root.

Синтаксис

Используйте следующий синтаксис DROP SHADOW:

DROP SHADOW номер-набора-теневой-копии;

Номер набора теневой копии является обязательным аргументом команды DROP SHADOW. Для отыскания этого номера используйте в isql команду SHOW DATABASE, будучи подключенным к этой базе данных.

В следующем примере удаляются все файлы, связанные с набором оперативной копии за номером 25:

DROP SHADOW 25;

Использование gfix-переключателя -kill

Служебная утилита командной строки gfix (см. главу 39) имеет переключатель -kill, который внутренне вызывает команду DROP SHADOW, чтобы удалить теневую копию и сделать ее недоступной. После выполнения этой команды можно будет продолжить создание новых теневых копий.

Например, для удаления недоступной теневой копии нашей базы данных employee в POSIX наберите:

[root@coolduck bin]# ./gfix -kill ../examples/employee.gdb -user SYSDBA

-password masterkey

В Win32 наберите:

C:\Program Files\Firebird\bin> gfix -kill ..\examples\employee.gdb

-user SYSDBA -password masterkey

<p>"Гигиена" базы данных</p>

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

<p>Фоновая сборка мусора</p>

Для ограничения такого разрастания Firebird постоянно выполняет сборку мусора (garbage collection) на фоне активности базы данных.

Фоновая сборка мусора ничего не делает с устаревшими версиями записей, которые относятся к незавершенным транзакциям - они не будут обработаны в процессе обычных служебных действий. Для полной санации базы данных Firebird может выполнять чистку базы данных (database sweeping).

Чистка базы данных
Перейти на страницу:

Похожие книги

Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript

Данная книга посвящена программированию игр с помощью ActionScript. Здесь вы найдете подробные указания, необходимые для создания самых разных игр – аркад, головоломок, загадок и даже игровых автоматов. В тексте приведены исходные коды программ и детальные, доступно изложенные инструкции. Базовые принципы программирования ActionScript рассматриваются на примере игр, однако вы без труда сможете применить полученные знания и для разработки неигровых проектов, таких как Web-дизайн и реклама. Рекомендации Гэри Розенцвейга помогут вам не только придумывать занимательные игры и размещать их на Web-сайте, но и оптимизировать скорость их работы, а также защищать свои творения от несанкционированного копирования. Представленный в книге код несложно изменить для использования в других программах.Книга предназначена для широкого круга читателей – создателей анимационных роликов, художников-оформителей, программистов и разработчиков Web-сайтов. Издание может также выступать в качестве практического пособия по изучению ActionScript.

Гэри Розенцвейг

Программирование, программы, базы данных / Программирование / Книги по IT
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ

Эта книга представляет собой перевод третьего издания американского бестселлера Effective C++ и является руководством по грамотному использованию языка C++. Она поможет сделать ваши программы более понятными, простыми в сопровождении и эффективными. Помимо материала, описывающего общую стратегию проектирования, книга включает в себя главы по программированию с применением шаблонов и по управлению ресурсами, а также множество советов, которые позволят усовершенствовать ваши программы и сделать работу более интересной и творческой. Книга также включает новый материал по принципам обработки исключений, паттернам проектирования и библиотечным средствам.Издание ориентировано на программистов, знакомых с основами C++ и имеющих навыки его практического применения.

Скотт Майерс , Скотт Мейерс

Программирование, программы, базы данных / Программирование / Книги по IT