DSEDataSourceExplorer
DSE 1.0.1

Мейнфреймы и системы IBM

В этом разделе описана группа Mainframe в Data Source Explorer (DSE):

Терминология: IBM i работает на IBM Power, а не на IBM Z. В DSE он находится в группе Mainframe/legacy для удобного управления корпоративными унаследованными источниками.

Источники Mainframe в DSE

1. Архитектура

DSE не эмулирует нативные протоколы мейнфрейма. Используются стандартные уровни доступа:

Источник Транспорт Что требуется вне DSE
IBM i / AS400 ODBC 64-разрядный IBM i Access ODBC Driver, сеть, пользователь IBM i
IBM z/OS Db2 ODBC IBM Data Server Driver for ODBC/CLI 64-bit, лицензирование Db2 Connect, DRDA
VSAM ODBC/REST виртуализация/middleware или адаптер
IMS REST/ODBC API/service layer или виртуализация
CICS REST/ODBC API gateway/service layer

Рекомендуемый порядок: сначала настроить хост/адаптер и проверить соединение вне DSE, затем выбрать точный тип в Mainframe, сохранить строку подключения, выполнить Test connection, загрузить объекты и проверить Table info, Preview, Row details и тестовый запрос.

2. Безопасность

IBM i / AS400 — полная настройка

3. Предварительные требования

Нужны работающий и доступный IBM i, TCP/IP, обычный пользователь (например DSELAB), активные host servers, Windows 64-bit с IBM i Access ODBC и хотя бы одна библиотека/таблица, доступная на чтение.

Необязательная эталонная лаборатория: IBM Power Virtual Server (PowerVS)

Если готового раздела IBM i нет, для проверки коннектора можно использовать IBM i в Power Virtual Server (PowerVS). PowerVS является только вариантом лаборатории; DSE не зависит от IBM Cloud.

Рекомендуемая последовательность:

  1. В IBM Cloud создайте или выберите workspace Power Virtual Server в регионе, разрешённом вашей организацией.
  2. Создайте virtual server instance из образа IBM i, разрешённого вашими правами IBM и планом тестирования.
  3. Выделите достаточно CPU, памяти и диска для успешного IPL и стабильной работы host services Db2 for i. Для проверки коннектора производственный размер не требуется.
  4. Подключите раздел к частной сети. Публичный доступ добавляйте только при необходимости и ограничивайте входящие соединения утверждёнными адресами.
  5. Дождитесь состояния Active, откройте предоставленную IBM консоль/VNC и выполните обычные действия первого запуска IBM i, включая принятие лицензионных соглашений, если это требуется образом.
  6. Запишите маршрутизируемое имя хоста/IP. Если порты IBM i host server остаются закрытыми, также запишите SSH/bastion-маршрут для туннеля.
  7. Войдите в IBM i, создайте описанную ниже учётную запись DSE только для чтения и тестовую библиотеку, затем запустите host servers.
  8. Проверьте сеть с Windows до настройки DSE.

Рекомендуемые схемы:

Прямой/частный маршрут:
Windows DSE -> IBM i -> IBM i Access host servers -> Db2 for i

SSH-туннель:
Windows DSE -> перенаправленные порты 127.0.0.1 -> SSH IBM i/bastion -> host servers -> Db2 for i

Оплата PowerVS и лицензирование IBM i не относятся к DSE. Временные лабораторные ресурсы следует остановить или удалить после завершения тестирования.

4. Вход в IBM i

Используйте обычный 5250-клиент или облачную консоль. Административную учетную запись применяйте только для операций настройки, которым действительно нужны такие права.

Главное меню IBM i

5. Запуск host servers

STRHOSTSVR SERVER(*ALL)

Если используется SSH-туннель:

STRTCPSVR SERVER(*SSHD)

Обычные порты без TLS: 449, 8470, 8471, 8472, 8473, 8474, 8475, 8476. База данных обычно использует 8471, sign-on — 8476. В вашей организации могут использоваться SSL-порты или частная маршрутизация.

6. Создание тестового пользователя

CRTUSRPRF USRPRF(DSELAB) PASSWORD(<temporary-password>) USRCLS(*USER) STATUS(*ENABLED) TEXT('DSE read-only test user')

<temporary-password> — только заполнитель. Проверьте, что профиль включен, пароль не истек и лишние полномочия отсутствуют.

7. Создание библиотеки

CRTLIB LIB(DSETEST) TEXT('DSE connector validation')
GRTOBJAUT OBJ(DSETEST) OBJTYPE(*LIB) USER(DSELAB) AUT(*USE)

8. Создание SQL-таблицы для проверки

Используйте Run SQL Scripts в IBM i Access Client Solutions или STRSQL.

CREATE TABLE DSETEST.CUSTOMER
(
    CUSTOMER_ID INTEGER NOT NULL,
    NAME VARCHAR(80) NOT NULL,
    STATUS VARCHAR(20) NOT NULL,
    CREDIT_LIMIT DECIMAL(12,2),
    CREATED_AT TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (CUSTOMER_ID)
);

Создание DSETEST.CUSTOMER

INSERT INTO DSETEST.CUSTOMER (CUSTOMER_ID, NAME, STATUS, CREDIT_LIMIT)
VALUES
  (1001, 'ARCO INTERNATIONAL', 'ACTIVE', 25000.00),
  (1002, 'NORTHWIND IBM I LAB', 'ACTIVE', 15000.00),
  (1003, 'CONTOSO LEGACY', 'HOLD', 5000.00);

GRANT SELECT ON DSETEST.CUSTOMER TO USER DSELAB;
SELECT * FROM DSETEST.CUSTOMER ORDER BY CUSTOMER_ID;

Пример данных в проверочной таблице IBM i:

Данные DSETEST.CUSTOMER в IBM i

9. Установка IBM i ODBC в Windows

Установите IBM i Access Client Solutions Windows Application Package с 64-разрядным драйвером. Откройте:

C:\Windows\System32\odbcad32.exe

Проверьте наличие:

IBM i Access ODBC Driver

На 64-разрядной Windows System32\odbcad32.exe — это 64-разрядный ODBC Administrator.

В 64-разрядном ODBC Administrator должен отображаться IBM i Access ODBC Driver, как в примере:

IBM i Access ODBC Driver в Windows

10. Прямая сеть или SSH-туннель

Прямая сеть:

Test-NetConnection <ibmi-host> -Port 8471
Test-NetConnection <ibmi-host> -Port 8476

Туннель:

ssh -N -T `
  -L 449:127.0.0.1:449 `
  -L 8470:127.0.0.1:8470 `
  -L 8471:127.0.0.1:8471 `
  -L 8472:127.0.0.1:8472 `
  -L 8473:127.0.0.1:8473 `
  -L 8474:127.0.0.1:8474 `
  -L 8475:127.0.0.1:8475 `
  -L 8476:127.0.0.1:8476 `
  -o ExitOnForwardFailure=yes `
  -o ServerAliveInterval=15 `
  -o ServerAliveCountMax=3 `
  <ssh-user>@<ibmi-public-or-bastion-host>

Окно нужно оставить открытым. Для ssh -N -T отсутствие вывода после входа является нормальным.

Test-NetConnection 127.0.0.1 -Port 449
Test-NetConnection 127.0.0.1 -Port 8471
Test-NetConnection 127.0.0.1 -Port 8476

11. Создание 64-bit System DSN

В System DSN добавьте IBM i Access ODBC Driver. Рекомендуемое имя:

DSE_IBMI_DEV

Для прямого соединения укажите реальный host/IP, для туннеля — 127.0.0.1.

Список библиотек:

DBQ=DSETEST,QGPL;LIBVIEW=0;

Если соединение есть, но DSE показывает только QGPL, проверьте DBQ в первую очередь.

12. Проверка ODBC вне DSE

$cred = Get-Credential -UserName 'DSELAB' -Message 'IBM i ODBC credentials'
$password = $cred.GetNetworkCredential().Password
$connectionString = "DSN=DSE_IBMI_DEV;UID=$($cred.UserName);PWD=$password;DBQ=DSETEST,QGPL;LIBVIEW=0;"
$conn = New-Object System.Data.Odbc.OdbcConnection($connectionString)
$conn.Open()
$cmd = $conn.CreateCommand()
$cmd.CommandText = 'SELECT CUSTOMER_ID, NAME, STATUS, CREDIT_LIMIT FROM DSETEST.CUSTOMER ORDER BY CUSTOMER_ID'
$reader = $cmd.ExecuteReader()
$table = New-Object System.Data.DataTable
$table.Load($reader)
$table | Format-Table -AutoSize
$conn.Close()

Если эта проверка не проходит, сначала исправьте драйвер, сеть, учетную запись или права.

13. Настройка IBM i в DSE

Выберите Mainframe → IBM i / AS400 (ODBC configure) → Edit connection.

DSN=DSE_IBMI_DEV;UID=DSELAB;PWD=<password>;DBQ=DSETEST,QGPL;LIBVIEW=0;

или:

Driver={IBM i Access ODBC Driver};System=<ibmi-host>;Uid=DSELAB;Pwd=<password>;DBQ=DSETEST,QGPL;LIBVIEW=0;

При туннеле обычно используется 127.0.0.1. Выбирайте именно IBM i / AS400, а не Generic ODBC.

14. Проверка в DSE

  1. Test connection
  2. Load tables
  3. найдите DSETEST.CUSTOMER
  4. откройте Table info
  5. откройте Preview
  6. выберите строку и откройте Row details
  7. выполните запрос
SELECT * FROM "DSETEST"."CUSTOMER" FETCH FIRST 100 ROWS ONLY

В IBM i-коннекторе есть специальная совместимость для native/DDS-объектов, которые отклоняют FETCH FIRST: ограничение может быть применено на стороне клиента.

15. Устранение проблем IBM i

IBM z/OS Db2

16. Требования

Нужны доступный z/OS, Db2 LOCATION, DRDA-порт, Db2-пользователь, IBM Data Server Driver for ODBC and CLI 64-bit и действующий путь лицензирования Db2 Connect.

Driver={IBM DB2 ODBC DRIVER};Database=<location>;Hostname=<zos-host>;Port=<drda-port>;Protocol=TCPIP;Uid=<user>;Pwd=<password>;

Сначала проверьте драйвер и лицензию вне DSE, затем Test connection, Load tables, Preview, Row details и запрос.

VSAM, IMS и CICS

17. Режимы адаптера

ODBC:

Adapter=ODBC;ConnectionString="DSN=YOUR_VSAM_ADAPTER;Uid=<user>;Pwd=<password>";

REST:

Adapter=REST;BaseUrl=https://<adapter-host>;HealthPath=/health;ObjectsPath=/dse/objects;ColumnsPath=/dse/objects/{name}/columns;QueryPath=/dse/query;BearerToken=<token>;

Нативные протоколы VSAM/IMS/CICS в DSE не реализованы; их предоставляет middleware.

18. REST-контракт

{
  "command": "SELECT * FROM CICSDEV.CUSTOMER_SERVICE FETCH FIRST 100 ROWS ONLY;",
  "sourceType": "CICS"
}

Также доступна команда get /some/path;. Аутентификация: BearerToken, OAuth2 (TokenUrl, ClientId, ClientSecret, Scope), Basic или ApiKey.

19. CICS

Adapter=REST;BaseUrl=https://<cics-adapter>;HealthPath=/health;ObjectsPath=/dse/objects;ColumnsPath=/dse/objects/{name}/columns;QueryPath=/dse/query;BearerToken=<token>;

Результат CICS в DSE

Метаданные CICS

20. VSAM

Используйте ODBC-виртуализацию или REST. Нативный VSAM-доступ не встроен.

Результат VSAM KSDS

Адаптер должен преобразовать ключи, record layout/copybook и кодировки в табличный/JSON-контракт DSE.

21. IMS

Adapter=REST;BaseUrl=https://<ims-adapter>;HealthPath=/health;ObjectsPath=/dse/objects;ColumnsPath=/dse/objects/{name}/columns;QueryPath=/dse/query;BearerToken=<token>;

или:

Adapter=ODBC;ConnectionString="DSN=YOUR_IMS_ADAPTER;Uid=<user>;Pwd=<password>";

Middleware определяет, как сегменты/иерархии IMS представляются в DSE как объекты и поля.

Пример результата запроса IMS через адаптер DSE:

Результат IMS в DSE

Контрольный список

22. IBM i

23. z/OS Db2

24. VSAM / IMS / CICS

При обращении в поддержку укажите версию DSE, тип источника, очищенную строку подключения, имя/версию драйвера, тип сети, точный текст ошибки, релевантный журнал и результат аналогичного теста вне DSE. Никогда не отправляйте пароль, приватный SSH-ключ или OAuth secret.