В DB2 for VM поддержка реквестера прикладных программ DRDA реализована как составная часть адаптера ресурсов, расположенного на виртуальной машине конечного пользователя прикладной программы. Поддержку реквестера прикладных программ можно использовать, даже если виртуальная машина локального менеджера баз данных не активна. Для запуска реквестера прикладных программ DRDA можно использовать команду SQLINIT EXEC с опцией protocol(auto) или protocol(drda) (смотрите раздел Опции препроцессорной обработки и выполнения прикладной программы).
Если DB2 for VM работает как реквестер прикладных программ, она может соединяться с сервером прикладных программ DB2 for VM или с другим продуктом сервера, поддерживающим архитектуру DRDA. Чтобы обеспечить доступ реквестера прикладных программ к распределенной базе данных, необходимо знать, как выполнить следующие действия:
Для многих операций в среде распределенных баз данных требуется обмен сообщениями с другими системами в сети. Чтобы этот процесс шел правильно, выполните следующие действия:
Реквестер прикладных программ DB2 for VM и сервер прикладных программ DB2 for VM независимы друг от друга. Реквестер прикладных программ DB2 for VM направляет запросы соединения на локальные или удаленные серверы прикладных программ. Однако он не принимает входящих запросов соединения. Только сервер прикладных программ DB2 for VM может принимать (или отвергать) входящие запросы соединения. Следовательно, реквестер прикладных программ не определяет для себя RDB_NAME и TPN, как это делает DB2 Universal Database for OS/390.
Чтобы определить реквестер прикладных программ DB2 for VM для сети SNA, выполните следующие действия:
Чтобы реквестер прикладных программ мог передавать в сеть исходящие требования, для него должны быть определены имена шлюзов (например, имена LU). На Рис. 30 показан пример такого определения. Эти операторы находятся на виртуальной машине VTAM. При запуске VTAM эти шлюзы определяются для сети, но не запускаются, пока не будет запущена управляющая виртуальная машина AVS. Каждая виртуальная машина AVS может определить на хосте VM несколько шлюзов.
Рис. 30. Пример определения шлюза AVS
VBUILD TYPE=APPL ************************************************************* * * * Определение шлюза для системы Toronto DB2 for VM * * * ************************************************************* TORGATE APPL APPC=YES, X AUTHEXIT=YES, X AUTOSES=1, X DMINWNL=10, X DMINWNR=10, X DSESLIM=20, X EAS=9999, X MAXPVT=100K, X MODETAB=RDBMODES, X PARSESS=YES, X SECACPT=ALREADYV, X SYNCLVL=SYNCPT, X VPACING=2 |
Ниже приводится список описаний ключевых слов оператора VTAM APPL для задач, описанных в этом руководстве. (Оператор VTAM APPL поддерживает и другие ключевые слова, не описанные здесь.)
DB2 for VM не ограничивает выбор значений ключевого слова VERIFY, но этот выбор может зависеть от используемой версии VTAM. В непроверенной сети для DB2 for VM рекомендуется задавать значение VERIFY=REQUIRED. Если выбрано VERIFY=OPTIONAL, VTAM выполняет верификацию LU партнера только для тех партнеров, которые предоставляют поддержку для такой верификации. VERIFY=REQUIRED вынуждает VTAM отвергать партнеров, которые не могут выполнить верификацию LU партнера.
Активация шлюза выполняется из виртуальной машины AVS, работающей на том же хосте (или другом хосте в том же собрании TSAF), что и реквестер прикладных программ DB2 for VM. Введите эту команду интерактивно с консоли машины AVS или включите команду AGW ACTIVATE GATEWAY GLOBAL в профиль этой машины AVS, чтобы шлюз автоматически активировался при каждом запуске AVS.
Убедитесь, что значение MAXCONN в каталоге CP машины шлюза AVS достаточно велико для поддержки требуемого общего числа сеансов.
Чтобы завершить работу шлюза, выдайте с виртуальной машины AVS команду AGW DEACTIVE GATEWAY. Определения шлюза при этом сохраняются. Шлюз можно снова активировать в какой-либо момент времени при помощи команды AGW ACTIVATE GATEWAY GLOBAL.
Форматы команд AVS смотрите в руководстве VM/ESA Connectivity Planning, Administration and Operation.
Когда требование вводится в сеть, VTAM передает NETID этого хоста (или других хостов в том же собрании TSAF), на котором расположен реквестер прикладных программ. NETID хранится в файле CMS с именем SNA NETID и находится на диске продукта DB2 for VM, к которому обращается реквестер прикладных программ. Реквестер прикладных программ использует этот NETID для генерации LUWID для каждого диалога.
Необходимо определить удаленные системы, зарегистрировав имена LU, которые позволяют VTAM найти нужную сеть назначения. При запуске AVS задает глобальные имена шлюза (имена LU), которые могут использоваться для передачи в сети требований SQL к VTAM. Имя шлюза должно быть уникальным среди множества имен LU, известных локальной системе VTAM, чтобы как входящие, так и исходящие требования передавались на LU с правильным именем. Это лучший способ гарантировать уникальность имени шлюза в пользовательской сети, которая, в свою очередь, упрощает процесс определения ресурса VTAM.
Когда прикладная программа DB2 for VM запрашивает данные из удаленной системы, DB2 for VM ищет в каталоге связей CMS следующую информацию об этой удаленной системе:
Каталог связей - это файл CMS с типом файла NAMES, который создается и управляется системным администратором DB2 for VM. Администратор может использовать XEDIT, чтобы создать этот файл и добавить в него нужные записи, определяющие каждого потенциального партнера DRDA. Каждая запись в этом каталоге - это набор тегов и их значений. Пример такой записи показан на Рис. 31. При поиске ключ поиска сравнивается со значением тега :dbname в каждой записи в этом файле, пока не будет найдено совпадающее значение или не будет достигнут конец файла. Пример на Рис. 31 иллюстрирует практическую ситуацию, в которой менеджер по продажам в Торонто хочет создавать ежемесячный отчет о продажах для монреальского отделения фирмы, обращаясь к данным из удаленной базы данных MONTREAL_SALES.
Рис. 31. Пример записи в каталоге связей
+--------------------------------------------------------------------------------+ | SCOMDIR NAMES A1 V 132 Trunc=132 Size=10 Line=1 Col=1 Alt=8 | |====> | |00001 :nick.MTLSALES | |00002 :tpn.SALES | |00003 :luname.TORGATE MTLGATE | |00004 :modename.BATCH | |00005 :security.PGM | |00006 :userid.SALESMGR | |00007 :password.GREATMTH | |00008 :dbname.MONTREAL_SALES | |00009 | +--------------------------------------------------------------------------------+ |
Тег :tpn задает имя программы транзакций, активирующей сервер прикладных программ. Первая часть тега :luname задает шлюз AVS (локальное LU), используемый для доступа к сети SNA. Вторая часть задает имя удаленного LU. Тег :modename задает режим VTAM, определяющий характеристики сеансов для связи между локальным и удаленными LU. Примеры таких характеристик: размер блока запроса (RU), размер окна адаптивной синхронизации и класс обслуживания (COS). Тег :security задает уровень защиты, используемой для диалога при соединении реквестера прикладных программ с сервером прикладных программ.
Каталог связей находится на общедоступном диске системы, доступном для всех реквестеров прикладных программ в отдельной системе VM. Каталог связей CMS может использовать любая программа или продукт, которым требуется доступ через VTAM.
Можно использовать два уровня каталогов связей: системный и пользовательский. Например, можно создать каталог системного уровня на общедоступном диске системы, доступном для всех реквестеров прикладных программ в отдельных системах VM. Можно также создать свой собственный каталог пользовательского уровня, чтобы переопределить существующие записи каталога системного уровня или задать новые, отсутствующие в нем, записи. Поиск производится сначала в каталоге пользовательского уровня, а в случае неудачи - в каталоге системного уровня. Каталог системного уровня дополняет каталог пользовательского уровня - поиск в нем производится, только если нужные значения не найдены в каталоге пользовательского уровня.
Чтобы задать для прикладной программы и активировать каждый из этих каталогов, используется команда CMS SET COMDIR. Например, следующая последовательность команд задает оба каталога (системного и пользовательского уровней, на дисках S и A соответственно), но активирует для поиска только каталог системного уровня:
SET COMDIR FILE SYSTEM SCOMDIR NAMES S SET COMDIR FILE USER UCOMDIR NAMES A SET COMDIR OFF USER
Каталог связей CMS подробно описан в руководстве VM/ESA Connectivity Planning, Administration and Operation. Команда CMS SET COMDIR описана в справочнике VM/ESA CMS Command Reference.
В среде VM для управления связями используется несколько компонентов. Компоненты, участвующие в обеспечении связи между системами DRDA разных типов - это APPC/VM, каталог связей CMS, TSAF, AVS и VTAM.
APPC/VM - это API ассемблерного уровня для LU 6.2, который используется реквестером прикладных программ DB2 for VM для вызовов функций связи. Каталог связей содержит информацию о маршрутизации и защите для распределенной системы партнера. AVS активирует шлюз и преобразует исходящие потоки APPC/VM в потоки APPC/VTAM, а входящие потоки APPC/VTAM - в потоки APPC/VM.
APPC/VM, TSAF и AVS используют каталог связи CMS, VTAM и *IDENT для передачи требований нужному партнеру DRDA.
Чтобы VTAM мог связываться с прикладными программами партнера, заданными в каталоге связей CMS, необходимо задать следующую информацию:
Когда реквестер прикладных программ использует AVS для связи с удаленным сервером прикладных программ, инициируется соединение. Если при этом превышается предельное числа установленных сеансов, AVS переводит это соединение в состояние ожидания до тех пор, пока не появятся свободные сеансы. Когда появляется свободный сеанс, AVS выделяет его для ожидающего соединения и управление возвращается пользовательской прикладной программе. Чтобы избежать такой ситуации, увеличьте предельное число сеансов, учитывая максимальную возможную нагрузку, чтобы иметь некоторое число дополнительных соединений. Убедитесь, что значение MAXCONN в каталоге CP машины AVS достаточно велико для поддержки максимального возможного числа соединений APPC/VM.
Задаваемые в таблице режимов VTAM элементы определяют размеры блоков запроса (RU) и окна адаптивной синхронизации. Ошибка при определении этих значений может отрицательно повлиять на все прикладные программы VTAM.
Выбрав значения для размеров блоков запроса (RU), предельного числа сеансов и размеров окна адаптивной синхронизации, учтите влияние этих значений на существующую сеть SNA. При установке новой системы распределенных баз данных надо учесть следующее:
Если задается параметр MAXBFRU NCP, выберите значение, позволяющее получить объем буферов, не меньший чем заданный размер RU плюс 29 байт. Для NCP параметр MAXBFRU определяет число буферов ввода-вывода VTAM, которые может поддерживать PIU. Если выбран размер буфера IOBUF равный 441, для правильной обработки RU размером 4 Кбайт можно задать MAXBFRU=10, так как 10*441 больше, чем 4096+29.
На реквестере прикладных программ DB2 for VM может быть не установлена поддержка DRDA. Чтобы подготовить реквестер прикладных программ DB2 for VM для работы с соединениями DRDA, выполните следующие действия:
Подробную информацию смотрите в руководстве DB2 for VM System Administration.
Когда удаленная система выполняет распределенную обработку баз данных для прикладной программы SQL, она должна удовлетворять требованиям, предъявляемым к защите реквестером и сервером прикладных программ, а также сетью, по которой они устанавливают соединение. Эти требования можно отнести к одной или нескольким из следующих категорий:
Как для SQL, так и для LU 6.2 конечным пользователям присваиваются ID пользователей длиной от 1 до 8 символов. Значение ID пользователя должно быть уникальным в отдельной операционной системе, но не обязано быть уникальным в сети SNA. Например, в системе TORONTO может существовать пользователь с именем JONES, а в системе MONTREAL может существовать другой пользователь с именем JONES. Если эти два пользователя являются одним и тем же лицом, конфликта не возникает. Однако если JONES в TORONTO - это не тот же человек, что JONES в MONTREAL, сеть SNA (и, следовательно, системы распределенных баз данных в этой сети) не сможет отличить пользователя JONES в системе TORONTO и пользователя JONES в системе MONTREAL. Если ничего не сделать для предотвращения такой ситуации, пользователь JONES в системе TORONTO может использовать привилегии, предоставленные пользователю JONES в системе MONTREAL, и наоборот.
Чтобы избежать конфликтов имен, DB2 for VM поддерживает преобразование имен конечных пользователей. Однако система не требует обязательного преобразования ID пользователей. Если требуется, чтобы система обязательно использовала преобразование имен, надо убедиться, что на сервере прикладных программ преобразование имен на входе выполняется правильно.
Для преобразования имен на выходе используется каталог связей. В записи каталога связей должно быть задано :security.PGM. В этом случае на удаленную систему (сервер прикладных программ) в запросе соединения передаются соответствующие значения тегов :userid и :password.
Если создать запись, показанную на Рис. 32, для пользователя, имеющего ID JONES в локальной системе (TORONTO), при соединениях с сервером прикладных программ MONTREAL_SALES_DB в системе MONTREAL будет использоваться ID пользователя JONEST. Таким способом устраняется неоднозначность ID пользователей.
Рис. 32. Преобразование имен на выходе
+--------------------------------------------------------------------------------+ | UCOMDIR NAMES A1 V 132 Trunc=132 Size=10 Line=1 Col=1 Alt=8 | |====> | |00001 :nick.MTLSALES | |00002 :tpn.SALES | |00003 :luname.TORLU MTLGATE | |00004 :modename.BATCH | |00005 :security.PGM | |00006 :userid.JONEST | |00007 :password.JONESPW | |00008 :dbname.MONTREAL_SALES_DB | |00009 | +--------------------------------------------------------------------------------+ |
Получив имя конечного пользователя, под которым реквестер прикладных программ известен на удаленной системе (сервере прикладных программ), этот реквестер прикладных программ должен задать требуемую информацию о сетевой защите LU 6.2. LU 6.2 позволяет использовать три главных механизма сетевой защиты:
Поскольку за управление ресурсами баз данных отвечает сервер прикладных программ, он задает механизмы сетевой защиты, которые должен использовать реквестер прикладных программ. Необходимо записать в каталог связей реквестера прикладных программ информацию о требованиях к защите сервера прикладных программ, задав соответствующее значение в теге :security.
Опции защиты уровня диалога SNA, поддерживаемые DRDA:
DB2 for VM не поддерживает шифрование паролей. Пароль можно задать в теге :password или же записать в каталог CP конечного пользователя, используя оператор APPCPASS этого каталога. Если нужно получить максимальную защиту пароля, рекомендуется использовать оператор APPCPASS. Если пароль не задан в записи каталога связей, ищется оператор APPCPASS в записях каталога системы пользователя (VM).
VM позволяет использовать для максимальной защиты ID пользователя и пароля, используемых реквестером прикладных программ для соединения с сервером прикладных программ, оператор APPCPASS. Этот оператор позволяет задавать информацию о защите различными способами:
На Рис. 33 показан случай, когда ID пользователя задан в каталоге связей пользователя, а пароль - в записи каталога VM пользователя. В записи каталога связей для ID пользователя задано значение MTLSOU, но пароль не задан. Пароль хранится в записи каталога VM пользователя.
Рис. 33. Пример записи каталога связей, в которой не задан пароль
+--------------------------------------------------------------------------------+ | UCOMDIR NAMES A1 V 132 Trunc=132 Size=8 Line=1 Col=1 Alt=8 | |====> | |00001 :nick.MTLSALES | |00002 :tpn.SALES | |00003 :luname.TORGATE MTLGATE | |00004 :modename.BATCH | |00005 :security.PGM | |00006 :userid.MTLSOU | |00007 :password. | |00008 :dbname.MONTREAL_SALES_DB | |00009 | +--------------------------------------------------------------------------------+ |
Когда APPC/VM устанавливает соединение между реквестером прикладных программ и сервером прикладных программ, используя режим защиты диалога SECURITY=PGM, он считывает значения тегов :userid и :password и передает их на сервер прикладных программ. Если один или оба из этих тегов имеют пустые значения, он ищет недостающую информацию в записи каталога VM пользователя. В этом случае в записи каталога VM должен находиться следующий оператор APPCPASS:
APPCPASS TORGATE MTLGATE MTLSOU Q6VBN8XP
Этот оператор сообщает APPC/VM, что пользователь (реквестер прикладных программ), запрашивающий соединение через этот (локальный) шлюз AVS TORGATE, с LU партнера с именем MTLGATE и с ID пользователя MTLSOU, должен передавать серверу прикладных программ пароль Q6VBN8XP. Этот пользователь определяется на сервере прикладных программ по этим двум элементам идентификации.
Конечный пользователь не должен сам вводить оператор APPCPASS в каталог VM. Для этого надо обратиться к системному программисту.
Дополнительную информацию о защите уровня диалога и операторе APPCPASS смотрите в руководстве VM/ESA Connectivity Planning, Administration, and Operation.
В рамках общей системы защиты баз данных в DRDA реквестер прикладных программ может контролировать, каким пользователям разрешено обращаться с требованиями к распределенным базам данных. В DB2 for VM реквестер прикладных программ может участвовать в защите распределенных баз данных тремя способами:
Внешняя подсистема защиты в системах VM реализуется RACF или эквивалентными продуктами, имеющими совместимый с RACF интерфейс. Реквестер прикладных программ DB2 for VM не взаимодействует непосредственно с внешней подсистемой защиты. Внешняя подсистема защиты не используется для обеспечения паролей для защиты уровня диалога. Если выбрано использование защиты уровня сеанса, внешняя подсистема защиты вызывается VTAM для проверки имени удаленного LU во время проверки LU партнера.
Для реквестера прикладных программ должны быть заданы подходящие значения по умолчанию для CHARNAME и CCSID. Выберите правильные значения, чтобы обеспечить целостность представления данных и уменьшить дополнительные расходы времени на преобразование CCSID.
Например, если реквестер прикладных программ DB2 for VM сгенерирован с кодовой страницей 37 и набором символов 697(CP/CS 37/697) для символов американского английского (US ENGLISH), для этого реквестера прикладных программ нужно задать для CHARNAME значение по умолчанию ENGLISH. CP/CS 37/697 соответствует CCSID 37 и значению CHARNAME ENGLISH.
Значение по умолчанию CHARNAME для вновь установленной или перенастроенной системы - INTERNATIONAL, а CCSID - 500. Это может быть неправильно для вашей системы. Чтобы вывести на экран текущие значения по умолчанию CCSID, используйте команду:
SQLINIT QUERY
Значение CCSID, подходящее для реквестера прикладных программ, может не поддерживаться таблицами преобразования на сервере прикладных программ. В этом случае для установления соединения можно выполнить одно из следующих действий:
Реквестер прикладных программ использует контроллер, определенный с CP/CS 37/697. Сервер прикладных программ не поддерживает преобразование из CCSID 37, но поддерживает преобразование из CCSID 285 (это соответствует CHARNAME UK-ENGLISH для SQL/DS).
Если реквестер прикладных программ переходит на использование значения по умолчанию CHARNAME UK-ENGLISH (и CCSID 285), целостность данных не будет сохраняться. Например, там, где сервер прикладных программ подразумевает символ британского фунта (£), реквестер прикладных программ выведет на экран символ доллара ($). Другие символы также могут различаться.
Чтобы изменить значение CCSID для реквестера прикладных программ DB2 for VM, необходимо задать параметр CHARNAME в команде SQLINIT EXEC. Более подробную информацию смотрите в руководстве DB2 for VM System Administration.
Значение CCSID, подходящее для сервера прикладных программ, может не поддерживаться таблицами преобразования на реквестере прикладных программ. В этом случае для установления соединения можно выполнить одно из следующих действий:
Ниже в контрольном списке перечислены шаги, которые нужно выполнить, чтобы разрешить работу реквестера прикладных программ DRDA для связи DRDA; при этом предполагается, что используемая система VM установлена с использованием ACF/VTAM в качестве метода удаленного доступа и что заданы необходимые для связи с удаленными системами определения VTAM, такие как определения NCP.