DB2 for MVS/ESA реализует поддержку реквестера прикладных программ DRDA как составную часть утилиты DDF DB2 for MVS/ESA. DDF можно остановить независимо от локальных утилит управления базами данных DB2 for MVS/ESA, но она не может работать без локальной поддержки управления базами данных DB2 for MVS/ESA.
Когда DB2 for MVS/ESA выступает в качестве реквестера прикладных программ, она может связывать работающие в системе прикладные программы с серверами баз данных DB2 Universal Database, DB2 for MVS/ESA, DB2 Universal Database for OS/390, DB2 Universal Database for AS/400 и DB2 for VSE & VM, реализующими функции сервера прикладных программ DRDA.
Чтобы реквестер прикладных программ DB2 for MVS/ESA обеспечивал доступ к распределенной базе данных, необходимо следующее:
При работе в среде распределенной базы данных постоянно требуется обмен сообщениями с другими узлами сети. Чтобы обеспечить корректную работу, нужно выполнить следующие действия:
Поскольку в сети каждой из программ назначается NETID и имя LU, у реквестера прикладных программ DB2 for MVS/ESA при связи с сетью должно быть значение NETID.LUNAME. Поскольку Реквестер прикладных программ DB2 for MVS/ESA встроен в локальную систему управления базами данных DB2 for MVS/ESA, Реквестер прикладных программ должен также иметь RDB_NAME. В публикациях по DB2 for MVS/ESA RDB_NAME называется именем положения (location name).
Определить реквестер прикладных программ DB2 for MVS/ESA для сети SNA следующим образом:
DB2 for MVS/ESA читает BSDS при запуске, чтобы получить параметры установки системы. Одна из хранящихся в BSDS записей называется записью DDF, потому что в ней содержится информация, используемая DDF для соединения с VTAM. В эту информацию входит:
Информацию DDF BSDS можно сообщить DB2 for MVS/ESA двумя способами:
Рис. 3. Панель установки DSNTIPR DB2 for MVS/ESA
+--------------------------------------------------------------------------------+ | 1 DDF STARTUP OPTION ===> AUTO NO (DDF not startable), | | AUTO (automatic start up), or | | COMMAND (start by command) | | 2 DB2 LOCATION NAME ===> SYDNEY The name other DB2s use to | | refer to this DB2 | | 3 DB2 NETWORK LUNAME ===> LUDBD1 The name VTAM uses to refer to this DB2| | 4 DB2 NETWORK PASSWORD ===> PSWDBD1 Password for connecting to other DB2s | | 5 RLST ACCESS ERROR ===> NOLIMIT Action on non-local RLST access error | | NOLIMIT - Run without limit | | NORUN - Do not run at all | | 1-5000000 - Limit in CPU service units | | PRESS: ENTER to continue END to exit HELP for more information | +--------------------------------------------------------------------------------+ |
На Рис. 4 показано, как изменить в BSDS имя положения SYDNEY, имя LU LUDBD1 и пароль PSWDBD1.
Рис. 4. Пример определения DDF загрузочного набора данных
//SYSADMB JOB ,'DB2 2.3 JOB',CLASS=A //* //* ИЗМЕНЕНИЕ ПАРАМЕТРОВ ЖУРНАЛА //* В BSDS ЗАНОСИТСЯ //* - ИМЯ ПОЛОЖЕНИЯ DB2 SYDNEY //* - VTAM LUNAME (LUDBD1) //* - ПАРОЛЬ DB2/VTAM //* //DSNBSDS EXEC PGM=DSNJU003 //STEPLIB DD DISP=SHR,DSN=DSN230.DSNLOAD //SYSUT1 DD DISP=OLD,DSN=DSNC230.BSDS01 //SYSUT2 DD DISP=OLD,DSN=DSNC230.BSDS02 //SYSPRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSIN DD * DDF LOCATION=SYDNEY,LUNAME=LUDBD1,PASSWORD=PSWDBD1 //* |
При запуске DDF (либо автоматически при начальном запуске DB2 for MVS/ESA, либо при помощи команды DB2 for MVS/ESA START DDF) она связывается c VTAM, передавая VTAM имя LU и пароль. VTAM распознает систему DB2 for MVS/ESA, сверяя имя LU и пароль (если требуется пароль VTAM) со значениями, определенными в операторе DB2 for MVS/ESA VTAM APPL. Пароль VTAM используется для проверки того, что DB2 for MVS/ESA имеет право использовать указанное имя LU в системе VTAM. Пароль VTAM не передается по сети и не используется для связи в сети других систем с DB2 for MVS/ESA.
Если VTAM не требует пароля, опустите PASSWORD= keyword в утилите изменения параметров журнала. Отсутствие этого ключевого слова указывает на то, что пароль VTAM не нужен.
После того как имя LU и пароль VTAM определены для DB2 for MVS/ESA, нужно зарегистрировать эти значения в VTAM. VTAM использует оператор APPL для задания локальных имен LU. На Рис. 5 показано, как определить для VTAM имя LU LUDBD1.
Рис. 5. Пример определения APPL DB2 for MVS/ESA
DB2APPLS VBUILD TYPE=APPL * *--------------------------------------------------------------------* * * * ОПРЕДЕЛЕНИЕ APPL ДЛЯ СИСТЕМЫ DB2 SYDNEY * * * *--------------------------------------------------------------------* * LUDBD1 APPL APPC=YES, X AUTH=(ACQ), X AUTOSES=1, X DMINWNL=10, X DMINWNR=10, X DSESLIM=20, X EAS=9999, X MODETAB=RDBMODES, X PRTCT=PSWDBD1, X SECACPT=ALREADYV, X SRBEXIT=YES, X VERIFY=NONE, X VPACING=2, X SYNCLVL=SYNCPT, X ATNLOSS=ALL X |
В операторе VTAM APPL можно использовать много ключевых слов. Значение этих ключевых слов подробно описывается в руководстве DB2 Administration Guide. Здесь рассматриваются только ключевые слова, имеющие отношение к теме этой книги. Интересующие нас на Рис. 5 ключевые слова означают следующее:
Вам не надо автоматически запускать все сеансы APPC между всеми парами партнеров распределенных баз данных. Если значение AUTOSES меньше, чем предельное число победителей конфликтов (DMINWNL), VTAM откладывает запуск всех остальных сеансов SNA до тех пор, пока они не будут востребованы прикладной программой распределенной базы данных.
Если партнер не поддерживает число сеансов, указанное в параметрах DSESLIM, DMINWNL или DMINWNR, процесс CNOS согласует новые значения, приемлемые для партнера.
Лучше всего всегда указывать SECACPT=ALREADYV, поскольку уровень защиты диалога SNA для каждого из партнеров DB2 for MVS/ESA берется из базы данных связей DB2 for MVS/ESA (столбец USERSECURITY таблицы SYSIBM.SYSLUNAMES). SECACPT=ALREADYV дает максимальную гибкость в выборе значений для USERSECURITY.
DB2 for MVS/ESA не ограничивает выбор значений для ключевого слова VERIFY. В непроверенной сети рекомендуется использовать VERIFY=REQUIRED. VERIFY=REQUIRED вынуждает VTAM отвергать партнеров, которые не могут выполнить верификацию LU партнера. Если выбрано VERIFY=OPTIONAL, VTAM выполняет верификацию LU партнера только для тех партнеров, которые предоставляют поддержку для такой верификации.
DSESLIM, DMINWNL и DMINWNR позволяют установить предельное число сеансов по умолчанию для всех партнеров. Для партнеров, которые предъявляют особые требования к количеству сеансов, можно при помощи таблицы SYSIBM.SYSLUMODES переопределить предельное число сеансов по умолчанию. Например, вы хотите задать предельное число сеансов VTAM по умолчанию, подходящее для ваших систем OS/2. Для других партнеров можно добавить строки в таблицу SYSIBM.SYSLUMODES и определить в них нужные предельные числа сеансов. Например, можете задать такие значения:
DSESLIM=4,DMINWNL=0,DMINWNR=4
Эти параметры позволяют каждому партнеру создать до четырех сеансов связи с DB2 for MVS/ESA, в каждом из которых партнер выигрывает конфликт. Поскольку OS/2 создает диалоги LU 6.2 с DB2 for MVS/ESA, задавая OS/2 в качестве победителя конфликта в сеансах, вы получите небольшой выигрыш в производительности. Если у OS/2 есть доступный сеанс-победитель конфликта, ей не нужно запрашивать разрешение на открытие нового диалога LU 6.2.
Когда прикладная программа DB2 for MVS/ESA запрашивает данные у удаленной системы, DB2 for MVS/ESA ищет в таблицах баз данных связей информацию об удаленных системах, включая поиск по следующим параметрам:
База данных связей представляет собой группу таблиц SQL, управляемых системным администратором DB2 for MVS/ESA. В качестве системного администратора DB2 for MVS/ESA необходимо использовать SQL для вставки в базу данных связей строк для описания каждого из потенциальных партнеров DRDA. База данных связей состоит из пяти таблиц:
Эта таблица позволяет DB2 for MVS/ESA определять имя LU и значение TPN для каждого из RDB_NAME, выбранных прикладной программой DB2 for MVS/ESA. Столбцы:
Если для удаленной системы требуется значение TPN, отличное от принятого по умолчанию, нужно указать здесь это значение.
Эта таблица определяет сетевые атрибуты удаленных систем. Столбцы:
Если MODESELECT содержит не 'Y', для требований доступа, управляемого системой, используется имя режима IBMDB2LM, а для требований DRDA - имя режима IBMRDB.
Столбец MODESELECT позволяет задать приоритеты для требований распределенной базы данных, указав класс обслуживания VTAM (COS), связанный с именем режима.
Эта таблица используется для определения максимального числа сеансов LU 6.2 (предельного числа CNOS) для каждой из систем партнеров. Столбцы:
Значение в столбце CONVLIMIT используется CNOS, которая устанавливает для DMINWNR и DMINWNL значение CONVLIMIT/2.
Эта таблица позволяет указать различные имена режимов для отдельных конечных пользователей или прикладных программ DB2 for MVS/ESA. Поскольку каждое имя режима VTAM может иметь связанный с ним класс обслуживания (COS), при помощи этой таблицы можно присвоить прикладным программам, работающим с распределенными базами данных, приоритеты сетевой передачи в зависимости от AUTHID, PLANNAME и LUNAME. Столбцы:
Эта таблица позволяет управлять именами конечных пользователей путем предоставления паролей, преобразования имен и проверки отправителя. В DB2 for MVS/ESA под именем конечного пользователя понимается ID авторизации. В большинстве других продуктов под этим понимается ID пользователя.
Эта таблица задает преобразование имен, что позволяет использовать различные значения в качестве ID пользователя SNA и ID авторизации DB2 for MVS/ESA. Преобразование имен допускается для запросов, отправляемых удаленной системе (исходящих требований), и для запросов, поступающих от удаленной системы (входящих требований). Если пароли не шифруются, из этой таблицы берется пароль пользователя в тех случаях, когда удаленной системе посылаются и ID пользователя, и пароль. Столбцы:
VTAM используется как Communications Manager для систем MVS. VTAM принимает команды LU 6.2 от DB2 for MVS/ESA и преобразует эти команды в потоки данных LU 6.2, которые можно передавать по сети. Чтобы VTAM мог взаимодействовать с программами партнера, определенными в базе данных связей DB2 for MVS/ESA, необходимо дать VTAM следующую информацию:
Когда DB2 for MVS/ESA взаимодействует с VTAM, для определения нужного назначения DB2 for MVS/ESA может передавать VTAM только имя LU (а не NETID.LUNAME). Это имя LU должно быть уникальным среди имен LU, известных локальной системе VTAM, что позволяет VTAM определить и NETID, и имя LU по значению имени LU, переданному DB2 for MVS/ESA. Если имена LU уникальны для всей сети SNA предприятия, это сильно упрощает процесс определения ресурсов VTAM. Однако это не всегда возможно. Если имена LU внутри ваших сетей SNA не уникальны, нужно использовать преобразование имен LU VTAM, чтобы построить корректную комбинацию NETID.LUNAME для неуникального имени LU. Этот процесс описан в разделе "Resource Name Translation" в руководстве VTAM Network Implementation Guide.
Размещение и синтаксис определений VTAM, используемых для задания имен удаленных LU, сильно зависят от того, как удаленная система логически и физически связана с локальной системой VTAM.
Записи в таблице режимов VTAM, которые вы заполняете, задают размеры RU и счетчики синхронизации связи. Некорректное задание этих значений может иметь отрицательные последствия для всех прикладных программ VTAM.
После задания размеров RU, предельного числа сеансов и счетчиков синхронизации связи чрезвычайно важно оценить, какое влияние эти значения окажут на существующую сеть VTAM. При установке новой распределенной системы баз данных следует проверить следующие параметры:
Если вы задаете параметр MAXBFRU для NCP, введите значение, рассчитанное на размер RU плюс 29 байт. Для NCP параметр MAXBFRU задает число буферов ввода-вывода VTAM, которые могут быть использованы для хранения PIU. Если выбран размер буфера IOBUF 441, при MAXBFRU=10 RU размером 4 Кбайта будут обрабатываться корректно, потому что 10*441 больше, чем 4096+29.
Когда удаленная система выполняет распределенную обработку баз данных для прикладной программы SQL, она должна удовлетворять требованиям, предъявляемым к защите реквестером и сервером прикладных программ, а также сетью, по которой они устанавливают соединение. Эти требования можно отнести к одной или нескольким из следующих категорий:
В системах MVS конечным пользователям присваиваются ID пользователя длиной от 1 до 8 символов. Значение идентификатора пользователя должно быть уникальным в конкретной системе MVS, но не обязательно уникальным во всей сети SNA. Например, один пользователь с именем JONES может существовать в системе NEWYORK, а другой пользователь с именем JONES - в системе DALLAS. Если эти два пользователя - одно и то же лицо, никаких конфликтов не возникнет. Однако, если JONES в DALLAS и JONES в NEWYORK - разные люди, сеть SNA (а следовательно, и системы распределенных баз данных внутри этой сети) не сможет их различить. Если не исправить эту ситуацию, JONES из DALLAS может пользоваться привилегиями, которые имеет JONES из системы NEWYORK.
Чтобы исключить конфликты имен, DB2 for MVS/ESA поддерживает преобразование имен конечных пользователей. Когда прикладная программа на реквестере прикладных программ DB2 for MVS/ESA посылает требование распределенной базы данных, DB2 for MVS/ESA выполняет преобразование имен, если в базе данных связей указано, что требуется преобразование имен на выходе. Если выбрано преобразование имен на выходе, DB2 for MVS/ESA требует, чтобы в каждом исходящем требовании распределенной базы данных посылался пароль.
Преобразование имен на выходе в DB2 for MVS/ESA включается путем задания в столбце USERNAMES таблицы SYSIBM.SYSLUNAMES значения 'O' или 'B'. Если в USERNAMES указано 'O', преобразование имен конечных пользователей выполняется для исходящих требований. Если в USERNAMES указано 'B', преобразование имен конечных пользователей выполняется и для исходящих, и для входящих требований.
Поскольку авторизация в DB2 for MVS/ESA зависит и от ID пользователя конечного пользователя, и от ID пользователя владельца плана или пакета DB2 for MVS/ESA, преобразование имен конечного пользователя выполняется для ID пользователя конечного пользователя, ID пользователя владельца плана и ID пользователя владельца пакета. 2 При преобразовании имен в таблице SYSIBM.SYSUSERNAMES происходит поиск строки, отвечающей одному из следующих шаблонов (TYPE.AUTHID.LUNAME), в следующей последовательности:
Если подходящая строка не найдена, DB2 for MVS/ESA отвергает требование распределенной базы данных. Если строка найдена, значение в столбце NEWAUTHID используется как ID авторизации. (Пустое значение NEWAUTHID указывает, что исходное имя не преобразуется.)
Рассмотрим пример, который обсуждался ранее. Вы хотите дать JONES из NEWYORK другое имя (NYJONES), когда JONES посылает DALLAS требования распределенной базы данных. Предположим, что программой, которую использует JONES, владеет DSNPLAN (владелец плана DB2 for MVS/ESA) и вам не нужно преобразовывать этот ID пользователя, когда он посылается DALLAS. Операторы SQL, требуемые для задания правил преобразования имен в базе данных связей, показаны на Рис. 6.
Рис. 6. SQL для преобразования имен на выходе
INSERT INTO SYSIBM.SYSLUNAMES (LUNAME, SYSMODENAME, USERSECURITY, ENCRYPTPSWDS, MODESELECT, USERNAMES) VALUES ('LUDALLAS', ' ', 'A', 'N', 'N', 'O'); INSERT INTO SYSIBM.SYSLOCATIONS (LOCATION, LOCTYPE, LINKNAME, LINKATTR) VALUES ('DALLAS', ' ', 'LUDALLAS', ''); INSERT INTO SYSIBM.SYSUSERNAMES (TYPE, AUTHID, LUNAME, NEWAUTHID, PASSWORD) VALUES ('O', 'JONES', 'LUDALLAS', 'NYJONES', 'JONESPWD'); INSERT INTO SYSIBM.SYSUSERNAMES (TYPE, AUTHID, LUNAME, NEWAUTHID, PASSWORD) VALUES ('O', 'DSNPLAN', 'LUDALLAS', ' ', 'PLANPWD'); |
Таблицы баз данных связей, полученные в результате, показаны на Рис. 7:
Рис. 7. Преобразование имен на выходе
После того как реквестер прикладных программ выберет имена конечных пользователей для удаленной прикладной программы, он должен передать требуемую LU 6.2 информацию сетевой защиты. LU 6.2 предоставляет три основных функции защиты сети:
Поскольку Сервер прикладных программ отвечает за управление ресурсами базы данных, Сервер прикладных программ определяет, какие функции сетевой защиты требуются от реквестера прикладных программ. С учетом требований каждого сервера прикладных программ нужно задать значение для столбца USERNAMES в таблице SYSIBM.SYSLUNAMES, чтобы оно отвечало этим требованиям.
Возможны следующие опции защиты диалога SNA:
Поскольку DB2 for MVS/ESA связывает преобразование имен конечных пользователей с защитой диалога на выходе, не разрешается указывать SECURITY=SAME, если включено преобразование имен конечных пользователей на выходе.
В зависимости от опций, указанных в таблице SYSIBM.SYSLUNAMES, DB2 for MVS/ESA получает пароль конечного пользователя из двух разных источников:
На Рис. 8 показано задание паролей для SMITH и JONES. Столбец LUNAME в примере содержит пробелы, поэтому эти пароли используются для любой удаленной системы, с которой SMITH или JONES пытаются связаться.
Рис. 8. Отправка пароля удаленным системам
INSERT INTO SYSIBM.SYSUSERNAMES (TYPE, AUTHID, LUNAME, NEWAUTHID, PASSWORD) VALUES ('O', 'JONES', ' ', ' ', 'JONESPWD'); INSERT INTO SYSIBM.SYSUSERNAMES (TYPE, AUTHID, LUNAME, NEWAUTHID, PASSWORD) VALUES ('O', 'SMITH', ' ', ' ', 'SMITHPWD'); |
DB2 for MVS/ESA производит поиск в таблице SYSIBM.SYSUSERNAMES, чтобы определить ID пользователя (значение NEWAUTHID) для передачи удаленной системе. Это преобразованное имя используется для получения пароля от RACF. Если вы не хотите преобразовывать имена, вы должны добавить в таблицу SYSIBM.SYSUSERNAMES строки, которые позволяют посылать имена без преобразования. На Рис. 9 показана отправка требований LUDALLAS и LUNYC без преобразования имен конечных пользователей (ID пользователя).
Рис. 9. Отправка зашифрованных паролей удаленным системам
INSERT INTO SYSIBM.SYSUSERNAMES (TYPE, AUTHID, LUNAME, NEWAUTHID, PASSWORD) VALUES ('O', ' ', 'LUNYC', ' ', ' '); INSERT INTO SYSIBM.SYSUSERNAMES (TYPE, AUTHID, LUNAME, NEWAUTHID, PASSWORD) VALUES ('O', ' ', 'LUDALLAS', ' ', ' '); |
Реквестер прикладных программ может участвовать в обеспечении защиты распределенной базы данных посредством преобразования имен на выходе, как говорилось ранее в разделе Выбор имен конечных пользователей. Можно использовать преобразование имен на выходе, чтобы регулировать доступ к каждому серверу прикладных программ в зависимости от конечного пользователя, пославшего требование, и программы, пославшей требование. Реквестер прикладных программ DB2 for MVS/ESA может участвовать в обеспечении защиты распределенной системы также следующими способами:
При связывании пакета укажите с помощью опции ENABLE/DISABLE, должен ли пакет использоваться TSO, CICS/ESA, IMS/ESA, или удаленной подсистемой DB2 for MVS/ESA.
Внешняя подсистема защиты в системах MVS обеспечивается RACF или другим продуктом, имеющим совместимый с RACF интерфейс. Реквестер прикладных программ DB2 for MVS/ESA не содержит прямых вызовов внешней подсистемы защиты, за исключением поддержки зашифрованных паролей, описанной в разделе Защита сети. Однако косвенно внешняя подсистема защиты используется в реквестере прикладных программ в следующих ситуациях:
DB2 for MVS/ESA поставляется с установленным по умолчанию идентификатором набора кодированных символов (CCSID) 500. Возможно, такое значение не годится для вашей установки.
При установке DB2 for MVS/ESA нужно установить CCSID, равный CCSID символов, генерируемых и посылаемых DB2 for MVS/ESA входными устройствами вашей системы. Этот CCSID обычно определяется используемым национальным языком. Если установлен неправильный CCSID, преобразование символов приведет к неверным результатам. Список CCSID, поддерживаемых для разных стран и национальных языков, смотрите в DB2 Connect. Руководство пользователя.
Необходимо добиться, чтобы подсистема DB2 for MVS/ESA могла выполнять преобразование из CCSID каждого сервера прикладных программ в CCSID, выбранный при установке вашей подсистемы DB2 for MVS/ESA. DB2 for MVS/ESA содержит таблицы преобразований для наиболее распространенных комбинаций CCSID источника и назначения, но не для каждой возможной комбинации. Вы можете, если требуется, дополнить набор доступных таблиц преобразования и программ преобразования. Дополнительную информацию о преобразовании символов DB2 for MVS/ESA смотрите в руководстве DB2 Administration Guide.