Oracle 迁 KingbaseES 全流程:从评估到割接,一个都不能少
上一篇文章讲了迁移前怎么摸底兼容性,这篇把整条流程串起来------从评估到割接上线,每一步该干什么、注意什么。
这不是理论流程,是官方最佳实践文档里提炼的实操路径,我按自己项目的理解重新组织了一遍。
整体流程五步走
- 确定移植目标
- 评估移植任务
- 组建移植团队
- 准备迁移环境
- 执行迁移:库/用户 → 数据 → 应用 → 测试 → 割接
每步都有坑,一个个说。
第一步:确定目标,把话说死
开始前必须明确几件事,写成文档:
- 数据规模:多少库、多少 Schema、多少 G 数据
- 对象种类:表、视图、存储过程、包、触发器各多少
- 难易程度:有没有特殊功能(分区、物化视图、闪回、DBLINK......)
- 工期:什么时候必须上线
- 是否允许停服:这条决定用离线迁移还是在线迁移,后面细说
- 技术指标:性能要达到什么标准
目标不明确,后面全是扯皮。
第二步:评估任务
把源库的对象盘一遍,统计数量,重点标记不支持的功能。官方建议用 KDMS/KDTS 的工作量评估工具辅助,能自动统计对象数量和不支持项。
评估的产出是一份清单,标注每个对象的迁移难度和需要改动的地方。这份清单后面就是项目排期的依据。
第三步:组建团队
别一个人扛。文档明确建议:团队里要有熟悉 Oracle 和 KingbaseES 两边的人------SQL、PL/SQL、API、客户端工具各有人懂。
最理想的组合:
- 懂源库业务的人(知道存储过程里藏着什么逻辑)
- 懂目标库的人(知道兼容性边界在哪)
- 懂接口的人(JDBC/ODBC/OCI 这些)
- 迁移工具操作的人
第四步:准备环境
- 目的服务器:高配,和源库同局域网(数据迁移走内网,别走公网)
- 安装软件:KingbaseES、源库客户端、PL/SQL Dev、JDBC/ODBC 驱动等
- 配置目标库参数:
shared_buffers调到物理内存的 1/4 左右,预建数据文件
第五步:执行迁移
5.1 数据库和用户迁移
建同名数据库、同名用户、同名 Schema,字符集必须一致。
这一步看似简单,但字符集不一致是迁移后乱码的第一大原因。源库什么编码,目标库就建什么编码,别自作聪明换。
5.2 数据迁移(两种方式)
离线迁移(允许停服):
用 KDTS 一次性搬完。BS 版:建连接 → 建任务 → 选对象 → 配参数 → 迁移。SHELL 版:改 yml → 跑脚本。
在线迁移(不允许停服):
KDTS 搬存量 + KFS 追增量,两步走:
- 源库做备份,获取一致性 SCN
- 备份还原到中间库,KDTS 把存量搬到 KingbaseES
- 启动 KFS 从源库追增量(
replicator start offline+online -from-event scn),直到两边数据追平
在线迁移期间注意:别跑大型批处理、别做 DDL,否则增量追平会很难看。
5.3 应用代码迁移
- 服务端代码:存储过程、函数、包一般 KDTS 已经带过去了,重点检查匿名块
- 客户端代码:换驱动。JDBC 换驱动和连接串,ODBC 建数据源,框架(Hibernate、Activiti 等)换对应方言
5.4 测试调试
功能测试:每个模块全面回归,发现问题及时排。难的定位不了,找金仓支持工程师。
性能测试:
- 构造测试数据,建议同生产规模,模拟未来几年增长
- 用 TPCC、LoadRunner 等压测
- 不达标模块重点调优(SQL、索引、参数)
- 建议测试环境尽量和生产一致,多周期规模分别测
割接方案:短停服怎么搞
割接是迁移最紧张的一环。文档给的思路:
场景一:割接时间短
- 用同步工具持续同步(KFS)
- 评估最短割接时间,提前协调预留
- 做失败回退预案
- KDTS 完成历史数据迁移
- KFS 持续同步,等数据差异小于预留时间 → 割接
说白了:让 KFS 一直追,追到"最后差的数据能在你申请的停机窗口内同步完",就切。
场景二:测试时间不足
用双轨运行:应用先跑在一个库上,数据实时同步到另一个库,出问题快速切回去。等新库验证充分了再正式切。
割接五步操作
- 评估:生产测试满足、影响小、条件具备
- 准备:管理侧(公告、回访计划)+ 技术侧(硬件环境)
- 操作:原系统停用(断网但不关机)→ 最终数据同步 → 新系统上线
- 回退:超时或不稳,拨回配置启用原系统
- 观察:专组监护,观察期至少 3 个完整业务周期
备份别忘
割接前后都要有备份:
- sys_dump(逻辑备份):灵活,能单表备份,但不能增量、不能时间点恢复
- sys_rman(物理备份):整实例备份,支持增量、支持恢复到指定时间点
建议割接前物理备份一次打底,割接后逻辑备份方便单表找回。
结尾
Oracle 迁 KingbaseES 是个工程,不是跑个工具那么简单。目标、评估、团队、环境、迁移、测试、割接,每步都有讲究。
但也没那么可怕------KingbaseES 的 Oracle 兼容性做得确实到位,工具链(KDTS/KFS)也成熟。按流程走,稳扎稳打,大多数项目都能顺利上线。
下一篇文章讲升级场景:V8R3 迁到 V9 有哪些差异要避坑。