*_LOCK и *_MSG
FIREBIRD_LOCK (INTERBASE_LOCK В версии 1,0.x) устанавливает расположение файла блокировок. FIREBIRD_MSG (INTERBASE_MSG в версии 1.0.x) устанавливает расположение файла сообщений Firebird.
Эти две переменные независимы друг от друга, они могут указывать различные размещения файлов. Значение должно указывать полный путь, который существует в физической файловой системе хост-машины.
TMP
Пространство сортировки на серверной машине
Пространство сортировки - это место на диске, где сервер сохраняет промежуточные результаты (во временных файлах) для запросов, которые требуют сортировки или используют агрегатные функции. Firebird 1.0.x для этого использует только дисковые файлы. Firebird 1.5, если может, сохраняет эти файлы в RAM и отправляет их на диск только в том случае, если оперативная память исчерпана.
Глобальная переменная окружения TMP (или TEMP В некоторых системах) указывает каталог на сервере, где приложения должны сохранять временные файлы. Firebird попытается сохранить временные файлы сортировки именно здесь, если не определена переменная окружения FIREBIRD_TMP (см. разд. "FIREBIRD TMP") и в файле конфигурации Firebird не указано пространство сортировки (см. переменные TempDirectories и TMP_DIRECTORY В главе 36).
Файлы скриптов isql на клиенте
Интерактивная утилита командной строки isql предоставляет возможность записывать последовательность интерактивных команд SQL в файл скрипта при использовании переключателя OUTPUT. На клиентской машине переменная TMP задает расположение этих файлов скриптов, если не было указано другого абсолютного пути. Если переменная TMP не установлена, то клиент Firebird использует любой другой временный каталог, который будет найден в локальной системе, обычно tmp в файловой системе клиента Linux/UNIX или C:\Temp в клиенте Windows.
Файл конфигурации Firebird
Firebird не требует постоянной сложной реконфигурации, которая необходима другими тяжеловесными РСУБД. Тем не менее целый ряд вариантов конфигурирования доступен для настройки сервера Firebird и хост-системы, на которой он выполняется, под ваши специальные требования.
Файл конфигурации Firebird называется firebird.conf для всех версий Firebird 1.5 и выше. В предыдущих версиях его имя зависело от операционной системы:
* isc config - в Linux/UNIX;
* ibconfig - в Windows.
В версии 1.5 было добавлено несколько новых параметров.
Когда стартует сервер Firebird, он читает файл конфигурации и настраивает свои флаги времени выполнения (runtime flags), если файл конфигурации содержит значения, отличные от установленных по умолчанию. Данные из файла больше не будут считываться, пока не произойдет новый запуск сервера. Параметры конфигурации по умолчанию и их значения содержатся в файле конфигурации и закомментированы символом #. Нет необходимости убирать комментарий, чтобы сделать значения по умолчанию видимыми процедуре запуска сервера.
Изменение параметров конфигурации
Нет необходимости изменять значения по умолчанию, если только вы не собираетесь настроить некоторые из них. Это не рекомендуется делать, если вы не в полной мере понимаете, к чему это может привести.
Отдельные установки конфигурации по умолчанию, которые могут быть полезными для некоторых существующих приложений или инсталляций не по умолчанию, обсуждаются здесь вкратце. Полное описание параметров конфигурации см. в главе 36. Файл конфигурации можно редактировать любым текстовым редактором (например, vim в Linux или Блокнот в Windows). Не копируйте этот файл с машины Windows в Linux и наоборот, поскольку эти системы по-разному сохраняют символы перевода строки.
Записи параметров в файле firebird.conf представлены в форме:
имя_параметра = значение
где имя_параметра - строка, содержащая имя параметра (без пробелов), а значение - это число, логическая константа (1=Истина, 0=Ложь) или строка, которые задают значение параметра.
Для задания параметру значения, отличающегося от значения по умолчанию, удалите символ примечания (#) и отредактируйте значение.
Имена параметров и синтаксис в файле ibconfig/isc_config для Firebird 1,0.x отличаются от того, что может содержаться в firebird.conf. Формат, размер и количество параметров являются более ограниченными.
Формат в ibconfig/isc conflg:
имя_параметра значение
где промежуток между именем и значением может быть символами табуляции и пробелами (по желанию, как больше нравится). Каждая строка в файле ограничена 80 символами. Неиспользуемые параметры и инсталляционные значения по умолчанию закомментированы с помощью символа #.
Помните, что в Linux параметры чувствительны к регистру.
! ! !
ПРИМЕЧАНИЕ. Вы можете редактировать файл конфигурации и когда сервер запущен. Для активации изменений нужно остановить и заново запустить сервер.
. ! .
Корневой каталог Firebird
Корневой каталог инсталляции Firebird может использоваться в разных ситуациях - при инсталляции как используемый сервером атрибут, для параметров конфигурации и для клиентов. Поскольку есть разные способы сообщения серверу, где можно найти значение этого атрибута, разработчики и системные администраторы для его правильного определения должны знать, в каком порядке сервер находит это значение.
1. На любой платформе сервер в первую очередь смотрит глобальную переменную окружения FIREBIRD. Если он находит эту переменную, ее значение будет использовано без всяких условий.
2. Если переменная окружения FIREBIRD отсутствует, то для платформ Windows сервер отыскивает ключ в реестре
HKEY_LOCAL_MACHINE\SOFTWARE\Firebird Project\Firebird Server\Instances
и смотрит поле oefauitinstance. Если он находит в данном поле правильный путь к каталогу, то использует это значение. Другие платформы не имеют подобного указателя.
3. Если корневой каталог все еще не найден, то предполагается, что временный корневой каталог располагается на один уровень выше каталога запущенного процесса (,.\ для Windows и ../ или ссылка на /proc/self/exe для POSIX, если доступно).
4. Теперь процедура запуска ищет в этом каталоге файл firebird.config. Если файл firebird.config найден, то процедура отыскивает параметр RootDirectory. Если параметр присутствует, его значение становится окончательно корневым каталогом, иначе промежуточное значение из n.3 становится окончательным значением.
! ! !
ВНИМАНИЕ! Если файл firebird.config не был найден на уровне, предшествующем запускаемому процессу, это может означать, что корневой каталог не был определен по причине нестандартной инсталляции. Сервер должен найти корневой каталог файлов. Если вам встретилась ошибка безопасности или ошибка файловой системы в процессе соединения или во время выполнения, вы должны пересмотреть ваши пути инсталляции, чтобы убедиться, что все действия, описанные в данном разделе, правильно определили корневой каталог файлов и подкаталоги.
. ! .
Параметры, связанные с доступом к файлам
Firebird имеет несколько параметров для защиты его файлов и баз данных от разрушающего или неавторизованного доступа. Если вы перемещаете приложение работы с базой данных или используете инструмент администратора для Firebird 1.5, вам следует обратиться к разд. "Файл конфигурации Firebird" в главе 36 для получения детальной информации об указанных далее параметрах.
* RootDirectory - может быть использован для изменения абсолютного пути к корневому каталогу в локальной файловой системе. Он должен оставаться закомментированным, если только вы не захотите изменить процедуру запуска, перекрыв путь к корневому каталогу инсталляции сервера Firebird (см. n. 3 в предыдущем разделе).
* DatabaseAccess - в Firebird 1.0.x сервер может соединяться с любой базой данных в его локальной файловой системе и всегда доступен приложениям, передающим абсолютный путь к файлу в файловой системе. Этот параметр был введен в версии 1.5, чтобы обеспечить более четкое управление безопасностью при доступе к файлам базы данных, а также для поддержки средства алиасов баз данных.
Инсталляция по умолчанию устанавливает значение параметра в Full, чтобы имитировать поведение Firebird версии 1,0.x. Альтернативные режимы могут ограничить доступ сервера только к базам данных с алиасами или к базам данных, размещенных в указанных каталогах файловой системы.
! ! !
ВНИМАНИЕ! Настоятельно рекомендуется установить этот режим и сделать доступным средство алиасов баз данных. Информацию об алиасах базы данных см. в главе 4.
. ! .
* ExtemaiFiieAccess - заменяет параметр EXTERNAL_FILE_DIRECTORY, введенный в версии 1,0. Этот параметр обеспечивает три уровня безопасности для External Files (внешние файлы - текстовые файлы фиксированного формата, к которым возможен доступ, как и к таблицам базы данных). Если вы переносите базу данных, в которой определены внешние файлы таблиц, вам нужно установить этот параметр для версии 1.5, потому что он отключен по умолчанию. Конфигурация необязательная, тем не менее рекомендуется для версии 1.0.x.
* UDFAccess - предназначен для защиты местоположения кода внешних модулей. Он заменяет не только необязательный параметр версии 1.0.x externai_function_ directory, но также и форму представления значения. Firebird 1.5 инсталлируется с отключенным по умолчанию доступом к библиотекам внешних функций, в то время как большинство серверов до этого давали полный доступ.
* TempDirectories (TMP_DIRECTORY в версии 1.0.x)- конфигурирование этого параметра является одним из способов задания размещения временного пространства сортировки для сервера, указав местоположение на диске. Синтаксис Firebird 1.5 отличается от синтаксиса Firebird 1.0.x.
Другие полезные параметры
Следующие параметры могут быть полезными в некоторых аппаратных конфигурациях.
* cpuAffinityMask (CPU_AFFINITY в версии 1.0.x)- может быть использован для назначения процессоров, которые Суперсервер в Windows будет использовать на машинах SMP. Эта проблема известна как эффект "see-saw", когда операционная система постоянно переключает выполнение Суперсервера между процессорами на некоторых машинах SMP. Свойство CPU должно быть установлено для одного процессора, если вам встретилась такая проблема.
По умолчанию маска свойств устанавливается для использования первого процессора в массиве.
* LockMemSize- параметр специфичен для Классических серверов; он определяет количество байтов разделяемой памяти, которая отводится для таблицы памяти, используемой менеджером блокировки. Вам может понадобиться изменить это количество, если вы встретите в Классическом сервере ошибку "Lock manager is out of room" (Менеджеру блокировки не хватает памяти). В связи с этой проблемой см. также параметр LockHashsiots.
* sortMemBiocksize и sortMemOpperLimit - эти два параметра были добавлены в версию 1.5, чтобы позволить устанавливать и ограничивать объем оперативной памяти, которую использует сервер при внутренней сортировке. Для Классического сервера этот размер по умолчанию слишком велик, чтобы поддерживать достаточно большое количество соединений.
* DummyPacketinterval(DUMMY_PACKET_INTERVAL в 1.0.x)- параметр - пережиток 16-битовых систем; он может стать причиной проблем в 32-битовых Windows. Это был старый параметр времени ожидания InterBase, предполагалось устанавливать количество секунд (целое число), в течение которых сервер должен был ожидать от клиента сообщений, после чего сервер должен был посылать пустой пакет для получения подтверждения. По умолчанию он установлен в 0 для Firebird 1.5(неактивен) и в 60 для Firebird 1.0.x. Он должен быть неактивным (установленным в 0) для всех систем Windows. Также настоятельно рекомендуется отключать его для других операционных систем.
* RemoteBindAddress - по умолчанию могут соединиться клиенты из любой сети, из которой сервер принимает трафик. Этот параметр позволяет связать сервис Firebird с исходными запросами через один IP-адрес (например, сетевая карта) и отклонять запросы соединения от любых других сетевых интерфейсов. Это помогает решать проблемы некоторых сетей, где сервер является хостом для нескольких подсетей. Не поддерживается в версии 1.0.x.
* compieteBooieanEvaiuation - параметр может быть использован для преобразования логики вычисления логических значений в виде сокращенного вычисления булевских выражений, используемой в Firebird 1.5 и выше, в полное вычисление булевских выражений, используемое в Firebird 1.0.x.
* oldparameterordering- восстанавливает старый способ обработки порядка параметров для запросов с подзапросами - сначала параметры подзапроса, затем параметры внешнего запроса. Firebird 1.5 по умолчанию обрабатывает параметры в точном порядке их следования, что может быть несовместимо со старыми версиями различных компонентов доступа, которые ориентировались на поведение InterBase/Firebird 1.0.
Пора дальше
Теперь нам больше ничего не осталось, кроме как соединиться с базой данных и начать выполнять серьезные эксперименты. Глава 4, последняя в нашем "учебном лагере", даст вам возможность соединиться с примером базы данных или с любой другой совместимой с Firebird базой данных, которая может находиться на вашем сервере.
ГЛАВА 4. Основные операции.
Теперь у вас есть установленный сервер Firebird, что дальше? Эта глава быстро обучит вас основам Firebird.
Запуск Firebird на Linux/UNIX
Суперсервер
Каталог инсталляции по умолчанию /opt/firebird. В каталоге /bin находится в двоичном формате сервер Firebird fbserver (ibserver для Firebird 1.0.x), который запускается как процесс-демон в Linux/UNIX. Он запускается автоматически после инсталляции посредством RPM или скрипта и каждый раз при перезагрузке сервера запуском скрипта демона firebird, находящегося в /etc/rc.d/init.d (или /etc/init.d в SuSE), который вызывает утилиту командной строки Firebird Manager - fbmgr.bin. Firebird Manager может быть использована из командной строки для запуска и остановки процесса вручную.
Запуск сервера
Если вы по разным причинам запустили Firebird вручную, соединитесь с ним как пользователь root или firebird. Запомните, какую учетную запись вы использовали при запуске fbserver, потому что все созданные объекты будут принадлежать пользователю с этой учетной записью. Если позже другой пользователь запустит процесс с использованием другой учетной записи пользователя, то эти объекты будут ему недоступны.
Настоятельно рекомендуется создать системного пользователя с именем firebird и запускать сервер Firebird с этой учетной записью.
Для запуска процесса выполните из командной строки следующую команду:
./fbmgr.bin -start -forever
Для версий Firebird, предшествующих 1.5, выполните:
./ibmgr -start -forever
Переключатель -forever означает, что Guardian будет управлять запуском. При использовании Guardian процесс сервера будет заново запущен, если он по каким-либо причинам завершится аварийно.
Для запуска сервера без использования Guardian введите:
./fbmgr.bin -start -once
Для версий Firebird, предшествующих 1.5, выполните:
./ibmgr -start -once
Переключатель -once означает, что если сервер будет аварийно завершен, перезапустить его можно будет только вручную.
Остановка сервера
В целях безопасности убедитесь, по возможности, что все соединения с базой данных отключены, прежде чем вы остановите сервер.
Переключатель -shut отменяет все текущие транзакции и прекращает работу сервера немедленно.
Вам не требуется быть подключенным как пользователь root для остановки сервера Firebird fbmgr, но вы должны иметь полномочия пользователя SYSDBA. Выполните следующую команду.
./fbmgr.bin -shut -password <пароль SYSDBA>
Используйте команду для версий, предшествующих 1.5:
./ibmgr.bin -shut -password <пароль SYSDBA>