DSEDataSourceExplorer
DSE 1.0.1

大型机与 IBM 系统

本指南介绍 Data Source Explorer (DSE) 中的 Mainframe 数据源组:

术语说明: IBM i 运行在 IBM Power 上,并不是 IBM Z。DSE 将它放在 Mainframe/legacy 组中,是为了让运维人员在同一处管理传统企业数据源。

DSE 中的 Mainframe 数据源

1. 架构和支持方式

DSE 不模拟原生大型机协议,而是使用标准企业访问层:

DSE 数据源 传输 DSE 之外需要的组件
IBM i / AS400 ODBC 64 位 IBM i Access ODBC Driver、网络、IBM i 用户
IBM z/OS Db2 ODBC 64 位 IBM Data Server Driver for ODBC/CLI、Db2 Connect 授权路径、DRDA 端点
VSAM ODBC/REST 虚拟化/中间件或兼容适配器
IMS REST/ODBC API/服务层或虚拟化
CICS REST/ODBC API 网关/服务层

推荐顺序:先配置主机或适配器,并尽可能在 DSE 外验证;然后在 Mainframe 下选择准确的数据源类型,保存连接字符串,执行 Test connection,加载对象,再检查 Table info、Preview、Row details 和示例查询。

2. 安全原则

IBM i / AS400 — 完整设置

3. IBM i 前提条件

需要可运行且可访问的 IBM i、TCP/IP、普通用户(如 DSELAB)、已启动的 IBM i host servers、安装了 IBM i Access ODBC 的 64 位 Windows 工作站,以及 DSE 用户可以读取的至少一个 library/table。

可以使用现有 IBM i、内部 LPAR 或 IBM Power Virtual Server。主机可达后,DSE 的连接方式基本相同。

可选参考实验室:IBM Power Virtual Server (PowerVS)

如果没有现成的 IBM i 分区,可以使用运行 IBM i 的 IBM Power Virtual Server (PowerVS) 作为连接器验证实验室。PowerVS 只是可选方案;DSE 并不依赖 IBM Cloud。

建议的部署顺序:

  1. 在 IBM Cloud 中,在组织批准的区域创建或选择 Power Virtual Server workspace。
  2. 从符合 IBM 使用权和测试计划的 IBM i 镜像创建 virtual server instance。
  3. 分配足够的 CPU、内存和存储,使系统能够完成 IPL 并稳定运行 Db2 for i host services。连接器验证不需要生产环境规模。
  4. 将分区连接到私有网络。只有在网络设计确实需要时才添加公网连接,并将入站访问限制到批准的源地址。
  5. 等待实例进入 Active 状态,打开 IBM 提供的控制台/VNC,完成 IBM i 正常的首次启动任务;如果镜像要求,完成软件协议接受。
  6. 记录可路由的 IBM i 主机名或 IP。如果 host-server 端口保持私有,还要记录用于 SSH 隧道的 bastion/SSH 路径。
  7. 登录 IBM i,创建下面说明的 DSE 只读账户和测试库,然后启动 host servers。
  8. 在配置 DSE 之前先从 Windows 验证网络。

推荐验证拓扑:

直接/私有路由:
Windows DSE -> IBM i 主机 -> IBM i Access host servers -> Db2 for i

SSH 隧道:
Windows DSE -> 127.0.0.1 转发端口 -> IBM i/bastion SSH -> host servers -> Db2 for i

PowerVS 计费和 IBM i 许可与 DSE 无关。测试结束后,应按照组织政策停止或删除临时实验室资源。

4. 登录 IBM i

使用常规 5250 客户端或云控制台。只有在确实需要配置权限时才使用管理员帐户。

IBM i 主菜单示例

5. 启动 IBM i 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 表

使用 IBM i Access Client Solutions 的 Run SQL Scripts,或在可用时使用 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)
);

在 IBM i 上创建 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 验证表中的示例数据:

IBM i 中的 DSETEST.CUSTOMER 数据

DSE 用户应能读取数据,但不需要修改权限。

9. Windows 安装 IBM i ODBC 驱动

安装 IBM i Access Client Solutions Windows Application Package,其中包含 64 位 ODBC 驱动。打开:

C:\Windows\System32\odbcad32.exe

确认存在:

IBM i Access ODBC Driver

在 64 位 Windows 上,System32\odbcad32.exe 是 64 位 ODBC 管理器。

64 位 ODBC Data Source Administrator 应显示 IBM i Access ODBC Driver,如下图:

Windows 中安装的 IBM i Access ODBC Driver

10. 直接网络或 SSH 隧道

直接网络:

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

SSH 隧道:

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>

保持该 PowerShell 窗口打开。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 位 System DSN

在 System DSN 中添加 IBM i Access ODBC Driver。建议名称:

DSE_IBMI_DEV

直接连接使用真实 host/IP;通过隧道使用 127.0.0.1。

配置需要发现的 library:

DBQ=DSETEST,QGPL;LIBVIEW=0;

如果连接成功但只看到 QGPL,应首先检查 DBQ。

12. 在 DSE 之外验证 ODBC

$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()

如果这里失败,应先修复驱动、网络、帐号或权限,再进入 DSE。

13. 在 DSE 中配置 IBM i

选择 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;

使用 SSH 隧道时,host 通常为 127.0.0.1。应选择专用的 IBM i / AS400 类型,而不是 Generic ODBC,因为 IBM i connector 包含专用 metadata/preview 兼容逻辑。

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

某些 native/DDS 对象会拒绝 FETCH FIRST。IBM i connector 可以在这种情况下移除服务器端限制,并在客户端限制行数。

15. IBM i 故障排除

IBM z/OS Db2

16. 要求

需要可达的 z/OS、Db2 LOCATION、DRDA 端口、Db2 用户、64 位 IBM Data Server Driver for ODBC and CLI,以及有效的 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>;

DSE 不内置 VSAM/IMS/CICS 原生协议,由 middleware 提供 ODBC 或 REST 投影。

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>;

DSE 中的 CICS 查询结果

CICS 字段 metadata

20. VSAM

使用 ODBC 虚拟化或 REST。DSE 不内置 raw native VSAM 协议。

DSE 中的 VSAM KSDS 查询结果

适配器负责把 keys、record layout/copybook、编码等转换成 DSE 可消费的表格/JSON 合约。

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 database、segment 和 hierarchy 映射成 DSE object/field。

DSE 通过 IMS 适配器返回查询结果的示例:

DSE 中的 IMS 查询结果

验收清单

22. IBM i

23. z/OS Db2

24. VSAM / IMS / CICS

联系支持时请提供 DSE 版本、数据源类型、已移除 secret 的 connection string、driver 名称/版本、网络路径、准确错误文本、相关日志,以及同一连接在 DSE 外的测试结果。不要发送密码、SSH 私钥或 OAuth secret。