FirebirdSQL logo
 Операторы определения данных (DDL)SHADOW 

Перевод базы данных в режим “безопасного копирования”

Предложение BEGIN BACKUP предназначено для перевода базы данных в режим “безопасного копирования” (“copy-safe”). Этот оператор “замораживает” основной файл базы данных, что позволяет безопасно делать резервную копию средствами файловой системы, даже если пользователи подключены и выполняют операции с данными.При этом все изменения, вносимые пользователями в базу данных, будут записаны в отдельный файл, так называемый дельта файл (delta file).

Note

Оператор BEGIN BACKUP, несмотря на синтаксис, не начинает резервное копирование базы данных, а лишь создаёт условия для его осуществления.

Предложение END BACKUP предназначено для перевода базы данных из режима “безопасного копирования” (“copy-safe”) в режим нормального функционирования.Этот оператор объединяет файл дельты с основным файлом базы данных и восстанавливает нормальное состояние работы, таким образом, закрывая возможность создания безопасных резервных копий средствами файловой системы.(При этом безопасное резервное копирование с помощью утилиты gbak остаётся доступным).

Example 1. Перевод базы данных в режим “безопасного копирования”
ALTER DATABASE
BEGIN BACKUP;
Example 2. Возвращение базы данных в режим нормального функционирования из режима “безопасного копирования”
ALTER DATABASE
END BACKUP;

Изменение набора символов по умолчанию

Предложение SET DEFAULT CHARACTER SET изменяет набор символов по умолчанию для базы данных.Это изменение не затрагивает существующие данные.Новый набор символов по умолчанию будет использоваться только в последующих DDL командах, кроме того для них будет использоваться сортировка по умолчанию для нового набора символов.

Example 1. Изменение набора символов по умолчанию для базы данных
ALTER DATABASE SET DEFAULT CHARACTER SET WIN1251;

docnext count = 8

Изменение привилегий выполнения по умолчанию

Начиная с Firebird 4.0 появилась возможность указывать объектам метаданных с какими привилегиями они будут выполняться: вызывающего или определяющего пользователя.Для этого используется предложение SQL SECURITY, которое можно указать для таблицы, триггера, процедуры, функции или пакета.Если выбрана опция INVOKER, то объект метаданных будет выполняться с привилегиями вызывающего пользователя.Если выбрана опция DEFINER, то объект метаданных будет выполняться с привилегиями определяющего пользователя (владельца). Если при создании PSQL модуля или таблицы предложение SQL SECURITY не задано, то по умолчанию используется опция INVOKER.

Предложение SET DEFAULT SQL SECURITY изменяет привилегии выполнения с которым по умолчанию выполняются PSQL модули (хранимые процедуры, функции и пакеты).

Example 1. Изменение привилегий выполнения по умолчанию

После выполнения данного оператора PSQL модули по умолчанию будут выполняться с опцией SQL SECURITY DEFINER

ALTER DATABASE SET DEFAULT SQL SECURITY DEFINER;

LINGER

Предложение SET LINGER позволяет установить задержку закрытия базы данных.Этот механизм позволяет Firebird в режиме SuperServer, сохранять базу данных в открытом состоянии в течение некоторого времени после того как последние соединение закрыто, т.е.иметь механизм задержки закрытия базы данных.Это может помочь улучшить производительность и уменьшить издержки в случаях, когда база данных часто открывается и закрывается, сохраняя при этом ресурсы “разогретыми” до следующего открытия.

Tip

Такой режим может быть полезен для Web приложений, в которых коннект к базе обычно “живёт” очень короткое время.

Предложение DROP LINGER удаляет задержку и возвращает базу данных к нормальному состоянию (без задержки). Эта команда эквивалентна установки задержки в 0.

Tip

Удаление LINGER не самое лучшее решение для временной необходимости его отключения для некоторых разовых действий, требующих принудительного завершения работы сервера.Утилита gfix теперь имеет переключатель -NoLinger, который сразу закроет указанную базу данных, после того как последнего соединения не стало, независимо от установок LINGER в базе данных.Установка LINGER будет сохранена и нормально отработает в следующий раз.

Кроме того, одноразовое переопределение доступно также через сервисы API, с использованием тега isc_spb_prp_nolinger, например (в такой строке):

fbsvcmgr host:service_mgr user sysdba password xxx
action_properties dbname employee prp_nolinger
Example 1. Установка задержки в 30 секунд
ALTER DATABASE SET LINGER TO 30;
Example 2. Удаление задержки
ALTER DATABASE DROP LINGER;

или

ALTER DATABASE SET TO LINGER 0;

Шифрование базы данных

Оператор ALTER DATABASE с предложением ENCRYPT WITH шифрует базу данных с помощью указанного плагина шифрования.Шифрование начинается сразу после этого оператора и будет выполняться в фоновом режиме.Нормальная работа с базами данных не нарушается во время шифрования.

Note

Процесс шифрования может быть проконтролирован с помощью поля MON$CRYPT_PAGE в псевдо-таблице MON$DATABASE или просмотрен на странице заголовка базы данных с помощью gstat -e.

gstat –h также будет предоставлять ограниченную информацию о состоянии шифрования.

Например, следующий запрос

select MON$CRYPT_PAGE * 100 / MON$PAGES from MON$DATABASE

будет отображать процент завершения процесса шифрования.

Необязательное предложение KEY позволяет передать имя ключа для плагина шифрования.Что делать с этим именем ключа решает плагин.

Оператор ALTER DATABASE с предложением DECRYPT дешифрует базу данных.

Example 1. Шифрование базы данных
ALTER DATABASE ENCRYPT WITH DbCrypt;
Example 2. Дешифрование базы данных
ALTER DATABASE DECRYPT;

Управление репликацией

Оператор ALTER DATABASE с предложением ENABLE PUBLICATION включает репликацию базы данных.

ALTER DATABASE ENABLE PUBLICATION

Для отключения репликации базы данных выполните оператор

ALTER DATABASE DISABLE PUBLICATION

Изменения будут применены сразу после подтверждения транзакции.

При настойке репликации должен быть определен набор репликации (он же публикация). Он включает в себя таблицы, которые должны быть реплицированы.Это также делается с помощью команды DDL:

ALTER DATABASE INCLUDE {TABLE <table_list> | ALL} TO PUBLICATION

<table_list> ::= tablename [, tablename ...]

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

ALTER DATABASE INCLUDE ALL TO PUBLICATION

Вы можете задать конкретный набор таблиц для репликации.Для этого после ключевого слова TABLE необходимо указать список таблиц через запятую.В следующем примере мы разрешаем репликацию для таблиц t1 и t2:

ALTER DATABASE INCLUDE TABLE t1, t2 TO PUBLICATION

Для исключения таблиц из набора репликации (публикации) используется следующий оператор:

ALTER DATABASE EXCLUDE {TABLE <table_list> | ALL} FROM PUBLICATION

<table_list> ::= tablename [, tablename ...]

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

ALTER DATABASE EXCLUDE ALL FROM PUBLICATION

Вы можете задать конкретный набор таблиц для исключения из репликации.Для этого после ключевого слова TABLE необходимо указать список таблиц через запятую.В следующем примере мы исключаем таблицы t1 и t2 из набора репликации:

ALTER DATABASE EXCLUDE TABLE t1, t2 FROM PUBLICATION

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

Кто может выполнить ALTER DATABASE?

Выполнить оператор ALTER DATABASE могут:

См. также:

CREATE DATABASE, DROP DATABASE.

DROP DATABASE

Назначение

Удаление текущей базы данных.

Доступно в

DSQL, ESQL

Синтаксис
DROP DATABASE

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

Кто может удалить базу данных?

Выполнить оператор DROP DATABASE могут:

Примеры

Example 1. Удаление базы данных

Удаление базы данных, к которой подключен клиент.

DROP DATABASE;
См. также:

CREATE DATABASE, ALTER DATABASE.