Кто может создать базу данных?
Выполнить оператор CREATE DATABASE
могут:
-
Пользователи с привилегией
CREATE DATABASE
.
Выполнить оператор CREATE DATABASE
могут:
Пользователи с привилегией CREATE DATABASE
.
Создание базы данных в операционной системе Windows расположенной на диске D с размером страницы 8192.Владельцем базы данных будет пользователь wizard.База данных будет в 1 диалекте, и использовать набор символов по умолчанию WIN1251.
SET SQL DIALECT 1;
CREATE DATABASE 'D:\test.fdb'
USER wizard PASSWORD 'player' ROLE RDB$ADMIN
DEFAULT CHARACTER SET WIN1251;
Создание базы данных в операционной системе Linux с размером страницы 4096.Владельцем базы данных будет пользователь wizard.База данных будет в 3 диалекте, и использовать набор символов по умолчанию UTF8 с умалчиваемой сортировкой UNICODE_CI_AI
.
CREATE DATABASE '/home/firebird/test.fdb'
USER "wizard" PASSWORD 'player' ROLE 'RDB$ADMIN'
PAGE_SIZE = 4096
DEFAULT CHARACTER SET UTF8 COLLATION UNICODE_CI_AI;
Important
|
В данном случае при создании базы данных будет учитываться регистр символов для имени пользователя, потому что оно указано в двойных кавычках. |
Создание базы данных на удалённом сервере baseserver расположенном по пути, на который ссылается псевдоним test, описанный в файле databases.conf.Используется протокол TCP.Владельцем базы данных будет пользователь wizard.
CREATE DATABASE 'baseserver:test'
USER wizard PASSWORD 'player' ROLE RDB$ADMIN
DEFAULT CHARACTER SET UTF8;
То же самое с использованием унифицированного URL-подобного синтаксиса задания спецификации удалённого сервера.
CREATE DATABASE 'inet://baseserver:3050/test'
USER wizard PASSWORD 'player' ROLE RDB$ADMIN
DEFAULT CHARACTER SET UTF8;
или
CREATE DATABASE 'inet://baseserver:gds_db/test'
USER wizard PASSWORD 'player' ROLE RDB$ADMIN
DEFAULT CHARACTER SET UTF8;
При использовании доменных имён может быть полезно указать какой именно из протоколов IP v4 или IP v6 вы хотите использовать.
CREATE DATABASE 'inet4://baseserver/test'
USER wizard PASSWORD 'player' ROLE RDB$ADMIN
DEFAULT CHARACTER SET UTF8;
или
CREATE DATABASE 'inet6://baseserver/test'
USER wizard PASSWORD 'player' ROLE RDB$ADMIN
DEFAULT CHARACTER SET UTF8;
Создание базы данных с указанием IP адреса (IPv4) вместо указания имени сервера.
CREATE DATABASE '127:0:0:1:test'
USER wizard PASSWORD 'player' ROLE RDB$ADMIN
DEFAULT CHARACTER SET UTF8;
Создание базы данных с указанием IP адреса (IPv6) вместо указания имени сервера.
CREATE DATABASE '[::1]:test'
USER wizard PASSWORD 'player' ROLE RDB$ADMIN
DEFAULT CHARACTER SET UTF8;
Создание базы данных в 3 диалекте с набором символов по умолчанию UTF8.Первичный файл будет содержать 10000 страниц с размером страницы 8192.Как только в процессе работы с базой данных первичный файл будет заполнен, СУБД будет помещать новые данные во вторичный файл test.fdb2.Аналогичные действия будут происходить и со вторым вторичным файлом.Размер последнего файла будет увеличиваться до тех пор, пока это позволяет используемая операционная система или пока не будет исчерпана память на внешнем носителе.
SET SQL DIALECT 3;
CREATE DATABASE 'baseserver:D:\test.fdb'
USER wizard PASSWORD 'player' ROLE 'RDB$ADMIN'
PAGE_SIZE = 8192
DEFAULT CHARACTER SET UTF8
FILE 'D:\test.fdb2'
STARTING AT PAGE 10001
FILE 'D:\test.fdb3'
STARTING AT PAGE 20001;
Создание базы данных в 3 диалекте с набором символов по умолчанию UTF8.Первичный файл будет содержать 10000 страниц с размером страницы 8192.Как только в процессе работы с базой данных первичный файл будет заполнен, СУБД будет помещать новые данные во вторичный файл test.fdb2.Аналогичные действия будут происходить и со вторым вторичным файлом.
SET SQL DIALECT 3;
CREATE DATABASE 'baseserver:D:\test.fdb'
USER wizard PASSWORD 'player' ROLE 'RDB$ADMIN'
PAGE_SIZE = 8192
LENGTH 10000 PAGES
DEFAULT CHARACTER SET UTF8
FILE 'D:\test.fdb2'
FILE 'D:\test.fdb3'
STARTING AT PAGE 20001;
ALTER DATABASE
Изменение структуры файлов базы данных, переключение её в состояние “безопасное для копирования” или изменение некоторых свойств базы данных.
DSQL, ESQL
ALTER {DATABASE | SCHEMA} {<add_sec_clause> [<add_sec_clausee> ...]} | {ADD DIFFERENCE FILE 'diff_file' | DROP DIFFERENCE FILE} | {{BEGIN | END} BACKUP} | {SET DEFAULT CHARACTER SET charset} | {SET DEFAULT SQL SECURITY {DEFINER | INVOKER}} | {SET LINGER TO linger_duration | DROP LINGER} | {ENCRYPT WITH plugin_name [KEY key_name] | DECRYPT} | {ENABLE | DISABLE} PUBLICATION | INCLUDE {TABLE <table_list> | ALL} TO PUBLICATION | EXCLUDE {TABLE <table_list> | ALL} FROM PUBLICATION <add_sec_clause> ::= ADD <sec_file> [<sec_file> ...] <sec_file> ::= FILE 'filepath' [STARTING [AT [PAGE]] pagenum] [LENGTH [=] num [PAGE[S]] <table_list> ::= tablename [, tablename ...]
Параметр | Описание |
---|---|
add_sec_clause |
Инструкция для добавления вторичного файла базы данных. |
sec_file |
Спецификация вторичного файла. |
filepath |
Полный путь и имя дельта файла или вторичного файла базы данных. |
pagenum |
Номер страницы, с которой начинается вторичный файл базы данных. |
num |
Максимальный размер вторичного файла в страницах. |
diff_file |
Путь и имя дельта файла. |
charset |
Новый набор символов по умолчанию для базы данных. |
linger_duration |
Задержка в секундах. |
plugin_name |
Имя плагина шифрования. |
key_name |
Имя ключа шифрования. |
table_list |
Список таблиц, которые необходим разрешить или запретить дляпубликации (репликации). |
tablename |
Имя таблицы. |
Оператор ALTER DATABASE
изменяет структуру файлов базы данных или переключает её в состояние “безопасное для копирования”.
Предложение ADD FILE
добавляет к базе данных вторичный файл.Для вторичного файла необходимо указывать полный путь к файлу и имя вторичного файла.Описание вторичного файла аналогично тому, что описано в операторе CREATE DATABASE.
Как только в предыдущем первичном или вторичных файлах будет заполнено 30000 страниц, СУБД будет помещать данные во вторичный файл test4.fdb.
ALTER DATABASE
ADD FILE 'D:\test.fdb4'
STARTING PAGE 30001;
Предложение ADD DIFFERENCE FILE
задаёт путь и имя дельта файла, в который будут записываться изменения, внесённые в базу данных после перевода её в режим “безопасного копирования” (“copy-safe”). Этот оператор в действительности не добавляет файла.Он просто переопределяет умалчиваемые имя и путь файла дельты.Для изменения существующих установок необходимо сначала удалить ранее указанное описание файла дельты с помощью оператора DROP DIFFERENCE FILE, а затем задать новое описание файла дельты.Если не переопределять путь и имя файла дельты, то он будет иметь тот же путь и имя, что и БД, но с расширением .delta.
Note
|
При задании относительного пути или только имени файла дельты он будет создаваться в текущем каталоге сервера.Для операционных систем Windows это системный каталог. |
Предложение DROP DIFFERENCE FILE
удаляет описание (путь и имя) файла дельты, заданное ранее командой ADD DIFFERENCE FILE
.На самом деле при выполнении этого оператора файл не удаляется.Он удаляет путь и имя файла дельты и при последующем переводе БД в режим “безопасного копирования” будут использованы значения по умолчанию (т.е.тот же путь и имя, что и у файла БД, но с расширением .delta).
ALTER DATABASE
ADD DIFFERENCE FILE 'D:\test.diff';
ALTER DATABASE
DROP DIFFERENCE FILE;
Предложение BEGIN BACKUP
предназначено для перевода базы данных в режим “безопасного копирования” (“copy-safe”). Этот оператор “замораживает” основной файл базы данных, что позволяет безопасно делать резервную копию средствами файловой системы, даже если пользователи подключены и выполняют операции с данными.При этом все изменения, вносимые пользователями в базу данных, будут записаны в отдельный файл, так называемый дельта файл (delta file).
Note
|
Оператор |
Предложение END BACKUP
предназначено для перевода базы данных из режима “безопасного копирования” (“copy-safe”) в режим нормального функционирования.Этот оператор объединяет файл дельты с основным файлом базы данных и восстанавливает нормальное состояние работы, таким образом, закрывая возможность создания безопасных резервных копий средствами файловой системы.(При этом безопасное резервное копирование с помощью утилиты gbak
остаётся доступным).
ALTER DATABASE
BEGIN BACKUP;
ALTER DATABASE
END BACKUP;
Предложение SET DEFAULT CHARACTER SET
изменяет набор символов по умолчанию для базы данных.Это изменение не затрагивает существующие данные.Новый набор символов по умолчанию будет использоваться только в последующих DDL командах, кроме того для них будет использоваться сортировка по умолчанию для нового набора символов.
ALTER DATABASE SET DEFAULT CHARACTER SET WIN1251;
Начиная с Firebird 4.0 появилась возможность указывать объектам метаданных с какими привилегиями они будут выполняться: вызывающего или определяющего пользователя.Для этого используется предложение SQL SECURITY
, которое можно указать для таблицы, триггера, процедуры, функции или пакета.Если выбрана опция INVOKER
, то объект метаданных будет выполняться с привилегиями вызывающего пользователя.Если выбрана опция DEFINER
, то объект метаданных будет выполняться с привилегиями определяющего пользователя (владельца). Если при создании PSQL модуля или таблицы предложение SQL SECURITY
не задано, то по умолчанию используется опция INVOKER.
Предложение SET DEFAULT SQL SECURITY
изменяет привилегии выполнения с которым по умолчанию выполняются PSQL модули (хранимые процедуры, функции и пакеты).
После выполнения данного оператора PSQL модули по умолчанию будут выполняться с опцией SQL SECURITY DEFINER
ALTER DATABASE SET DEFAULT SQL SECURITY DEFINER;
LINGER
Предложение SET LINGER
позволяет установить задержку закрытия базы данных.Этот механизм позволяет Firebird в режиме SuperServer, сохранять базу данных в открытом состоянии в течение некоторого времени после того как последние соединение закрыто, т.е.иметь механизм задержки закрытия базы данных.Это может помочь улучшить производительность и уменьшить издержки в случаях, когда база данных часто открывается и закрывается, сохраняя при этом ресурсы “разогретыми” до следующего открытия.
Tip
|
Такой режим может быть полезен для Web приложений, в которых коннект к базе обычно “живёт” очень короткое время. |
Предложение DROP LINGER
удаляет задержку и возвращает базу данных к нормальному состоянию (без задержки). Эта команда эквивалентна установки задержки в 0.
Tip
|
Удаление Кроме того, одноразовое переопределение доступно также через сервисы API, с использованием тега isc_spb_prp_nolinger, например (в такой строке):
|
ALTER DATABASE SET LINGER TO 30;
ALTER DATABASE DROP LINGER;
или
ALTER DATABASE SET TO LINGER 0;
Оператор ALTER DATABASE
с предложением ENCRYPT WITH
шифрует базу данных с помощью указанного плагина шифрования.Шифрование начинается сразу после этого оператора и будет выполняться в фоновом режиме.Нормальная работа с базами данных не нарушается во время шифрования.
Note
|
Процесс шифрования может быть проконтролирован с помощью поля
Например, следующий запрос
будет отображать процент завершения процесса шифрования. |
Необязательное предложение KEY
позволяет передать имя ключа для плагина шифрования.Что делать с этим именем ключа решает плагин.
Оператор ALTER DATABASE
с предложением DECRYPT
дешифрует базу данных.
ALTER DATABASE ENCRYPT WITH DbCrypt;
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
могут:
Владелец базы данных;
Пользователи с привилегией ALTER DATABASE
.
DROP DATABASE
Удаление текущей базы данных.
DSQL, ESQL
DROP DATABASE
Оператор DROP DATABASE
удаляет текущую базу данных.Перед удалением базы данных, к ней необходимо присоединиться.Оператор удаляет первичный, все вторичные файлы и все файлы теневых копий.
Выполнить оператор DROP DATABASE
могут:
Владелец базы данных;
Пользователи с привилегией DROP DATABASE
.
Удаление базы данных, к которой подключен клиент.
DROP DATABASE;