【九原区】国产数据库迁移后报表全乱码?字符集与排序规则

① 项目背景

九原区某单位,Oracle迁达梦DM8,迁移公司拍胸脯说平滑无感,上线第二天财务炸了:报表里人名全是问号,按姓名排序出来的顺序跟原来完全不一样,还有几张表的金额合计差了0.01元。甲方信息中心找到我时,迁移方已经撤场,电话不接。

② 咨询设计

三个现象对应三个问题。乱码是字符集:源库AL32UTF8,目标库建成了GB18030,中间dmp文件又用ZHS16GBK导出,三重转换,生僻字全丢。排序不同是排序规则:Oracle默认二进制排序,达梦默认按拼音,业务SQL里写死了ORDER BY name,结果自然不同。金额差是NUMBER类型映射成了FLOAT,二进制浮点累加产生误差。方案:重建库为UTF-8,迁移工具指定字符集不转换,排序列加COLLATE BINARY,金额字段全部改DECIMAL(18,2)。还有一处容易漏:DM8的VARCHAR默认按字节计长,Oracle按字符,中文姓名三个字在两边占的长度不一样,建表语句必须显式写CHAR语义,否则字段被截断。

③ 施工规划

重来一遍不能在生产库上做。搭一套同版本DM8测试库,从源库重新导出,导出时显式指定CHARACTERSET=UTF8,导入前检查NLS_LANG环境变量。逐表比对:行数、主键最大值、金额字段SUM、字符字段的MD5。120张核心表,跑脚本自动比对,差异表人工核。确认无误后再切生产,切换窗口选在周六晚八点到周日凌晨。

④ 安全补丁

迁移留下的账号是隐患。迁移方建了三个DBA权限账号,密码是公司名加123,撤场没删。我们全部禁用,只保留两个运维账号,权限降到最小,开数据库审计,DDL和批量DELETE全部记录。应用连接串里的明文密码改成加密配置。另外,测试库里有全量生产数据,迁移完成后必须按流程销毁,不能就那么在机房放着。

⑤ 验收交付

100张报表逐张比对,乱码0处,排序结果与Oracle一致,金额合计差异0.00元。跑了一遍月结和年结,耗时分别为原来的1.3倍和1.1倍,在可接受范围。交付《迁移校验报告》,含每张表的行数、校验和、差异说明,还有一份字符集配置清单,写清楚服务端、客户端、导入工具三处必须一致。

⑥ 售后承诺

国产化迁移我们承诺2小时响应,复杂问题24小时内给方案。大年三十电话不关,17704868686。终身免费咨询,报表乱码先查三处字符集,别急着重导数据。

【不舍昼夜技术 · 包头IT全生命周期服务】
业务全闭环:咨询规划、方案设计、工程实施、竣工验收、维保售后。
咱能干的:包头修电脑/装监控/拉网线/做系统/救数据/办软件/卖耗材。
技术范畴:5G通信、大数据服务、信息系统集成、网络安全、商用密码、平面设计。
服务区域:昆区、青山区、九原区、东河区、高新区等包头全境,随叫随到。
技术热线:17704868686(本地专业团队,不舍昼夜为您守候!)

上一篇 【昆区】公司注销留下200台电脑?资产核对与NIST 800-88擦除
下一篇 【稀土高新区】焊点虚焊靠人眼挑?工业视觉光源与边缘推理