Oracle 到 Halo 迁移兼容矩阵
本章给出 Oracle 各版本源端到 Halo 各版本目标端的迁移能力实测矩阵。矩阵数据来自逐版本组合的实测(Oracle 容器化源端 + Halo 目标端 + hmt 迁移平台),覆盖连接、元数据迁移(表结构/约束/视图/序列)与数据迁移(常规类型/CLOB/RAW)。
- 测试平台:Halo 迁移平台 hmt build260709
- 测试环境:源端 gvenzl/oracle 容器(11-slim/18-slim/21-slim/23-slim),目标端 Halo 1.0.16(宿主机,Oracle 兼容模式 1521 端口)与 Halo 1.0.14(容器,database_compat_mode=oracle)
- 数据截至:2026-08-15(全部 8 个组合测试完成)
总矩阵
表 4-1 Oracle → Halo 迁移兼容矩阵(实测)
| 源端 Oracle 版本 | Halo 1.0.16(Oracle 兼容模式) | Halo 1.0.14(单兼容模式) |
|---|---|---|
| 11.2 XE (11-slim) | ⚠️ 部分可用 ¹ | ⚠️ 部分可用 ¹ |
| 18c (18-slim) | ✅ 可用 | ✅ 可用 |
| 21c (slim) | ✅ 可用 | ✅ 可用 |
| 23ai (23-slim) ² | ✅ 可用 | ✅ 可用 |
注意: ¹ 所有组合均不含 RAW 类型列迁移(BUG-1,8 个组合全部复现,见矩阵结论要点第 2 条);11.2 另受首次元数据任务创建问题(BUG-2)影响,重试或复用任务后可完成全套迁移。 ² 23-slim 容器实为 26ai Free 23.26.2,其 PDB 名为 FREEPDB1(非 XEPDB1),数据源配置需相应调整。 各组合的逐项通过情况(12/13)与数据量细节见下方分项明细。
矩阵结论要点:
- 除 11.2 首次元数据创建的 BUG-2 外,全部 8 个组合的常规迁移能力可用:连接、表结构、主键/外键约束、视图、序列、常规类型数据、CLOB 数据(含中文与特殊字符
<>&'")均迁移正常。 - 唯一跨版本阻断项是 RAW 类型列的数据迁移(BUG-1):8 个组合全部复现,含 RAW 列的表数据 0 行入库。
- BUG-1 与 Halo 目标端版本无关(1.0.14 与 1.0.16 行为一致),属 hmt 平台的 writer 类型转换缺陷。
- 11.2 的 BUG-2 仅阻断「首次」元数据任务创建(ORA-39212 使接口回滚);平台保留的任务定义仍可执行,重试或复用任务后全套迁移可完成。
分项明细
各版本组合的分项实测结果如下。✅ 表示通过,❌ 表示失败/阻断,— 表示未测。
表 4-2 11.2 XE (11-slim)
| 测试项 | → 1.0.16 | → 1.0.14 | 说明 |
|---|---|---|---|
| 数据源连接 | ✅ | ✅ | 服务名 XE(非 CDB 架构) |
| 元数据任务创建 | ❌ | ❌* | BUG-2:ORA-39212 接口回滚;*1.0.14 轮次靠复用任务完成迁移 |
| 表结构迁移 | — | ✅ | 1.0.16 轮未产出任务;1.0.14 轮通过 |
| 视图/序列迁移 | — | ✅ | 同上 |
| 常规类型数据迁移 | — | ✅ | 3000 行入库一致 |
| CLOB 数据迁移 | — | ✅ | 1000 行入库一致 |
| RAW 数据迁移 | — | ❌ | 0/500(BUG-1) |
| 已知问题 | BUG-2、BUG-7 | BUG-1、BUG-2 | — |
表 4-3 18c (18-slim)
| 测试项 | → 1.0.16 | → 1.0.14 | 说明 |
|---|---|---|---|
| 数据源连接 | ✅ | ✅ | XEPDB1 |
| 元数据任务创建 | ✅ | ✅ | 任务正常生成 |
| 表结构迁移 | ✅ | ✅ | 表、字段、类型迁移正常 |
| 视图/序列迁移 | ✅ | ✅ | 视图与序列各 1 个验证通过 |
| 常规类型数据迁移 | ✅ | ✅ | 3000 行入库,行数一致 |
| CLOB 数据迁移 | ✅ | ✅ | 1000 行入库,行数一致 |
| RAW 数据迁移 | ❌ | ❌ | 0/500(BUG-1) |
| 综合 | 12/13 | 12/13 | RAW 列迁移失败 |
表 4-4 21c (slim)
| 测试项 | → 1.0.16 | → 1.0.14 | 说明 |
|---|---|---|---|
| 数据源连接 | ✅ | ✅ | XEPDB1 |
| 表结构/约束迁移 | ✅ | ✅ | 表、主键、外键迁移正常 |
| 视图/序列迁移 | ✅ | ✅ | 迁移正常 |
| 常规类型数据迁移 | ✅ | ✅ | 3000~5000 行入库一致 |
| CLOB 数据迁移 | ✅ | ✅ | 1000~2000 行入库一致 |
| RAW 数据迁移 | ❌ | ❌ | 含 RAW+CLOB 混合表亦失败(BUG-1) |
说明:21c→1.0.16 的先行探索过程未存独立 json,结论来自过程记录;21c→1.0.14 有完整 json。
表 4-5 23ai (23-slim,实测版本 26ai Free 23.26.2)
| 测试项 | → 1.0.16 | → 1.0.14 | 说明 |
|---|---|---|---|
| 数据源连接 | ✅ | ✅ | PDB 名为 FREEPDB1 |
| 元数据任务创建 | ✅ | ✅ | 任务正常生成 |
| 表结构迁移 | ✅ | ✅ | 表、字段、类型迁移正常 |
| 视图/序列迁移 | ✅* | ✅* | 对象迁移成功;重复创建序列时报 500(对象已存在,非迁移失败) |
| 常规类型数据迁移 | ✅ | ✅ | 3000 行入库,行数一致(首查计数偏小为迁移进行中,复核一致) |
| CLOB 数据迁移 | ✅ | ✅ | 1000 行入库,行数一致 |
| RAW 数据迁移 | ❌ | ❌ | 0/500(BUG-1) |
矩阵结论使用指引
- 新迁移项目选型:Oracle 11.2/18c/21c/23ai → Halo 1.0.14 或 1.0.16 的组合均可规划,仅需在方案中排除 RAW 列(或单独处理)。
- 源端含 RAW 列的表:当前版本(hmt build260709)无法通过平台迁移,需另行处理。
- 源端为 11.2:首次创建元数据任务若报 ORA-39212(接口回滚),属 BUG-2;重试创建或检查已生成任务并直接执行,全套迁移仍可完成。
- 源端为 23ai:注意确认 PDB 名称(FREEPDB1),数据源 URL 服务名按实际填写。
- 同一平台反复测试时,建议每次迁移前清理旧任务定义,避免命中历史任务的重复创建报错。