• Авторизация


asterisk postgresql UTM? 14-07-2007 22:40 к комментариям - к полной версии - понравилось!


http://www.botik.ru/~rldp/mysql/myodbc/unixodbc.htm
______________
8 ODBC и проект unixODBC
Что такое проект unixODBC?

Цели проекта unixODBC состоят в том, чтобы разрабатывать и поддержать unixODBC, который призван стать окончательным стандартом для ODBC на не-MS Windows системах. Это должно включить поддержку GUI для KDE и GNOME. Платформы Microsoft включают много расширений в спецификацию ODBC, эти расширения также обеспечиваются unixODBC.

Группа разработчиков unixODBC достигла лучших на сегодняшний день результатов под Linux. Весь проект unixODBC распространяется согласно лицензиям GPL или LGPL. Наличие LGPL для библиотек позволяет применять их в коммерческом программном обеспечении с закрытыми исходными текстами.
ODBCConfig

Это приложение GUI, подобное MS ODBC Administrator. Это позволяет любому пользователю легко конфигурировать свои (пользовательские) источники данных. Пользователь root может также добавлять, удалять и настраивать общесистемные источники данных. Опции Driver меняются в зависимости от СУБД. ODBCConfig вызывает код Driver Config, чтобы позволить драйверу запрашивать пользователя относительно специфических опций.

Пользователь root может добавлять или удалять драйверы, используя ODBCConfig. Это скорее регистрация и отмена регистрации драйвера потому, что никакие файлы фактически не будут скопированы или перемещены, зато модифицируется информация системы ODBC.

Все зарегистрированные драйверы будут представлены пользователю на выбор при создании нового источника данных.
DataManager

DataManager мог бы называться Data Explorer. Это приложение GUI, которое позволяет пользователю просматривать и управлять источниками данных. Более точно: оно позволяет пользователю просматривать источники данных, начиная с имени источника и заканчивая таблицами, столбцами и индексами. Это также включает SQL-редактор, который позволяет пользователю представлять на рассмотрение источнику данных SQL-запросы и просматривать результаты.
DriverManager

ODBC-приложения делают ODBC-вызовы через DriverManager. DriverManager выполняет ряд задач для приложения:
Обеспечение загрузки и выгрузки соответствующего драйвера
Задачи проверки правильности
Отображение данных и вызовов 3.5 на 3.0 и на 2.0

Большинство обращений к DriverManager передается на загруженный драйвер, чтобы он их дальше обработал сам.

Некоторые преимущества от использования ODBC DriverManager включают;
Переносной (мобильный) код доступа к данным
Связывание во время выполнения с источником данных (Data Source)
Способность легко изменять источник данных
Использование unixODBC с wine
Те, кто работает с wine ( http://www.winehq.org), некоторое время назад добавили поддержку ODBC. Это выполнено через ODBC.DLL в коде wine, который направляет обращения из среды эмуляции к библиотеке libodbc.so в *nix. Это работает через unixODBC с различными приложениями.

Когда Crystal Reports запущен под WINE и использует ODBC, появляется сообщение о том, что строка соединения недопустима (сообщение об ошибке: "Unable to connect: Incorrect log on parameters").

Дело в том, что Crystal Reports обращается к реестру Windows, чтобы найти там настройки драйвера для DSN в секции ODBC.INI реестра. Так как установка драйвера находится в файловой системе Linux, ничего хорошего он там не находит, что и приводит к ошибке.

Чтобы исправить положение надо ввести соответствующую запись в реестр. Новая запись может располагаться в дереве HKEY_CURRENT_USER или в HKEY_LOCAL_MACHINE и выглядит так: Software->ODBC->ODBC.INI->-> Driver="not blank", где определяет соответствующий DSN. Установка для драйвера не имеет значения, за исключением того, что это не должно быть пустой строкой. Такая схема применима и для других программ.
Использование unixODBC с wine
Те, кто работает с wine ( http://www.winehq.org), некоторое время назад добавили поддержку ODBC. Это выполнено через ODBC.DLL в коде wine, который направляет обращения из среды эмуляции к библиотеке libodbc.so в *nix. Это работает через unixODBC с различными приложениями.

Когда Crystal Reports запущен под WINE и использует ODBC, появляется сообщение о том, что строка соединения недопустима (сообщение об ошибке: "Unable to connect: Incorrect log on parameters").

Дело в том, что Crystal Reports обращается к реестру Windows, чтобы найти там настройки драйвера для DSN в секции ODBC.INI реестра. Так как установка драйвера находится в файловой системе Linux, ничего хорошего он там не находит, что и приводит к ошибке.

Чтобы исправить положение надо ввести соответствующую запись в реестр. Новая запись может располагаться в дереве HKEY_CURRENT_USER или в HKEY_LOCAL_MACHINE и выглядит так: Software->ODBC->ODBC.INI->-> Driver="not blank", где определяет соответствующий DSN. Установка для драйвера не имеет значения, за исключением того, что это не должно быть пустой строкой. Такая схема применима и для других программ.
Установка PHP с unixODBC
Эта процедура установки основана на apache 1.3.12 и PHP 3.0.16, но идентична по крайней мере для apache 1.3.6 и php 3.0.9. PHP4 имеет опцию выбора конфигурации, чтобы использовать unixODBC, но она, к сожалению, не всегда работает должным образом.
В каталоге Apache выполните следующую команду:
./configure --prefix=/www
Плюс любая другая локальная конфигурация, в которой Вы нуждаетесь.
Создайте файл odbc.h в /usr/local/include содержащий следующие строки:
#include
#include
#include
Замените здесь /www на каталог, в который установлен apache.
Перейдите в каталог PHP и определите следующие переменные среды:
CFLAGS="-I/usr/local/include"
LDFLAGS=
CUSTOM_ODBC_LIBS="-L/usr/local/lib -lodbc"
Не забудьте экспортировать эти переменные!
export CFLAGS LDFLAGS CUSTOM_ODBC_LIBS
Настройте PHP командой:
./configure --with-apache=../apache_1.3.12 --with-custom-odbc=/usr/local \
--enable-track-vars
Плюс любая другая локальная конфигурация, в которой Вы нуждаетесь, затем:
make
make install
Вернитесь назад в каталог apache и введите:
./configure --prefix=/www --activate-module=src/modules/php3/libphp3.a
make
make install
Вернитесь в каталог PHP и скомандуйте:
cp php3.ini-dist /usr/local/lib/php3.ini
Вы можете редактировать файл /usr/local/lib/php3.ini, чтобы установить опции PHP. Отредактируйте Ваш файл httpd.conf или srm.conf и добавьте:
AddType application/x-httpd-php3 .php3
Поддержка Apache DSO
Дополнительная проблема была найдена, когда Вы формируете PHP как динамический общедоступнный объект с apache. Поскольку по умолчанию unixODBC формируется с поддержкой потоков, а вот apache нет, если они не связаны вместе в процессе построения, а встречаются только во время выполнения, такая комбинация будет взрывоопасной.

Имеются два способа обхода проблемы. Необходимо определить и экспортировать следующие переменные среды перед формированием apache:
export CFLAGS=-D_REENTRANT
export LFLAGS=-lpthread
./configure --prefix=www
Или пересоберите unixODBC без поддержки потоков, конфигурируя его так:
./configure --enable-threads=no

В обоих случаях не забывайте удалять файл config.cache из корневого каталога Apache или unixODBC
UnixODBC и 2000 год
Из-за того, как спроектирован ODBC, не имеется никаких прямых ссылок к дате или времени, кроме как в структурах SQL_DATE, SQL_TIME и SQL_TIMESTAMP. Любая информация о годн внутри них сохранена с четыремя цифрами, включая столетие.

Поскольку ничего из вышеупомянутой информации не сгенерировано кодом внутри unixODBC, каких бы то ни было проблем с 2000 годом в рамках кода unixODBC быть не должно. Могут быть сложности у конкретной СУБД или операционной системы, но они не имеют отношения к пакету unixODBC.
Библиотеки в unixODBC

INI-библиотека представляет собой библиотеку функций нужных, чтобы помочь в разработке кода для взаимодействия с INI-файлами. Будущая расширенная версия этой библиотеки скорее всего станет стандартной библиотекой Linux, что позволит рассматривать INI-файлы как стандартный формат новых файлов конфигурации в ОС Linux.

Log-библиотека представляет собой комплект функций нужных, чтобы создать средство регистрации событий. Это используется odbcinst и unixODBC Driver Manager. Планируется поддержка системы регистрации событий в UNIX.

List-библиотека представляет собой набор маленьких и простых функций для создания, управления и удаления связанных списков Эти функции служат, чтобы усилить код для работы связанных списков в unixODBC и обеспечить основу для поддержки курсора.

Библиотека odbcinst обеспечивает приложения и другие компоненты unixODBC способностью к чтению и записи системной информации ODBC. Причем неважно, как или где эта информация сохранена. Это осуществляет основной API из MS и добавляет несколько функций для удобства. Одно из таких расширений: добавление нескольких API для работы с ODBC-программами Config в среде KDE/Qt.

Библиотека Tree была создана, чтобы хранить анализируемый код SQL. Она также должна использоваться в будущих версиях, чтобы сохранить синтаксис SQL в намного более реалистичном виде.

Библиотека SQI реализует сильно облегченный обработчик SQL, который использует текстовые файлы для хранения данных. Это дополнено ODBC-драйвером, чтобы создать очень открытую СУБД для маленьких наборов данных. Строго рекомендуется, чтобы все использование SQI было сделано через ODBC-драйвер: это позволит источнику данных превратиться в нормальную СУБД без того, чтобы перетранслировать исходный код.

Разработка SQI управлялась желанием включить поддержку ODBC в KDE и в соответствии с необходимостью создания полноценной СУБД, чтобы позволить использование. SQI для этого вполне достаточна.

Библиотека SQP представляет собой SQL-анализатор, основанный на lex/yacc. Это было выдрано из SQI так, чтобы общий анализатор SQL можно было бы обеспечивать для всех частей unixODBC, в частности, в драйверах и источниках данныхх, основанных не на SQL. Текущее понимание синтаксиса SQL очень ограничено, но это должно быть расширено в будущем.
Утилиты командной строки

odbcinst представляет собой инструмент, который был создан для помощи тем, кто разрабатывает скрипты и RPM-пакеты для драйверов, чтобы иметь возможность легко создавать и удалять записи в файлах odbc.ini и odbcinst.ini. Этот инструмент командной строки связан с разделяемой библиотекой (libodbcinst.so) и является частью компонента odbcinst в unixODBC.

isql представляет собой инструмент, который позволяет пользователю выполнять SQL-команды в пакете или в интерактивном режиме. Это имеет некоторые интересные опции типа опции, чтобы генерировать вывод, в виде таблицы на HTML.
Использование IBM DB2 с unixODBC
Этот короткий раздел детализирует то, как соединиться с IBM DB2 из Linux через unixODBC. Этот документ первоначально был ориентирован на DB2 версии 6.1, но все работает и с версией 7.1, хотя есть некоторые отличия, они описаны в конце раздела.

Сначала установите клиентский пакет доступа DB2 от IBM, это установит IBM CLI драйвер, который работает с unixODBC как ODBC-драйвер.

При использовании клиентского пакета доступа, определите клиентский доступ под неким именем, например, db2inst1, а затем создайте запись в файле odbcinst.ini:
[DB2]
Description = DB2 Driver
Driver = /usr/IBMdb2/V6.1/lib/libdb2.so
FileUsage = 1
DontDLClose = 1
Параметр DontDLClose требуется, чтобы избежать проблемы в драйвере, когда он динамически загружен.

Теперь настройте файл odbc.ini примерно так:
[sample]
Description = Test to DB2
Driver = DB2
Затем, когда происходит соединение, Вы ДОЛЖНЫ ИМЕТЬ переменную среды DB2INSTANCE, установленную на корректный образец db2, например:
export DB2INSTANCE=db2inst1
isql -v sample db2inst1 ibmdb2
Версия 7.1

Единственое различие сводится к имени пакета, используемого для доступа. CLI-драйвер теперь должен быть найден в DB2 Personal Developer's Edition V7.1.

Использование версии 7.1 формирует путь к библиотеке:
Driver = /usr/IBMdb2/V7.1/lib/libdb2.so

Вы также должны добавить "/usr/IBMdb2/V7.1/lib" в /etc/ld.so.conf.

Другая полезная подсказка. При использовании PHP+DB2 под AIX через unixODBC к IBM-серверу (4 процессора, мультиядра и т.д), возникало сильное замедление работы. Имеется ошибка в стеке TCP/IP IBM. После изучения странички http://www-4.ibm.com/cgi-bin/db2www/data/db2/udb/w...?last_page=list.d2w&fn=1006553 и выполнения команд
$ su - db2inst1
$ db2set DB2TCPCONNMGRS=1
был достигнут поистине огромный рост производительности (в десятки раз!).
unixODBC и Sybase/MS SQL Server
Введение

Этот документ поможет пользователям unixODBC обратиться к MS SQL Server, а также к Sybase SQL Server из клиентов unixODBC.

Будем считать, что Вы имеете недавнюю версию unixODBC на своей системе и где-то выполняется сервер. SQL Server должен позволять удаленный доступ и поддерживать соединения, использующие TCP/IP. Конечно, нужны также идентификатор для входа в систему и пароль.
Подготовка

MS SQL Server был порожден партнерством между Microsoft и Sybase. Впоследствии эти два сервера остались очень похожими. Фактически настолько похожими, что протокол связи, используемый клиентским программным обеспечением, чтобы связаться с этими серверами является фактически идентичным. Этот протокол называется Табличным Потоком Данных (Tabular Data Stream, сокращенно TDS).

Brian Bruns создал проект проект открытых исходных текстов, призванный обеспечить реализацию протокола TDS для всех желающих. Проект называется FreeTDS и может быть найден на сайте http://www.freetds.org.
Что с ним делать

FreeTDS приходит с несколькими интерфейсами TDS с ODBC. ODBC-драйвер, включенный в FreeTDS, работает хорошо для типичных запросов, типа запроса данных. Однако, этот ODBC-драйвер не поддерживает менее используемые функции каталога ODBC. FreeTDS хорошо работает с unixODBC, но Вы скачайте самую свежую версию, например, с ftp://ibiblio.org/pub/Linux/ALPHA/freetds.
Установка

Наиболее вероятно, что Вы скачали исходный текст, и этой точки зрения я буду придерживаться. Обычно установка из исходных текстов представляет собой проблему по причине отсутствия необходимых инструментов, но почти версии Linux их имеют. Распакуйте дистрибутив следующими командами:
# tar zxvf freetds-0.52.tar.gz
# cd freetds-0.52
Как только Вы распаковали исходный текст, изучите файлы INSTALL и README.

Сначала определите некоторые переменные среды. Например, пользователь оболочки bash может добавлять следующее в свой файл /etc/profile.
# TDS
#
SYBASE=/usr/local/freetds
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$SYBASE/lib
export SYBASE LD_LIBRARY_PATH

Опции configure могут просматриваться, выполняя ./configure --help. Главное, должна быть указана опция выбора конфигурации --with-tdsver. Теперь соберем пакет и установим его:
# ./configure --with-tdsver=4.2 --with-unixodbc=/usr/local
# make
# make install

Драйвер FreeTDS ODBC должен быть установлен в /usr/local/freetds/lib. Там должен появиться файл libtdsodbc.so.
Настройка

Регистрация SQL Server с TDS

FreeTDS должен знать несколько вещей относительно каждого сервера, с которым Вы хотите работать. Традиционно используется интерфейсный файл. FreeTDS может работать с файлом, называемым freetds.conf, но для упрощения примера применим старый метод. Файл интерфейсов может быть найден в каталоге /usr/local/freetds. Имеется пример для доступа к MS SQL Server:
P450
query tcp ether 192.168.1.25 1433
master tcp ether 192.168.1.25 1433
Под P450 здесь значится имя машины, на которой выполняется MS SQL Server. Имя может быть каким угодно. По умолчанию MS SQL Server слушает порт 1433.

Регистрация ODBC-драйвера через unixODBC

unixODBC должен знать ряд данных относительно всех ODBC-драйверов, которые Вы предполагаете использовать. Самый лучший способ этого достичь: применить графическую программу ODBCConfig, которая приходит с unixODBC. Альтернативный метод состоит в том, чтобы использовать команду odbcinst, которая также приходит с unixODBC. Мы сосредоточимся на использовании команды odbcinst. Создайте файл с именем tds.driver.template с несколькими строками, описывающими нужный драйвер:
[TDS]

Description = v0.52 with protocol v4.2

Driver = /usr/local/freetds/lib/libtdsodbc.so

Выполните odbcinst, предписывая ему создать запись драйвера, используя файл tds.driver.template. Обратите внимание, что Вы должны оставить пробел между параметром -f и именем файла шаблона:
# odbcinst -i -d -f tds.driver.template

Создание ODBC Data Source Name

Клиенты ODBC обычно будут работать с ODBC Data Source Names (DSN). Самый лучший способ создавать, редактировать и удалять DSN состоит в том, чтобы использовать инструмент ODBCConfig.

Снова мы используем команду odbcinst вместо него. Это делается потому, что программа ODBCConfig достаточно наглядна и понятна, но не все пользователи имеют установленные инструментальные средства unixODBC GUI. Снова начнем с создания файла-шаблона под именем tds.datasource.template, который содержит некоторые опции типа заданной по умолчанию базы данных и UID. Примечание: Вы будете использовать Ваш собственный Servername и UID:
[P450]
Driver = TDS
Description = Northwind sample database
Trace = No
Servername = 192.168.1.25
Database = Northwind
UID = sa

Примечание: Servername не означает DNS-имя или IP-адрес сервера. Это должно соответствовать серверу из интерфейсного файла (в случае freetds.conf это значение между [], заголовок желательного раздела сервера).

Примечание: предыдущие команды выполнялись как root (обозначенный символом #), но теперь команда выполняется от имени обычного пользователя. Это значительно. Все пользователи системы совместно используют FreeTDS и ODBC-драйверы, но каждый пользователь имеет собственный список DSN (имеются исключения, но здесь они не актуальны). Так что создайте DSN как тот пользователь, который собирается использовать это:
$ odbcinst -i -s -f tds.datasource.template

Тестирование

unixODBC приходит с рядом инструментальных средств, которые позволяют Вам проверять работоспособность пакета. Используем инструмент командной строки isql. Он позволяет представлять на рассмотрение DSN команды (обычно это инструкции SQL) и принимать результаты:
$ isql -v P450 sa MyPassword
SQL> select contactname from customers

Вы должны видеть сообщение о соединении и подсказку SQL. Если этого не наблюдается, либо проблема с конфигурацией, либо задана неправильная пара значений ID и PWD.

Теперь попробуйте простую команду SQL:
SQL> SELECT contactname FROM customers
Шаблон драйвера

Создан шаблон драйвера, чтобы позволить программистам легко разрабатывать новые драйверы. Это содержит некоторые файлы типа make и все функциональные заголовки, требуемые для совместимости с ODBC 3.5.1. Некоторые функции имеют код, но большая часть оставлена для конкретной реализации.
Типовые драйверы

Двоичная переносимость драйверов для Linux ODBC когда-нибудь будет достигнута, но ODBC пока довольно плохо реализован под Linux в это время, и некоторые драйверы могут иметь проблемы. Это явление постепенно должно уменьшится, поскольку ODBC становится более используемым на Linux.

Сертифицированные драйверы СУБД Уровень ODBC Устанавливается в odbcdrivers.ini DriverConfig Замечания Поддержка
DB2 UDB для iSeries http://www-1.ibm.com/servers/eserver/iseries/access/linux 3.5 Да Да Имеется драйвер, доступный для систем Intel и для разделов iSeries, выполняющих Linux. Драйвер соответствует ODBC 3.5 ANSI со способностью сохранять и обрабатывать Unicode-данные. Поддерживает тип SQL_WCHAR Поддержка и закачка пакета: http://www-1.ibm.com/servers/eserver/iseries/access/linux
Microsoft SQL Server и Microsoft Access Вы можете использовать Bridge для работы с источником данных ODBC на Windows-машине http://www.easysoft.com/products/oob/main.phtml
DB2 http://www.ibm.com/db2 3.5 No No Библиотека libdb2.so, которая является частью набора DB Connect, работает как ODBC-драйвер Загрузить пакет можно с http://www-1.ibm.com/support/docview.wss?uid=swg21079056
Oracle http://www.oracle.com 3.5 Да Да Загрузка свободноой тестовой версии: http://www.easysoft.com support@easysoft.com news://news.easysoft.com/easysoft.public.oracle
Easysoft ODBC-ODBC Bridge от 2.0 до 3.5 Да Да http://www.easysoft.com/products/oob/main.phtml. Easysoft's ODBC-ODBC Bridge (пробная бесплатная версия) обеспечивает удаленный доступ к любому ODBC-драйверу support@easysoft.com
news://news.easysoft.com/easysoft.public.da2k.odbc-odbc-bridge
http://www.easysoft.com
DB2 http://www.starquest.com 3.5 Нет данных Нет данных http://www.starquest.com : StarSQL для UNIX 3.10 и выше, Solaris, AIX и Linux www.starquest.com/support
Sybase http://www.sybase.com 3.5 Да Нет Бесплатная пробная версия доступна на http://www.easysoft.com support@easysoft.com
news://news.easysoft.com/easysoft.public.sybase
Informix http://www.informix.com 3.51 Нет Нет Драйвер от informix работает прекрасно, но Вы должны ознакомиться с сайтом разработчиков в плане свежей документации
AdabasD www.softwareag.com/adabasd 3.5 Нет Нет ODBC-драйвер для AdabasD доступен для Solaris, HP-UX, AIX, Linux и нескольких других типов unix. Подробности на сайте разработчика http://www.softwareag.com и в конференции comp.databases.adabas
Empress http://www.empress.com . . . . .
Postgres http://www.postgresql.org 2.5 . Да Была взята Win32-версия (не из дистрибутива сервера), и она нормально работала с unixODBC с небольшими изменениями. Изменения отправлены координаторам проекта PostgreSQL
MySQL http://www.mysql.com . . . Драйвер MyODBC (http://www.mysql.com/download.html) работает с unixODBC http://www.mysql.com
MiniSQL (он же mSQL) http://www.Hughes.com.au Смесь из различных уровней. Борется за достижение 3.51. Безуспешно Да Да Alpha-версия pharvey@codebydesign.com
SQI Очень ограниченные версии INSERT, SELECT, UPDATE и DELETE . Да (используются значения по умолчанию для файла) Text File Driver (alpha) pharvey@codebydesign.com
News Server Реализована минимальная функциональность ODBC. Сильно ограниченное, но очень полезное подмножество SQL . Да Расширенная версия Ke Jin's Internet News Server ODBC-драйвера. News-серверы представляют собой источники данных, а группы новостей таблицы. pharvey@codebydesign.com
YARD SQL 3.5 Сайт проекта YARD (http://www.yard.de).
Interbase 3.5 Да Да Доступен для Windows, Linux Intel, Solaris, HPUX, AIX и OS X ftp://ftp.easysoft.com/pub/interbase
RDBMS Linter SQL 3.5 Да Да Оригинальный драйвер ODBC портирован на UNIX www.relex.ru, www.relexus.com
Ovrimos Webbase http://www.ovrimos.gr/download.php 3.5 Да Да http://www.ovrimos.gr/download.php support@ovrimos.com
Mimer SQL http://www.mimer.com 3.51 Нет данных Нет данных Посетите сайт www.mimer.com/developers для сбора дополнительной информации и загрузки пробной версии высокопроизводительной СУБД www.mimer.com/developers
Ingres http://www.cai.com 3.51 http://support.cai.com/techbases/ingres/4327.html
Sap DB http://www.sapdb.org 3.51

Установка и настройка Cold Fusion и Interbase под Linux

Что было использовано:
http://commerce.allaire.com/download/index.cfm Cold Fusion 4.51 Professional Evaluation Version for Linux,
http://www.borland.com/interbase/downloads/#interbase Interbase 6.01 Super Server for Linux,
ftp://ftp.freesoftware.com/pub/linux/redhat Redhat 6.1,
ftp://ftp.freesoftware.com/pub/linux/redhat Redhat 6.2.

Как и что делалось:
1. Под RH Linux 6.2 установлен UnixODBC 1.8.12 с применением для этой цели rpm-пакета с сайта Coding Apes ( http://grapeape.codingapes.com/unixODBC.xml). ODBC-диспетчер драйверов, обеспеченный ColdFusion, был заменен на диспетчер из UnixODBC:
mv /opt/coldfusion/lib/odbc/libodbc.so /opt/coldfusion/lib/odbc/libodbc.so.bak
ln -s /usr/lib/libodbc.so /opt/coldfusion/lib/odbc/libodbc.so
2. Под RH Linux 6.1 используйте исходный текст с сайта http://www.unixodbc.org. Если Вы не нуждаетесь в графических инструментальных средствах, а для серверов обычно их не ставят), выполните:
configure --enable-gui=no
make all
make install
Остальное подобно описанному выше.
3. Конфигурируйте Interbase ODBC Driver, загрузите Interbase Driver с сайта Easysoft ( http://www.easysoft.com/products/interbase). Установите его, скопировав файлы в каталог /usr/local/lib. Теперь настройте Ваш файл odbc.ini в /opt/coldfusion/odbc/odbc.ini примерно так:
[MyODBCSource]
Driver=/usr/local/lib/libib6odbc.so.1.0.0
Description=Interbase Driver
Database=192.168.0.1:/Database/MyDB.gdb
User=MyUser
Password=MyPassword
With_Schema=0
Dialect=3
Получение ODBC-драйвера из Informix Client access или SDK, работающего с unixODBC

1. Установите переменную окружения INFORMIXDIR к корню Вашей установки Informix. Далее я считаю, что это /usr/local/informix.

2. Определите сервис online в файле /etc/services.

3. Создайте файл sqlhosts в каталоге $INFORMIXDIR/etc, который определяет все Ваши серверы базы данных.

4. Удостоверьтесь, что все библиотеки Informix найдены ld. Они размещены в каталоге $INFORMIXDIR/lib и его подкаталогах (это включает по крайней мере cli и esql). Обычно следует включить каталоги с библиотеками в файл /etc/ld.so.conf и выполнить команду ldconfig от имени root.

5. Определите переменную окружения ODBCINI, чтобы указать на Ваш системный файл odbc.ini, например: export ODBCINI=/etc/odbc.ini. Дело в том, что эта переменная представляет собой единственный способ управлять тем, где драйвер Informix ищет сведения о конфигурации.

6. Добавьте драйвер Informix в odbcinst.ini без пробелов между именами параметров и их значениями, например:
[Informix]
Description=Informix IDS 2000
Driver=/usr/local/informix/lib/cli/libifcli.so
APILevel=1
ConnectFunctions=YYY
DriverODBCVer=03.00
FileUsage=0
SQLLevel=1
smProcessPerConnect=Y

7. Определите Informix DSN в odbc.ini:
[miecr]
Driver=Informix
Server=BARNET
Database=miecr
CLIENT_LOCALE=en_us.8859-1
DB_LOCALE=en_us.8859-1
TRANSLATIONDLL=/usr/local/informix/lib/esql/igo4a304.so

8. Теперь попробуйте выполнить тестовую команду isql miecr.

Если Вы получаете ошибку "Server %s is not listed as a dbserver name in sqlhosts", это, вероятно, вызвано пробелами в определении драйвера Informix в файле odbcinst.ini или в записи DSN в файле odbc.ini. Синтаксический анализатор драйвера очень легко ошибается.
Откуда и что можно скачать
Формат дистрибутива

unixODBC на сегодня доступен в формате tar+gzip. Это означает, что Вы должны:

Скопировать файл unixODBC*.tar.gz в нужный Вам каталог.

Распаковать его, например, командами:
gunzip unixODBC*.tar.gz
tar xvf unixODBC*.tar

Выполнение этих команд создаст каталог unixODBC со всеми исходными файлами внутри.

На момент написания данной работы последней версией была 2.2.6 (архив назывался unixODBC-2.2.6.tar.gz).

RPM-пакеты
В настоящее время на сайте CodingApes ( http://grapeape.codingapes.com) выложено несколько RPM-пакетов. Их также можно найти на http://edas.visaci.cz/en/unixodbc. RPM-пакеты для использования с версиями 7.0 и 8.0 Connectiva Linux (http://www.conectiva.com можно взять на. http://www.andrefelipemachado.hpg.com.br/linux/index.html.

Есть также версия для QNX ( http://www.qnx.com), которую можно взять с http://www.unixodbc.org/pub/beta/unixODBC/unixODBC-2.1.1-x86-public.qpr.

Версия для FreeBSD

Nick Sayer создал порт unixODBC для FreeBSD. Ее можно найти на сайте http://www.freebsd.org/ports.

Solaris 8 PKG
Palle Haastrup создал пакет для Solaris 8 http://www.unixodbc.org/pub/beta/unixODBC/binaries/unixodbc-2.1.1-sol8-sparc-local.gz .

CVS-доступ

Публичный доступ к CVS access также доступен для всех желающих работать с самыми последними исходными текстами. CVS-доступ есть на http://sourceforge.net/cvs/?group_id=1544.

Так что Вы можете использовать следующие команды, Когда будет запрошен пароль для anonymous, просто нажмите клавишу Enter:
cvs -d:pserver:anonymous@cvs.unixODBC.sourceforge.net:/cvsroot/unixodbc
login
cvs -z3 -d:pserver:anonymous@cvs.unixODBC.sourceforge.net:/cvsroot/unixodbc
co modulename

Чтобы сформировать пакет из архива CVS, выполните следующую команду:
make -f Makefile.cvs

Это будет формировать скрипт configure.

Чтобы сформировать пакет из CVS, Вы нуждаетесь в некоторых инструментальных средствах:
automake 1.5
libtool 1.4.2
Они могут быть найдены на web-сайте проекта GNU http://www.gnu.org или на его многоичисленных зеркалах.

Построение библиотек и программ

Установка теперь использует стандартный процесс GNU autoconf. Скомандуйте:
./configure
>make
make install

По умолчанию файлы будут установлены в каталог /usr/local. Как и положено с configure, это расположение может быть изменено опцией prefix:
./configure --prefix=/usr/local/unixODBC
Это установит каталоги в /usr/local/unixODBC.

Чтобы соответствовать руководящим принципам GNU, файл odbcinst теперь установлен по умолчанию в {prefix}/etc, что может быть изменено, используя опцию --sysconfdir в вызове configure. Чтобы устанавливать файлы в старое место, надо указать:
./configure --sysconfdir=/etc

Скрипт будет пытаться находить каталоги, которые необходимы для компонентов GUI, и если они не найдены (то есть, Вы не установили QT), построение пакета продолжится, но без частей GUI.

Зависимости

Компоненты GUI (ODBCConfig и DataManager) требуют Qt не ниже 2.2 ( http://www.troll.no/dl/qtfree-dl.html).

Библиотека SQI требует flex и yacc, чтобы анализировать команды SQL.

Дистрибутив в целом зависит от наличия многих из стандартных инструментальных средств разработки, типа компилятора C/C++ (в настоящее время протестирован egcs).

Начинка unixODBC


Data Flow Diagram (DFD) описывает все ключевые компоненты в окружении Linux ODBC. DFD пронумерована так, чтобы показать, что происходит при соединении с системой базы данных.

1. Приложение вызывает функцию (SQLAllocEnv, SQLAllocConnect, SQLConnect) из DriverManager.

2. DriverManager отвечает на SQLConnect драйвером базы данных, который соответствует заданному источнику данных (Data Source Name, DSN).

3. DriverManager загружает драйвер базы данных и просит, чтобы он установил связь с СУБД.

4. Драйвер базы данных может быть должен получить дополнительные опции из DSN, что выполняется им по ходу дела.

5. Драйвер базы данных использует специфическое для конкретной СУБД обращение, чтобы соединиться с базой данных.
Файл odbc.ini

ОБРАТИТЕ ВНИМАНИЕ: файлы odbc.ini и odbcinst.ini являются системной информацией ODBC. Весь доступ (чтение или запись) к этой информации должен проходить через DriverManager или разделяемую библиотеку ODBCINST. Не обращайтесь к этим INI-файлам непосредственно!

Файл odbc.ini хранит список источников данных и любых параметров для каждого из них. Имеются два типа файлов odbc.ini: системный (/etc/odbc.ini) и пользовательский (~/.odbc.ini). По умолчанию, DriverManager будет искать источники данных, используя следующую схему;

1. Используя переменную окружения, чтобы указать путь к пользовательскому файлу odbc.ini. Например, ODBCINI+/.odbc.ini.

2. Используя домашний каталог, заданный в файле /etc/passwd, чтобы найти путь для .odbc.ini.

3. Используя системный файл odbc.ini, который расположен в /etc/odbc.ini.

Файлы odbc.ini предоставляют те же самые функциональные возможности за исключением того, что системные сервисы могут принимать более высокий уровень защиты на системном odbc.ini. Во всем остальном пользовательские и системные файлы совершенно равны.

ini-файлы используют те же самые требования к синтаксису. Имена источников данных охвачены квадратными скобками. Параметры следуют в последующих строках и используют формат PropertyName=PropertyValue. Например;
[TEST]
driver = /usr/lib/libsybase.so.11
tracefile = /home/pharvey/sql.log
trace = off
database = dbAccounting

Каждое имя источника данных должно иметь, по крайней мере, определенный параметр driver. Это позволит DriverManager загружать драйвер, когда сделан запрос на соединение. Единственые параметры, с которыми работает сам DriverManager: DRIVER, TRACEFILE и TRACE. Другие параметры будут интерпретироваться уже драйвером. Секция [ODBC Data Sources] поддерживается в каждом файле odbc.ini.
Файл odbcinst.ini

Этот ini-файл просто перечисляет все установленные драйверы. Синтаксис прост: имя, сопровождаемое параметром, который сообщает имя файла драйвера:
[Sybase 11]
Comment = Super Sybase Server
Driver = /usr/lib/libsybase.so.11
Setup = /usr/lib/libsybaseS.so.11
FileUsage = 1

Имя файла драйвера (в данном случае /usr/lib/libsybase.so.11) должно быть уникально. Дружественное имя (то есть Sybase 11) также должно быть уникально.

Параметр Setup указывает на общедоступную (разделяемую) библиотеку, содержащую функции, которые нужно вызвать ODBC Config. ODBC Config вызовет эту библиотеку, чтобы получить специфические для конкретного драйвера имена параметров в ходе конфигурации источника данных. Если программа ODBC Config не может найти или использовать этот файл, она примет некоторые значения по умолчанию. Этот файл должен изменяться только разделяемой библиотекой ODBCINST или утилитой командной строки odbcinst.
Графическое наполнение

Спецификации ODBC включают два случая, в которых GUI был бы особенно полезен. Проект LinuxODBC находится в процессе реализации GUI для обоих случаев. Случаи это такие:

1. Настройка

ODBC Config должен позволить пользователю настроить параметры, специфичные для конкретного драйвера. В MS это обработано через ODBC Admin, вызывающий драйвер и передающий ему дальнейшую инициативу. LinuxODBC не будет вынуждать драйвер делать такую работу. Вместо этого, ODBC Config вызовет библиотеку Drivers Setup, чтобы получить простой список реквизитов. ODBC Config обработает представление и сохранение этих реквизитов. Этот подход делает создание библиотек Driver Setup ОЧЕНЬ простым потому, что они должны обеспечить только список опций.

2. Ввод логина

DriverManager, вероятно, придется запрашивать пользователя относительно большего количества информации для входа в систему. С поддержкой графики это вполне реально.
unixODBC без GUI
Цель

Много людей используют unixODBC, но по ряду причин не формируют конфигурацию GUI и соответствующие утилиты (ODBCConfig и DataManager).
Что такое ini-файл?

ODBC сначала появился внутри Windows 3.0. В это время Windows использовала .ini-файлы, чтобы хранить информацию о конфигурации. Это текстовые файлы, содержащие данные в следующем формате:
[section1]
entry1 = value
entry2 = value

[section2]
entry1 = value
entry2 = value
...

С появлением Windows NT, эти ini-файлы были заменены реестром, но API, чтобы обратиться к ним из ODBC, остался тем же самый. Windows имеет две функции в odbcinst.dll, которые позволяют приложениям и драйверам сделать запрос и изменять эти файлы: SQLGetPrivateProfileString и SQLPutPrivateProfileString.

Как часть репродуцирования ODBC-среды на платформах не-Windows, unixODBC обеспечивает тот же самый формат ini-файлов и функциональные возможности с помощью библиотеки libodbcinst.
Система и пользователь

ODBC делает различие между двумя типами ini-файлов. Системные ini-файлы разработаны, чтобы быть доступными, но не изменяемыми любым пользователем, а ini-файлы пользователя относятся только к какому-то специфическому пользователю и могут изменяться им.

Системные ini-файлы: odbcinst.ini и odbc.ini (внимание: точек в начале имени нет!), а пользовательский: ~/.odbc.ini в домашнем каталоге пользователя (вот этот уже с точкой: скрытый).

Системный файл odbcinst.ini хранит информацию относительно ODBC-драйверов, доступных всем пользователям, а файл odbc.ini содержит информацию относительно DSN, доступных всем пользователям. Эти системные DSN полезны для приложения типа web-серверов, которые не могут выполняться как реальный пользователь и соответственно не будут иметь домашнего каталога, чтобы хранить в нем файл .odbc.ini.

Хороший пример этого: Apache и PHP с поддержкой ODBC. Когда http-сервер запущен, он от имени root вызывает SQLAllocEnv. Позже он меняет свою принадлежность на иного пользователя и вызывает SQLConnect. Если DSN не является системным, сервер потерпит неудачу.
FILEDSN

ODBC 3 также имеет третий сорт DSN, файловый DSN. Они сохраняют информацию соединения в файле, который может быть доступен любому пользователю. UnixODBC в настоящее время не поддерживает файловый DSN, но такая поддержка планируется в ближайшее время, поскольку такой тип DSN весьма полезен. Он больше распространен в NT, чем в UNIX по причине того, такие файлы позволяют хранить данные на центральном сервере, который является доступным всем рабочим станциям, что избавляет от настройки всех систем сразу.
Почему не vi?

Все файлы конфигурации, необходимые unixODBC представляют собой простые текстовые файлы, так что не имеется никакой причины, из-за которой Вы не можете использовать Ваш любимый текстовый редактор для правки файлы.

Однако, начиная с версии beta 1.6, расположение системных файлов odbcinst.ini и odbc.ini определено скриптом выбора конфигурации. Заданное по умолчанию расположение: /usr/local/etc, и если префикс определен, расположение будет {prefix}/etc. Расположение системных файлов можно поменять и радикально указанием опции --sysconfdir=DIR, например, для обратной совместимости с версиями до pre 1.6 попробуйте:
./configure --sysconfdir=/etc
Что входит в эти файлы?
odbcinst.ini
Он содержит заголовок раздела, который обеспечивает имя для драйвера, в примере ниже это будет PostgreSQL для драйвера Postgres. Следующие строки содержат описание и затем важные биты. Пути Driver и Setup указывает на ODBC-драйвер и установку lib. Установка lib используется, когда Вы нажимаете на Add в ODBCConfig, чтобы добавить новый DSN. Наиболее интересна запись Driver. Это библиотека, которую диспетчер драйверов будет загружать динамически, когда SQLConnect или SQLDriverConnect запрашивают этот DSN. Если это указывает на неправильное место, DSN не будет работать. Если dlopen() не сработает, DSN также не будет работать. Запись fileusage дописывается программой odbcinst, так что в текстовом редакторе добавьте ее сами.
[PostgreSQL]
Description = PostgreSQL driver for Linux & Win32
Driver = /usr/local/lib/libodbcpsql.so
Setup = /usr/local/lib/libodbcpsqlS.so
FileUsage = 1
Шаблоны
odbcinst должен быть обеспечен файлом шаблона. Если Вы добавляете драйвер для вышеупомянутой записи, файл шаблона содержал бы следующее:
[PostgreSQL]
Description = PostgreSQL driver for Linux & Win32
Driver = /usr/local/lib/libodbcpsql.so
Setup = /usr/local/lib/libodbcpsqlS.so
Вы вызвали бы odbcinst со следующими параметрами:
odbcinst -i -d -f файл_шаблона
Параметры odbcinst имеют такой смысл:

-i Установить
-d драйвер
-f имя файла с шаблоном
Потоки
Начиная с версии 1.6, если диспетчер драйверов был сформирован с поддержкой потоков, Вы можете добавлять другую запись к каждой записи о драйвере:
[PostgreSQL]
Description = PostgreSQL driver for Linux & Win32
Driver = /usr/local/lib/libodbcpsql.so
Setup = /usr/local/lib/libodbcpsqlS.so
Threading = 2
Эта запись изменяет заданный по умолчанию уровень преобразования в последовательную форму потока.
[.]odbc.ini
Содержание файлов odbc.ini немного сложнее, но они все равно следуют формату файла odbcinst.ini. Они усложнены каждым драйвером, требующим различных записей. Записи могут быть добавлены таким же образом, используя odbcinst или текстовый редактор. Пример типичной записи:
[PostgreSQL]
Description = Test to Postgres
Driver = PostgreSQL
Trace = Yes
TraceFile = sql.log
Database = nick
Servername = localhost
UserName =
Password =
Port = 5432
Protocol = 6.4
ReadOnly = No
RowVersioning = No
ShowSystemTables = No
ShowOidColumn = No
FakeOidIndex = No
ConnSettings =

Это может быть записано в файл шаблона и вставлено в ini-файле для текущего (актуального) пользователя командой:
odbcinst -i -s -f template_file

Строка Driver используется, чтобы соответствовать записи [section] в odbcinst.ini, а строка Driver в файле odbcinst используется, чтобы найти путь для библиотеки драйвера, которая будет загружена, когда будет установлено соединение. Возможно заменить имя драйвера на путь к драйверу непосредственно. Это может использоваться, например, если пользователь не может получить root-доступ для записи чего-либо в /etc. Например:
[PostgreSQL]
Description = Test to Postgres
Driver = /usr/local/lib/libodbcpsql.so
Trace = Yes
TraceFile = sql.log
Database = nick
Servername = localhost
UserName =
Password =
Port = 5432
Protocol = 6.4
ReadOnly = No
RowVersioning = No
ShowSystemTables = No
ShowOidColumn = No
FakeOidIndex = No
ConnSettings =
Шаблоны
Шаблоны для драйверов, поддерживаемых пакетом:
MySQL
[MySQL-test]
Description = MySQL test database
Trace = Off
TraceFile = stderr
Driver = MySQL
SERVER = 192.168.1.26
USER = pharvey
PASSWORD =
PORT = 3306
DATABASE = test
Mini SQL (он же mSQL)
[Mini SQL]
Description = MiniSQL (mSQL)
Driver = MiniSQL
Trace = No
TraceFile =
Host = localhost
Database =
ConfigFile =
Postgress
[PostgreSQL]
Description = Test to Postgres
Driver = PostgreSQL
Trace = Yes
TraceFile = sql.log
Database = nick
Servername = localhost
UserName =
Password =
Port = 5432
Protocol = 6.4
ReadOnly = No
RowVersioning = No
ShowSystemTables = No
ShowOidColumn = No
FakeOidIndex = No
ConnSettings =
NNTP driver
[nntp Data Source]
Description = nntp Driver
Driver = nntp Driver
Trace = No
TraceFile =
Host = localhost
Database =
Port =
FreeTDS
Driver = TDS
Description = Northwind sample database
Trace = No
Servername = 192.168.1.25
Database = Northwind
UID = sa
Sybase SQL Anywhere 5.0
[Sybase SQL Anywhere 5.0]
Driver = Sybase SQL Anywhere 5.0
Description = Sybase SQL Anywhere 5.0 ODBC Driver
Userid = dba
Password = sql
DatabaseFile = sademo.db
Взаимодействие unixODBC и Mysql/MyODBC
Введение

Этот раздел разработан, чтобы помочь установить и использовать UnixODBC. Установка рассматривается в контексте базы данных MySQL.

ODBC представляет собой интерфейс, через который программы могут связываться с любой базой данных, которая имеет ODBC-драйвер. В то время как большинство баз данных имеет один или большее количество API в различных языках программирования, ODBC позволяет тому же самому коду работать с многочисленными типами баз данных. ODBC не единственый интерфейс, чтобы делать это, но он очень широко используется.
Начнем

Пакет UnixODBC доступен только в исходных текстах. Это означает, что Вы скачиваете tar-файл с http://www.unixODBC.org, распаковываете его, компилируете исходные тексты и устанавливаете получившийся пакет. Прежде, чем Вы это сможете сделаеть, нужно убедиться в некоторых вещах.
Требования
Qt toolkit version 2.x (исходные тексты) с http://www.troll.no. Удостоверьтесь, что это версия 2 или выше!
Загрузите исходные тексты Qt v2
Распакуйте их куда-нибудь, обычно это выполнено, помещая tar-файл в каталог вроде /usr/local или /opt. Затем выполните команду:
tar zxvf qt-2.0.1.tar.gz

Это создаст подкаталог qt-2.0.1 (у Вас версия пакета и имя каталога, конечно, будут другими). Не забудьте, что только root обычно может записывать данные в /usr/local или в /opt.
Откомпилируйте исходные тексты. Из каталога qt-2.0.1 скомандуйте:
./configure
make
make install
Эта последняя команда интересна тем, что она установит новую библиотеку libqt в места, где может существовать любая старая версия. Проследите, чтобы имена библиотек не совпадали, и новая библиотека не перезаписала старую, иначе могут быть проблемы с приложениями Qt/KDE
База данных (в данном случае это MySQL с http://www.mysql.com).
Установка unixODBC
Как упомянуто прежде, получите исходный tar-файл с http://www.unixodbc.org. От имени root переместите этот файл в /opt или в /usr/local. Распакуйте архив, перейдите в каталог с исходными текстами пакета и скомандуйте из него:
./configure
./make
./make install
Установка драйвера

UnixODBC нуждается в драйвере для каждого типа базы данных, с которой он будет работать. MySQL имеет драйвер ODBC, названный MyODBC, но он не входит в комплект unixODBC, так что Вы должны получить и откомпилировать его непосредственно. Я рассматриваю версию 2.50.24, для остальных все так же. Установка аналогична другим пакетам, но Вы должны дать скрипту configure некоторые опции. Он запросит Вас относительно пути к исходным текстам MySQL, но Вы также должны обеспечить параметр --with-unixODBC=<Ваш каталог unixODBC>. Чтобы configure искал unixODBC вместо iODBC, используйте --with-unixODBC=DIR, где DIR определяет каталог, в который установлен unixODBC. Если включаемые файлы и библиотеки unixODBC не размещены в каталогах DIR/include и DIR/lib, используйте параметры --with-unixODBC-libs=LIBDIR и --with-unixODBC-includes=INCDIR.

Вы могли бы поределять иной префикс для установки (не /usr/local). Я, например, храню мои ODBC-драйверы в каталоге /usr/local/odbc/lib, так что я добавляю: --prefix=/usr/local/odbc.

Таким образом, строка вызова скрипта настройки для моего случая такая:
./configure --with-unixODBC=/usr/local \
--with-mysql-sources=/usr/local/mysql

Выполните make и make install. Это помещает возникающую в результате библиотеку libmyodbc-2.50.23.so в каталог /usr/local/lib. В исходном тексте библиотеки есть ошибка контроля версии, благодаря которой версия 2.50.24 обозначена как libmyodbc-2.50.23.so. Ничего страшного это не вызывает.

Если Вы опускаете параметр --with-mysql-sources, configure будет терпеть неудачу. Если Вы опускаете параметр --with-unixODBC, configure завершится, и MyODBC откомпилируется. Однако, он не будет работать правильно при использовании с unixODBC. Проблемы, описанные ниже, произошли, когда я опустил этот параметр:

1) Если DSN (Data Source Name), которое Вы создаете, также является именем базы данных, драйвер направляется на эту базу данных независимо от того, что Вы еще определили.

2) Если DSN не задает имя существующей базы данных, Вы просто не сможете войти в систему к базе данных. Трассировка сообщит Вам, что пакет не может найти базу данных с именем DSN. Это сбивает с толку, если Вы определили допустимое имя базы данных в файле .odbc.ini.

При использовании параметра --with-unixODBC, эти проблемы не наблюдались, и все работало.

Примечание: MyODBC не поддерживает ODBC версию 3 в своей версии 2.50.24. При написании программ, которые используют этот драйвер, следует указывать параметр V_OD_ODBC2 при вызове функции SQLSetEnvAttr().
Настройка unixODBC

UnixODBC состоит из большого количества библиотек, установленных в каталог /usr/local/lib, и нескольких исполняемых файлов (binaries), установленных в каталог /usr/local/bin. Эти исполняемые файлы: ODBCConfig, DataManager и odbcinst.

Чтобы получить работающий пакет unixODBC, выполните следующее:

Все выполняется от имени root.

В xterm введите ODBCConfig. Это GUI-программа, и она должна выполняться в X-сессии. По крайней мере Вы должны установить драйвер, чтобы его использовать. Драйверы будут специфические для каждого приложения базы данных, так, например, MyODBC специфический для MySQL. В дополнение к этому, Вы должны определить setup-файл, который надлежит использовать для этого драйвера. Файлы setup находятся в /usr/local/lib/libodbc*S.so и представляют собой библиотеки, где * выражает приложение базы данных, так что /usr/local/lib/libodbcmyS.so является setup-файлом для MyODBC. Драйвер (не setup-файл!) в этом случае имеет имя /usr/local/lib/libmyodbc-2.50.23.so.

Чтобы устанавливать драйвер, выполните ODBCConfig как root, перейдите на вкладку "drivers" и нажмите кнопку "New". Вот пример настройки:
Name: myodbc
Description: MySQL driver.
Driver: /usr/local/lib/libmyodbc-2.50.23.so
Setup: /usr/local/lib/libodbcmyS.so
FileUsage: 1

Вы должны иметь установленный драйвер перед установкой DSN. Сделав так, Вы можете устанавливать системный DSN. Вы делаете это, выбирая вкладку "System DSN" и нажимая на кнопку 'New'. Затем надо указать драйвер, который надо использовать и ввести требуемую информацию. Используйте имя драйвера, которое определили в поле Driver на первом экране, и нажмите OK.

При выполнении этого как root, Вы можете создавать и редактировать файлы /usr/local/etc/odbcinst.ini (информация о драйверах) и /usr/local/etc/odbc.ini (системные записи DSN). Ранние версии unixODBC поместили бы эти файлы в /etc, и все еще Вы можете использовать опцию --sysconfdir=/etc скрипта configure, чтобы поместить файлы в это расположение.

При выполнении этого как нормальный пользователь, имейте в виду, что:

Процесс установки пользовательской записи DSN идентичен установке системной DSN. Вы просто выбираете вкладку "User DSN" в ODBCConfig и заполняете требуемые поля. Например, так:
Name: mysqltest
Description: myodbc
Driver: myodbc
Trace: Yes
TraceFile: mysql.log
Host: localhost
Port: 3306
Socket:
Database: test

Это создаст и позволит редактировать файл, именованный ~/.odbc.ini. Так как база данных test приходит без любых таблиц, Вы можете определить mysql как базу данных вместо нее, так что Вы сможете увидеть таблицы при выполнении DataManager.
Запуск DataManager

Теперь Вы должны иметь возможность выполнить DataManager и просмотреть список драйверов, DSN и таблиц для каждого DSN.
Работает! Дальше что?

UnixODBC скорее посредник между программой и одной или большим количеством баз данных, а не самостоятельная и самодостаточная программа. Имеется информация относительно настройки StarOffice так, чтобы можно было использовать ODBC-соединение. Есть также пакет управления данными, также использующий unixODBC ( http://www.info2000.net/~cmorrison/databuilder.html), да и вообще в последнее время стало много программ с поддержкой unixODBC.
Буфер соединений ODBC

Начиная с unixODBC версии 2.0.0, драйвер поддерживает объединение соединения. Этот метод позволяет увеличить быстродействие соединений драйверов путем их многократного использования. Этот раздел обсуждает, как выполнить объединение соединения в unixODBC а также, что Вы должны знать перед выполнением этого.
Сначала, почему Вы не должны использовать объединение

Имеется пара пунктов, которые должны быть рассмотрены перед использованием объединенных соединений. Возможно, что если они используются неправильно, это может нарушить системную безопасность. Если Ваш web-сервер использует PHP (например) и объединенные соединения, и делает на соединении что-либо, из-за чего конечное состояние соединения будет отличаться от начального, Вы не должны использовать объединение.

Приведу конкретный пример. Допустим, что Вы имеете страницу, которая запрашивает пароль от пользователя, а затем используя этот пароль, изменяет заданную по умолчанию базу данных как-то так, как не позволено другим пользователям. Если это соединение многократно используется другими пользователями, они будут иметь доступ к данным, которые им нельзя позволять видеть. Если Ваши скрипты делают что-то подобно этому, всегда изменяют соединение с базой данных или изменяют заданную по умолчанию базу данных, лучше не пользоваться объединением соединений
Когда Вы можете использовать объединение

Объединение эффективно только когда используется внутри процесса, хороший пример: web-сервер, использующий PHP и ODBC. Здесь соединения будут объединены внутри каждого процесса web-сервера и многократно использоваться с хорошим увеличением эффективности. Плохой пример: внешняя программа CGI. Здесь каждый раз будет выполнен различный процесс, и не имеется ничего такого, что можно улучшить с помощью объединения соединений.
Как это делается

Объединение запускается, редактируя файл настройки odbcinst.ini, а также на основании драйвера. Если требуется иметь некоторые соединения с драйвером с использованием объединений, а некоторые без этого, то создают две записи для драйвера и отображают различные DSN. Установка с поддержкой объединения выглядит примерно так:
[ODBC]
Trace = No
Trace File = /tmp/sql.log
Pooling = Yes

[INTERBASE-P]
Description = Easysoft Driver for Interbase
Driver = /usr/local/lib/libib6odbc.so
Setup = /usr/local/lib/libib6odbcS.so
FileUsage = 1
DontDLClose = 1
CPTimeout = 120

[INTERBASE]
Description = Easysoft Driver for Interbase
Driver = /usr/local/lib/libib6odbc.so
Setup = /usr/local/lib/libib6odbcS.so
FileUsage = 1
DontDLClose = 1
CPTimeout = 0

При использовании этого файла любой DSN, который применяет драйвер INTERBASE, не будет объединять соединения, а DSN, который использует драйвер INTERBASE-P, будет объединять соединения.

Параметр "Pooling=Yes" представляет собой глобальный переключатель, включающий возможность объединению в диспетчере драйвера, если он установлен в No, не будут никаких объединенных соединений. Чтобы объединять индивидуальный драйвер, значение "CPTimeout" должно быть установлено в ненулевое числовое значение.

Это значение указывает число секунд, которое объединенное соединение останется открытым, если оно не используется. Обратите внимание, что соединение будет закрыто только, когда другое соединение открыто.
Полезные сслки

http://users.ids.net/~bjepson/freeODBC: FreeODBC.

web=сайт, специализированный по общим понятиям и принципам FreeODBC. Очень неплохое свободное ODBC-решение для Linux.

http://www.easysoft.com : EasySoft.

Вы можете искать коммерческое решение для Вашего ODBC-проекта. EasySoft был очень полезен при разработке unixODBC, так что я очень рекомендую Вам обратить внимание на их разработки.

http://www.openlinksw.com: OpenLink.

Другой коммерческий поставщик простой технологии доступа к данным.

http://www.inline.net : InLine.

Эта система очень хорошо поддерживает unixODBC.

http://orcane.net/freeodbc++: odbc++.

Это очень хорошо написанный JDBC-подобный класс для ODBC. Это может использоваться вместе с unixODBC.

http://www.dharma.com: dharma.

Коммерческий набор разработчика (SDK).

http://www.geocities.com/skuchin/otl/home.htm: Odbc Template Library (OTL).

OTL предоставляет API подобный обычным потокам C++. OTL сильно интегрирован с STL через-совместимый поток.

http://www.geocities.com/corwinjoy/dtl/index.htm: Database Template Library.

Цель этой библиотеки состоит в том, чтобы сделать просмотр наборов данных ODBC аналогичным STL-контейнерам.

Ссылки на СУБД
http://members.aa.net/~swear/pedia/database.html
ftp://ftp.idiom.com/pub/free-databases
http://www.linux.org/apps/database.html
http://www-ccs.cs.umass.edu/db.html
http://www.cs.wisc.edu/~jgoldst/dbmshome.html#other
________________________________

http://www.asteriskguru.com/tutorials/realtime_pgsql.html
________________________
News Idefisk Tools Tutorials Forum Reviews VoIP Providers Archives Gallery



Back to Tutorials

7.1. With PostgreSQL

1. Introduction:

In short, RealTime provides the possibility to put configuration files in Database Servers.

Its needless to say that this eases the configuration of the asterisk server through external programs, scripts and webpages.

When making changes to the dialplan or the users, there is no need for a reload or a restart, everything is fetched from the database at all times. (this is optional and can be disabled, see later)

Besides the easier interface to other configuration tools, this also allows to have a hot spare server running asterisk, or even an easier load balanced setup.

In general the use of RealTime gives you a flexibility when you store and pull data from Asterisk.

2. Native Mysql, iodbc, unixODBC ?

There are two ways you can connect the realtime module to a database .

The first way is to use MySQL driver which is embedded in Asterisk-add ons and the second way is to use ODBC driver which is included in Asterisk HEAD CVS snapshot.

The ODBC driver is by far the best option, its a more general approach to the database, and it supports more than just mysql.
(its also used more, thus tested more, so probably the most stable of the two).

For this tutorial, we use ODBC. Again we have two options, on linux there are two ways for odbc connectivity, called iodbc and unixodbc. We use unixodbc. Also we have to mention that because of some header files duplication you can't use both driver at the same time, you have to choose one of them. Important is that the configuration of both is done in a similar way or with minor changes.


This tutorial is all about odbc with the database pgsql (PostgreSQL),
If we want to use pgsql, we will need not only the odbc apim but also the odbc-postgresql driver.

We will also need to create some things on the database, this will be documented later on in this tutorial.




3. Performance and reliability design question.

If asterisk needs to connect to the database for every step in the dialplan, the database might get very overloaded.
Its little known that Asterisk RealTime can be configured in two different ways:

Static Realtime

In this case, the data is retrieved from the database server only on startup and on reloads.

The advantage is that the load on the database server is lower, and if the database server goes down, it might not affect your running asterisk.

The big disadvantage is, ... well its not realtime :)
After every change to the database, the asterisk will need to be reloaded.)

Dynamic Realtime
this is the second possibility, here all configuration changes reflect in realtime. But if you database server goes down, so does your voip service.

4. The installation

In this tutorial we will start from a stock debian distribution, but any other distro will do fine, although some small things might be different.

Asterisk and realtime need some additional packages installed.

Packages needed before installing Asterisk:

cvs
libssl-dev
zlib1g-dev
In Debian you can install them with apt-get install .

Packages needed to include RealTime in Asterisk:

unixodbc (our version is 2.2.4-11)
unixodbc-dev
postgresql (our version is 7.4.7-6sarge1)
postgresql-client
postgresql-contrib
postgresql-dev
odbc-postgresql (our version is 07.03.0200-5)


As we want to have an asterisk version with RealTime support, we need to fetch cvs head from the asterisk CVS server:

The version which we used for this tutorial was - CVS-HEAD-06/03/05-10:59:09.

Choose some directory to put sources and download the source.

astrealtime:~# mkdir /usr/src/asterisk
astrealtime:~# cd /usr/src/asterisk
astrealtime:~# export CVSROOT=:pserver:anoncvs@cvs.digium.com:/usr/cvsroot
astrealtime:~# cvs login (password for login on cvs server is "anoncvs")
astrealtime:~# cvs checkout zaptel libpri asterisk (getting CVS HEAD sources)
astrealtime:~# cd /usr/src/asterisk/libpri
astrealtime:~# make
astrealtime:~# make install
astrealtime:~# cd /usr/src/asterisk/zaptel
astrealtime:~# make linux26


We will do everything with kernel 2.6.x

be sure to include following features in the kernel:
Device Drivers -> Character Devices -> Enhanced Real Time Clock Support
Library Routines -> CRC-CCITT functions
It is recommended but not necessary to compile them as modules.

Note: In 2.6 kernel you no longer need the usb_uhci module.

astrealtime:~# make install
astrealtime:~# cd /usr/src/asterisk/asterisk


If you habe a special processor type you can edit it in Makefile before compiling Asterisk.
For example VIA Samuel 2 processors need to be with PROC=i586 setup in that Makefile otherwise Asterisk will not run.

astrealtime:~# make
astrealtime:~# make install
astrealtime:~# make templates


If this is your first install of Asterisk you can make templates for configuration files needed.

5. UnixODBC configuration

The next step is to configure ODBC driver, in our case UnixODBC.
If you installed from Debian package you can use template files to build the needed config files. The configuration files we need to make odbc work are /etc/odbc.ini and /etc/odbcinst.ini.

astrealtime:~# odbcinst -i -d -f /usr/share/psqlodbc/odbcinst.ini.template
astrealtime:~# cat /usr/share/doc/odbc-postgresql/examples/odbc.ini.template >> /etc/odbc.ini



After last two steps we have /etc/odbc.ini and /etc/odbcinst.ini.


6. Configuration of PGSQL

Now we need to include some extra functions and data types in PostgreSQL database to be able to use proper ODBC connectivity.

astrealtime:~# su - postgres
astrealtime:~$ psql -d template1 share/psqlodbc/odbc.sql
astrealtime:~$ psql -d template1
template1=# CREATE DOMAIN lo AS int4;

Now we should create user asterisk and database named asterisk in wich we will put tables which we need for our configuration.

astrealtime:~$ createuser -P -N -d -D asterisk (this is executed in postgres user shell)
astrealtime:~$ createdb asterisk
astrealtime:~$ psql -d asterisk

Now it is time to create tables needed to store configuration in the database.

Creating table extensions_conf:

astrealtime:~$ psql -U asterisk -W -d asterisk

CREATE TABLE extensions_conf (
id serial NOT NULL,
context character varying(20) DEFAULT '' NOT NULL,
exten character varying(20) DEFAULT '' NOT NULL,
priority smallint DEFAULT 0 NOT NULL,
app character varying(20) DEFAULT '' NOT NULL,
appdata character varying(128)
);

Creating table cdr:

CREATE TABLE cdr (
calldate timestamp with time zone DEFAULT now() NOT NULL,
clid character varying(80) DEFAULT '' NOT NULL,
src character varying(80) DEFAULT '' NOT NULL,
dst character varying(80) DEFAULT '' NOT NULL,
dcontext character varying(80) DEFAULT '' NOT NULL,
channel character varying(80) DEFAULT '' NOT NULL,
dstchannel character varying(80) DEFAULT '' NOT NULL,
lastapp character varying(80) DEFAULT '' NOT NULL,
lastdata character varying(80) DEFAULT '' NOT NULL,
duration bigint DEFAULT 0::bigint NOT NULL,
billsec bigint DEFAULT 0::bigint NOT NULL,
disposition character varying(45) DEFAULT '' NOT NULL,
amaflags bigint DEFAULT 0::bigint NOT NULL,
accountcode character varying(20) DEFAULT '' NOT NULL,
uniqueid character varying(32) DEFAULT '' NOT NULL,
userfield character varying(255) DEFAULT '' NOT NULL
);


Creating table sip_conf:

CREATE TABLE sip_conf (
id serial NOT NULL,
name character varying(80) DEFAULT '' NOT NULL,
accountcode character varying(20),
amaflags character varying(7),
callgroup character varying(10),
callerid character varying(80),
canreinvite character varying(3) DEFAULT 'yes',
context character varying(80),
defaultip character varying(15),
dtmfmode character varying(7),
fromuser character varying(80),
fromdomain character varying(80),
host character varying(31) DEFAULT '' NOT NULL,
insecure character varying(4),
"language" character varying(2),
mailbox character varying(50),
md5secret character varying(80),
nat character varying(5) DEFAULT 'no' NOT NULL,
permit character varying(95),
deny character varying(95),
mask character varying(95),
pickupgroup character varying(10),
port character varying(5) DEFAULT '' NOT NULL,
qualify character varying(3),
restrictcid character varying(1),
rtptimeout character varying(3),
rtpholdtimeout character varying(3),
secret character varying(80),
"type" character varying DEFAULT 'friend' NOT NULL,
username character varying(80) DEFAULT '' NOT NULL,
disallow character varying(100) DEFAULT 'all',
allow character varying(100) DEFAULT 'g729;ilbc;gsm;ulaw;alaw',
musiconhold character varying(100),
regseconds bigint DEFAULT 0::bigint NOT NULL,
ipaddr character varying(15) DEFAULT '' NOT NULL,
regexten character varying(80) DEFAULT '' NOT NULL,
cancallforward character varying(3) DEFAULT 'yes'
);

Creating table voicemail_users:

CREATE TABLE voicemail_users (
id serial NOT NULL,
customer_id bigint DEFAULT (0)::bigint NOT NULL,
context character varying(50) DEFAULT '' NOT NULL,
mailbox bigint DEFAULT (0)::bigint NOT NULL,
"password" character varying(4) DEFAULT '0' NOT NULL,
fullname character varying(50) DEFAULT '' NOT NULL,
email character varying(50) DEFAULT '' NOT NULL,
pager character varying(50) DEFAULT '' NOT NULL,
stamp timestamp(6) without time zone NOT NULL
);

Since a week there irealtime support for queues and queue members was added to Asterisk HEAD CVS. Lets also add that...

CREATE TABLE queue_table (
name varchar(128),
musiconhold varchar(128),
announce varchar(128
вверх^ к полной версии понравилось! в evernote
Комментарии (3):
02-02-2009-05:00 удалить
Привет!
Спасибо за ваши записи,
В своём дневнике я раздаю инвайты (приглашения) в закрытый блог - Leprosorium, буду раз, если вы присоединитесь к нашему сообществу.

С уважением, Нагасаки
09-02-2009-00:12 удалить
Здравствуйте
Добро пожаловать в закрытый клуб интеллектуалов!


[показать]


Комментарии (3): вверх^

Вы сейчас не можете прокомментировать это сообщение.

Дневник asterisk postgresql UTM? | Kool_Pit - Дневник Kool_Pit | Лента друзей Kool_Pit / Полная версия Добавить в друзья Страницы: раньше»