Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - Хелен Борри
Шрифт:
Интервал:
Закладка:
Если значения по умолчанию для номера порта или имени сервиса были изменены, то вам нужно создать запись в файле services.
! ! !
ВНИМАНИЕ! Если вы не закомментировали ни RemoteServiceName, ни RemoteServicePort, но оставили значения по умолчанию нетронутыми, они будут трактоваться как измененные. Необходимо создать запись в файле services для установок значений по умолчанию сервиса порта.
. ! .
Установка клиента для поиска порта сервиса
Если вы установили ваш сервер с инсталляционными значениями по умолчанию (сервис gds db прослушивает порт 3050), то конфигурирование не требуется. Если сервер прослушивает другой порт или используется другое имя сервиса порта, то приложение клиента и/или хост-машины требуют некоторых изменений конфигурации, чтобы помочь клиентской библиотеке Firebird найти прослушиваемый порт.
Строка соединения, используемая клиентом, может включать информацию для опроса прослушиваемого порта сервера разными путями. Клиенты Firebird 1.5 могут использовать локальную копию firebird.conf. Изменения также могут понадобиться и для файла services.
Использование строки соединенияЕсли были изменены только номер порта или имя сервера, включите альтернативный номер порта или имя сервера в строку соединения. Это работает для всех версий Firebird.
Синтаксис соединения TCP/IPДля соединения с сервером базы данных, названным hotchicken, связанным с портом 3050 и сервисом fb_db, строка соединения в POSIX должна быть следующей:
hotchicken/fb_db:/data/leisurestore.fdb
Если же сервер имеет имя gds db, а номер порта 3051, то строка соединения должна быть следующей:
hotchicken/3051:/data/leisurestore.fdb
В Windows строка соединения должна быть:
hotchicken/3051:D:dataleisurestore.fdb hotchicken/fb_db:D:dataleisurestore.fdb
Обратите внимание, что разделитель между именем сервера и портом наклонная черта, а не двоеточие. Двоеточие требуется в строке физического пути после имени диска.
Синтаксис соединений WnetВ сети Wnet используйте стиль нотаций UNC:
\[email protected]d:leisurestore.fdb
или
\[email protected]_dbd:leisurestore.fdb
Если номер порта или имя сервиса были изменены, то вам нужно создать запись в файле services.
Использование синтаксиса порта для алиасов базы данныхДля соединения через порт, не являющегося портом по умолчанию, с помощью алиаса базы данных добавьте номер порта или имя сервиса к имени сервера, а не к алиасу. Предположим, что алиас базы данных был сохранен в aliases.conf в виде:
hotstuff = /data/leisurestore.fdb
Строка соединения вашего приложения с сервером hotchicken будет следующей:
hotchicken/fb_db:hotstuff
или
hotchicken/3051:hotstuff
Использование копии firebird.confВ Firebird 1.5 и выше вы можете скопировать на клиентскую сторону в корневой каталог Firebird файл firebird.conf и сконфигурировать RemoteServiceName или RemoteServicePort для помощи клиенту в поиске серверного порта.
Вы можете конфигурировать один из этих двух параметров; изменение значения другого параметра можно выполнить через строку соединения (см. ранее). Вы можете перекрыть значение только RemoteServiceName или RemoteServicePort без использования строки соединения.
Если вам не нужно передавать имя сервиса порта или номер порта в строке соединения, а сервер не использует значения по умолчанию для обоих параметров, вы можете конфигурировать оба RemoteServiceName и RemoteServicePort. Вы можете использовать эту технику, если вашему клиентскому приложению нужно сохранить возможность соединяться с серверами InterBase или Firebird 1.0.
Размещение данных Firebird на клиентахЕсли вы используете на клиентских машинах файл firebird.conf, нужно, чтобы клиентская библиотека знала, где его найти. Вам необходимо создать корневой каталог Firebird и проинформировать систему о его местонахождении. Используйте для этого переменную среды FIREBIRD таким же образом, как и для серверов (см. главу 3). Клиенты Windows могут также использовать запись в реестре. При правильной установке клиента вы можете также сделать доступной локальную версию файла сообщений. Более подробную информацию см. в разд. "Инсталляция клиентов" в главе 7.
Конфигурирование файла services
Вам не нужно изменять запись сервиса порта для сервера или клиентов Firebird, если сервер использует значения по умолчанию, заданные при инсталляции - gds db для порта 3050. Если gds db - имя сервиса порта, который не может использовать любой другой порт, то он будет применять порт 3050 автоматически.
Если вы изменили номер порта или имя сервиса, вы должны сделать явные изменения для сервера и клиентов, чтобы отобразить эти изменения. В Linux и Windows данная информация хранится в файле services.
Местонахождение файла servicesМестонахождение файла services на разных платформах:
* в Windows NT/2000/XP этот файл находится в C:winntsystem32drivers etcservices;
* в Windows 95/98/ME файл находится в C:Windowsservices;
* в Linux/UNIX файл находится в /etc/services.
Записи файла services выглядят следующим образом:
gds_db 3050/t.cp # Firebird Server 1.5
Откройте файл в текстовом редакторе и добавьте новую строку или измените существующую запись gds db.
* Для сервера или клиента Firebird 1.0.x измените имя сервиса или номер порта для согласования с параметрами запуска сервера.
* Для сервера Firebird 1.5 или выше отредактируйте или добавьте нужную строку. Если у вас инсталлирован сервер Firebird 1.0 или InterBase на том же хосте, сохраните нужные для них записи и добавьте новую запись для согласования с параметрами запуска сервера.
! ! !
ПРИМЕЧАНИЕ. Если данная строка является последней в файле services, то рекомендуется в конце файла добавить пустую строку.
. ! .
Проверка соединения с помощью ping
Вы сделали все нужные изменения. Последняя проверка нужна, чтобы убедиться, что ваша клиентская машина может связываться с сервером. Вы можете быстро проверить, что ваш клиент TCP/IP связывается с сервером, используя в окне командной строки команду ping:
ping имя-сервера// подставьте имя, которое вы записали в файле HOSTS
Если соединение прошло хорошо, и все правильно сконфигурировано, вы увидите приблизительно следующее:
Pinging hotchicken [10.10.0.2] with 32 bytes of data
reply from 10.10.0.2: bytes=32 time<10ms TTL=128
reply from 10.10.0.2: bytes=32 time<10ms TTL=128
reply from 10.10.0.2: bytes=32 time<10ms TTL=128
reply from 10.10.0,2: bytes=32 time<10ms TTL=128
Нажмите комбинацию клавиш <Ctrl>+<C> для прекращения сообщений ping.
Если ping выдает ошибку
Если вы получили нечто вроде
Bad IP address hotchicken (Неверный IP-адрес hotchicken)
то имя хоста в записи файла для имя-сервера (в этом примере hotchicken) может быть отсутствует или неверно написано. К примеру, все идентификаторы в Linux/UNIX являются чувствительными к регистру. Другая причина может заключаться в том, что имя хоста вашего сервера просто не было сконфигурировано.
Если вы увидите:
Request timed out
то это означает, что адрес IP, на который ссылается имя хоста в вашем файле, не может быть найден в подсети. Проверьте следующее:
* нет ошибок в имени хоста в записи файла;
* сетевой кабель подключен, провод и контакты не повреждены и не ржавые;
* конфигурация сети позволяет направлять сетевой трафик между клиентом и сервером. Ограничения подсети или системы сетевой защиты могут препятствовать серверу в получении данных от клиента.
• Ограничения подсети: TCP/IP может быть сконфигурирован для ограничения трафика между подсетями. Если ваша клиентская машина является частью сложной сети или подсети, уточните у сетевого администратора, имеет ли она неограниченный доступ к серверу.
! ! !
ВНИМАНИЕ! WNet не позволяет направлять сетевой трафик между подсетями.
. ! .
• Система сетевой защиты (firewall): ваша проверка соединения может дать ошибку, если сервер базы данных находится под программной или аппаратной системой сетевой защиты, которая блокирует порт 3050 или сконфигурированный вами порт.
Проблемы с событиями
Несмотря на то, что каждый клиент соединяется с сервером через один канал, события Firebird - механизм обратной связи, который позволяет передавать сообщения о событиях назад клиентам с помощью триггеров и хранимых процедур, - используют произвольные доступные порты. В статических замкнутых сетях без внутренних систем сетевой защиты это обычно не вызывает проблем. В сетях, где существует множество подсетей, динамическая IP-адресация и строго сконфигурированная система сетевой защиты, передача событий может закончиться неудачей.
В Firebird 1.0.x ваш сетевой администратор должен установить некий способ, чтобы гарантировать наличие доступного порта, который всегда свободен, открыт и является статическим. Проблема может быть решена тем или иным образом в большинстве сетей.
Firebird 1.5 упрощает дело. Он делает возможным явно задавать IP-адрес в сети для трафика событий. Используйте параметр RemoteAuxPort в файле firebird.conf с целью статической установки IP-адреса для интерфейса (карта, маршрутизатор, шлюз и т.д.), который будет доступен для направления событий.