Такая совместимая DB2

User avatar
BOBAH
Уже с Приветом
Posts: 9885
Joined: 18 Apr 2000 09:01
Location: Moscow -> VA -> Boston, MA

Такая совместимая DB2

Post by BOBAH »

Очередные вилы в бок от IBM.
Я уже как-то писал что наш продукт теститруется на совместимость с кучей баз данных из которых наибольшее количество геморроя дают разные версии DB2. Пока мы поддерживали только 7.1 и 7.2 основной проблемой было то, что 32 битная и 64 битная версии друг друга категорически не признают (у Оракла таких проблем нет). Для тестов приходилось перестраивать переменные окружения. Это фигня. Но вот вышла версия 8. IBM говорит что они даже сподобились организовать совместимость между 32 и 64. УРА! Все хорошо, но только одна проблема - они забыли про совместимость с предыдущими версиями. При попытке создать соединение с базой версии 7.2 выдается сообщение типа: "Чё то эта база никаких модных фич не поддерживает. Соединиться не могу". А в описании ошибки в качестве решения предлагается только обновить сервер до более новой версии. :x
Слегка потрахавшись ODBC соединение всетаки настроить удается, но работать все равно нельзя потому как при попытке соединиться через этот ODBC выдается ошибка: "[IBM][CLI Driver][DB2/NT] SQL0805N Package "NULLID.SYSSTAT" was not found." Это я уже победить не могу. При выполнения рекомендованного здесь байндинга выдается 20 ошибок и package не создается.
Чего делать? Как бороться?
zVlad
Уже с Приветом
Posts: 15312
Joined: 30 Apr 2003 16:43

Post by zVlad »

BOBAH wrote:
"...но работать все равно нельзя потому как при попытке соединиться через этот ODBC выдается ошибка: "[IBM][CLI Driver][DB2/NT] SQL0805N Package "NULLID.SYSSTAT" was not found." Это я уже победить не могу. При выполнения рекомендованного здесь байндинга выдается 20 ошибок и package не создается.
Чего делать? Как бороться?"

I am not DB2 UDB guy, but I'll try to help you.

First of all, can you provide protocol from bind to see what those 20 errors are.
User avatar
BOBAH
Уже с Приветом
Posts: 9885
Joined: 18 Apr 2000 09:01
Location: Moscow -> VA -> Boston, MA

Post by BOBAH »

zVlad wrote: First of all, can you provide protocol from bind to see what those 20 errors are.


db2 => bind "C:\Program Files\IBM\SQLLIB\bnd\db2clist.bnd" blocking all grant public

LINE MESSAGES FOR db2clist.bnd
------ --------------------------------------------------------------------
SQL0061W The binder is in progress.
172 SQL30073N "0x2419" Parameter value "0x0000" is not supported.
176 SQL30073N "0x2419" Parameter value "0x0000" is not supported.
181 SQL30073N "0x2419" Parameter value "0x0000" is not supported.
185 SQL30073N "0x2419" Parameter value "0x0000" is not supported.
188 SQL30073N "0x2419" Parameter value "0x0000" is not supported.
191 SQL30073N "0x2419" Parameter value "0x0000" is not supported.
229 SQL30073N "0x2419" Parameter value "0x0000" is not supported.
232 SQL30073N "0x2419" Parameter value "0x0000" is not supported.
235 SQL30073N "0x2419" Parameter value "0x0000" is not supported.
238 SQL30073N "0x2419" Parameter value "0x0000" is not supported.
241 SQL30073N "0x2419" Parameter value "0x0000" is not supported.
244 SQL30073N "0x2419" Parameter value "0x0000" is not supported.
247 SQL30073N "0x2419" Parameter value "0x0000" is not supported.
250 SQL30073N "0x2419" Parameter value "0x0000" is not supported.
253 SQL30073N "0x2419" Parameter value "0x0000" is not supported.
256 SQL30073N "0x2419" Parameter value "0x0000" is not supported.
259 SQL30073N "0x2419" Parameter value "0x0000" is not supported.
SQL0082C An error has occurred which has terminated processing.
SQL0092N No package was created because of previous errors.
SQL0091N Binding was ended with "19" errors and "0" warnings.
zVlad
Уже с Приветом
Posts: 15312
Joined: 30 Apr 2003 16:43

Post by zVlad »

BOBAH wrote:db2 => bind "C:\Program Files\IBM\SQLLIB\bnd\db2clist.bnd" blocking all grant public

LINE MESSAGES FOR db2clist.bnd
------ --------------------------------------------------------------------
SQL0061W The binder is in progress.
172 SQL30073N "0x2419" Parameter value "0x0000" is not supported.
......
259 SQL30073N "0x2419" Parameter value "0x0000" is not supported.
SQL0082C An error has occurred which has terminated processing.
SQL0092N No package was created because of previous errors.
SQL0091N Binding was ended with "19" errors and "0" warnings.


SQLCODE -30073 says:
"SQL30073N parameter-identifier Parameter value
value is not supported.
Explanation: The remote database received data
it does not recognize. The current environment
command or SQL statement cannot be processed
successfully, nor can any subsequent commands
or SQL statements...."

Looks like you have different versions for client and server. This is what you told in your first posting.
I'm not 100% sure but seems to me that claiming cross-version compatibility between client and server parts is not correct. One day Oracle can lose this kind of compatibility if they decide to use new options of server in client.

I would recommend you to read "Release Notes" from this site:

http://www-306.ibm.com/cgi-bin/db2www/d ... 2w/en_main

I found there, for example:

" ...DB2 Universal Database version 7 server access
To access a DB2 Universal Database ™ Version 7 server on a Linux, UNIX, or
Windows ® operating system from a version 8 client, you must have version 7
FixPak 8 or later installed on your server and have run the db2updv7
command. For instructions on installing the version 7 FixPaks, refer to the
version 7 FixPak Readme and Release Notes."

What I would also recommend your company is to have proper DB2 people who will fight problems instead of blaming DB2 and particularly IBM.

P.S. You might be able to set up multiple clients on your workstation, don't you?
zVlad
Уже с Приветом
Posts: 15312
Joined: 30 Apr 2003 16:43

Post by zVlad »

ВОВАН, какие еще вилы у Вас в боку остались. Давайте попробуем их вытащить осторожно.
В самом деле, Ваша компания не может что ли позволить себе иметь специалиста по DB2? На худой конец кто-нибудь с опытом в Оракл мог бы потратить некоторое время и научиться лучше понимать как работает ИБМ в вопросах саппорта и что такое есть DB2. Жалко просто обоих: и Вас и DB2.
User avatar
BOBAH
Уже с Приветом
Posts: 9885
Joined: 18 Apr 2000 09:01
Location: Moscow -> VA -> Boston, MA

Post by BOBAH »

zVlad wrote:ВОВАН, какие еще вилы у Вас в боку остались. Давайте попробуем их вытащить осторожно.

А я что сказал что эти вилы уже вытащены?
Давайте я расскажу Вам сказку про совместимость от IBM.
Поставил значит один программер на свою беду и по указанию начальства DB2 v8 чтобы на его машине можно было ночные тесты гнать. Стал он подключать другие тестовые базы, которые как на грех оказались версии 7. Ломанулся он напролом, а не тут то было. Строгий DB2 Control Center сразу сказал, что со старьем он работать не желает и посоветовал обновить все сервера до версии 8. "Несовместимость?" подумал он. "Не-е", сказали гуру, "IBM никогда так не делает". Ну, где наша не пропадала, подумал программер и подключил базы из командной строки. Запустил он тесты, а тесты в ответ запустили в него кучей ошибок. Загрустил программер, но помнил, что IBM всегда совместима и потому полез в доки и интернет за советом. Не нашел ничего путного, но гуру подсказали куда смотреть надобно. Оказывается если пропатчить старый сервер самым последним фикспаком, то все будет замечательно и долгожданная совместимость появится! Обрадовался программер скачал фикспак на 256 мегов и все пропатчил. Теперь правда эту пропатченую базу нельзя использовать через клиентов версии 7 которые не удостоились применения фикспака, но что значат всякие мелочи когда главная цель - совместимость между 7 и 8 практиццски достигнута.
Действительно, после установки самого последнего фикспака на семерку соединиться даже удалось, но тут выяснилось что совместимость IBM проверяла на тестовой таблице из трех полей типа INTEGER, а наши тесты все равно не идут потому что в нашей тестовой базе как на грех используются редкие и непопулярные поля типа CLOB, совместимости с которыми между версиями 7 и 8 IBM достичь не удалось. Попутно выяснилось что поля типа VARCHAR совместимы только до размера 255 символов. Все, что больше рассматривается как LONG VARCHAR и в "совместимости" не участвует.
Вот что называтся “compatibility, IBM way”. В гробу я видал такую совместимость :x

zVlad wrote:В самом деле, Ваша компания не может что ли позволить себе иметь специалиста по DB2? На худой конец кто-нибудь с опытом в Оракл мог бы потратить некоторое время и научиться лучше понимать как работает ИБМ в вопросах саппорта и что такое есть DB2. Жалко просто обоих: и Вас и DB2.


Видите ли, zVlad, нам ехать надо, а не шашечки. Наша программа использует максимально стандартизованый SQL и не использует никаких database specific расширений. Сделано это для того чтобы было легче портировать на whatever clients have on their site. Иметь узкоспециальзированного специалиста по DB2 который всю свою жизнь наступал на дибитушные грабли и поэтому может сразу сказать что это так не полетит нам не с руки потому как ситуация с граблями возникает раз в полгода-год. И все эти проблемы худо бедно удается решать своими силами.
zVlad
Уже с Приветом
Posts: 15312
Joined: 30 Apr 2003 16:43

Post by zVlad »

Позволю себе немного видоизменить Ваш оригинальный постинг:

BOBAH wrote:1. Поставил значит один программер на свою беду и по указанию начальства DB2 v8 чтобы на его машине можно было ночные тесты гнать. Стал он подключать другие тестовые базы, которые как на грех оказались версии 7. Ломанулся он напролом, а не тут то было. Строгий DB2 Control Center сразу сказал, что со старьем он работать не желает и посоветовал обновить все сервера до версии 8.
2. "Несовместимость?" подумал он. "Не-е", сказали гуру, "IBM никогда так не делает". Ну, где наша не пропадала, подумал программер и подключил базы из командной строки. Запустил он тесты, а тесты в ответ запустили в него кучей ошибок. Загрустил программер, но помнил, что IBM всегда совместима и потому полез в доки и интернет за советом.
3. Не нашел ничего путного, но гуру подсказали куда смотреть надобно. Оказывается если пропатчить старый сервер самым последним фикспаком, то все будет замечательно и долгожданная совместимость появится!
4. Обрадовался программер скачал фикспак на 256 мегов и все пропатчил. Теперь правда эту пропатченую базу нельзя использовать через клиентов версии 7 которые не удостоились применения фикспака, но что значат всякие мелочи когда главная цель - совместимость между 7 и 8 практиццски достигнута.
5. Действительно, после установки самого последнего фикспака на семерку соединиться даже удалось, ...
6. ....но тут выяснилось что совместимость IBM проверяла на тестовой таблице из трех полей типа INTEGER, а наши тесты все равно не идут потому что в нашей тестовой базе как на грех используются.....
7. ...редкие и непопулярные поля типа CLOB, совместимости с которыми между версиями 7 и 8 IBM достичь не удалось.
8. Попутно выяснилось что поля типа VARCHAR совместимы только до размера 255 символов. Все, что больше рассматривается как LONG VARCHAR и в "совместимости" не участвует.
9. Видите ли, zVlad, нам ехать надо, а не шашечки.
10. Наша программа использует максимально стандартизованый SQL и не использует никаких database specific расширений. Сделано это для того чтобы было легче портировать на whatever clients have on their site.
11. Иметь узкоспециальзированного специалиста по DB2 который всю свою жизнь наступал на дибитушные грабли и поэтому может сразу сказать что это так не полетит нам не с руки потому как ситуация с граблями возникает раз в полгода-год. И все эти проблемы худо бедно удается решать своими силами.


Предварительные рассуждения:
- что такое клиент?
Клиент - это часть единого продукта (в данном случае базы данных DB2) предназначенная для установки на компьютер(ы) иной чем компьютер сервера (в данном случае БД) и с которого(ых) поступают запросы к БД.
Клиент поставляется в каждой поставке БД, а также с SDK и некоторыми другими продуктами.
Клиент имеет версию - такую же как версия продукта с которым он поставлен.

- совместимы ли клиент и сервер одного уровня?
Безусловно.

- обязаны ли быть клиенты разных версий совметимы с разными версиями серверной части?
Зачем? Если всегда можно иметь правильную версию клиента и для этого не нужны никакие дополнительные усилия.

- тем не менее. Может ли понадобиться совместимость разных версий клиента и БД?
Да может, например, для более спокойного перевода производственной системы, когда неудобно (или не возможно) перевести на новую версию все сервера и всех клиентов за один раз.

- избежны ли проблемы совметимости у разработчика приложения (в данном случае для БД), который желает проверить работу приложения с разными версиями?
Да избежны. Для этого лишь нужно внимательно читать соответствующие документы, опубликованные на сайте ИБМ, и следовать им буквально.

Этими предварительными рассуждениями, на мой взгляд, покрываются пункты 1-5 Вашего постинга (в моей модификации).

6. Это вам ИБМ сказало? Если бы это было так на самом деле то мы бы уже давно не видели ли бы такой фирмы на рынке.

7, 8. К сожалению не могу проверить, нет у меня Ваших продуктов, на МФ поддерживаю я DB2, понимаешь. Может кто-нибудь здесь бывает с DB2 UDB и может как-то прокомментировать?

9. Чтобы ехать нужен водитель, который знает как управлять соответствующим средством.

10. Нормальный подход в Вашем случае.

11. Нет, не для того чтобы наступать на грабли (знающие DB2 люди этого не делают), а чтобы вовремя убирать из-под ног грабли, которые как я понял ваши специалисты любят разбрасывать в том поле где вы добываете сено.
User avatar
WildVlad
Уже с Приветом
Posts: 3982
Joined: 13 Jul 2000 09:01
Location: SVX -> BOS -> BUR -> SJC

Post by WildVlad »

zVlad wrote: 7, 8. К сожалению не могу проверить, нет у меня Ваших продуктов, на МФ поддерживаю я DB2, понимаешь. Может кто-нибудь здесь бывает с DB2 UDB и может как-то прокомментировать?

К сожалению, Вован прав - очень много несовместимости. Особенно с LOB'ами... Довольно большие различия между DB2 на разных платформах - Win/Linux, iSeries and z/OS... Это три больших лагеря. При этом на iSeries свои номера версий - что-то вроде 5.2 текущая. Более того, даже java'шные дрова разные на z/OS и всём остальном, не смотря на то, что IBM называет их JDBC Type 4 драйвер (писан целиком на java и должно по идее платформа должна быть не важна) но на практике видим, что всё совершенно иное... То есть select * from таблица_из_двух_колонок_типа_INT работает совместимо, но чуть копнёшь поглубже - всё приехали...
I hated LA
zVlad
Уже с Приветом
Posts: 15312
Joined: 30 Apr 2003 16:43

Post by zVlad »

WildVlad wrote:
zVlad wrote: 7, 8. К сожалению не могу проверить, нет у меня Ваших продуктов, на МФ поддерживаю я DB2, понимаешь. Может кто-нибудь здесь бывает с DB2 UDB и может как-то прокомментировать?

К сожалению, Вован прав - очень много несовместимости. Особенно с LOB'ами... Довольно большие различия между DB2 на разных платформах - Win/Linux, iSeries and z/OS... Это три больших лагеря. При этом на iSeries свои номера версий - что-то вроде 5.2 текущая. Более того, даже java'шные дрова разные на z/OS и всём остальном, не смотря на то, что IBM называет их JDBC Type 4 драйвер (писан целиком на java и должно по идее платформа должна быть не важна) но на практике видим, что всё совершенно иное... То есть select * from таблица_из_двух_колонок_типа_INT работает совместимо, но чуть копнёшь поглубже - всё приехали...


Мне кажется ВОВАН несколько про иную несовместимость говорит.
Вы хотите сказать, WildVlad, что Java дрова, предназначенные для скажем AS/400, плохо работают (или вовсе не работают) если их использовать для zOS?
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

zVlad wrote: - обязаны ли быть клиенты разных версий совметимы с разными версиями серверной части?
Зачем? Если всегда можно иметь правильную версию клиента и для этого не нужны никакие дополнительные усилия.


Нет
Бывает что один клиент работает с серверами разных версий одновременно.
Пример - DBA, который поддерживает все сервера и выполняет квери на них
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
Lazy44
Уже с Приветом
Posts: 525
Joined: 01 May 2002 20:29
Location: CT->MA->TX->UT

Post by Lazy44 »

zVlad wrote:
- обязаны ли быть клиенты разных версий совметимы с разными версиями серверной части?


I just asked our DBA. He said he is using Oracle 9i client to connect to Oracle 7.3.4, Oracle 8.0.4, Oracle 8i (8.1.7.2) and Oracle 9i.

You can connect to Oracle 9i using Oracle 8 client. It is working and supported. You can connect to Oracle9iR1 using Oracle 7 client. It is working . However it is not supporting :)

PS DB2 must die :mrgreen:
Palych
Уже с Приветом
Posts: 13683
Joined: 16 Jan 2001 10:01

Post by Palych »

Lazy44 wrote:I just asked our DBA. He said he is using Oracle 9i client to connect to Oracle 7.3.4, Oracle 8.0.4, Oracle 8i (8.1.7.2) and Oracle 9i.


Ya sejchas kak raz zanimayus' migraciej i testiruyu JDBC i OCI klientov.
Servera - polovina 8i, chast' uzhe 9i.
Klienty - 8i, 9i, 10g.
Vse vrode rabotaet. Prichem chem starshe versiya klienta - tem bystree...
zVlad
Уже с Приветом
Posts: 15312
Joined: 30 Apr 2003 16:43

Post by zVlad »

Dmitry67 wrote:
zVlad wrote: - обязаны ли быть клиенты разных версий совметимы с разными версиями серверной части?
Зачем? Если всегда можно иметь правильную версию клиента и для этого не нужны никакие дополнительные усилия.


Нет
Бывает что один клиент работает с серверами разных версий одновременно.
Пример - DBA, который поддерживает все сервера и выполняет квери на них


What's wrong in having few clients on the same workstation?
zVlad
Уже с Приветом
Posts: 15312
Joined: 30 Apr 2003 16:43

Post by zVlad »

Lazy44 wrote:
zVlad wrote:
- обязаны ли быть клиенты разных версий совметимы с разными версиями серверной части?


I just asked our DBA. He said he is using Oracle 9i client to connect to Oracle 7.3.4, Oracle 8.0.4, Oracle 8i (8.1.7.2) and Oracle 9i.

You can connect to Oracle 9i using Oracle 8 client. It is working and supported. You can connect to Oracle9iR1 using Oracle 7 client. It is working . However it is not supporting :)

PS DB2 must die :mrgreen:


For me it means that just interface between Oracle server and Oracle client has never been changed, Oracle client could be just simple pipe to send text from client application to server and vice versa. Which is might be good might be not good, depends on.
User avatar
BOBAH
Уже с Приветом
Posts: 9885
Joined: 18 Apr 2000 09:01
Location: Moscow -> VA -> Boston, MA

Post by BOBAH »

У нас в тестировании помимо DB2 участвует и Оракл 8i и 9i. Причем как 32-х так и 64-х битные версии установленные на трех операционных системах - NT, Solaris, AIX. Тестирование ведется на 4 операционках (те же + Линукс) и любая комбинация будь то 8 на 9 или 9 на 8, 32 на 64 или 64 на 32 - работает без проблем.

А что касается Вашего, zVlad, ответа мне, то единственное с чем я могу согласиться это с тем, что документацию надо было читать внимательнее.
User avatar
BOBAH
Уже с Приветом
Posts: 9885
Joined: 18 Apr 2000 09:01
Location: Moscow -> VA -> Boston, MA

Post by BOBAH »

zVlad wrote:
Dmitry67 wrote:
zVlad wrote: - обязаны ли быть клиенты разных версий совметимы с разными версиями серверной части?
Зачем? Если всегда можно иметь правильную версию клиента и для этого не нужны никакие дополнительные усилия.


Нет
Бывает что один клиент работает с серверами разных версий одновременно.
Пример - DBA, который поддерживает все сервера и выполняет квери на них


What's wrong in having few clients on the same workstation?


Я не пробовал поставить двух разных клиентов DB2 на NT, но я почему-то уверен что ничего хорошего из этого не выйдет.
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

zVlad wrote:What's wrong in having few clients on the same workstation?


Потмоу что часто это невозможно

Ну например вы используете ODBC. МОжет там и можно подсовывать разные DLL, но если у вас есть уже аппликация третьей фирмы, которая сама создает ODBC datasources ?

В понимании M£ connectivity - это некий софтовый пакет который глобален для компа

У этого подходы есть плюсы и минусы
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
zVlad
Уже с Приветом
Posts: 15312
Joined: 30 Apr 2003 16:43

Post by zVlad »

BOBAH wrote:
zVlad wrote:
Dmitry67 wrote:
zVlad wrote: - обязаны ли быть клиенты разных версий совметимы с разными версиями серверной части?
Зачем? Если всегда можно иметь правильную версию клиента и для этого не нужны никакие дополнительные усилия.


Нет
Бывает что один клиент работает с серверами разных версий одновременно.
Пример - DBA, который поддерживает все сервера и выполняет квери на них


What's wrong in having few clients on the same workstation?


Я не пробовал поставить двух разных клиентов DB2 на NT, но я почему-то уверен что ничего хорошего из этого не выйдет.


I couldn't find direct instructions for multiple clients (I have no much time). What I was able to find in manuals are:

"Chapter 1. DB2 clients overview
DB2 clients
There are three types of DB2 ® clients:
v Run-Time Client
v Administration Client
v Application Development Client
DB2 clients can connect to DB2 servers two releases later or one release earlier
than the client’s release level, as well as to servers at the same release level.
This means that a DB2 Version 6 client can connect to DB2 servers at versions
5, 6, 7, and 8."

"Chapter 4. Configuration scenarios
Supported and non-supported client configuration scenarios
This section describes both the supported and non-supported configuration
scenarios for clients and servers.
Supported standard and gateway configuration scenarios
The following table describes the standard and gateway configuration support
for DB2 clients. For example, if you have a DB2 UDB Version 8 32-bit client,
you can connect to a DB2 UDB Version 8 64-bit server using a Version 8 32-bit
gateway:"

"Thin clients
A thin client refers to a DB2 ® Administration Client that runs its applications
from a code server across a network. A thin client can be set up by installing a
DB2 Administration client or DB2 Connect Personal Edition (PE) on a
workstation running a Windows ® 32-bit operating system. This workstation
can then act as a code server that allows the application to run with only the
immediately necessary modules at the client."
User avatar
WildVlad
Уже с Приветом
Posts: 3982
Joined: 13 Jul 2000 09:01
Location: SVX -> BOS -> BUR -> SJC

Post by WildVlad »

zVlad wrote: Вы хотите сказать, WildVlad, что Java дрова, предназначенные для скажем AS/400, плохо работают (или вовсе не работают) если их использовать для zOS?

ДА. Именно так. Абсолютно разные дрова. Одинаковые только имена классов драйверов, да и то, этого они добились применением заглушек вида
DB2Driver extends DB2SQLJOS390Driver {}; (Ну или что-то типа того)
I hated LA
zVlad
Уже с Приветом
Posts: 15312
Joined: 30 Apr 2003 16:43

Post by zVlad »

WildVlad wrote:
zVlad wrote: Вы хотите сказать, WildVlad, что Java дрова, предназначенные для скажем AS/400, плохо работают (или вовсе не работают) если их использовать для zOS?

ДА. Именно так. Абсолютно разные дрова. Одинаковые только имена классов драйверов, да и то, этого они добились применением заглушек вида
DB2Driver extends DB2SQLJOS390Driver {}; (Ну или что-то типа того)


Please correct me if I say wrong.
And you want to run OS/390 JDBC against AS/400 database. Why?
User avatar
WildVlad
Уже с Приветом
Posts: 3982
Joined: 13 Jul 2000 09:01
Location: SVX -> BOS -> BUR -> SJC

Post by WildVlad »

zVlad wrote:Please correct me if I say wrong.
And you want to run OS/390 JDBC against AS/400 database. Why?

Вы меня не правильно поняли. Я не пытаюсь из-под z/OS подцепиться к AS/400. Более того, используя z/OS-овские дрова это возможно.

Объясню более подробно. Одна из основных фишек DB2 v 8 UDB (а понятие UDB включает в себя и DB2 for z/OS, если что) было наличие так называемых JDBC Type 4 дров, обладающих следующими характеристиками:

1. Писаны целиком на Java без использования нативных библиотек.
2. Работают по DRDA протоколу, умеют коннектиться к UDB на любой платформе, если есть лицензия. То есть отпадает необходимость каталогизовать базы на клиенте, вместо этого в параметрах коннекции просто указывается хост, порт и имя базы.

На проверку дрова поставляемый для Windows платформы сумели подцепиться ко всем остальным DB2 v8 на разных платформах. Они даже смогли подцепиться и к 7ым базам, но там не смогли запускать статические запросы.

Идилия продолжалась до того момента пока не посмотрели что на z/OS IBM поставляет СОВЕРШЕННО другую версию java-кода для дров (как не вспомнить про "написано один раз - не работает ни где" :mrgreen:). Спрашивается чего им не хватило виндовской версии дров? Более того, запустить виндовские дрова на z/OS не получилось - чего то типа не хватило (есть смутное подозрение на EBCDIC, но это может быть и не так).

Идём дальше. IBM от нас потребовала использования статических запросов из Java. Это можно добиться только используя SQLJ (типа java-программа с эмбеднутыми в неё SQL-запросами). Далее на .sqlj-файл натравливается SQLJ-компилятор, который создаёт .java (или сразу .class) и .ser файл. Первый - это java-код по работе с запросами, второй - сами запросы в сериализованном формате. После чего натравливается SQLJCustomizer, который биндит пакеты в базу, меняя по ходу дела .ser файл. Все счастливы, пока использую ОДНУ версию DB2.

Далее идёт веселье:

1. SQLJ-файл построенный в расчёте на SQLJCompiler + SQLJCustomizer идущие с DB2 UDB 7 НЕ ПОДХОДИТ для DB2 UDB v8'ных. Имеем непереносимость на уровне исходников. Хотя изначально задумывалась бинарная совместимость .class/.ser с необходимостью натравить SQLJCustomizer, который забиндит пакеты по этой паре файлов на базу (только на этом этапе допускалась несовместимость) и всё путём.

2. Апофигеоз SQLJ-несовместимости наступает на DB2 v 8 (кстати, IBM оффициально это признала). .class/.ser файлы, откомпилённые используя SQLJ-компилятор (100% написан на java) под Windows'ом не будут кастомизиться на z/OS (то есть такая программа не может быть запущена на z/OS, но прекрасно будет работать под Windows и даже уметь коннектиться к DB2 for z/OS). Для того чтобы забиндить пакеты из-под z/OS (и программа и база живут на z/OS) необходимо запустить SQLJ-компилятор под z/OS'ом - да, да пойти в зелёные буковки на чёрном фоне (ну ладно пойти в USS), и всё это типа java - written once works neverwhere :)

А билд-процесс у нас типа на windows-машине... Или может программу в сырцах шипить? Так ведь сама IBM не поймёт такой наглости от нас.

Примечание:
I hated LA
Lazy44
Уже с Приветом
Posts: 525
Joined: 01 May 2002 20:29
Location: CT->MA->TX->UT

Post by Lazy44 »

zVlad wrote:
Lazy44 wrote:
zVlad wrote:
- обязаны ли быть клиенты разных версий совметимы с разными версиями серверной части?


I just asked our DBA. He said he is using Oracle 9i client to connect to Oracle 7.3.4, Oracle 8.0.4, Oracle 8i (8.1.7.2) and Oracle 9i.

You can connect to Oracle 9i using Oracle 8 client. It is working and supported. You can connect to Oracle9iR1 using Oracle 7 client. It is working . However it is not supporting :)

PS DB2 must die :mrgreen:


For me it means that just interface between Oracle server and Oracle client has never been changed, Oracle client could be just simple pipe to send text from client application to server and vice versa. Which is might be good might be not good, depends on.


Ну и что? У нас установлены клиенты на 23 тысячах машин от Oracle и DB2. База Оракл апгрейдится по мере надобности, клиенты новые ставятся последней версии Оракл на новые компьютеры.. Все работает. ДБ2 на мэйнфрейме не апгрейдилась со времен царя гороха. Сейчас я понимаю, почему - кроме базы надо апгрейдить клиентов, а это за разумное время не сделать.
zVlad
Уже с Приветом
Posts: 15312
Joined: 30 Apr 2003 16:43

Post by zVlad »

WildVlad wrote:...

Вы меня не правильно поняли. Я не пытаюсь из-под z/OS подцепиться к AS/400. Более того, используя z/OS-овские дрова это возможно.

.........:


I found on IBMLink (see below). Two links mentioned there:


http://www.ibm.com/software/data/pubs/papers/sqlj/

http://www.stldug.org/pdfs/Vonau.pdf

IBMLink gives:


"Item RTA000174817
Source..........: US DASYS
Last updated....: 08/19/2003
Abstract........: SQLJ Compilation Issues - workstation development - run on z/OS
Q:
Topic thread:
WebSphere and OS390 Servers (WAS390-WEB TECH SALES)
Wepsphere Application Servers for z/OS and OS/390
V4 (Enterprise Edition)

I have a customer developing WebSphere Applications for zOS WAS
4.01. To improve performance the application is using SQLJ to make
calls to DB2. When you use SQLJ with DIRECT BIND option, you must use
DB2 tools "dbprofc.sh" to generate what is known as DBRMLIB entries
for each SQLJ program that will contain the instructions to directly
bind the SQL to the database. DBRMLIBs are PDSs and can only be
generated on 390 (i.e. not portable)
The customer is really up in arms about the 390 Java compile
performance. IBMs 390 JAVA strategy is to develop on a workstation and
run on the mainframe. I am not sure where do go with this but can you
help me find out what recommendations I can make to the customer.
A:
The answer is complicated and I hope you will allow me to back
track somewhat. As of this moment, the SQLJ translator
produces uncustomized .ser file output as well as the input to the
javac. The customization which must occur if SQLJ is to be statically
bound must take place on z/OS. db2profc is run and produces the
customized profile (.ser) and DBRMs. The DBRMs are bound into packages
and the .ser file must be sent back to wherever the application is being
developed (typically WSAD). The .ser file is then packaged into
an .ear file for deployment. I am just recapping what happens today.

There are better times ahead, soon. There is currently a Java
Universal Driver available with DB2 for Multiplatforms (both type
2 and Type 4 drivers).The manner of generating SQLJ will be
changed drastically as is the .ser file. The key is the word
"universal", as the driver to be "universal" across the DB2 family.
That is, it will be the same code executing across all platforms, so
behaviors will be the same.

A new way of creating SQLJ will be universal across the DB2 family.
A new SQLJ translator will produce a portable .ser as well as the input
to javac. db2profc is replaced by a new utility, db2customize that
will customize the profile for the 390 platform while it is on the
workstation. It will bind the packages directly from the
workstation to zDB2. There will be no more DBRMs produced.

The Type 4 Universal Driver has Application Requester code built in
and therefore, from a workstation, has the ability to use DRDA to
connect to zDB2, customize and bind WITHOUT using DB2 Connect as
a conduit. For this functionality the Type 4 driver will be required.

So that takes care of the portability of the SQLJ. And the
.ser remains on the workstation. What else is needed? Help from
WSAD. WSAD 5.1, announced 8/05/03, is expected to provide support
for SQLJ, as a recognized object, and the capability for the developer
to remain on WSAD as he creates SQLJ, invokes the translator and
customizer. WSAD 5.1 is available during August, 2003. And you just
need the "base" WSAD.

These are the WSAD 5.1 functions in support of SQLJ:
Version 5.1 adds SQLJ wizards, editor, and builder support
1. Wizard creates a new SQLJ file in a "Java" project (Web, EJB)
2. Editor extends the Java editor to understand the SQLJ syntax
3. SQLJ errors will appear in the task list
4. The SQLJ translator will be run automatically (as a Studio builder)
It generates the .SER file and Java files
5. Generates Ant script for execution of the profiling operation
6. Can debug SQLJ at a source level (SQLJ files, not generated
Java files)
7. Has wizards to create a new Stored Procedure
8. Includes user selected predefined fragments to simplify creation
9. Editor can view and manipulate the stored procedure
10.Procedure can be built, debugged and executed from Studio
Session EJB or Java bean can be generated to invoke the Procedure

The Universal Driver will be provided in DB2 for z/OS V8 (no announced
GA) and will be retrofitted into the current DB2 for OS/390 V7 via the
service stream. It is planned to be available by year end (2003), but
as with plans, unexpected events can prevent it.

I can't offer your customer relief instantly, but IBM recognizes the
process is cumbersome at best, and I wanted to give you hope.

Q:
Thank you so much for the comprehensive answer below. One point of
clarification. Is this new universal driver going to require
WebSphere V5 with the SKD 1.4?
A:
No. It requires SDK/JDK 1.3. Support is planned for WAS
V5, as WSAD 5.1 aligns with WAS V5.0.2. I don't know if I mentioned
it but the Universal Driver by year end will also be JDBC 3.0
compliant. The main source for the Universal Driver is the README at
http://www.ibm.com/software/data/pubs/papers/sqlj/

A good presentation on it, though I think it is for Universal Driver
V1 is on
http://www.stldug.org/pdfs/Vonau.pdf

Actually I did a Google search on: DB2 Universal Driver SQLJ
and found the above presentation and some other info. Scanning the
articles, I observed most of them are for the V1.0 driver which provided
only the Type 4 driver.

S e a r c h - k e y w o r d s:
Java .ser .ear WSAD WAS V5 WebSphere db2profc db2customize classes
DB2 SPB wizard BIND DBRM"
zVlad
Уже с Приветом
Posts: 15312
Joined: 30 Apr 2003 16:43

Post by zVlad »

Lazy44 wrote:..... ДБ2 на мэйнфрейме не апгрейдилась со времен царя гороха. Сейчас я понимаю, почему - кроме базы надо апгрейдить клиентов, а это за разумное время не сделать.


You would never believe me but in most common architecture for DB2 on mainframe it doesn't need any client to be installed on workstation. CICS is used for that and TCP/IP.
When we upgraded our DB2, couple years ago, nothing needed to be changed for clients at all.

I suspect, the reason why your DB2 has never been upgraded is different.
As I explaned above, with proper FixPacks you can have compatibility:

"...DB2 clients can connect to DB2 servers two releases later or one release earlier
than the client’s release level, as well as to servers at the same release level.
This means that a DB2 Version 6 client can connect to DB2 servers at versions
5, 6, 7, and 8."
User avatar
WildVlad
Уже с Приветом
Posts: 3982
Joined: 13 Jul 2000 09:01
Location: SVX -> BOS -> BUR -> SJC

Post by WildVlad »

zVlad wrote: I found on IBMLink (see below). Two links mentioned there:
http://www.ibm.com/software/data/pubs/papers/sqlj/
http://www.stldug.org/pdfs/Vonau.pdf

IBMLink gives:

...

There are better times ahead, soon. There is currently a Java
Universal Driver available with DB2 for Multiplatforms (both type
2 and Type 4 drivers).The manner of generating SQLJ will be
changed drastically as is the .ser file. The key is the word
"universal", as the driver to be "universal" across the DB2 family.
That is, it will be the same code executing across all platforms, so
behaviors will be the same.

A new way of creating SQLJ will be universal across the DB2 family.
A new SQLJ translator will produce a portable .ser as well as the input
to javac. db2profc is replaced by a new utility, db2customize that
will customize the profile for the 390 platform while it is on the
workstation. It will bind the packages directly from the
workstation to zDB2. There will be no more DBRMs produced.

The Type 4 Universal Driver has Application Requester code built in
and therefore, from a workstation, has the ability to use DRDA to
connect to zDB2, customize and bind WITHOUT using DB2 Connect as
a conduit. For this functionality the Type 4 driver will be required.

...


Это теория. На практике выходит вот что (я немного не точно выразился в предыдущем посте):

1 .ser-файлы совместимы, если пользоваться DB2 JDBC v8 Type 4 драйвер. Однако, они не совместимы (ни в одну сторону) с 7.2-драйвером, а также с v8 Type 2 драйвером for z/OS. То есть несовместимость наблюдается даже для одной и той же версии драйвера.

2. IBM это признала и советует для DB2 JDBC v8 Type 2 driver for z/OS проводить SQLJ-компиляцию (создавать ser'ы) прямо под z/OS'ом. Кстати, эта инофрмация гораздо свежее (датирована этим годом), чем приведённая ссылка.

В результате мы компилим SQLJ-файл (я погорячился, на уровне sqlj-исходников они совместимы) 2 раза, используя SQLJ-компиляторы из v7 и v8 type4 драйверов (надо сказать выглядит это довольно эротично), а v8 Type2 не поддерживаем потому как несовместимость под z/OS'ом наблюдается.
I hated LA

Return to “Вопросы и новости IT”