Использование ПО с открытыми исходными кодами на платформе IBM: настройка unixODBC для работы с DB2 под AIX5L

В статье объясняется использование программ с открытым исходным кодом на платформе IBM. Эта статья знакомит с unixODBC для DB2 UDB 8.1 на AIX5L. В статье даются пошаговые инструкции по настройке диспетчера драйверов unixODBC для подключения к источнику данных на DB2 UDB 8.1 в среде AIX5L; это еще больше расширяет возможности программного обеспечения open source.

Артис Уолкер, консультант, IBM

Артис Уолкер (Artis Walker) является консультантом в IBM Solutions Development group. Он работает над портированием приложений и баз данных различных поставшиков на серверы pSeries с AIX. Артис имеет более чем десятилетний опыт работы как на Windows, так и на UNIX, включая AIX и Solaris. У него обширный опыт разработки программного обеспечения на DB2, ODBC, JDBC, C, C++ и Java. Он имеет степень бакалавра компьютерных наук университета St. Mary's University, San Antonio, штат Техас. С Артисом можно связаться по walkerar@us.ibm.com.



08.12.2008

Введение

Программы с открытым исходным кодом - это идея, время которой наконец-то пришло. Несмотря на мнение конкурентов о разрушительности этой технологии, на протяжении более двадцати лет она уверенно набирает силу. IBM - это лидер ИТ-индустрии, поддерживающий сообщество Open Source. Например, в середине июня 1998 года IBM стала поддерживать Web-сервер Apache, разработанный в рамках open source, и включила в состав своего ПО WebSphere. С того времени приверженность IBM открытому ПО существенно выросла, начиная с вклада в разработку ядра Linux и до возможности использования Linux в качестве основной операционной системы на старших моделях серверов pSeries eServers.

ODBC - это открытая спецификация, которая была введена Microsoft в начале 1990-х годов для предоставления предсказуемого API для доступа к общим источникам данных. За прошедшие несколько лет эта спецификация стала фактически промышленным стандартом для разработчиков приложений, осуществляющих доступ к источникам данных. Она дает возможность беспрепятственного соединения и обмена данными между приложениями и системами управления реляционными базами данных (СУБД). В типичной системе с ODBC диспетчер драйвера обеспечивает интерфейс приложению для выполнения SQL-запросов. Он динамически загружает нужный драйвер, с которым соединяется приложение, работающее с базой данных. В случае DB2 используется ODBC-совместимый драйвер. Он достаточно гибкий и может поддерживать среду, в которой диспетчер драйвера уже существует (как, например, unixODBC), или может динамически загружаться приложением в системе, для которой диспетчера драйвера еще нет.


unixODBC и DB2

Активно поддерживая ПО open-source, подразделение IBM/DB2 понимает, что некорректно вынуждать разработчиков вносить в свои приложения изменения для непосредственной загрузки предупакованного ODBC-совместимого драйвера - DB2 CLI. Большинство сред разработки использует диспетчер драйверов ODBC, который загружает подходящий драйвер. Диспетчер дает им гибкую возможность подключаться к любому источнику данных через ODBC-драйвер источника соединения. В сообществе Open Source диспетчером драйверов ODBC является unixODBC. В среде DB2 должен использоваться DB2 CLI, который достаточно гибок, чтобы действовать и как драйвер ODBC, что дает ему возможность подключаться к диспетчеру драйверов unixODBC, и как диспетчер ODBC драйверов.

Среда с DB2 CLI идеальна для приложений, которые работают только в системе с DB2 и для которых требуется использовать все возможности источника данных. Для доступа приложений к источнику данных используется DB2 CLI, ODBC-совместимый драйвер. Расширение же системы для доступа к другим источникам данных, возможно, потребует повторной сборки приложения. В среде, где используются ODBC-драйверы, фактически не требуется перекомпиляция. Разработчик может вставить нужный драйвер DB2 с помощью диспетчера драйверов unixODBC без вмешательства на уровень приложения. Это наиболее гибкая среда, и она дает возможность легко вставить DB2 в любую существующую среду с СУБД.


Системные требования

  • AIX5.1 или более поздняя версия.
  • DB2 UDB Version 7.1 или более поздняя версия.
  • unixODBC Version 2.50.3 или более поздняя версия.

Если не используется GNU C/C++:

  • " Visual Age C/C++ (VACPP) Version 5.0 или более поздняя версия.

Как настроить диспетчер драйверов unixODBC для AIX5L

unixODBC был проверен как на 32-, так и на 64-разрядных системах AIX. Исходный код можно загрузить с http://www.unixodbc.org. В настоящее время он имеется в формате gzip, tar. Это значит, что нужно:

  1. Скачать файл unixODBC*.tar.gz на диск, на котором можно создавать файлы и каталоги.
  2. Выполнить команду gunzip unixODBC*.tar.gz. Это создаст файл unixODBC*.tar
  3. Выполнить команду tar -xvf unixODBC*.tar. Распаковывает исходный код.

Для установки unixODBC используется GNU autoconf. Для установки нужно выполнить следующие команды:

  1. ./configure (это инструмент для конфигурирования среды сборки пакета).
  2. make
  3. make install

Инструмент конфигурирования

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

./configure --prefix=<место установки>

Все опции конфигурирования можно увидеть, выполнив команду:

./configure --help

Требования при использовании VisualAge C++

В среде AIX можно собрать unixODBC, используя компилятор VisualAge C++ (VACPP), Version 5.0 или более позднюю версию. При компиляции с помощью VACPP необходимо вызывать многопоточный компилятор и явно отключить поддержку графического интерфейса и драйверов с помощью следующей команды:

./configure --disable-gui --disable-drivers CC=xlc_r CXX=xlC_r

AIX: требования после инсталляции

Как только будут собраны библиотеки unixODBC, будет создано четыре каталога в месте, указанном опцией prefix; по умолчанию значение переменной prefix равно /usr/local:

  1. <место установки>/lib: содержит библиотеки unixODBC.
  2. <место установки>/etc: содержит конфигурационные INI файлы ODBC.
  3. <место установки>/include: содержит необходимые заголовочные файлы unixODBC.
  4. <место установки>/bin: содержит полезные инструменты для проверки соединения unixODBC с базой данных.

Во время создания нового экземпляра на AIX, DB2 помещает копию драйвера CLI/ODBC в каталог экземпляра базы данных:

  • DB2INSTANCE_HOME>/sqllib/lib/libdb2.a (статический архив)

Однако диспетчер драйверов unixODBC загружает драйвер DB2 динамически. Это означает, что из драйвера должен быть извлечен разделяемый объект1. Для этого нужно выполнить следующую команду:

cd <DB2instance_home>/sqllib/lib
ar -x libdb2.a

Это создаст файл shr.o. Для сохранения упорядоченности нужно переименовать этот файл в libdb2.so.

1Примечание: db2.o, который находится в установочном каталоге DB2 (Version 7.1: usr/lpp/db2_07_01/lib), поставляется с некоторыми версиями DB2, предшествующими версии 8. Это линкуемый разделяемый объект, который можно использовать и который исключает необходимость извлекать разделяемый объект из libdb2.a.

Регистрация с драйвером DB2

Чтобы unixODBC мог поддерживать связь с DB2, он должен зарегистрироваться с драйвером DB2. Для этого нужно перейти в <место установки>/etc и отредактировать файлы odbc.ini и odbcinst.ini, как показано в следующих примерах. .ini-файлы, приведенные в качестве примера, служат для установления соединения с базой данных SAMPLE с включенной трассировкой:

User INI file (odbc.ini)
[SAMPLE]
Description=Sample Database
Driver=DB2

User INI file (odbcinst.ini)
[DB2]
Description=DB2 ODBC Driver
Driver= cd <DB2INSTANCE_HOME>/sqllib/lib/libdb2.so
Fileusage=1
Dontdlclose=1

[ODBC]
Trace=Yes
Tracefile=<MY LOG LOCATION>/odbc_trc.log

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

Чтобы проверить, что менеджер драйверов unixODBC может обеспечить соединение с "Sample Database", заданной в odbc.ini file, нужно воспользоваться утилитой isql. Хотя она предназначена для выполнения SQL-запросов, она идеально подходит для проверки связи со сторонними источниками данных (в этом случае - DB2). Для проверки соединения нужно выполнить следующие команды:

cd <preferred location>/bin
export DB2INSTANCE=<instance owner>
./isql sample <UID> <PSWD>

Если команда isql завершится успешно, она соединит с источником данных и сразу же загрузит командную оболочку, в которой можно выполнять обычные команды SQL (снимок экрана дан ниже). Если не успешно, и появится ошибка SQLConnect, то это обычно является результатом неправильно настроенных .ini-файлов системы. В таком случае нужно исправить ошибки и перезапустить команду.

Приведенный выше запрос должен вернуть список записей продаж. Если произойдут ошибки, следует проанализировать журнал трассировки, исправить ошибки и повторно выполнить запрос. Как только все заработает без ошибок, проверка завершена. Теперь unixODBC успешно настроена. Последующие источники данных, с которыми приложение будет соединяться, просто должны быть добавлены к файлу odbcinst.ini.


Настройка работы DB2

Работу драйвера DB2 ODBC можно настроить, передавая в базу данных необходимые сочетания ключевых слов и их значений с помощью системных .ini-файлов (odbc.ini и odbcinst.ini). Файл odbc.ini содержит все драйверы ODBC, имеющиеся в системе. Файл odbcinst.ini содержит все имеющиеся DSN (Data Source Name - имя источника данных), с которыми можно установить соединение. Параметры конфигурации могут быть заданы в файле odbcinst.ini для каждого DSN. Полный список ключевых слов и их значений можно посмотреть на http://www.unixODBC.org, а также в руководстве "unixODBC without the GUI".

Иногда для того чтобы добиться от ODBC нужной работы базы данных, необходимо использовать специфические возможности источников данных. В DB2 можно воспользоваться файлом db2cli.ini для настройки баз данных на DB2. Файл db2cli.ini дает возможность пользователю передавать в источник данных на DB2 параметры конфигурации, которые неприемлемы в файле odbcinst.ini. Список ключевых слов и их значений, используемых в db2cli.ini, можно посмотреть в руководстве Call Level Interface Guide and Reference, том I, версия 8 (SC09-4849-00). Файл db2cli.ini находится в <DB2INSTANCE>/sqllib/cfg. Во время создания экземпляра базы данных DB2 помещает там этот файл в качестве примера. В файле db2cli.ini, приведенном ниже, устанавливается значение параметра CurrentSchema для примера базы данных на DB2.

 [DB2 Sample Database]
 dbalias=sample
 autocommit=0
 CurrentSchema = DB2INST1

 [COMMON]
 TRACE=1
 TRACEFILENAME=/<MY LOG LOCATION>/db2dvr_trace
 TRACEFLUSH=1

В примере можно заметить также, что трассировка включена. Это может быть полезно на уровне DB2 при разрешении специфических проблем с DB2.


Заключение

Эта статья свидетельствует, что IBM активно поддерживает сообщество Open Source, предоставив пошаговые инструкции по настройке unixODBC на AIX5L. Кроме того, были даны инструкции о том, как скомпилировать unixODBC с помощью VACPP. Это вовсе не означает, что специфическое для DB2 решение хуже чем то, в котором используется диспетчер драйверов unixODBC. Наоборот, эта статья была написана и для разработчиков, которым требуется гибкость при включении DB2 в существующую систему с диспетчером драйверов ODBC, и для тех, кому требуется гибкая реализация возможностей с использованием DB2.


Ресурсы

  1. IBM Embraces Open Source: How to Setup unixODBC on DB2 for AIX5L: оригинал статьи (EN).
  2. developerWorks DB2: это основной источник всех технических ресурсов и загрузок, относящихся к DB2.
  3. Информационный центр технической поддержки DB2 Version 8 и руководства в формате PDF: на этом сайте содержится самая последняя документация (которую можно загрузить в формате PDF) по всем версиям DB2.
  4. Раздел developerWorks AIX и UNIX содержит сотни информативных статей для читателей начальной, средней и высокой квалификации.
  5. Новичок в AIX и UNIX?: страница AIX и UNIX для новичков.
  6. AIX 5L Wiki: совместная разработка документации AIX.(EN)
  7. Разделы библиотеки информации по темам AIX и UNIX:(EN)
  8. IBM trial software: ознакомительные версии программного обеспечения для разработчиков, которые можно загрузить прямо со страницы сообщества developerWorks.(EN)
  9. Safari bookstore: сайт магазина книг по ИТ.(EN)
  10. developerWorks blogs: участвуйте в жизни сообщества developerWorks.(EN)
  11. Примите участие в форумах AIX и UNIX:(EN)
  12. Команда IBM developerWorks проводит по всему миру сотни бесплатных технических консультаций.(EN)
  13. Podcasts: аудиозаписи презентаций экспертов IBM.(EN)

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=AIX и UNIX
ArticleID=357476
ArticleTitle=Использование ПО с открытыми исходными кодами на платформе IBM: настройка unixODBC для работы с DB2 под AIX5L
publish-date=12082008