大型机与 IBM 系统
本指南介绍 Data Source Explorer (DSE) 中的 Mainframe 数据源组:
- IBM i / AS400:使用 IBM i Access ODBC
- IBM z/OS Db2:使用 IBM Db2 ODBC/CLI
- VSAM:通过 ODBC 虚拟化层或 DSE 兼容 REST 适配器
- IMS:通过 REST/API 或 ODBC 虚拟化
- CICS:通过 REST/API 或 ODBC 虚拟化
术语说明: IBM i 运行在 IBM Power 上,并不是 IBM Z。DSE 将它放在 Mainframe/legacy 组中,是为了让运维人员在同一处管理传统企业数据源。

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. 安全原则
- 尽量使用专用、只读的 DSE 帐户
- 不要把生产密码、token 或 SSH 私钥写入文档、截图或源码仓库
- 示例使用
<password>、<host>、<user> - 只授予需要的 library/schema/table/service 权限
- 优先使用 TLS、VPN 或私有网络
- SSH 隧道用户可以与 ODBC 用户不同
- 不要为了测试方便把 DSE 数据库用户提升为管理员
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。
建议的部署顺序:
- 在 IBM Cloud 中,在组织批准的区域创建或选择 Power Virtual Server workspace。
- 从符合 IBM 使用权和测试计划的 IBM i 镜像创建 virtual server instance。
- 分配足够的 CPU、内存和存储,使系统能够完成 IPL 并稳定运行 Db2 for i host services。连接器验证不需要生产环境规模。
- 将分区连接到私有网络。只有在网络设计确实需要时才添加公网连接,并将入站访问限制到批准的源地址。
- 等待实例进入 Active 状态,打开 IBM 提供的控制台/VNC,完成 IBM i 正常的首次启动任务;如果镜像要求,完成软件协议接受。
- 记录可路由的 IBM i 主机名或 IP。如果 host-server 端口保持私有,还要记录用于 SSH 隧道的 bastion/SSH 路径。
- 登录 IBM i,创建下面说明的 DSE 只读账户和测试库,然后启动 host servers。
- 在配置 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 客户端或云控制台。只有在确实需要配置权限时才使用管理员帐户。

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

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 验证表中的示例数据:

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,如下图:

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 内部验证
- Test connection
- Load tables
- 找到
DSETEST.CUSTOMER - 查看 Table info
- 查看 Preview
- 选择一行并查看 Row details
- 运行查询
SELECT * FROM "DSETEST"."CUSTOMER" FETCH FIRST 100 ROWS ONLY
某些 native/DDS 对象会拒绝 FETCH FIRST。IBM i connector 可以在这种情况下移除服务器端限制,并在客户端限制行数。
15. IBM i 故障排除
- Test connection = False:检查 64 位驱动、64 位 DSN、host/tunnel、8471/8476、
STRHOSTSVR、用户/密码。 - ssh -N -T 看起来不动:正常;在另一个 PowerShell 中测试本地端口。
- 密码过期:先通过正常 IBM i 登录流程修改密码。
- 只看到 QGPL:加入
DBQ=DSETEST,QGPL;LIBVIEW=0;,重新连接并加载。 - 看不到表:检查 library 的
*USE、table 的SELECT和DBQ。 - SQL0104 / FETCH FIRST:确认使用 IBM i / AS400 connector 而不是 Generic ODBC;手工单条 ODBC SQL 不要附加结尾分号。
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 合约
GET /healthGET /dse/objectsGET /dse/objects/{name}/columnsPOST /dse/query
{
"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>;


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

适配器负责把 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 适配器返回查询结果的示例:

验收清单
22. IBM i
- 已安装 64 位驱动
- 网络/隧道稳定
- host servers 已启动
- 专用只读帐号有效
- 外部 ODBC 测试成功
- DSE Test connection 成功
- 目标表可见
- columns、Preview、Row details、query 正常
- 文档/源码中没有 secret
23. z/OS Db2
- 真实 Db2 for z/OS endpoint
- 64 位 ODBC/CLI
- Db2 Connect 授权确认
- LOCATION/DRDA 确认
- 外部测试和 DSE 测试成功
24. VSAM / IMS / CICS
- 适配器得到批准
- health/connectivity 成功
- object/metadata 稳定
- query 返回可转换的 JSON/tabular data
- 认证安全
- DSE test/load/metadata/preview/query 全部成功
联系支持时请提供 DSE 版本、数据源类型、已移除 secret 的 connection string、driver 名称/版本、网络路径、准确错误文本、相关日志,以及同一连接在 DSE 外的测试结果。不要发送密码、SSH 私钥或 OAuth secret。