6. Настройка сервера РЕД Базы Данных
Для настройки сервера РЕД База Данных используется файл
firebird.conf. Параметры, распространяющиеся на соединение (per-connection) перечитываются при каждом соединении.
Все остальные параметры считываются при запуске сервера.
По умолчанию все параметры в файле конфигурации закомментированы. Для обозначения комментариев используется символ «#». Текст, следующий после символа «#», до конца строки является комментарием, например:
#комментарий
DefaultDbCachePages = 32768 #комментарий
Первое слово в строке, начинающейся не с символа комментария, считается названием параметра. Справа от имени параметра, после символа «=», указывается значение параметра.
В файле конфигурации присутствуют параметры трех типов:
Целочисленный;
Строковый;
Логический (булев).
Предупреждение
Некоторые параметры помечены как настраиваемые для конкретных баз данных
(per-database) или для подключений (per-connection). Настройки
для баз данных задаются в файле databases.conf. Настройки для
соединения - прежде всего клиентский инструмент и выполняется с помощью
параметра isc_dpb_config в DPB (или, для Services,
isc_spb_config). Обратите внимание на то, что настройки для баз
данных могут выполняться при помощи DPB в случае Embedded сервера, при
подключении к базе данных в первый раз.
Существует ряд предопределенных переменных, которые могут быть использованы в файлах конфигурации, где требуется имя каталога. Полный их список выглядит следующим образом:
$(root)– корневой каталог$(install)– директория, куда установлена СУБД. Изначально$(root)и$(install)одинаковые.$(root)может быть переопределена установкой или изменением переменной окруженияFIREBIRD, в таком случае эта переменная отлична от$(install).$(this)– каталог, в котором находится текущий файл конфигурации.$(dir_conf)– директория, где располагаетсяfirebird.confиdatabases.conf.$(dir_secdb)– директория, где располагается база данных безопасности по-умолчанию.$(dir_plugins)– каталог расположения плагинов (plugins).$(dir_udf)– директория, где располагаются функции UDF по-умолчанию (udf).$(dir_sample)– каталог с примерами (examples).$(dir_sampledb)– директория, где лежит пример базы данных (examples/empbuild).$(dir_intl)– директория, в которой расположены международные модули (intl).$(dir_msg)– каталог, где находится файл с сообщениями сервераfirebird.msg. Обычно он совпадает с$(root), но может быть переопределен переменной окруженияFIREBIRD_MSG.$(dir_schedulerDb)– директория, где находится база данных планировщика заданийscheduler.fdb.
Один конфигурационный файл может включать другой с помощью директивы
include:
include some_file.conf
Относительный путь представляет собой путь по отношению к текущему файлу
конфигурации. Так, в примере выше файл /opt/config/master.conf
ссылается на файл по пути /opt/config/some_file.conf.
Примечание
include поддерживает групповые символы * и ?.6.1. Общие настройки
DatabaseAccess
Параметр DatabaseAccess позволяет обеспечить управление безопасностью при доступе к файлам баз данных.
Доступ к базам данных на сервере может быть полным (Full), ограниченным (Restrict) или запрещенным (None).
Параметр DatabaseAccess имеет строковый тип; по умолчанию значение
параметра равно Full - полный доступ. Для того, чтобы запретить
доступ, следует выставить значение параметра, равное None. Для
ограничения доступа используется значение Restrict. В этом случае
после слова Restrict указываются директории, в которых могут быть
сохранены файлы баз данных.
При указании каталогов могут быть использованы как абсолютные, так и относительные пути. Относительные пути берутся от корневого каталога инсталляции сервера РЕД Базы Данных. В качестве разделителя директорий используется символ «;».
DatabaseAccess = None
DatabaseAccess = Restrict C:\DataBase
DatabaseAccess = Restrict C:\DataBase;D:\Mirror
DatabaseAccess = Restrict /db;/mnt/mirrordb
DatabaseAccess = Full
Предупреждение
RemoteAccess (per-database)
Параметр предоставляет или отменяет удаленный доступ к базам данных.
RemoteAccess = true
По-умолчанию RemoteAccess включен для всех баз данных, за
исключением базы данных безопасности. Если вы намереваетесь использовать
больше одной специализированной базы данных безопасности, то рекомендуем
отключить удаленный доступ к ним в файле databases.conf.
Для повышенной безопасности следует отключить RemoteAccess в
firebird.conf и включить его в databases.conf для некоторых
отдельных баз.
Параметр имеет тип Boolean и может принимать значения
true/false, 1/0 или Yes/No.
ExternalFileAccess (per-database)
Параметр ExternalFileAccess позволяет обеспечить управление правами на
создание таблиц во внешних файлах. Разрешение на доступ к внешним
файлам может быть полным (Full), ограниченным (Restrict) или
запрещенным (None).
Параметр ExternalFileAccess имеет строковый тип; значение по
умолчанию равно None - запрет на создание внешних таблиц. Для
того, чтобы разрешить создание и доступ к внешним файлам, следует
выставить значение параметра равным Full. Для ограничения
доступа используется значение Restrict. В этом случае после
слова Restrict указываются директории, в которых могут быть
сохранены файлы внешних таблиц. При указании каталогов могут быть
использованы как абсолютные, так и относительные пути. Относительные
пути берутся от корневого каталога РЕД Базы Данных. В качестве
разделителя директорий используется символ «;».
ExternalFileAccess = None
ExternalFileAccess = Restrict C:\DataBase
ExternalFileAccess = Restrict C:\DataBase;D:\Mirror
ExternalFileAccess = Restrict /db;/mnt/mirrordb
ExternalFileAccess = Full
Предупреждение
BackupAccess
Параметр BackupAccess задаёт список каталогов, в которых разрешено
создание резервных копий БД. При создании резервных копий первым
проверяется параметр BackupAccess. Если создание копий по указанному
в параметре пути разрешено - создается заданный каталог (при
необходимости - со всеми родительскими).
Параметр BackupAccess имеет строковый тип. Параметр может принимать
значения: полный (Full), ограниченный (Restrict) или запрещенный
(None). По умолчанию значение параметра равно Full - полный
доступ. Для того, чтобы запретить доступ, следует выставить значение
параметра, равное None. Для ограничения доступа используется
значение Restrict. В этом случае после слова Restrict
указываются директории, в которых могут быть сохранены файлы резервных
копий БД.
При указании каталогов могут быть использованы как абсолютные, так и относительные пути. Относительные пути берутся от корневого каталога инсталляции сервера «РЕД База Данных». В качестве разделителя директорий используется символ «;».
BackupAccess = None
BackupAccess = Restrict C:\DataBase
BackupAccess = Restrict C:\DataBase;D:\Mirror
BackupAccess = Restrict /db;/mnt/mirrordb
BackupAccess = Full
UdfAccess
Предупреждение
В РЕД Базе Данных 5 UDF объявлены устаревшими и будут удалены в РЕД Базе Данных 6.
Параметр UdfAccess предназначен для определения директорий, в
которых могут быть сохранены библиотеки UDF. Разрешение на доступ к
библиотекам внешних функций может быть полным (Full), ограниченным
(Restrict) или запрещенным (None).
Параметр UdfAccess имеет строковый тип; значение по умолчанию равно
None (в предыдущих версиях значение по умолчанию было
Restrict UDF).
При указании каталогов могут быть использованы как абсолютные, так и относительные пути. Относительные пути берутся от корневого каталога инсталляции сервера «РЕД База Данных». В качестве разделителя директорий используется символ «;».
UdfAccess = Restrict UDF
Предупреждение
udf-библиотек.TempDirectories
С помощью параметра TempDirectories можно задать каталог, в котором
сервер «РЕД База Данных» будет хранить временные данные, допускающие
разбиение на части. Это кэш курсоров, буферов записей, undo-логов, а
также временные BLOB, блоки сортировок, данные мониторинга.
Параметр TempDirectories имеет строковый тип; значение по умолчанию
равно пустой строке. Если параметр TempDirectories не активен, то
путь к временному каталогу определяется исходя из значения переменных
окружения FIREBIRD_TMP, TEMP, TMP.
В качестве значения параметра может быть задан путь к одному или нескольким каталогам. Для папок допускаются как абсолютные, так и относительные пути. Относительные пути берутся от корневого каталога инсталляции сервера «РЕД База Данных». Если требуется определить несколько временных каталогов, то в качестве разделителя используется символ «;».
Если указана одна или несколько директорий, то выгрузка временных данных при сортировке будет осуществляться в указанные каталоги по очереди (если в текущей временной директории не осталось места, то временные файлы будут сохраняться в следующую по списку)
TempDirectories = c:\temp
TempDirectories = c:\temp;d:\temp
TempDirectories = /home/test
TempDirectories = /home/test;/home/test1
TempTableDirectory
Параметр TempTableDirectory задает каталог, в котором сервер «Ред
База Данных» будет хранить данные временных таблиц и блобов. Если
параметр не задан или указанный каталог недоступен, будет использован
каталог из переменных окружения FIREBIRD_TMP, TEMP, TMP.
BlobTempSpace (per-database)
Параметр BlobTempSpace устанавливает место, в котором будут
сохраняться данные BLOB. Параметр имеет логический тип. По умолчанию
его значение равно false. Если значении равно true, то BLOB,
для которых явно не задано хранилище, будут создаваться во временном
пространстве (таком же, как для данных GTT). Если значение
false, то BLOB, для которых явно не задано хранилище, будут
создаются в файле базы данных. BLOB, созданные пользовательскими
приложениями, не затрагиваются, даже если хранилище не указано в
BPB.
BlobTempSpace = false
SeparateTempTableFiles (per-database)
Параметр SeparateTempTableFiles в файле конфигурации firebird.conf
позволяет использовать для разных соединений разные файлы временных
таблиц, чтобы уменьшить их разрастание. Оказывает влияние только при
использовании архитектуры Super. Параметр имеет логический тип. По
умолчанию его значение равно 1. В этом случае данные глобальных
временных таблиц и временных BLOB будут размещаться в отдельном
файле для каждого соединения. Если выставить значение параметра равным
0, то для всех соединений будет использоваться один файл.
SeparateTempTableFiles = 1
AuditTraceConfigFiles
Параметр AuditTraceConfigFile в файле конфигурации firebird.conf
задает имя и расположение файла с настройками системного аудита. Этот
параметр имеет строковый тип и по умолчанию указывает на
fbtrace.conf. Пустое значение параметра означает, что системный
аудит выключен.
Есть возможностью указания ссылок на другие конфигурационные файлы.
Каждый из них имеет такую же структуру, что и fbtrace.conf, и на их
основе создаются дополнительные системные сессии аудита. Имеются три
таких набора конфигураций для раздельного аудита:
Производительности (
fbtrace.conf)Событий безопасности (
fbtrace_sec.conf)Действий пользователя
SYSDBA(fbtrace_dba.conf)
AuditTraceConfigFiles = fbtrace.conf; fbtrace_sec.conf;
MaxUserTraceLogSize
Задает максимальный суммарный размер (в мегабайтах) временных файлов,
создаваемых сессией пользовательской трассировки Services API. После
прочтения временного файла приложением он автоматически удаляется.
Параметр имеет целочисленный тип. Единица измерения - мегабайты. По
умолчанию максимальный размер файла вывода ограничен 10 МБ. Если
значения ограничения MaxUserTraceLogSize достигнуто, то сервер
автоматически приостанавливает сессию слежения.
MaxUserTraceLogSize = 10
DefaultDbCachePages (per-database)
Параметр DefaultDbCachePages определяет количество страниц одной базы данных,
которые могут одновременно находиться в кэше.
По умолчанию SuperServer выделяет 32768 страниц для каждой базы данных,
а Classic и SuperClassic по умолчанию выделяют 1024 страницы на каждое клиентское соединение для каждой базы данных.
При изменении данных параметров следует учитывать особенности
аппаратно-программной платформы, других настроек сервера
(TempBlockSize). Также, определение оптимальных для конкретной
задачи настроек хэширования данных сервером «РЕД База Данных» может быть
произведено экспериментальным путем.
Параметр имеет целочисленный тип. Единица измерения – страница базы данных. По умолчанию параметр имеет значение 32768. Максимальное значение 2147483647 страниц. Минимальное значение параметра – 0. Если значение параметра равно нулю, то сервер не будет выполнять кэширование страниц данных.
DefaultDbCachePages = 32768
DatabaseGrowthIncrement (per-database)
Параметр позволяет указать объем дискового пространства, которое может
быть выделено под базу данных. Дисковое пространство резервируется в
системе, что позволяет в дальнейшем снизить физическую фрагментацию
файла (-ов) базы данных и дает возможность продолжить работу в условиях
недостатка места на диске. Если режим резервирования включен, то сервер
резервирует 1/16 часть от уже используемого дискового пространства для
одного соединения, но не меньше 128 KB и не больше, чем значение,
заданное параметром DatabaseGrowthIncrement (по умолчанию 128 MB).
Для отключения резервирования дискового пространства необходимо
выставить значение DatabaseGrowthIncrement равным 0.
DatabaseGrowthIncrement = 134217728
Предупреждение
FileSystemCacheThreshold (per-database)
Параметр FileSystemCacheThreshold устанавливает порог использования
системного кэша сервером «РЕД База Данных» для архитектуры Cуперсервер.
Значение параметра FileSystemCacheThreshold определяет максимально
допустимое количество страниц, которые могут находиться в кэш-памяти
одновременно. Системный кэш будет использоваться до тех пор, пока
количество закэшированных страниц меньше, чем значение параметра
FileSystemCacheThreshold.
Параметр FileSystemCacheThreshold учитывается, только если не задан
параметр UseFileSystemCache.
Параметр имеет целочисленный тип. Единица измерения – страница базы
данных (определяется при создании БД, может иметь размер от 4 до 32 Кб).
По умолчанию параметр имеет значение - 65536 страниц. Максимально
допустимое значение параметра – 2147483647. Минимальное значение
параметра – 0. Если значение параметра FileSystemCacheThreshold
равно 0, то сервер не будет использовать системный кэш.
FileSystemCacheThreshold = 65536
ValidatePageChecksums (per-database)
Параметр поддерживается начиная с версии РЕД Базы Данных 5.1.
Параметр ValidatePageChecksums определяет проверять ли физическую согласованность
базы данных с помощью вычисления контрольных сумм на уровне страниц.
В случае несоответствия контрольных сумм в лог-файл будет записана ошибка, но работа продолжится.
Параметр имеет логический тип.
По умолчанию значение true, то есть контрольные суммы на уровне страниц вычисляются.
ValidatePageChecksums = true
UseFileSystemCache (per-database)
Параметр UseFileSystemCache определяет использовать ли кэш файловой
системы сервером «РЕД База Данных». Параметр имеет логический тип.
Параметр FileSystemCacheThreshold учитывается, только если не задан
параметр UseFileSystemCache.
UseFileSystemCache = true
InlineSortThreshold
Параметр InlineSortThreshold определяет, как обрабатываются
неключевые поля во время сортировки: сохраняются внутри блока сортировки
или повторно извлекаются со страниц после сортировки. Параметр имеет
целочисленный тип. Значение параметра InlineSortThreshold определяет
максимальный размер записей (в байтах), который может быть сохранен
внутри блока сортировки. Если значение параметра InlineSortThreshold
равно 0, то неключевые поля будут извлекаются со страниц после
сортировки.
InlineSortThreshold = 1000
FileSystemCacheSize
Параметр FileSystemCacheSize устанавливает максимальный размер оперативной памяти, используемый
системным файловым кэшем 64-битными Windows XP или Windows Server 2003 с Service Pack 1 или
выше.
Параметр содержит целое число, представляющее собой количество (в процентах) оперативной памяти, которое может быть использовано под файловый кэш. Значение может быть от 10 до 95%. Если задать значение 0, операционная система сама будет определять размер файлового кэша. Это и есть значение по умолчанию.
FileSystemCacheSize = 0
Примечание
Windows требует обладания привилегией SeIncreaseQuotaPrivilege для управления настройками файлового кэша.
Эта привилегия доступна по умолчанию администраторам и службам, а также выдается учетной записи firebird
при установке из дистрибутива Windows Installer.
Если РЕД База Данных запущена как приложение или в режиме Embedded или установлен не из официального
дистрибутива, учетная запись может не иметь данной привилегии. Процесс не выдаст ошибку при запуске,
а просто запишет соответствующее сообщение в файл firebird.log и будет работать с настройками
операционной системы.
RemoteFileOpenAbility
Параметр имеет логический тип. По умолчанию его значение равно 1. В этом случае сервер «РЕД База Данных» может открыть базу данных, только если она сохранена на физическом диске компьютера, на котором запущен сервер. Запросы на подключениях с базами данных, сохраненными на сетевых дисках, переадресовываются на сервер «РЕД База Данных», работающий на компьютере, которому принадлежит диск.
Это ограничение предотвращает возможность того, чтобы две различных
копии сервера открыли одновременно одну и ту же базу данных.
Нескоординированный доступ нескольких копий сервера к одной базе данных
может привести к ее повреждению. Блокировка файла на системном уровне
предотвращает нескоординированный доступ к файлу базы данных. Для
отключения этой опции следует выставить значение параметра
RemoteFileOpenAbility равным 0 (ложь).
Предупреждение
Предупреждение
RemoteFileOpenAbility = 0
TempBlockSize
Параметр TempBlockSize используется для управления пространством
временных каталогов. Временные каталоги используются для выгрузки
результатов обработки больших объемов данных (например, при сортировке
данных). Параметр TempBlockSize определяет минимальный размер блока,
выделяемого на один запрос с сортировкой.
Параметр имеет целочисленный тип. Единица измерения - байты. По умолчанию параметр имеет значение 1048576 байт. Максимально допустимое значение 2147483647 байт. Минимальное значение параметра – 0.
TempBlockSize = 1048576
TempCacheLimit (per-database)
Параметр TempCacheLimit используется для ограничения объёма временного пространства,
которое может быть кэшировано в оперативной памяти. В этом пространстве будут сохраняться
данные сортировок, буферов записи, небольших временных блобов перед материализацией и т.д.
Параметр имеет целочисленный тип. В архитектуре Классик это ограничение на одно подключение и по умолчанию значение равно 8 Мб. В архитектуре Супер это ограничение на все подключения и по умолчанию значение равно 64 Мб. Максимально допустимое значение (\(2^{64} - 1\)) байт. Минимальное значение параметра равно 0.
В целях увеличения производительности желательно установить это значение больше суммарного размера временных
файлов в каталогах TempDirectories, если это позволяет объем доступной оперативной памяти.
TempCacheLimit = 67108864
MaxIdentifierByteLength (per-database)
Максимально допустимая длина имени идентификатора в байтах.
Установка этого значения для всех баз данных (включая базу данных безопасности) может вызвать проблемы.
MaxIdentifierByteLength = 252
MaxIdentifierCharLength (per-database)
Максимально допустимая длина имени идентификатора в символах.
Установка этого значения для всех баз данных (включая базу данных безопасности) может вызвать проблемы.
MaxIdentifierCharLength = 63
AuthServer/AuthClient (per-database/per-connection, per-database)
Параметр AuthServer - набор методов аутентификации, разрешенных на
сервере (определяется в файле конфигурации сервера).
Параметр AuthClient - набор методов аутентификации, поддерживаемых
клиентом (определяется в файле конфигурации на клиенте).
Включенные методы перечислены в виде строковых символов, разделенных запятыми, точками с запятой или пробелами. Если проверить подлинность с помощью первого метода не удалось, то сервер переходит к следующему и т.д. Если ни один метод не подтвердил подлинность, то пользователь получает сообщение об ошибке.
СУБД РЕД База Данных 5.0 поддерживает следующие методы аутентификации:
Безопасная парольная аутентификация использующая алгоритм хэширования
SHAдля передачи данных:Srp, Srp224, Srp256, Srp384, Srp512. По умолчанию используетсяSrp256;Традиционная (
Legacy_Auth) аутентификация;
Доверительная (
Win_Sspi) аутентификация для ОС Windows;Метод
GostPasswordобеспечивает аутентификацию с использованием алгоритмов шифрования из криптографического плагина (Crypto_API);Плагин
Certificateпозволяет аутентифицировать пользователей по сертификатам X509;Плагин
VerifyServerпозволяет клиенту проверить сертификат сервера;Доверенная аутентификация через механизм GSSAPI (
Gss);Доверенная аутентификации для выполнения Execute Statement On External без указания логина и пароля (
ExtAuth).
AuthServer = Srp256
AuthClient = Srp256, Srp, Win_Sspi, Legacy_Auth, Gss, ExtAuth
Если вы хотите использовать плагины аутентификации, которые не
предоставляют ключа шифрования (Win_Sspi, Legacy_Auth, GostPassword, Gss), то
следует отключить обязательное (Required) шифрование каналов
передачи данных (параметр WireCrypt), кроме случаев, когда вы работаете с протоколом XNET.
Чтобы отключить какой-нибудь из методов, раскомментируйте строку и удалите нежелательный метод из списка.
Оба параметра могут быть использованы в databases.conf.
AuthClient может использоваться как в DPB, так и в SPB для
конкретных настроек соединения.
PolicyPlugin (per-database/per-connection, per-database)
Параметр PolicyPlugin определяет, использовать ли политики безопасности.
По умолчанию параметр не указан, то есть политики не используются.
Для включения политик безопасности укажите PolicyPlugin = Policy,
тогда попытка пройти аутентификацию будет осуществляться для каждого плагина, указанного в AuthServer, а решение о предоставлении доступа будет принято плагином Policy.
PolicyPlugin =
UserManager (per-database)
Устанавливает плагин, который будет работать с базой данных безопасности. Это может быть список с пробелами, запятыми или точками с запятой в качестве разделителей: используется первый подключаемый модуль из списка. Всего существует четыре возможных плагина:
Srp;
Legacy_UserManager;
GostPassword_Manager;
Ldap.
Для поддержки старой базы данных безопасности и управления
пользователями в ней, следует установить значение параметра
Legacy_UserManager.
Для создания многофакторных пользователей и управления ими следует установить значение параметра GostPassword_Manager.
Для получения списка пользователей каталога LDAP с помощью
псевдотаблицы SEC$USERS следует установить значение параметра
Ldap.
В SQL операторах управления пользователями можно явно указать какой плагин будет использоваться.
UserManager = Srp
Примечание
Параметр UserManager можно использовать в database.conf для
переопределения в конкретной базе данных.
DefaultUserManagers (per-database)
Позволяет указать набор стандартных плагинов.
Если предложение USING PLUGIN не указано, то при создании
пользователя он сам добавляется во все стандартные плагины (со всеми
указанными атрибутами).
При изменении пароля пользователя он меняется во всех стандартных плагинах. Если в каком-либо стандартном плагине нет пользователя, то он добавляется.
Если меняется какой-либо другой атрибут, то он также меняется и в других стандартных плагинах, но если пользователь отсутствует, то он не создаётся.
При удалении пользователя он также удалится из всех стандартных плагинов.
Пример использования:
UserManager = Srp Legacy_UserManager GostPassword_Manager
DefaultUserManagers = Legacy_UserManager GostPassword_Manager
Значение по умолчанию:
DefaultUserManagers =
Примечание
TrustedUser
Логин доверенного пользователя для аутентификации по паролю с именем
другого пользователя. При коннекте кроме имени пользователя
(isc_dpb_user_name) можно указать эффективный логин
(isc_dpb_effective_login). В isql для этого добавлен ключ
-l. Если задан этот логин, то после успешной аутентификации
проверяется задан ли параметр конфигурации
Если не задан - ошибка аутентификации: попытка подмены логина с отключенной опцией.
Если параметр задан, но пользователь там указан другой - тоже ошибка: попытка подмены логина не доверенным пользователем.
Если пользователь в конфигурации совпадает с текущим, то есть подключается доверенный пользователь, то при подключении к БД его имя заменяется на указанный им эффективный логин. Для ядра СУБД это подключение будет выглядеть как обычное, информация о подмене логина до него не доходит.
Работает для всех плагинов аутентификации.
TracePlugin
Задает плагин, используемый функцией трассировки для отправки данных трассировки в приложение клиента или данных аудита в лог файл.
TracePlugin = fbtrace
WireCryptPlugin (per-connection)
Параметр определяет плагин, который будет использоваться для шифрования данных, передаваемых по сети.
WireCryptPlugin = ChaCha64, ChaCha, Arc4
По умолчанию данные шифруются с помощью ChaCha или Alleged RC4.
Ключ должен быть сгенерирован плагином аутентификации.
Для ChaCha используется 16 или 32 битный ключ, в зависимости от того, что предоставляет плагин аутентификации.
Указанный плагин может быть переопределен в API для конкретного соединения через DPB или SPB.
KeyHolderPlugin
Этот параметр представляет собой некоторую форму временного хранилища для ключей шифрования базы данных.
Реализованного плагина по-умолчанию нет, но образец для Linux под названием
libCryptKeyHolder_example.so можно найти в папке /plugins/.
LdapPlugin
Используется для получения информации об учетной записи с сервера LDAP вместо базы данных безопасности.
LdapLibrary
Общий каталог LDAP (только для Linux).
LdapLibrary = libldap-2.4.so.2
AllowEncryptedSecurityDatabase (per-database)
Этот параметр позволяет использовать зашифрованную базу данных безопасности.
Если полагаться на шифрование сетевого канала посредством ключа, сгенерированного плагином аутентификации (например, SRP), чтобы передавать ключи шифрования базы данных по этому каналу, то использование зашифрованных баз данных безопасности является своего рода порочным кругом. Для того, чтобы отправить ключ шифрования базы данных по сетевому каналу безопасным путем, канал должен быть уже зашифрован, но для этого требуется сетевой ключ шифрования от плагина аутентификации, которому необходимо открыть базу данных безопасности для проверки хэша, которая, в свою очередь, требует ключа шифрования БД. К счастью, в большинстве случаев нет необходимости шифровать базу данных безопасности - она неплохо защищена сама по себе, если вы используете криптостойкие пароли. Но в некоторых случаях желательно иметь зашифрованную базу данных безопасности, например, если кто-то хочет использовать в качестве собственной БД безопасности зашифрованную базу. В этом случае следует зашифровать ключ, прежде чем передавать его на сервер с помощью функции обратного вызова. Перед включением этого параметра убедитесь, что ваши ключи хорошо зашифрованы. Учтите, что при включении этой опции незашифрованная передача ключа может случиться даже с незашифрованной БД безопасности.
Эта функция не поддерживается традиционным плагином аутентификации - если вы заботитесь о безопасности, никогда не используйте традиционную аутентификацию.
AllowEncryptedSecurityDatabase = false
Providers (per-database, per-connection)
Провайдеры - это практически то, что мы подразумеваем под способами, используемыми для соединения клиента с сервером, т.е. через интернет; на том же компьютере через localhost; или через прямое соединение в локальной сети.
В firebird.conf доступны по-умолчанию следующие провайдеры:
Providers = Remote,Engine13,Loopback
В databases.conf один или несколько провайдеров могут быть
заблокированы, если вставить и раскомментировать строку из
firebird.conf и удалить нежелательные провайдеры.
Провайдеры, реализованные в РЕД Базе Данных 5.0, позволяют поддерживать удаленные соединения, базы данных с разными ODS, а также замыкание (chaining) провайдеров. Замыкание - это термин для ситуации, когда провайдер использует обратный вызов стандартного API при выполнении операции над базой данных.
Главным элементом архитектуры провайдеров является y-valve. На
начальном этапе вызова attach или create database y-valve
просматривает список известных провайдеров и вызывает их по одному, пока
один из них не завершит запрошенную операцию успешно. Для соединения,
которое уже установлено, соответствующий провайдер вызывается сразу с
почти нулевыми накладными расходами.
Рассмотрим пример работы y-valve, когда он выбирает подходящего
провайдера при подключении к базе данных. По-умолчанию имеется три
провайдера: Remote, Engine13, Loopback.
Типичная конфигурация клиента работает таким образом: при подключении к
базе данных с именем RemoteHost: dbname (синтаксис TCP/IP) или
\\RemoteHost\dbname (NetBios), провайдер Remote обнаруживает
явный синтаксис сетевого протокола и перенаправляет вызов
RemoteHost.
Когда <имя базы данных> не содержит сетевого протокола, а только имя
базы данных, провайдер Remote отклоняет его, а провайдер
Engine13 выходит на первый план и пытается открыть файл с
именованной базой данных. Если это проходит успешно, создается
подключение к базе данных.
Но что происходит, если СУБД возвращает ошибку при попытке подключения к базе данных?
Если файл базы данных, к которому нужно подключиться, не существует, то в этом нет интереса.
Встроенное соединение может не работать, если пользователь, подключившийся к нему, не имеет достаточных прав для открытия файла базы данных. Это было бы обычной ситуацией, если бы база данных не была создана этим пользователем во встроенном режиме или если ему явно не были предоставлены права ОС на встроенный доступ к базам данных.
После отказа провайдера
Engine13в получении доступа к базе данных, пытается подключиться провайдерLoopback. Он не очень отличается отRemote, за исключением того, что он пытается получить доступ к именованной базе данных<dbname>на сервере c сетевым интерфейсом «внутренней петли» (loopback) в сетевом протоколе TCP/IP.
Архитектура провайдеров делает возможным доступ к старым базам данных при переходе на более высокую версию РЕД Базы Данных.
DeadlockTimeout (per-database)
Значение параметра DeadlockTimeout определяет, сколько секунд будет
ждать менеджер блокировок после возникновения конфликта до его
разрешения.
Параметр имеет целочисленный тип. Единица измерения - секунды. Значение по умолчанию равно 10 секунд. Минимально допустимое значение параметра равно 0. Максимально допустимое значение равно 2147483647.
Предупреждение
DeadlockTimeout = 10
StatementTimeout (per-database)
Это количество секунд, по истечении которых выполнение оператора будет автоматически прекращено движком. Ноль означает, что время ожидания не установлено. Значение по умолчанию равно 0.
StatementTimeout = 0
ConnectionIdleTimeout (per-database)
Это количество минут, по истечении которых бездействующее соединение будет отключено движком. Ноль означает, что время ожидания не установлено. Значение по умолчанию равно 0.
ConnectionIdleTimeout = 0
ConnectionSuspendTimeout (per-database)
Предупреждение
Начиная с версии РЕД Базы Данных 5.0.3 параметр недоступен.
Параметр ConnectionSuspendTimeout устанавливает количество секунд,
по истечении которых сессия бездействующего пользователя будет
заблокирована. Если задан параметр ConnectionIdleTimeout, то
значение ConnectionSuspendTimeout не должно его превышать. По
умолчанию период блокировки отключен, то есть
ConnectionSuspendTimeout = 0.
ConnectionSuspendTimeout = 0
MaxUnflushedWrites (per-database)
Параметр MaxUnflushedWrites определяет, как часто страницы из кэш
памяти будут выгружаться на жесткий диск (активен только при значении
параметра ForcedWrites=Off).
Значение параметра MaxUnflushedWrites определяет максимальное
количество не выгруженных на диск страниц, накопившихся в кэш-памяти до
подтверждения транзакции.
Параметр имеет целочисленный тип и измеряется в страницах. Значение по умолчанию равно 100 страниц. Для не Win32 систем значение по умолчанию является -1(Отключено). Максимально допустимое значение равно 2147483647.
MaxUnflushedWrites = 100
Предупреждение
MaxUnflushedWriteTime (per-database)
Параметр MaxUnflushedWriteTime определяет, как часто страницы из кэш
памяти будут выгружаться на жесткий диск (активен только при значении
параметра ForcedWrites=Off).
Значение параметра MaxUnflushedWriteTime определяет время, по
истечении которого страницы данных, ожидающие подтверждения транзакции в
кэш-памяти, будут выгружены на диск.
Параметр имеет целочисленный тип и измеряется в секундах. Значение по умолчанию равно 5 секунд. Для не Win32 систем значение по умолчанию является -1 (Отключено). Максимально допустимое значение равно 2147483647.
MaxUnflushedWriteTime = 5
Предупреждение
BugcheckAbort
Опция BugcheckAbort определяет, прерывать ли работу сервера при
возникновении внутренней ошибки (значение 0) или снимать дамп ядра для
последующего анализа (значение 1).
Параметр имеет логический тип. Возможные значения 0 и 1. Значение по умолчанию равно 1.
BugcheckAbort = 0
ClearGTTAtRetaining (per-database)
Операторы COMMIT RETAINING и ROLLBACK RETAINING сохраняют данные
в глобальных временных таблицах объявленных как
ON COMMIT DELETE ROWS. В версиях 2.x была ошибка:
COMMIT RETAINING и ROLLBACK RETAINING делали записи не видимыми
для текущей транзакции. Для возврата поведения 2.x установите параметр
ClearGTTAtRetaining равным 1.
RelaxedAliasChecking
Параметр RelaxedAliasChecking позволяет снять ограничение на
использование псевдонимов имен таблиц в запросах. Использование
псевдонимов имен таблиц позволяет выполнять подобные запросы:
SELECT TABLE.X FROM TABLE A
Параметр имеет логический тип. Значение по умолчанию равно 0. Если значение параметра равно 1, то ограничение на использование псевдонимов таблиц в запросах снимается.
RelaxedAliasChecking = 0
ReadConsistency
Параметр обеспечивает согласованность чтения данных для запросов в
режиме READ COMMITTED. При запуске такого запроса для него делается
снимок версий, который будет использоваться запросом для чтения данных.
В этом режиме флаги транзакций rec_version / no_rec_version не
действуют: любой READ COMMITTED транзакции по умолчанию назначаются
режимы read consistency record version; значение no_rec_version
молча игнорируется.
ReadConsistency = 1
DefaultIsolationLevel (per-database)
Параметр DefaultIsolationLevel определяет уровень изоляции
транзакций по умолчанию. Может принимать одно их трёх значений:
SNAPSHOT, SNAPSHOT TABLE STABILITY, READ COMMITTED. По
умолчанию установлено значение SNAPSHOT.
DefaultIsolationLevel = SNAPSHOT
DefaultIsolationLevel |
ReadConsistency |
Уровень изоляции |
|---|---|---|
SNAPSHOT |
1 |
SNAPSHOT |
SNAPSHOT |
0 |
SNAPSHOT |
SNAPSHOT TABLE STABILITY |
1 |
SNAPSHOT TABLE STABILITY |
SNAPSHOT TABLE STABILITY |
0 |
SNAPSHOT TABLE STABILITY |
READ COMMITTED |
1 |
READ COMMITTED READ CONSISTENCY |
READ COMMITTED |
0 |
READ COMMITTED NO RECORD_VERSION |
ConnectionTimeout (per-connection)
С помощью параметра ConnectionTimeout устанавливается ограничение на
время ожидания соединения. После того как порог, установленный значением
параметра, будет превышен, попытка соединения будет признана неудачной.
Параметр ConnectionTimeout имеет целочисленный тип и измеряется в
секундах. Значение по умолчанию равно 180 секунд. Минимальное значение
равно 0. Максимально допустимое значение равно 2147483647.
ConnectionTimeout = 180
WireCrypt (per-connection)
Параметр устанавливает, следует ли шифровать сетевое соединение. Он может принимать три возможных значения: Required, Enabled, Disabled.
По-умолчанию установлено, что шифрование является обязательным (Required) для подключений, поступающих на сервер
и включенным (Enabled) для подключений, исходящих с сервера.
WireCrypt = Enabled (for client) / Required (for server)
Чтобы получить доступ к серверу с использованием более старой клиентской библиотеки, параметр WireCrypt
в файле конфигурации сервера должен быть включен (Enabled) или выключен (Disabled).
Правила очень просты: если на одной стороне стоит значение WireCrypt = Required, а на другой установлено значение Disabled,
то первая сторона отклоняет соединение и оно не устанавливается. Если на одной стороне стоит значение WireCrypt = Enabled, то на другой шифрования может и не быть вовсе.
Отсутствующий подключаемый модуль WireCrypt или ключ шифрования в случаях, когда канал должен быть зашифрован, также препятствует соединению.
Во всех остальных случаях соединение устанавливается без шифрования, если хотя бы одна сторона имеет WireCrypt = Disabled.
В других случаях устанавливается шифрованное соединение.
|
|
|
|
|---|---|---|---|
|
Шифрование отключено |
Шифрование отключено |
Ошибка соединения |
|
Шифрование отключено |
Шифрование включено, если плагин аутентификации предоставляет ключ шифрования. Иначе шифрования нет. |
Шифрование включено, если плагин аутентификации предоставляет ключ шифрования. Иначе ошибка подключения. |
|
Ошибка соединения |
Шифрование включено, если плагин аутентификации предоставляет ключ шифрования. Иначе ошибка подключения. |
Шифрование включено, если плагин аутентификации предоставляет ключ шифрования. Иначе ошибка подключения. |
WireCompression (per-connection)
Параметр включает или отключает сжатие сетевого трафика.
По-умолчанию параметр отключен.
WireCompression = false
Параметр настраивается только для клиента - сервер должен следовать настройкам клиента, если он подключен по правильному протоколу (> = 13)
DummyPacketInterval (per-connection)
Параметр DummyPacketInterval используется для того, чтобы установить
число секунд ожидания в «тихом» режиме, прежде чем сервер начнет
посылать пустые пакеты для подтверждения соединения.
Параметр имеет целочисленный тип и измеряется в секундах. Значение по умолчанию равно 0 секунд. Максимально допустимое значение равно 2147483647 секунд.
DummyPacketInterval = 0
В Windows это - единственный способ обнаружить и разъединить неактивных
клиентов при использовании XNET или IPC протоколов.
Сервер «РЕД База Данных» использует опцию разъема SO_KEEPALIVE, чтобы
следить за активными подключениями по TCP/IP протоколу. Если вас не
устраивает заданное по умолчанию 2-часовое время ожидания
(keepalive), то следует изменить параметры настройки своей
операционной системы соответственно:
В операционных системах семейства Posix отредактируйте файл:
/proc/sys/net/ipv4/tcp_keepalive\_*.
DefaultTimeZone
Часовой пояс сеанса или клиента.
Если параметр не установлен, то часовой пояс сеанса будет тем же, что используется операционной системой.
При установке значения на сервере он определяет часовой пояс сеанса по умолчанию для подключений.
Когда он установлен на клиенте, он определяет часовой пояс по умолчанию, используемый функциями API на стороне клиента.
RemoteServiceName/RemoteServicePort (per-connection)
Параметры RemoteServiceName и RemoteServicePort используются для
установки номера порта или имени сервиса, которые будут использоваться
для клиентских баз данных.
Параметр RemoteServiceName имеет строковый тип. Значение по
умолчанию равно gds_db.
Параметр RemoteServicePort имеет целочисленный тип. Значение по
умолчанию равно 3050.
RemoteServiceName = gds_db
RemoteServicePort = 3050
Предупреждение
RemoteServiceName (соответствующая значению параметра
запись ищется в файле «services»), затем RemoteServicePort.RemoteAuxPort (per-connection)
Параметр RemoteAuxPort определяет номер TCP-порта, который будет
использоваться для передачи уведомлений о событиях сервера.
Параметр RemoteAuxPort имеет целочисленный тип. Значение по
умолчанию равно 0. В этом случае номер порта будет выбираться случайно.
RemoteAuxPort = 0
Предупреждение
RemoteAuxPort.TcpRemoteBufferSize
Параметр TcpRemoteBufferSize определяет размер TCP/IP пакета для
обмена сообщениями между сервером и клиентом. Чем больше размер пакета,
тем больше данных будет передаваться за одну передачу.
Параметр имеет целочисленный тип и измеряется в байтах. Значение по умолчанию равно 8192. Минимально допустимое значение равно 1448. Максимальное значение равно 32767.
TcpRemoteBufferSize = 8192
TcpNoNagle (per-connection)
Параметр TcpNoNagle используется для настройки пакетов в TCP/IP
сетях. В Linux по умолчанию библиотека сокетов минимизирует количество
физических записей путем буферизации записей перед фактической передачей
данных. Для этого используется встроенный алгоритм, известный как Nagles
Algorithm. Он был разработан, для того, чтобы избежать проблем с
маленькими пакетами в медленных сетях.
Параметр имеет логический тип. По умолчанию значение параметра равно 1 (истина). В этом случае буферизация не используется. На медленных сетях в Linux это позволяет увеличить скорость передачи.
TcpNoNagle = 1
IPv6V6Only
Позволяет установить параметр сокета IPV6_V6ONLY. Включение
параметра ограничивает использование сокета исключительно протоколом
IPv6; для IPv4 и IPv6 должны использоваться отдельные сокеты. По
умолчанию установлено значение false.
По-умолчанию, сервер прослушивает пустой IPv6 адрес (::) и принимает все
входящие подключения, будь то IPv4 или IPv6 (IPv6V6Only = false).
Если параметр установлен в true, сервер, прослушивая явно или неявно
пустой IPv6 адрес, принимает только IPv6 подключения.
Адреса IPv6 отображаются как восемь четырёхзначных шестнадцатеричных чисел (то есть групп по четыре символа), разделённых двоеточием. В строке подключения необходимо заключать IPv6 адрес в квадратные скобки, чтобы разрешить неоднозначность с использованием двоеточия в качестве разделителя между IP адресом хоста и путем к базе данных. К примеру:
connect '[2014:1234::5]:test';
connect '[2014:1234::5]/3049:/srv/firebird/test.fdb';
RemoteBindAddress
Параметр RemoteBindAddress указывает адрес сетевого интерфейса, с которого будут разрешены
входящие подключения. При этом все входящие соединения через другие сетевые интерфейсы будут запрещены.
Параметр имеет строковый тип. По умолчанию его значение равно пустой строке (разрешены соединения с любого сетевого интерфейса).
RemoteBindAddress =
LockMemSize (per-database)
Значение параметра LockMemSize определяет объем памяти, которая
будет выделена менеджеру блокировок. В архитектуре Классик данный
параметр используется для начального распределения, далее таблица
расширяется динамически до предела памяти. В архитектуре Супер значение
параметра определяет начальное распределение и предел выделяемой памяти.
Параметр имеет целочисленный тип. Единица измерения – байты. Значение по умолчанию равно 1048576 байт. Минимальное значение равно 0.
Максимально допустимое значение равно 2147483647.
LockMemSize = 1048576
Размер таблицы блокировок влияет на:
Размер кэша страниц базы данных. Страница, помещенная в кэш, блокируется, как минимум, один раз, страницы, которые читаются несколькими клиентами, могут блокироваться несколько раз (архитектура Классик).
Число одновременных транзакций. Каждая транзакция имеет блокировку, которая ее идентифицирует. Блокировка используется для синхронизации транзакций, а также для того, чтобы распознать случаи, когда транзакция завершилась без подтверждения или отката.
События. Механизм оповещения о событиях основывается на блокировках. Число событий и число клиентов, ожидающих эти события, влияют на размер таблицы блокировок.
LockAcquireSpins (per-database)
В архитектуре сервера классик только одно клиентское соединение может
обратиться к таблице блокировки в одно и то же время. Доступ к таблице
блокировки управляется с помощью mutex(а). Mutex может быть
затребован в условном, либо безусловном режиме. Если mutex
затребован в условном режиме, то ожидание является отказом, и запрос
должен повториться. В безусловном режиме mutex будет ожидаться до
тех пор, пока не будет получен.
Параметр LockAcquireSpins имеет целочисленный тип. Его значение
устанавливает количество попыток, которые будут сделаны в условном
режиме. По умолчанию значение параметра равно 0, в этом случае будет
использоваться безусловный режим.
Предупреждение
LockAcquireSpins = 0
LockHashSlots (per-database)
Параметр LockHashSlots используется для настройки числа слотов
хэширования блокировок. Чем больше слотов используется, тем короче
получаются цепочки хэширования, что увеличивает производительность при
повышенной нагрузке.
Параметр имеет целочисленный тип. По умолчанию значение параметра равно 65521. В качестве значения рекомендуется указывать простое число, чтобы хэш-алгоритм производил хорошее распределение.
LockHashSlots = 65521
Увеличение значения данного параметра необходимо только при высокой
загрузке (одновременно с ним следует увеличить и параметр
LockMemSize на тот же процент). Он вычисляется с использованием
утилиты Lock Print по следующему принципу.
Запускаем утилиту
rdb_lock_print -d <database> | <alias>
В группе заголовка блока (LOCK_HEADER BLOCK), которая описывает
основную конфигурацию и состояние таблицы блокировок, смотрим значение
элемента Hash lengths (длина цепочки хэширования). Этот элемент
сообщает минимальную, среднюю и максимальную длину цепочки слотов. Чем
длиннее будут цепочки, тем медленнее будет работать менеджер блокировок.
Если среднее значение больше 3 или максимальное больше 10, то это
означает, что слотов недостаточно. Поэтому следует увеличить параметр
LockHashSlots в 2-3 раза (при этом взять простое число).
Примечание
EventMemSize (per-database)
Значение параметра EventMemSize определяет объем разделяемой памяти,
которая будет выделена менеджеру событий.
Параметр EventMemSize имеет целочисленный тип. Единица измерения –
байты. Значение по умолчанию равно 65356. Минимально допустимое значение
равно 0. Максимальное значение равно 2147483647.
EventMemSize = 65536
OptimizationStrategy
Значение параметра OptimizationStrategy определяет стратегию
оптимизации запросов. Параметр имеет строковый тип. Может принимать
следующие значения:
default- используется стратегия по умолчанию (является значением по умолчанию);first- для запросов выбирается такой план доступа, который позволяет максимально быстро получить первые записи в выборке;all- для запросов выбирается такой план доступа, который предполагает, что в запросе будут выбраны все записи.
OptimizationStrategy = default
SnapshotsMemSize (per-database)
Кол-во памяти для хранения снапшотов. Оно будет расти автоматически, если вы не используете экзотическую платформу, которая не является ни Windows, ни поддерживает системный вызов mmap. Каждый активный shapshot использует 16 байтов памяти.
SnapshotsMemSize = 64K
ClientBatchBuffer
Определяет размер буфера, используемого клиентским подключением для
пакетной передачи на сервер (при использовании пакетного API).
ClientBatchBuffer = 131072
DataTypeCompatibility
Задает уровень совместимости, определяющий, какие типы данных доступны
клиентскому API. В настоящее время доступны два варианта: 3.0 и 2.5.
Режим эмуляции 3.0 скрывает типы данных, появившиеся после версии 3.0, а
именно DECIMAL и NUMERIC с точностью 19 и выше, DECFLOAT,
TIME WITH TIME ZONE, TIMESTAMP WITH TIME ZONE). Соответствующие
значения возвращаются через типы данных, поддерживаемые версией 3.0.
Режим эмуляции 2.5 преобразует ещё и тип данных BOOLEAN. Этот
параметр позволяет устаревшим клиентским приложениям работать с версией
5.0 без перекомпиляции для обработки новых типов данных.
DataTypeCompatibility =
OutputRedirectionFile
Позволяет перенаправлять потоки сервера stdout/stderr в
пользовательский файл. По умолчанию эти потоки открываются сервером, но
выходные данные отбрасываются.
OutputRedirectionFile = " "
TipCacheBlockSize (per-database)
Количество выделяемой памяти для кэша каждого блока TIP. Понизьте это значения, если у вас небольшой TIP и вы хотите сберечь память. Увеличьте это значение, если вам нужен очень большой кэш и ограничения доступа к объектам ядра, выделенным для каждого блока (файлы, мьютексы и т. д.). Каждая кэшированная транзакция использует 8 байтов памяти.
TipCacheBlockSize = 4M
OnDisconnectTriggerTimeout (per-database)
Параметр OnDisconnectTriggerTimeout устанавливает число секунд, по
истечении которых выполнение триггера на событие DISCONNECT будет
прекращено. Параметр имеет целочисленный тип. Значение по умолчанию
равно 180. Значение 0 означает, что время выполнения триггера на событие
DISCONNECT не ограничено.
OnDisconnectTriggerTimeout = 180
SecurityLog
Параметр SecurityLog определяет, где регистрировать события безопасности.
Возможные значения параметра:
local- регистрировать события безопасности в локальных логах сервера (firebird.log, журналы аудита);
syslog- регистрировать события безопасности вsyslog;
both- регистрировать события безопасности в локальных логах сервера (firebird.log, журналы аудита) и вsyslog.
SecurityLog = local
MaxStatementCacheSize
Определяет максимальный объем памяти, используемый для кэширования неиспользуемых скомпилированных операторов DSQL. Значение ноль означает, что кэширование не используется. Значение по умолчанию - 2 мегабайта.
MaxStatementCacheSize = 2Мб
DefaultProfilerPlugin
Определяет плагин профайлера по умолчанию, используемый для профилирования с помощью пакета RDB$PROFILER.
DefaultProfilerPlugin = Default_Profiler
OptimizeForFirstRows
Определяет стратегию оптимизации запросов: ускорить получение первых строк или всех.
Значение false соответствует стратегии ALL ROWS, а true соответствует стратегии FIRST ROWS.
По умолчанию оптимизатор направлен на получение всех строк.
OptimizeForFirstRows = false
OuterJoinConversion
Определяет, может ли оптимизатор преобразовывать OUTER-соединения в INNER-соединения при условии,
что такое преобразование возможно с точки зрения результатов запроса.
По умолчанию включено. Может быть отключено для упрощения процесса миграции, если
OUTER-соединения намеренно используются в SQL-запросах (например, в качестве подсказок
оптимизатора), даже если известно, что они семантически эквивалентны INNER-соединениям.
OuterJoinConversion = true
SubQueryConversion
Параметр определяет, следует ли объединять подзапросы IN/ANY/EXISTS
с внешним запросом с помощью алгоритма semi-join,
если такое преобразование возможно.
Включив эту опцию можно улучшить производительность за счет того, что подзапрос обрабатывается только один раз и затем кэшируется. Однако в некоторых случаях это может привести к ухудшению производительности, например, когда подзапрос возвращает много строк. По умолчанию включено.
SubQueryConversion = true
LoginLockoutTime
Параметр LoginLockoutTime устанавливает время в минутах, на которое будет заблокирован пользователь,
если количество неудачных попыток аутентификации превышает значение MAX_FAILED_COUNT, заданное в политике безопасности.
Параметр LoginLockoutTime работает, только если настроено использование политик безопасности.
По умолчанию LoginLockoutTime = 0, что означает постоянную блокировку. Разблокировать пользователя можно с помощью оператора RESET USER.
Выполнить этот оператор может только пользователь, обладающий административными привилегиями в БД безопасности.
LoginLockoutTime = 0
6.2. Настройки ядра
CpuAffinityMask
Параметр CpuAffinityMask позволяет указать, какие процессоры будут использоваться сервером (для ОС Windows).
Предупреждение
Параметр имеет целочисленный тип. Значение параметра соответствует элементам битового массива, в котором каждый бит представляет центральный процессор. Таким образом, чтобы использовать только первый процессор, значение параметра должно быть равно 1. Чтобы использовать и центральный процессор 1, и центральный процессор 2 - 3. Чтобы использовать центральный процессор 2, и центральный процессор 3 - 6. Значение по умолчанию равно 0.
При наличии в системе производительных (Performance) и энергоэффективных (Efficient) ядер,
значение параметра по умолчанию означает использование сервером только производительных ядер (для Windows 10 и выше).
CpuAffinityMask = 0
GCPolicy (per-database)
Параметр GCPolicy используется для управления работой «сборщика
мусора». Параметр имеет строковый тип. Возможные значения параметра:
background- сборщик мусора работает как фоновый, собирая мусор в отдельном потоке;cooperative- сборщик мусора работает в оперативном режиме, собирая мусор немедленно при чтении мусорных версий;combined- сборщик мусора работает в оперативном режиме, но если мусор собрать не удается, то о замусоренных страницах сигнализируется фоновому сборщику мусора.
По умолчанию в архитектуре Супер сервера «сборщик мусора» работает в комбинированном режиме. В архитектуре Классик сервера этот параметр игнорируется, а «сборщик мусора» всегда работает в оперативном режиме.
GCPolicy = combined
SecurityDatabase (per-database)
Определяет имя и расположение базы данных безопасности, в которой хранятся имена пользователей и пароли, используемые сервером для проверки удаленных подключений.
По-умолчанию в firebird.conf:
SecurityDatabase = $(dir_secDb)/security5.fdb
Параметр может быть переопределен для определенной базы данных в файле
databases.conf.
6.3. Настройки для многопоточной работы
MaxParallelWorkers
Максимальное количество параллельных потоков, которое может создать
ядро. Этот параметр работает только для рестора (не для бэкапа). Для
рестора параллельная обработка реализована только при построении
индексов. По умолчанию MaxParallelWorkers = 1, т.е. параллельное
создание индексов отключено, даже если в ресторе задан ключ -PAR.
Допустимые значения: от 1 до 64. Другие значения будут проигнорированы и по умолчанию использоваться 1.
MaxParallelWorkers = 8
ParallelWorkers
Число потоков, используемых рестором по умолчанию, если не задана опция
-PAR <n> в gbak.
Допустимые значения: от 1 до MaxParallelWorkers. Другие значения
будут проигнорированы и по умолчанию использоваться 1.
ParallelWorkers = 4
6.4. Настройки для Windows-систем
GuardianOption
Параметр определяет должен ли Guardian перезапускать сервер после
того, как его работа была завершена неправильно.
Параметр имеет логический тип. Значение по умолчанию равно 1 (истина).
Для того, чтобы отключить Guardian следует выставить значение параметра равным 0 (ложь).
GuardianOption = 1
ProcessPriorityLevel
Параметр определяет уровень приоритетов процессов сервера «РЕД База Данных». Параметр имеет целочисленный тип и может принимать значения:
0 – нормальный приоритет;
положительное значение – повышенный приоритет;
отрицательное значение – пониженный приоритет.
Предупреждение
ProcessPriorityLevel = 0
IpcName
Параметр IpcName определяет имя области разделяемой памяти используемой
в качестве транспортного канала в локальном протоколе. Параметр имеет
строковый тип. Значение по умолчанию равно FIREBIRD.
IpcName = FIREBIRD
Предупреждение
Global, только если он выполняется под учетной записью с привилегией
SE_CREATE_GLOBAL_NAME. Это означает, что, если вы работаете под
ограниченной учетной записью в Vista, XP SP2 или 2000 SP4, возможность
использования локального протокола для других сеансов будет недоступна.6.5. Настройки для Unix/Linux систем
Redirection
Параметр Redirection используется для отключения защиты от переадресации
запросов на другие сервера. Возможность переадресации запросов на
другие серверы изначально присутствовала в InterBase. Но она была
исключена корпорацией Borland в InterBase 6.0 после доработки
добавившей SQL-диалекты. Возможность перенаправления запросов была
восстановлена в Firebird 2.0. Но на сегодняшний день использование этой
возможности (прокси сервер) представляет угрозу безопасности. Например,
вы используете защищенный сервер «РЕД База Данных», доступ к которому
осуществляется из глобальной сети. В этом случае, если у сервера есть
доступ к локальной сети, то он будет исполнять роль шлюза для входящих
запросов типа:
firebird.your.domain.com:internal_server:/private/database.fdb
При этом злоумышленнику достаточно знать имя или IP-адрес хоста вашей локальной сети, потому что для соединения не требуется знать логин и пароль на внешнем сервере. Такой шлюз позволяет обойти систему сетевой защиты, установленную в вашей локальной сети.
Параметр имеет логический тип. Значение по умолчанию равно 0 (ложь). В этом случае возможность перенаправления запросов отключена. Для включения этой опции следует значение параметра выставить равным 1 (истина).
Redirection = 0
6.6. Настройки архитектуры
ServerMode
Определяет архитектуру сервера.
Super: исключительно один серверный процесс обслуживает все подключения, используя потоки для обработки запросов; общий пул для всех соединений; общий кэш страниц на уровне базы.
Superclassic: базы данных открываются одним серверным процессом, но доступ не исключительный - embedded процесс может открыть одновременно ту же базу; подключения обрабатываются потоками, запущенными из общего пула, каждый из которых имеет свой собственный страничный кэш базы данных.
Classic: отдельный процесс на каждое соединение с БД; каждая база данных может быть открыта несколькими процессами (включая локальные для embedded доступа); отдельный кэш страниц на каждое соединение
ServerMode = Super
6.7. Настройки пула внешних подключений
ExtConnPoolSize
Устанавливает максимальное количество бездействующих соединений в пуле внешних соединений. Допустимые значения от 0 до 1000. Нулевое значение обозначает что пул выключен.
ExtConnPoolSize = 0
ExtConnPoolLifeTime
Устанавливает время жизни бездействующих соединений в пуле внешних соединений. Допустимые значения от 1 секунды до 24 часов (86400 секунд).
ExtConnPoolLifeTime = 7200
MemoryWipePasses
Параметр MemoryWipePasses используется для настройки необходимости и
метода обезличивания освобождаемой сервером оперативной памяти и
дискового пространства.
Предупреждение
Параметр имеет целочисленный тип. Значение по умолчанию равно 0, это означает, что обезличивание памяти отключено. Возможные значения:
0 — обезличивание не происходит;
1 — происходит обнуление памяти;
>1 — происходит чередование записи 0xFF и 0x00 в освобождаемую память, последний проход при этом в любом случае заполняет блок нулями.
MemoryWipePasses = 0
MaxOpenFileBlobs
Параметр MaxOpenFileBlobs ограничивает число одновременно открытых
файлов BLOB. Когда количество открытых файлов достигнет этого предела,
некоторые из них будут закрыты. Нулевое значение означает, что предела
нет.
MaxOpenFileBlobs = 0
6.8. Настройки LDAP
LDAPServer
Задаёт адрес сервера LDAP, используемый для хранения учётной
информации пользователей. Можно указать несколько серверов, используя ";" в качестве разделителя.
При неуспешном подключении будет выполнена попытка соединиться со следующим сервером в списке.
По умолчанию задано пустое значение, т.е. сервер LDAP не используется, и учётная информация ищется только в БД безопасности.
LDAPServer = 192.168.1.1
LDAPConnectionRetries
Параметр LDAPConnectionRetries задаёт максимальное количество попыток подключения к серверам, указанным в LDAPServer.
Попытка считается неуспешной, если не удалось подключиться ни к одному серверу из списка. Минимальное значение равно 1.
По умолчанию задано LDAPConnectionRetries = 3.
LDAPConnectionRetries = 3
LDAPDomain
Задаёт имя домена, в котором происходит аутентификация. Если
аутентификация выполняется методом bind, то СУБД сначала попытается
подключиться с именем пользователя в том виде, в котором его передал
клиент (например, Ivan.Petrov). Если таким способом подключиться не
получилось, то при заданном параметре LDAPDomain СУБД сделает
bind ещё раз с именем пользователя в формате
<имя пользователя>@<значение LDAPDomain> (например,
Ivan.Petrov@example.com).
Также ветка, определяемая доменом в параметре LDAPDomain, будет
использована как база для поиска пользователей, если не задан параметр
LDAPUserBase.
LDAPDomain = example.com
LDAPEncryption
Тип шифрования, используемый при подключении к серверу LDAP. Может
принимать три значения: None, SSL, TLS.
None– незащищённое подключение к порту 389.SSL– подключение кLDAPчерезSSLк порту 636.TLS– подключение сTLS-шифрованием к порту 389.
По умолчанию используется незащищённое подключение.
Сертификат сервера LDAP будет проверяться, если параметр
VerifyLdapServer не отключен.
LDAPEncryption = None
VerifyLdapServer
Включает или отключает проверку сертификата сервера LDAP при включении
LDAPEncryption.
VerifyLdapServer = 1
LDAPUserDN
DN пользователя, от имени которого сервер будет подключаться к
LDAP для аутентификации других пользователей. Этот пользователь
должен иметь права на чтение атрибутов LDAP, используемых сервером
«РЕД База Данных». Если параметр не задан, сервер будет делать bind
к LDAP с именем и паролем пользователя, указанным клиентом, чтобы
пройти аутентификацию.
LDAPUserDN = uid=rdb,ou=people,dc=example,dc=com
LDAPUserDN = cn=rdb,cn=users,dc=example,dc=com
LDAPPassword
Пароль пользователя, определенного в атрибуте LDAPUserDN, от имени
которого сервер будет подключаться к LDAP для аутентификации других
пользователей.
LDAPPassword = 123qwe
LDAPUserBase
Ветка в LDAP, которая будет использована как стартовая для поиска
пользователей. При аутентификации имена пользователей будут искаться в
этой ветке и рекурсивно во всех ветках, находящихся в ней до первого
совпадения. Также она будет использована для поиска пользователей при
получении их групп или атрибутов.
Если этот параметр не задан, то в качестве базы для поиска пользователей
будет использована ветка, определяемая доменом в параметре
LDAPDomain.
LDAPUserBase = ou=people,dc=example,dc=com
LDAPUserBase = cn=users,dc=example,dc=com
LDAPUserPrefix
Название атрибута, в котором хранится имя пользователя в его DN в
LDAP. В основном используется, когда не задан LDAPUserDN. Если
параметр не задан, клиентская библиотека fbclient будет шифровать
пароль пользователя и для аутентификации будут использоваться пароли в
атрибутах:
"rdbPassword"; "rdbSrpVerifier"; "rdbSrpSalt"; "rdbSecurePassword"; "rdbPasswordAlgorithm".
LDAPUserPrefix = uid
LDAPUserBase = cn
LDAPUserFilter
Фильтр для поиска учетных записей пользователей. Здесь шаблон %u
будет заменен на имя пользователя, указанное в процессе аутентификации.
LDAPUserFilter = &(objectClass=user)(cn=%u)
LDAPUserFilter = uid=%u
LDAPGroupBase
Ветка в LDAP, которая будет использована как стартовая для поиска
групп пользователей. Поиск групп будет выполняться рекурсивно. Группы
пользователя будут преобразованы в его роли на сервере.
LDAPGroupBase = ou=group,dc=example,dc=com
LDAPGroupBase = cn=users,dc=example,dc=com
LDAPMembershipFilter
Фильтр, который будет использован при поиске в LDAP групп, к которым
принадлежит пользователь.
Существует три основные схемы, используемые в LDAP для указания
членства в группах. В соответствии с используемой схемой нужно
формировать фильтр. В нём в качестве имени предполагаемого пользователя
указывается шаблон %u, а в качестве DN пользователя указывается
%d. Если указано пустое значение, принадлежность пользователя к
группам не определяется.
LDAPMembershipFilter = memberUid=%u
LDAPMembershipFilter = member=cn=%u,cn=users,dc=example,dc=com
LDAPMembershipFilter = member=%d
LDAPUserCertificate
Атрибут LDAP, в котором будет храниться сертификат пользователя.
Если данный параметр задан, то при многофакторном подключении
сертификат, предъявленный пользователем, должен соответствовать его
сертификату в LDAP (если настроены параметры подключения к
LDAP-серверу). Сертификат должен храниться в двоичном формате (DER).
LDAPUserCertificate = userCertificate;
LDAPPasswordSync
Данный параметр задаёт синхронизацию пароля пользователя в БД
безопасности и в LDAP. Здесь перечисляются атрибуты, которые должны
меняться в LDAP при смене пароля пользователя в БД безопасности.
Допускается указание через «;» следующих атрибутов:
rdbPassword— традиционный пароль пользователя в СУБД «РЕД База Данных»;rdbSecurePassword— защищённый пароль пользователя в СУБД «Ред База Данных»;userPassword— пароль пользователя, используемый обычно в UNIX-системах;sambaLMPassword— пароль пользователя, используемый SAMBA-протоколом;rdbSrpVerifier— пароль пользователя для методаSrp;sambaNTPassword— пароль пользователя, используемый SAMBA-протоколом.
По умолчанию выполняется синхронизация всех паролей.
LDAPPasswordSync = rdbPassword;userPassword
LDAPReadOnly
Заданный параметр может перевести LDAP-сервер в режим только для чтения
(значение 1). Тогда параметр LDAPPasswordSync будет игнорироваться.
По умолчанию используется значение 0.
LDAPReadOnly = 0
6.9. Настройки безопасности
LoginFailureDelay
Задаёт время в секундах, на которое задерживается подключение к БД безопасности. Задержка добавляется, когда количество неудачных попыток для конкретного пользователя превышает максимальное число неудачных попыток (на данный момент 4) или когда общее количество неудачных попыток входа для всех пользователей превышает максимальное число одновременных сбоев (на данный момент 16). Счетчик неудачных попыток сбрасывается, если в указанном интервале нет сбоев входа в систему.
LoginFailureDelay = 8
ServerCertificate
Задаёт алиас сертификата, которым сервер будет удостоверять свою
подлинность клиенту. Этот сертификат должен быть связан с
соответствующим закрытым ключем. Алиас — это строка, в которой через
запятую перечислены имя владельца сертификата (SubjectCN), издатель
сертификата (IssuerCN) и серийный номер сертификата в
шестнадцатеричном виде. Сервер будет искать такой сертификат в хранилище
пользователя, от имени которого он запущен и в хранилище компьютера.
ServerCertificate = test,Test Center CRYPTO-PRO,143dd54900020002b231
ServerPrivatePin
В этом параметре задаётся пароль закрытого ключа из ключевого контейнера, используемого сервером. Если закрытый ключ не защищён паролем, указывается пустая строка.
ServerPrivatePin = mypass
TrustedCertificate
Указывает алиас доверенного сертификата. Если пользователь предъявляет сертификат, совпадающий с доверенным, для этого сертификата не выполняется верификация, а пользователь может указывать своё имя без пароля. По умолчанию доверенный сертификат не указан.
TrustedCertificate = test,Test Center CRYPTO-PRO,143dd54900020002b231
CertUsernameDN
Задаёт название атрибута в секции Subject у сертификата, который
содержит имя владельца. По умолчанию используется атрибут CN.
CertUsernameDN = CN
CertUsernamePattern
Здесь указывается регулярное выражение в синтаксисе SQL, которое используется для извлечения имени пользователя из атрибута владельца в сертификате. По умолчанию указывается пустая строка, что означает использование значения атрибута целиком.
CertUsernamePattern = [a-zA-Z0-9.]+
VerifyCertificateChain
Указывается нужно ли выполнять проверку цепочки сертификации предъявленного пользователем сертификата. Чтобы проверка могла быть выполнена, сервер должен иметь доступ к центру, выдавшему сертификат пользователя или доступ к локальному списку отзыва сертификатов. По умолчанию используется значение 1, т.е. проверка включена.
VerifyCertificateChain = 1
TraceAuthentication
Включает/отключает запись отладочных сообщений о процессе многофакторной
аутентификации в firebird.log.
TraceAuthentication = 0
HashesFile
Для того, чтобы включить контроль целостности файлов сервера, необходимо указать имя файла с хэш-суммами подконтрольных файлов сервера «РЕД База Данных». Относительный путь берется от корневой директории сервера.
Параметр имеет строковый тип. Значение по умолчанию равно hashes.
Предупреждение
HashesFile = hashes
IntegrityCheckInterval
Задает интервал времени регулярной проверки целостности файлов. Нулевое значение параметра отключает регулярную проверку. Параметр имеет целочисленный тип и измеряется в секундах. Значение по умолчанию равно 0.
Предупреждение
HashesFile.IntegrityCheckInterval = 10
IntegrityShutdownAttempts
Задает количество попыток прекратить работу СУБД безопасными средствами в случае несовпадения хэшей. Параметр имеет целочисленный тип. Значение по умолчанию равно 5.
Предупреждение
IntegrityCheckInterval.IntegrityShutdownAttempts = 2
GssServerKeyfile
Устанавливает путь к файлу ключа, которым сервис СУБД аутентифицируется в Kerberos. По умолчанию путь не задан.
KrbServerKeyfile = /etc/krb5.keytab
GssServiceName
Устанавливает название сервиса СУБД на сервере Kerberos. По умолчанию установлено следующее значение:
GssServiceName = rdb_server
GssHostName
Устанавливает имя хоста сервера СУБД для аутентификации через GSS. По умолчанию используется localhost.
GssHostName =
GSSLibrary
Поддерживается также библиотека libvas-gssapi.so от One Identity
Authentication Services. При её использовании СУБД после аутентификации
определяет группы, назначенные пользователю в домене, и назначает ему
одноимённые роли, существующие в базе данных.
GSSLibrary = libgssapi_krb5.so
Classpath
В этом параметре указываются пути к jar-файлам, хранящим пользовательские классы с методами, которые будут использоваться в качестве тела внешних процедур, функций и триггеров или которые реализуют функции полнотекстового поиска.
Classpath = ["/path/to/jars", "myjar"]
Этот параметр можно настроить отдельно для каждой базы данных. Значения
указанные в Classpath в databases.conf добавляются к значениям
указанным в firebird.conf. Если список jar для какой-либо базы
данных нужно полностью заменить, то нужно использовать опцию
OverrideClasspath в databases.conf.
6.10. Настройка с учетом оборудования и нагрузки на СУБД
На производительность СУБД могут повлиять следующие параметры:
FileSystemCacheThresholdДля архитектуры классик рекомендуется установить это значение больше страничного кэша, чтобы включить кэширование на уровне файловой системы. Для архитектуры суперсервер при наличии достаточного объема оперативной памяти также рекомендуется установить это значение больше страничного кэша. Если памяти недостаточно, то лучше выключить кэширование на уровне файловой системы, установив значение
FileSystemCacheThresholdв 0.
FileSystemCacheSizeВ
Windowsпри избыточном использовании памяти под файловый кэш рекомендуется ограничить это использование, установив значение данного параметра, например в 60%.LockHashSlotsБольшая длина хэш-таблицы блокировок, позволяющая за счет небольшого увеличения объема памяти под эту таблицу, ускорить работу с ней. Для архитектуры классик рекомендуется значение 65521. Для архитектуры суперсервер рекомендуется значение 30011.
TempBlockSizeМинимальный размер блока сортировки и шаг его расширения при необходимости. Позволяет несколько ускорить работу алгоритма сортировки за счёт выделения памяти большими блоками. При наличии больших сортировок рекомендуется увеличить значение параметра до 2097152.
TempCacheLimit = 4194304000Максимальный размер временного пространства, который может быть закэширован. При наличии достаточного объема памяти позволяет хранить в ней (вместо выгрузки на диск) результаты сортировок, выгрузок
blob-ов и т.д. Т.к. у каждого процесса сервера собственный кэш, может потреблять большие объемы памяти на классической архитектуре.Значение параметра
TempCacheLimitрекомендуеся сделать больше суммарного размера временных файлов в каталогахTempDirectories. При наличии свободной памяти можно увеличить значение параметра и понаблюдать за эффектом с помощью аудита.DeadlockTimeout = 100Если известно, что архитектура приложения не допускает дедлоков, можно увеличить этот параметр чтобы сервер не сканировал таблицу блокировок каждые 10 секунд при подозрении на потенциальный дедлок. Количество сканирований и найденных дедлоков отображается в заголовке
rdb_lock_print. Если первый параметр значительно больше нуля, а второй - очень близок к нему, значит характер работы прикладной части предполагает ситуации блокировок, которые дедлоками не являются, но вынуждают СУБД выполнять их поиск. В этом случае можно увеличить значениеDeadlockTimeoutчтобы сервер не выполнял лишнюю работу.DefaultDbCachePages = 32768Количество страниц, используемых процессом в качестве кэша.
ClassicиSuperClassicвыделяют 1024 страницы на каждое клиентское соединение для каждой базы данных. Увеличение позволяет до определенной степени сократить обмен данными с диском. Т.к. у каждого процесса классика будет собственный кэш, нужно учитывать общее потребление памяти. Значительное увеличение обычно не даёт эффекта.По умолчанию
SuperServerвыделяет 32768 страниц для каждой базы данных. Для архитектуры суперсервер значение параметра рекомендуется рассчитать по формуле:\[\texttt{DefaultDbCachePages} = \frac{\texttt{MemorySize}}{\texttt{4*PageSize}},\]где
MemorySize- общий объём памяти;PageSizeОбъём страницы. Для архитектуры классик значение параметра рекомендуется рассчитать по формуле:
\[\texttt{DefaultDbCachePages} = \frac{\texttt{MemorySize}}{\texttt{4*ConnNum*PageSize}},\]где
MemorySize- общий объём памяти;PageSize- объём страницы;ConnNum- предполагаемое максимальное количество соединений.LockAcquireSpins = 100Позволяет при недоступности мьютекса на таблицу блокировок не усыплять запрашивающий его процесс (дорогостоящая операция), а проверять этот мьютекс на доступность указанное количество раз перед усыплением. При большом количестве процессов с короткими блокировками (OLTP-нагрузка) позволяет несколько увеличить производительность сервера за счет более активного использования CPU.
Для архитектуры классик при большом значении
Mutex waitв выводеrdb_lock_print(>20 %) рекомендуется включить эту настройку и после перезагрузки сервера посмотреть уменьшится ли значениеMutex wait.
WireCrypt = DisabledОтключает шифрование сетевого трафика.
LockMemSizeЗначение параметра определяет объем памяти, которая будет выделена менеджеру блокировок. Для архитектуры классик рекомендуется значение 20971520. Для суперсервера изменять не требуется.
6.11. Настройка Linux
Для увеличения допустимого числа процессов СУБД и количества открытых ими файлов:
в
/lib/systemd/system/firebird.serviceлимитамLimitNPROCиLimitNOFILEнеобходимо установить значение 10000параметр ядра vm.max_map_count необходимо увеличить до 256000, написав в
/etc/sysctl.confстроку:vm.max_map_count=256000
для
systemd-систем в/usr/lib/systemd/firebird.service:Environment = FIREBIRD_TMP=/path/to/tmp
При наличии достаточного объема RAM можно смонтировать в память временный каталог, куда сервер будет выгружать файлы:
дописать в
/etc/fstabстрокуtmpfs /tmp tmpfs size=32G 0 0
где 32G - максимальный размер, до которого может расшириться временный каталог в памяти;
Настроить
Transparent Huge Pages:echo madvise >/sys/kernel/mm/transparent_hugepage/enabled echo madvise >/sys/kernel/mm/transparent_hugepage/defrag
создать файл
/etc/rc.d/rc.local, добавить в него:echo madvise > /sys/kernel/mm/transparent_hugepage/enabled echo madvise > /sys/kernel/mm/transparent_hugepage/defrag
после чего выполнить:
chmod u+x /etc/rc.d/rc.local
6.12. Настройка работы с Java методами
Предупреждение
Механизм java-security устарел и будет удален в РЕД Базе Данных 6.
В «РЕД База Данных» реализована возможность создания внешних процедур,
функций и триггеров с использованием языка программирования Java. Они
могут располагаться в jar-файлах. В «РЕД База Данных» для работы с этими
файлами используется движок JavaEngine, который позволяет запускать
функции, процедуры и триггеры на платформе Java.
Для их использования необходимо установить JRE не ниже 11. А также настроить параметры взаимодействия сервера «РЕД База Данных» с виртуальной машиной Java.
В firebird.conf необходимо указать путь к JAVA_HOME:
JavaHome = /usr/lib/jvm/java-8-openjdk-amd64
В plugins.conf, который расположен в корневом каталоге установки сервера,
необходимо раскомментировать секции относящиеся к JavaEngine и указать путь до каталога с
jar-файлами (переменная JarDirs):
Plugin = JAVA {
Module = $(dir_plugins)/javaengine
Config = JAVA_config
}
Config = JAVA_config {
JavaHome = /usr/lib/jvm/java-openjdk
SecurityDatabase = $(this)/java-security.fdb
JvmArgsFile = $(this)/jvm.args
JarDirs = $(this)/jar
}
Внутренние классы, необходимые для JavaEngine, находятся в папке
/jar установки сервера.
Классы, содержащие методы, которые будут использоваться в качестве тела
внешних процедур, функций и триггеров, необходимо скопировать в каталог,
указанный в переменной JarDirs в виде jar-файла.
Классы в файловой системе доступны всем базам данных, обрабатываемыми процессом RDB. По аналогии с сервером приложений они являются системными классами.
Более подробно о взаимодействиях с Java методами из базы данных описано в Руководстве по SQL.
6.13. Переменные окружения, служебные и временные файлы
Переменные окружения
Клиентские приложения РЕД Базы Данных могут использовать переменные среды для установки параметров программы. Эти переменные должны быть установлены таким образом, чтобы они были доступны приложению во время его работы.
Следующий список содержит краткое описание этих переменных и их использование:
ISC_USERИмя пользователя базы данных по умолчанию. Если этот параметр установлен, имя пользователя можно не указывать при подключении к базе данных через клиентские приложения и при запуске различных утилит (
gfix,gbak,gstatи др.).Устанавливается в паре с
ISC_PASSWORD(пользователь с таким именем и паролем должен быть заранее создан в базе данных).set ISC_USER = Hermes
ISC_PASSWORDПароль пользователя базы данных по умолчанию. Если этот параметр установлен, пароль пользователя можно не указывать при подключении к базе данных через клиентские приложения и при запуске различных утилит (
gfix,gbak,gstatи др.).Устанавливается в паре с
ISC_USER(пользователь с таким именем и паролем должен быть заранее создан в базе данных).set ISC_PASSWORD = Ichneumon
FIREBIRDКорневой каталог сервера РЕД Базы Данных.
Если РЕД База Данных устанавливается (или копируется) в каталог, отличный от каталога по умолчанию (в POSIX -
/opt/RedDatabase), указание переменной средыFIREBIRDпомогает клиентскому приложению связаться с правильным экземпляром сервера.set FIREBIRD = C:\mydir\RedDatabase
export FIREBIRD = /mydir/RDB
FIREBIRD_LOCKКаталог с файлами таблицы блокировок [1]_. По умолчанию все служебные файлы размещаются в одном каталоге. Для Windows это каталог
C:\ProgramData\reddatabase, а для POSIX –/tmp/reddatabase. Доступ к этому каталогу ограничен правами файловой системы.Предупреждение
Все процессы, которые открывают один и тот же файл базы данных должны работать с одним и тем же
FIREBIRD_LOCK. Несоблюдение этого правила гарантирует повреждение файла базы. По этой причине лучше никогда не менять местоположение по умолчанию разделяемых служебных файлов. Если вы хотите это сделать – воспользуйтесь символическими ссылками (утилитыmklinkна Windows илиlnдля POSIX).set FIREBIRD_LOCK = C:\mydir\RedDatabase\lockfiles
FIREBIRD_MSGКаталог, где находится файл с сообщениями сервера
firebird.msg. Обычно он находится в корневом каталоге установки сервера (в POSIX -/opt/RedDatabase), но может быть переопределен этой переменной окружения.set FIREBIRD_MSG = C:\mydir\RedDatabase\msg
FIREBIRD_TMP, TEMP, TMPКаталог с временными файлами [2]_. Если не заданы параметры конфигурации
TempDirectoriesиTempTableDirectory, СУБД РЕД База Данных создаёт временные файлы в каталоге, задаваемом переменными окруженияFIREBIRD_TMP,TEMP,TMP(в этом порядке), Если ни одна из этих переменных не установлена, то по умолчанию временные файлы создаются в каталогеc:\temp(Windows) или/tmp(POSIX). На Windows процессы сервиса РЕД Базы Данных используют, как правило, системный каталог временных файлов (C:\Windows\TEMP).set FIREBIRD_TMP = C:\RDBTEMP
LC_CTYPEУстанавливает системную кодировку (см. UNIX-утилиту
locale). Она считывается при запуске сервера и утилит и используется для конвертирования системной кодировки в UTF-8 (например различных путей).export LC_CTYPE=ru_RU.UTF-8
ISC_MSGSЗадаёт полный путь к файлу
firebird.msg. Обычно он находится в корневом каталоге установки сервера (в POSIX -/opt/RedDatabase).set ISC_MSGS = C:\mydir\RedDatabase\msg\firebird.msg
ICU_TIMEZONE_FILES_DIRЗадаёт путь к папке с файлами, которые содержат актуальные часовые пояса (
timezone). По умолчанию это каталогtzdataв корневом каталоге установки сервера (в POSIX -/opt/RedDatabase/tzdata).export ICU_TIMEZONE_FILES_DIR = /mydir/RDB/timezone
ISC_PATHЗадаёт путь к каталогу базы данных по умолчанию для автоматического подключения на удаленном сервере.
В ней указывается полный путь к нужному каталогу, включая имя хоста.
Если переменная задана, можно открывать базу данных без указания полного пути.
set ISC_PATH = localhost:D:\Databases
VISUAL, EDITORПеременные для работы в isql.
В них указывается команда вызова редактора или полный путь к редактору, который открывается для команды
edit;в isql.По умолчанию -
viв POSIX иNotepadв Windows.export EDITOR = kate
ISQL_HISTSIZEПеременная для работы в isql.
В интерактивном режиме работы isql история команд пишется в файл. По умолчанию максимальный размер истории ограничен 1000 строк. Изменить это ограничение можно с помощью этой переменной среды. В пакетном режиме история не пишется.
set ISQL_HISTSIZE = 2000
ENV_AUTH_CERT_ALIASАлиас сертификата пользователя для аутентификации на клиенте.
Если алиас сертификата явно не задан при подключении к базе данных через клиентское приложение, то он может быть считан из этой переменной.
Устанавливается в паре с
ENV_AUTH_STORE_PIN(еслиPINнеобходим).set ENV_AUTH_CERT_ALIAS = test,Test Center CRYPTO-PRO,143dd54900020002b231
ENV_AUTH_STORE_PINPIN(пароль закрытого ключа), если он необходим для получения закрытого ключа сертификата пользователя для аутентификации на клиенте.Устанавливается в паре с
ENV_AUTH_CERT_ALIAS.set ENV_AUTH_STORE_PIN = 123456
RDB_OID_TOKENТокен для аутентификации по протоколу
OpenIDConnect.Если токен не задан при подключении к базе данных через клиентское приложение, то он может быть считан из этой переменной.
set RDB_OID_TOKEN = "<токен>"
Служебные файлы
Для работы РЕД Базы Данных может требоваться достаточно большое пространство на диске для размещения временных и служебных файлов.
В основном, суммарный размер разделяемых служебных файлов СУБД РЕД База Данных не превышает сотен мегабайт – единиц гигабайт. Достаточно надёжная оценка сверху – от пяти до десяти гигабайт.
Все служебные файлы размещаются в одном каталоге. Для Windows это каталог
C:\ProgramData\reddatabase, а для POSIX – /tmp/reddatabase. Доступ к этому каталогу
ограничен правами файловой системы.
Все служебные и временные файлы СУБД РЕД База Данных используют префиксы rdb_ или
rdbЧИСЛО_, где ЧИСЛО – сокращённый номер версии (50).
В категорию служебных входят файлы менеджера блокировок (lock manager), данные таблиц мониторинга, буферы событий и сессий трассировок, также некоторые другие файлы, включая специальные файлы-флаги нулевого размера.
- Файлы менеджера блокировок
Начальный размер файлов менеджера блокировок (префикс
rdb_lock_) задаётся параметромLockMemSize. Архитектуре SuperServer требуется хранить в этом файле меньше данных, чем архитектурам Classic и SuperClassic. Типичный размер локфайлов находится в пределах 20-150 МБ, но при большом количестве подключений, в архитектурах Classic и SuperClassic, размер лок-файла может приближаться к двум гигабайтам.Лок-файл создаётся при открытии файла базы и удаляется при его закрытии. По умолчанию файл базы закрывается после отключении последнего клиента, но начиная с РЕД Базы Данных 3 можно установить «время удержания» (linger time) DDL-командой.
- Файлы таблиц мониторинга
Все таблицы мониторинга (виртуальные) заполняются при первом обращении к любой из них и сохранённые данные не меняются до завершения транзакции. Размер «снимков» таблиц мониторинга (префикс
rdb_monitor_) зависит от приложения, его активности и от количества обращений к таблицам мониторинга из разных подключений и транзакций.- Файлы трассировки
Файл
rdbЧИСЛО_traceсодержит «ссылку» на активный файл с информацией о сеансах трассировки.Файл с префиксом
rdb_trace_содержит информацию о сеансах трассировки. Таких файлов может быть множество, но «активен» будет только один из них. Файлы с префиксомrdb_trace.– буферы сессий трассировки. Их максимальный размер ограничен параметромMaxUserTraceLogSize. Если клиент не успевает вычитывать данные, то по достижении предела (10 МБ по умолчанию), трассировка автоматически приостанавливается.- Файлы событий
Файлы с префиксом
rdb_event_представляют собой буферы, хранящие недоставленные события, если приложение на них подписано.- Файлы кэша сопоставления имен
Файл
rdbЧИСЛО_user_mappingиспользуется для управления кэшем сопоставления имён в процессах СУБД РЕД Базы Данных.- Файлы флаги
В POSIX-системах дополнительно используются специальные файлы-флаги нулевого размера –
fb_rename_guard,rdb_initиrdb_port_НОМЕР. Эти файлы требуются при запуске процессов СУБД РЕД Базы Данных.
Временные файлы
Местоположение временных объектов (кроме данных временных таблиц и блобов) управляется
параметром конфигурации TempDirectories, а также параметром TempTableDirectory (для данных временных таблиц и блобов).
Если какой-то из этих параметров (или оба) не задан или указанный каталог недоступен,
будет использован каталог из переменных окружения FIREBIRD_TMP, TEMP, TMP (в этом порядке).
Если ни одна из этих переменных не установлена, то по умолчанию временные файлы создаются в каталоге
C:\temp (Windows) или /tmp (POSIX). На Windows процесс(ы) сервиса RedDatabase
используют, как правило, системный каталог временных файлов (C:\Windows\TEMP).
Префиксы временных файлов:
rdb_table_- данные временных таблиц;rdb_blob_- данные временных блобов;rdb_undo_- undo-логи;rdb_recbuf_- кэш курсоров;rdb_merge_- хэш-соединения;rdb_sort_- блоки сортировок;rdb_tpc_- новые режимы изоляции в транзакциях;rdb_snap_- снимки, согласованные по чтению для разных подключений.