Xpoint
   [напомнить пароль]

dblink to DB2

Метки: [без меток]
[удл]
2011-09-07 13:42:07 [обр] Top manager(0/2)[досье]

Люди, возникла остарая нужда подключиться к СУБД DB2
Поставил ODBC драйвер, настроил
Сделал насройки на серваке (Oracle)
Сделал dblink в самом Oracle

Вроде все ок, начинаю проверять, все время выходит ошибка:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
[Generic Connectivity Using ODBC][IBM][CLI Driver] SQL1403N The username and/or password supplied is incorrect. SQLSTATE=08004
 (SQL State: 08004; SQL Code: -1403)
ORA-02063: preceding 3 lines from DB2

Если обратиться из, скажем, MS Access, то все ок.
Пробывал писать софтину, но она тоже без проблем коннектится.
А вот сам Oracle не хочет.

спустя 27 минут [обр] Евгений Седов aka KPbIC(0/176)[досье]
спустя 15 минут [обр] Top manager(0/2)[досье]

Евгений Седов aka KPbIC[досье] я так понял, речь идет о баге 9.3.3.

Посмотрел и...:

  1. у меня винда, а не никсы
  2. такого файла нет, сделал поиск по всему SQLLIB
  3. проверил права на директорию SQLLIB, стоит полный доступ
спустя 6 минут [обр] Евгений Седов aka KPbIC(0/176)[досье]
Тогда расскажите подробнее где у вас что стоит, и какие версии.
спустя 4 минуты [обр] Top manager(0/2)[досье]
Евгений Седов aka KPbIC[досье]
Windows 2003
DB2/NT 5.2.0
спустя 21 час [обр] Top manager(0/2)[досье]

Тему можно закрыть.
Исходные данные: DB2 не имеет своей 100% системы безопасности, часть функций делегировано самой ОС. В частности: вторизация пользователей. Что бы завести нового юзера, нужно зарегить его в DB2 (пароль не вводится, просто не куда его там вводить), а также создать локального юзера, с соответствующим паролем.

Решение:
Если включить debug дравера IBM DB2 ODBC Driver, то будет видно, что Oracle обращается к DB2, все вроде бы ок. Но только Connection String, который видно там же, весь в верхнем регистре. Это не важно, если речь идет об имени DSN и имени юзера под которым создается соединение. Проблема в том, что пароль пароль пользователя, тоже передается в верхнем регистре, а регистр для пароля в DB2 критичен. Отсюда и проблема.

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

Дополнительно:
Enabling DB2 CLI Tracing


You can enable DB2 Call Level Interface (CLI) tracing by adding the following lines to the db2cli.ini file (this procedure applies to Windows and UNIX).

To enable DB2 CLI tracing

Add a section to the db2cli.ini file labeled [COMMON].
Add the following entries to the [COMMON] section.
[COMMON]
Trace=1
TracePathName=C:\TRACE
TraceFlush=1
TraceComm=1

For each thread, one trace file is created in the path specified in TracePathName (ensure you have already created the path). On UNIX systems, the DB2 process owner must have the appropriate permissions to write to the directory specified in TracePathName.

The resulting trace files are called pid.tid i.e. 382.0 or -23456.0. Only review the trace files created at the time of problem re-creation.

Each DB2 process generates its own trace file. The events in the DB2 CLI trace are specific to DB2 clients.

Powered by POEM™ Engine Copyright © 2002-2005