ИнфоАптека ®

Автоматизация аптек и аптечных сетей

Инструменты пользователя

Инструменты сайта


администрирование:firebird

FIXME Статья находится в разработке в связи с переходом на версию 2.5

Использование Firebird в ПО ИнфоАптека

Firebird (FirebirdSQL) — компактная, кроссплатформенная, свободная система управления базами данных (СУБД), работающая на Linux, Microsoft Windows и разнообразных Unix платформах. Firebird полностью бесплатен для использования и распространения, в том числе и коммерческого. В настоящее время в ИнфоАптека 3.0 используется Firebird версии 2.5.7

Используемые архитектуры:

  • Суперсервер (SuperServer или SS) — все соединения используют один процесс, меньшие требования к памяти при большем быстродействии. (Сервер). Не забудьте отключить HyperThreading для процессоров Intel.
  • Персональная (Embedded) версия — весь движок содержится в одной библиотеке с именем клиентской библиотеки сервера, идеально подходит для однопользовательских систем, не требует инсталляции. (Касса).
  • Классик сервер (ClassicServer или CS) — один процесс на одно соединение, поддержка многопроцессорных машин. (Сервер).

Новая установка сервера (SuperServer)

  1. Проверьте, имеет ли ваша учетная запись доступ к службам.
  2. Cкопировать содержимое папки дистрибутива …\Distrib\Firebird в папку C:\Program Files\FirebirdIA
  3. Добавить в переменную среды PATH путь C:\Program Files\FirebirdIA\bin 1)
  4. Открыть командную строку от имени Администратора2)
  5. Запустить командный файл «C:\Program Files\FirebirdIA\bin\ia_install.bat» от имени Администратора.

Сервер установлен.

При установке в папку отличную от C:\Program Files\FirebirdIA зафиксировать изменения в файле D:\iadistrib\apteka\local.xml, расположенном в дистрибутиве аптеки.

local.xml
<?xml version="1.0" encoding="windows-1251" standalone="yes" ?>
<DISTRIB>
  <VARS>
    <FIREBIRD_DIR Value="C:\Program Files(x86)\FirebirdIA"/>
    <FB_CLASSIC_DIR Value="C:\Program Files(x86)\FirebirdClassic"/>
  </VARS>
</DISTRIB>

Перенос базы данных на другой сервер

Во время переноса базы на другой сервер необходимо также перенести файлы СУБД:

  • security2.fdb - пароли пользователей
  • firebird.conf - настройки сервера

Если необходима тонкая настройка firebird.conf

По умолчанию файл firebird.conf содержит все необходимые настройки. Но все же можно кое что улучшить.

Расположение хранения временных файлов

Временные файлы желательно располагать на отдельном, «быстром» диске.

TempDirectories = e:\TMP

Количество страниц базы данных в кэше

Установленное значение для базы перекрывает установки для сервера.

DefaultDbCachePages = 32768 (для SS)
DefaultDbCachePages = 8192 (для CS)

Блок памяти для сортировки данных и размещения временных таблиц.

Для для мощных серверов использующих CS с памятью от 16Gb можно так же настроить TempCacheLimit, что должно ускорить обработку больших отчетов

TempCacheLimit = 1073741824

Номер порта TCP используемый для подключения клиентов к базе данных.

RemoteServicePort = 3052

Используемые процессоры сервера.

Используется битовая маска:
1 – только первый - 012;
2 – только второй - 102;
3 – первый и второй - 112;
6 – второй и третий - 1102.

CpuAffinityMask = 2

Проверка работоспособности сервера

Проверка работы службы

На сервере в командной строке запускаем утилиту статистики протокола

checkfb.cmd
netstat -ano | find "LIST" 

в итоге мы увидим статистику как показано ниже.

TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       1832
TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
TCP    0.0.0.0:2701           0.0.0.0:0              LISTENING       1204
TCP    0.0.0.0:3052           0.0.0.0:0              LISTENING       684
TCP    0.0.0.0:3389           0.0.0.0:0              LISTENING       1708
TCP    0.0.0.0:5800           0.0.0.0:0              LISTENING       204
TCP    0.0.0.0:5900           0.0.0.0:0              LISTENING       204
TCP    0.0.0.0:5931           0.0.0.0:0              LISTENING       924
TCP    0.0.0.0:6160           0.0.0.0:0              LISTENING       1588
TCP    10.77.82.210:139       0.0.0.0:0              LISTENING       4
TCP    127.0.0.1:1112         0.0.0.0:0              LISTENING       2444
TCP    127.0.0.1:5152         0.0.0.0:0              LISTENING       1172
TCP    127.0.0.1:5679         0.0.0.0:0              LISTENING       2108
TCP    127.0.0.1:6360         0.0.0.0:0              LISTENING       2132
TCP    192.168.56.1:139       0.0.0.0:0              LISTENING       4

Это говорит о том, что у нас на сервере есть служба, работающая по протоколу TCP и ожидающая подключение к порту с номером 3052.

Имя	Локальный адрес	Внешний адрес	Состояние	PID
TCP	0.0.0.0:3052	0.0.0.0:0	LISTENING	684

Найдите в диспетчере процессов процесс с таким же PID3). Имя найденного процесса для Firebird cуперсервер (SuperServer) должно быть fbserver.exe.

Проверка возможности подключения клиентов

Проверка доступности порта 3052 сервера.

На удаленном компьютере (не сервере) в командной строке выполните команду 4):

test3052.cmd
telnet aptsrv 3052

В ответ должен быть черный, пустой экран. Если же в ответ выходит сообщение:

Connecting To aptsrv...Could not open connection to the host, on port 3052: Connect failed

нужно открыть порт 3052 в брандмауэре сервера.

Проверка доступности базы данных на сервере.

Проверка подключения с помощью утилиты testbd.exe

…\Distrib\Utils\TestBd\TestBd.exe

Проверьте вашу версию утилиты, утилита не обновляется в дистрибутиве автоматически. Текущая версия утилиты 6.0.3.1

Запуск производится с параметром полного пути к базе данных с указанием имени компьютера и номера порта. Например:

testbd.cmd
TestBd.exe aptsrv/3052:c:\iadistrib\emptydb\iapteka.fdb

Открыть порт в брандмауэре

Вы можете выполнить командный файл на сервере, который поможет открыть необходимый порт автоматически.

fw3052.cmd
@echo off
:: поможет открыть порт 3052 в брандмауэре виндовс ::
ver | find " 5." && netsh firewall add portopening TCP 3052 FirebirdIA enable && set open=1
ver | find " 6." && netsh advfirewall firewall add rule name=FirebirdIA dir=in action=allow localport=3052 protocol=TCP && set open=1
<nul set /p strTemp=Port 3052 
if defined open (echo is open.) else (echo ­not be opened.)
echo.
pause

Дополнительные ссылки

1)
Действия для добавления пути в переменную среды PATH
  1. В меню Пуск щелкните правой кнопкой мыши пункт Компьютер.
  2. В контекстном меню выберите Свойства.
  3. В диалоговом окне Система выберите Дополнительные параметры системы.
  4. На вкладке Дополнительно диалогового окна Свойства системы нажмите кнопку Переменные среды.
  5. В поле Системные переменные диалогового окна Переменные среды прокрутите список до переменной Path, а затем выберите ее.
  6. Нажмите нижнюю из двух кнопок Изменить в этом диалоговом окне.
  7. В диалоговом окне Изменение системной переменной прокрутите строку в поле Значение переменной до конца и добавьте точку с запятой (;).
  8. Добавьте новый путь после точки с запятой.
  9. Нажмите кнопку ОК в трех последовательных диалоговых окнах, а затем закройте диалоговое окно Система.
2)
Windows 7,8
3)
включите отображение этой колонки
4)
команда telnet в Windows 7 по умолчанию не установлена, установите ее через компоненты Windows.
администрирование/firebird.txt · Последние изменения: 2018/02/13 20:04 — Владимир Сиренко