Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
 Научите настроить ODBC соединение в Linux  [new]
Bimon Subio
Member

Откуда:
Сообщений: 60
Есть описания подобные:
https://www-01.ibm.com/support/docview.wss?uid=swg21692171

Я ставил DB2ExpressC Free (инстоляха сервера DB2) на сервере и клиенте.
Т.е. отдельно небольшую инстоляху клиента не скачивал, а просто поставил на клиентском хосте серверный продукт (ExpressC).

Закаталогизировал, проверил соединение все нормально.

Дальше пытаюсь настроить линуксовый ODBC.

cat /etc/odbcinst.ini

[DB2]
Driver=/usr/lib/libdb2.so
Description=DB2 ODBC Driver
Fileusage=1
Dontdlclose=1


cat .odbc.ini

PROMO=IBM DB2 ODBC DRIVERCopy

[DBNAME]
Driver=/opt/ibm/db2/V10.5/lib64/libdb2.so
Description=DBNAME Database

/opt/ibm/db2/V10.5/dsdriver > ls
php32 php64 python32 python64 ruby32 ruby64

/opt/ibm/db2/V10.5/dsdriver > cat db2dsdriver.cfg
<configuration>

<dsncollection>

<dsn alias="DBNAME" name="DBNAME" host="HOST" port="50003"> </dsn>

<databases>
<database name="DBNAME" host="HOST" port="50003">
</database>
</databases>
</configuration>



isql DBNAME user password
[ISQL]ERROR: Could not SQLConnect


Как его настроить?
8 ноя 18, 20:46    [21728713]     Ответить | Цитировать Сообщить модератору
 Re: Научите настроить ODBC соединение в Linux  [new]
Bimon Subio
Member

Откуда:
Сообщений: 60
db2cli writecfg add -dsn PROMO -database PROMO -host HOST -port 50003

db2cli validate -dsn PROMO

===============================================================================
Client information for the current copy:
===============================================================================
Client Package Type       : IBM DB2 Express-C
Client Version (level/bit): DB2 v10.5.0.7 (s151221/64-bit)
Client Platform           : Linux/X8664
Install/Instance Path     : /opt/ibm/db2/V10.5
DB2DSDRIVER_CFG_PATH value: <not-set>
db2dsdriver.cfg Path      : /home/db2inst/sqllib/cfg/db2dsdriver.cfg
DB2CLIINIPATH value       : <not-set>
db2cli.ini Path           : /home/db2inst/sqllib/cfg/db2cli.ini
db2diag.log Path          : /home/db2inst/sqllib/db2dump/db2diag.log

===============================================================================
db2dsdriver.cfg schema validation for the entire file:
===============================================================================

Success: The schema validation completed successfully without any errors.

===============================================================================
db2cli.ini validation for data source name "PROMO":
===============================================================================

[ Keywords used for the connection ]

Keyword                   Value
---------------------------------------------------------------------------
DATABASE                  PROMO
PROTOCOL                  TCPIP
PORT                      50003
HOSTNAME                  HOST
UID                       promo
PWD                       ******

===============================================================================
db2dsdriver.cfg validation for data source name "PROMO":
===============================================================================

Note: The requested data source name or a database name cannot be found in 
db2dsdriver.cfg file. The file is searched at 
"/home/db2inst/sqllib/cfg/db2dsdriver.cfg".

===============================================================================
The validation is completed.
===============================================================================


cat /home/db2inst/sqllib/cfg/db2dsdriver.cfg
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<configuration>
        <dsncollection>
          <dsn alias="PROMO" host="HOST" name="PROMO" port="50003"/></dsncollection>
        <databases>
          <database host="HOST" name="PROMO" port="50003"/></databases>
</configuration>



cat /home/db2inst/sqllib/cfg/db2cli.ini
[PROMO]
Database=PROMO
Protocol=TCPIP
Port=50003
Hostname=HOST
UID=promo
PWD=xxx
8 ноя 18, 22:25    [21728816]     Ответить | Цитировать Сообщить модератору
 Re: Научите настроить ODBC соединение в Linux  [new]
Bimon Subio
Member

Откуда:
Сообщений: 60
isql -vvv promo2 promo XXX

[01000][unixODBC][Driver Manager]Can't open lib '/opt/ibm/db2/V10.5/lib32/libdb2.so.1' : file not found
[ISQL]ERROR: Could not SQLConnect



file /opt/ibm/db2/V10.5/lib32/libdb2.so.1

/opt/ibm/db2/V10.5/lib32/libdb2.so.1: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, BuildID[sha1]=1035bb732691c671474c5f29425fac5add82078e, not stripped
9 ноя 18, 07:23    [21728964]     Ответить | Цитировать Сообщить модератору
 Re: Научите настроить ODBC соединение в Linux  [new]
Bimon Subio
Member

Откуда:
Сообщений: 60
Какой то идиотизм ни DotNet ни ODBC нормально не работает и такие проблемы у многих судя по форумам.

Настроить MSSQL - 5 минут, DB2 уже 2 дня и неизвестно получится ли. Это нормально?
9 ноя 18, 07:25    [21728967]     Ответить | Цитировать Сообщить модератору
 Re: Научите настроить ODBC соединение в Linux  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4819
Bimon Subio,


Должно быть:

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/opt/ibm/db2/V10.5/lib32
9 ноя 18, 09:35    [21729021]     Ответить | Цитировать Сообщить модератору
 Re: Научите настроить ODBC соединение в Linux  [new]
Bimon Subio
Member

Откуда:
Сообщений: 60
LD_LIBRARY_PATH=/opt/ibm/db2/V10.5/lib32 isql -vvv promo2 promo XXX

[01000][unixODBC][Driver Manager]Can't open lib '/opt/ibm/db2/V10.5/lib32/libdb2.so.1' : file not found
[ISQL]ERROR: Could not SQLConnect
9 ноя 18, 10:23    [21729054]     Ответить | Цитировать Сообщить модератору
 Re: Научите настроить ODBC соединение в Linux  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4819
Bimon Subio,

Вы точно сделали export в текущей сессии?

Если да, до давайте по порядку.

Что именно из db2 вы поставили на клиента и какой битности?
Data Server Driver?
Express-C?
Какой бинтости unixODBC?

Еще раз приведите содержимое ini файлов, а то там пути к библиотекам всё время разные.
9 ноя 18, 10:36    [21729073]     Ответить | Цитировать Сообщить модератору
 Re: Научите настроить ODBC соединение в Linux  [new]
Bimon Subio
Member

Откуда:
Сообщений: 60
set | grep LD

LD_LIBRARY_PATH=/home/db2inst/sqllib/lib64:/home/db2inst/sqllib/lib64/gskit:/home/db2inst/sqllib/lib32
9 ноя 18, 11:02    [21729114]     Ответить | Цитировать Сообщить модератору
 Re: Научите настроить ODBC соединение в Linux  [new]
Bimon Subio
Member

Откуда:
Сообщений: 60
l /home/db2inst/sqllib/lib32

/home/db2inst/sqllib/lib32 -> /opt/ibm/db2/V10.5/lib32
9 ноя 18, 11:05    [21729121]     Ответить | Цитировать Сообщить модератору
 Re: Научите настроить ODBC соединение в Linux  [new]
Bimon Subio
Member

Откуда:
Сообщений: 60
dpkg -al | grep odbc

[scr]
ii iodbc 3.52.9-2 amd64 GTK+ config frontend for the iODBC Driver Manager
ii libiodbc2:amd64 3.52.9-2 amd64 iODBC Driver Manager
ii libodbc1:amd64 2.3.4-1~bpo8+1 amd64 ODBC library for Unix
ii libodbc1:i386 2.3.4-1~bpo8+1 i386 ODBC library for Unix
ii libvirtodbc0 6.1.6+dfsg2-2 amd64 high-performance database - ODBC libraries
ii odbcinst 2.3.4-1~bpo8+1 amd64 Helper program for accessing odbc ini files
ii odbcinst1debian2:amd64 2.3.4-1~bpo8+1 amd64 Support library for accessing odbc ini files
ii odbcinst1debian2:i386 2.3.4-1~bpo8+1 i386 Support library for accessing odbc ini files
ii unixodbc 2.3.4-1~bpo8+1 amd64 Basic ODBC tools
ii unixodbc-dev 2.3.4-1~bpo8+1 amd64 ODBC libraries for UNIX (development files)
[/scr]
9 ноя 18, 11:07    [21729125]     Ответить | Цитировать Сообщить модератору
 Re: Научите настроить ODBC соединение в Linux  [new]
Bimon Subio
Member

Откуда:
Сообщений: 60
Operating system information: Linux 4.9.0-0.bpo.7-amd64.#1 SMP Debian 4.9.110-3+deb9u2~deb8u1 (2018-08-14) x86_64

Product to install: DB2 Express-C
Installation type: Custom

Previously Installed Components:

Selected Components:
Base client support
Java support
SQL procedures
Base server support
DB2 LDAP support
DB2 Instance Setup wizard
Communication support - TCP/IP
Base application development tools

Languages:
English
All Products

Target directory: /opt/ibm/db2/V10.5

Space required: 1015 MB

DB2 Administration server:
Instance user information:
User name: dasusr1
Group name: dasadm1
Home directory: /home/dasusr1
9 ноя 18, 11:10    [21729127]     Ответить | Цитировать Сообщить модератору
 Re: Научите настроить ODBC соединение в Linux  [new]
Bimon Subio
Member

Откуда:
Сообщений: 60
Mark Barinstein
Еще раз приведите содержимое ini файлов, а то там пути к библиотекам всё время разные.


там линки в конечном итоге в одно и тоже место идут
9 ноя 18, 11:11    [21729130]     Ответить | Цитировать Сообщить модератору
 Re: Научите настроить ODBC соединение в Linux  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4819
Bimon Subio,

Не понял ответов.

isql - 32-bit или 64-bit приложение?

Что выдают:
file isql
db2level

У вас из-под пользователя, который isql запускает, из этой же сессии это работает?
db2cli -validate -dsn PROMO -connect -user myuser -passwd mypassword
9 ноя 18, 12:04    [21729231]     Ответить | Цитировать Сообщить модератору
 Re: Научите настроить ODBC соединение в Linux  [new]
Bimon Subio
Member

Откуда:
Сообщений: 60
which isql
/usr/bin/isql

file /usr/bin/isql
/usr/bin/isql: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=d48a0d0e7d27af63285ae45f4bd8c4524cfcdf3f, stripped


db2level

DB21085I This instance or install (instance name, where applicable: "db2inst")
uses "64" bits and DB2 code release "SQL10057" with level identifier
"0608010E".
Informational tokens are "DB2 v10.5.0.7", "s151221", "IP23956", and Fix Pack
"7".
Product is installed at "/opt/ibm/db2/V10.5".


db2cli -validate запускал из той же сессии, что и isql
9 ноя 18, 13:10    [21729366]     Ответить | Цитировать Сообщить модератору
 Re: Научите настроить ODBC соединение в Linux  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4819
Bimon Subio,

Я спрашивал про результат моей db2cli -validate, а не откуда вы ее (или свою) запускали.
У вас 64-bit приложение, а вы пытаетесь использовать 32-bit драйвер db2...

У пользователя, из-под которого запускается isql должно быть в сессии:
# Тут выставляются правильно все переменные
. ~db2inst/sqllib/db2profile

cat ~db2inst/sqllib/cfg/db2dsdriver.cfg

<configuration>
<dsncollection>
<dsn alias="PROMO" host="HOST" name="PROMO" port="50003"/>
</dsncollection>
<databases>
<database host="HOST" name="PROMO" port="50003"/>
</databases>
</configuration>

Сначала надо добиться того, чтобы db2cli -validate -connect работало из-под этого пользователя, т.е. чтобы было:
...
===============================================================================
Connection attempt for data source name "PROMO":
===============================================================================

[SUCCESS]

Если оно не будет искать этот алиас в том файле, где вам надо (~db2inst/sqllib/cfg/db2dsdriver.cfg), то в сессии можно авно выставить дополнительно:
export DB2DSDRIVER_CFG_PATH=~db2inst/sqllib/cfg/db2dsdriver.cfg

Потом указать 64-bit библиотеку в odbc.ini, а то неудивительно, что 64-bit isql не грузит 32-bit библиотеку.

cat ${ODBCINI}

[ODBC Data Source]
PROMO=IBM DB2 ODBC DRIVER

[PROMO]
Driver=/opt/ibm/db2/V10.5/lib64/libdb2.so
Description=MY PROMO
9 ноя 18, 14:10    [21729550]     Ответить | Цитировать Сообщить модератору
 Re: Научите настроить ODBC соединение в Linux  [new]
Bimon Subio
Member

Откуда:
Сообщений: 60
Mark Barinstein
У вас 64-bit приложение, а вы пытаетесь использовать 32-bit драйвер db2...


Марк, действительно проблема была в битности библиотеки.
Почему бы программе не сообщить об этом явно?

Огромное спасибо!
9 ноя 18, 14:25    [21729576]     Ответить | Цитировать Сообщить модератору
 Re: Научите настроить ODBC соединение в Linux  [new]
Bimon Subio
Member

Откуда:
Сообщений: 60
Марк, может быть вы еще и проблему с DotNet провайдером поможете решить?

https://www.sql.ru/forum/1305034/ne-poluchaetsya-sozdat-obekt-ibm-data-db2-core-db2connection
9 ноя 18, 14:55    [21729642]     Ответить | Цитировать Сообщить модератору
 Re: Научите настроить ODBC соединение в Linux  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4819
Bimon Subio
действительно проблема была в битности библиотеки.
Почему бы программе не сообщить об этом явно?

Обычно программы (как и driver manager в данном случае) не пытаются при неудачном вызове динамической загрузки библиотеки проявлять инициативу и искать библиотеку с другой битностью.

В DotNet я не разбираюсь...
9 ноя 18, 15:25    [21729709]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить