8. Оперативные копии (SHADOW)
В РЕД База Данных существуют средства ведения оперативного копирования базы данных
(shadowing). Оперативная копия (shadow — дословно тень), будучи
созданной, содержит точную копию оригинальной базы данных. Когда
создается оперативная копия, все изменения в базе данных тут же
отражаются в оперативной копии. Если по различным причинам база данных
станет недоступной (например, при сбое диска или при случайном удалении
файлов базы данных), то автоматически происходит переключение работы
клиентских программ на оперативную копию, которая станет
рассматриваться клиентскими программами как исходная база данных.
Примечание
Это средство относится только к текущим операциям с базой данных клиентских процессов, но не к новым подключениям клиентов. В случае поломки исходной базы данных дальнейшие действия администратора базы данных должны включать восстановление работоспособности начального дискового носителя базы данных и восстановление самой базы данных, возможно, с использованием данных оперативной копии. Только после этого возможно подключение новых клиентов к базе данных.
Исходя из назначения оперативных копий, их следует размещать на устройствах, отличных от устройств, где находятся файлы самой используемой базы данных.
Оперативная копия может быть создана в автоматическом режиме (ключевое
слово AUTO в операторе создания оперативной копии — см. ниже) или в так
называемом ручном режиме (ключевое слово MANUAL).
В случае автоматического режима (AUTO) в ситуации, когда сама
оперативная копия по каким-либо причинам становится недоступной
(например, сбой диска, случайное удаление файлов оперативной копии),
работа клиентских программ продолжается обычным образом. При этом
процесс ведения оперативного копирования для этой оперативной копии не
осуществляется, он просто приостанавливается. Однако если существуют
другие оперативные копии, заданные в базе данных, то процесс
копирования для них продолжается.
Если же задан режим ручного копирования (MANUAL), то в случае
недоступности файлов такой оперативной копии все клиентские процессы
работы с базой данных прекращаются, пока администратор базы данных не
отменит процесс копирования данных в эту «поломанную» оперативную
копию. Для этого, как минимум, он должен удалить оперативную копию,
используя оператор DROP SHADOW, и, при необходимости, создать новую
оперативную копию с использованием оператора CREATE SHADOW.
Решение об использовании оперативных копий принимает администратор базы данных. Во многих случаях, когда важен процесс сохранения введенных клиентами данных, имеет смысл использовать оперативные копии, рассчитывая на то, что поломки диска, где хранится база данных, могут происходить достаточно часто. Оперативное копирование не занимает много времени и не требует затрат больших ресурсов вычислительной системы.
8.1. Создание оперативной копии
Для создания новой оперативной копии для базы данных, с которой выполнено в настоящий момент соединение,
используется оператор CREATE SHADOW. Синтаксис представлен в листинге :
Листинг 8.1 Синтаксис оператора создания оперативной копии CREATE SHADOW
CREATE SHADOW <номер оперативной копии> [AUTO | MANUAL][CONDITIONAL]
'<спецификация файла>' [LENGTH [=] <целое> [PAGE[S]]]
[<вторичный файл>]...;
<вторичный файл> ::= FILE '<спецификация файла>'
[LENGTH [=] <целое> [PAGE[S]]]
[STARTING [AT [PAGE]] <целое>]
Примечание
Создать оперативную копию может владелец базы данных, администратор и пользователь с привилегией ALTER DATABASE.
Оперативная копия начинает дублировать основную базу данных сразу в момент создания этой копии.
Номер оперативной копии — положительное число (не ноль), идентифицирующее набор файлов данной оперативной копии.
Если по каким либо причинам файл базы данных становится недоступным, то система преобразует тень в копию базы данных и переключается на неё. Теневая копия становится недоступной. Что будет дальше зависит от выбранного режима.
Режимы AUTO и MANUAL
При выборе альтернативы AUTO (значение по умолчанию) происходит следующее. Если файлы оперативной
копии по различным причинам становятся недоступными, то завершаются все соединения с оперативной копией,
удаляются все ссылки на эту оперативную копию. Работа с базой данных продолжается обычным образом без
выполнения оперативного копирования в данную оперативную копию. Если существуют другие оперативные копии,
то их использование продолжается обычным образом.
В случае MANUAL, если оперативная копия становится недоступной, то все попытки соединения с базой данных
и обращения к ней будут вызывать сообщения об ошибках, пока оперативная копия не станет доступной или пока
оперативная копия не будет удалена из базы данных администратором
при помощи оператора DROP SHADOW. Администратор базы данных должен
удалить ссылку на оперативную копию из базы данных, при необходимости
удалить все файлы этой оперативной копии с диска и создать новую
оперативную копию (если необходимо).
В случае, когда оперативная копия заменяет базу данных, можно указать
новую оперативную копию, которая начнет выполнять функции оперативного
копирования. Для этого нужно создать оперативную копию с ключевым
словом CONDITIONAL. Это условная оперативная копия, которая заменяет
бывшую активной перед этим оперативную копию, которая стала выполнять
функции основной базы данных.
Файл оперативной копии
Спецификация файла оперативной копии — имя файла и полный к нему путь в
соответствии с требованиями используемой операционной системы. Для
Windows спецификация файла содержит имя устройства, путь к файлу и имя
файла с его расширением. Имена файлов оперативной копии часто
выбираются такими же, как и у файла базы данных, а для расширений имен
файлов оперативных копий обычно применяются shd, sh1, sh2 и т.д.
В момент создания оперативной копии на диске не должно быть файла с тем же именем, что и создаваемая оперативная копия.
Как и в случае с файлами базы данных оперативная копия может состоять из одного или нескольких файлов. Количество и размеры файлов оперативной копии никак не связаны с количеством и размерами первичного и/или вторичных файлов основной базы данных. База данных может состоять из нескольких файлов, а оперативная копия — только из одного и наоборот.
Для файлов теневой копии размер страницы устанавливается равным размеру страницы базы данных и не может быть изменён.
LENGTH
Предложение LENGTH задает максимальный размер первичного или вторичного
файла оперативной копии в страницах. Для единственного или последнего
файла оперативной копии этот размер никак не влияет на величину
используемой файлом памяти. Размер файла будет автоматически
увеличиваться при необходимости до максимальной величины, которую
обеспечивает используемая операционная система, или пока не будет
исчерпано дисковое пространство носителя.
Вторичные файлы
Предложение STARTING AT задает номер страницы, с которой должен
начинаться следующий файл копии. Когда предыдущий файл будет полностью
заполнен данными в соответствии с заданным размером, система начнет
помещать новые данные в следующий вторичный файл.
При создании многофайловой оперативной копии необходимо либо для
предыдущего файла в списке указать предложение LENGTH, либо для
последующего указывать предложение STARTING AT.
Нет возможности добавить новые вторичные файлы к существующей оперативной копии. В случае необходимости добавления дополнительных вторичных файлов или изменения их количественных характеристик нужно удалить существующую оперативную копию и заново ее создать, указав нужное количество вторичных файлов и их размеры.
Пример 1. Чтобы создать для базы данных однофайловую оперативную копию, нужно выполнить следующий оператор:
CONNECT 'localhost:D:\RedSoftDatabase\work.fdb'
USER 'wizard' PASSWORD 'master';
create shadow 1 'd:\RedSoftDatabase\work.shd';
Пример 2. Для создания второй многофайловой оперативной копии следует выполнить операторы:
CONNECT 'localhost:D:\RedSoftDatabase\work.fdb'
USER 'wizard' PASSWORD 'master';
create shadow 2 'd:\RedSoftDatabase\work.sh1'
LENGTH = 5000 PAGES
FILE 'd:\RedSoftDatabase\work.sh2';
Здесь будет создан второй набор оперативных копий, работающих одновременно с первым набором оперативных копий. Этот набор копий содержит два файла. Размер первого файла оперативной копии составляет 5000 страниц. Второй файл будет при необходимости увеличиваться до размеров, допустимых в используемой операционной системе или пока не будет исчерпано пространство на внешнем носителе.
8.2. Удаление оперативной копии
Для удаления существующей оперативной копии используется оператор SQL DROP SHADOW.
Его синтаксис представлен в листинге :
Листинг 8.2 Синтаксис оператора удаления существующей оперативной копии DROP SHADOW
DROP SHADOW <номер оперативной копии> [{PRESERVE | DELETE} FILE];
Номер оперативной копии — положительное число, идентифицирующее набор файлов ранее созданной оперативной копии.
При удалении оперативной копии прекращается процесс дублирования данных в этой оперативной копии.
Если указана опция DELETE FILE (по умолчанию), то будут также удалены и все связанные файлы с
этой теневой копией. Если указана опция PRESERVE FILE, то файлы останутся не тронутыми.
Это может быть полезно, если делать резервную копию с теневого файла.
Оператор завершается без ошибок и без каких-либо сообщений, даже если указанной оперативной копии у базы данных не существует.
Примечание
Оперативная копия может быть удалена владельцем базы данных, администратором и пользователем с привилегией ALTER DATABASE.