迁移前的系统评估:如何盘点现有ERP模块、数据量估算、接口依赖分析、性能基线采集
系统评估这件事,说白了就是给老ERP做一次全面体检。
我见过太多团队,上来就动手迁移,结果发现模块不全、数据量远超预期、接口断链……最后项目延期三个月。嗯,咱们别踩这个坑。
一、盘点现有ERP模块:别漏掉任何一个角落
我个人习惯,第一步先拉清单。不是简单列个模块名字,而是要把每个模块的启用状态、版本号、定制程度、用户数都摸清楚。
模块盘点清单(建议用Excel或数据库表管理)
| 模块名称 | 启用状态 | 版本 | 定制化程度 | 活跃用户数 | 数据量(GB) |
|---|---|---|---|---|---|
| 财务总账 | 已启用 | R12.2.9 | 低(仅字段扩展) | 45 | 12.3 |
| 采购管理 | 已启用 | R12.2.9 | 高(自定义审批流) | 28 | 8.7 |
| 库存管理 | 已启用 | R12.2.7 | 中(报表定制) | 15 | 45.2 |
| 生产制造 | 已停用 | R12.1.3 | 高 | 0 | 2.1 |
这里有个坑:已停用的模块也要记录。我曾经遇到一个客户,说生产模块早不用了,结果迁移时发现历史工单数据还在,而且跟财务成本模块有勾稽关系。你不盘点清楚,迁移后对账对不上,那才叫头疼。
我的小技巧: 用SQL直接查数据库的模块注册表,比问业务部门靠谱。比如Oracle EBS查FND_APPLICATION表,SAP查T000表。数据不会骗人。
二、数据量估算:别被“大概几个T”忽悠了
数据量估算,我建议分三步走:
- 按表统计:查每个模块核心表的行数和存储空间
- 按年增长:看过去3年的数据增量,推算迁移窗口期的数据量
- 按归档策略:哪些历史数据可以归档不迁移
举个例子,我去年做的一个项目,客户说“库存数据大概500G”。结果我一查,光MTL_TRANSACTION_HISTORY这张表就1.2T,加上索引快2T了。为什么?因为他们从来没做过数据归档,10年的交易记录全堆着。
注意: 数据量估算一定要包含索引、日志、临时表空间。实际迁移的数据量往往是业务表数据的1.5-2倍。
我常用的估算SQL(以Oracle为例):
-- 按表统计存储空间
SELECT
segment_name,
bytes/1024/1024/1024 as size_gb,
num_rows
FROM dba_segments s
JOIN dba_tables t ON s.segment_name = t.table_name
WHERE t.owner = 'APPS'
ORDER BY bytes DESC;
嗯,跑完这个SQL,你心里就有底了。别光看业务表,接口表、日志表、临时表往往是数据量的隐形杀手。
三、接口依赖分析:牵一发而动全身
接口依赖,说白了就是你的ERP跟外面哪些系统在“谈恋爱”。
我建议画一张接口依赖图,包含:
- 接口方向:ERP→外部,还是外部→ERP?
- 接口协议:REST API?SOAP?文件传输(SFTP)?数据库直连?
- 数据频率:实时?每小时?每天?每月?
- 数据量级:每次传输多少条记录?
- 依赖关系:A接口挂了,B接口还能跑吗?
接口依赖分析表示例:
| 接口名称 | 源系统 | 目标系统 | 协议 | 频率 | 数据量/次 | 关键依赖 |
|---|---|---|---|---|---|---|
| 客户主数据同步 | CRM | ERP | REST API | 实时 | 50-200条 | 订单创建依赖此接口 |
| 财务凭证推送 | ERP | 资金系统 | SFTP+XML | 每小时 | 1000-5000条 | 资金调拨依赖 |
| 库存快照 | ERP | WMS | 数据库直连 | 每15分钟 | 全量快照 | 拣货任务依赖 |
我曾经遇到一个案例:客户说只有5个接口,结果一挖,发现还有12个隐藏的数据库直连视图、8个触发器同步、3个定时任务。这些“影子接口”在迁移时最容易出问题。
我的排查方法: 查数据库的DBLINK、JOB、SCHEDULER,再配合网络抓包工具跑一周。你会发现很多“惊喜”。
四、性能基线采集:没有基线,你怎么知道迁移后是快是慢?
性能基线,就是迁移前的“体检报告”。没有它,迁移后用户说“系统变慢了”,你拿什么反驳?
我建议采集以下指标:
- 响应时间:核心业务操作的95分位响应时间(比如订单录入、凭证过账)
- 吞吐量:高峰期每小时处理的事务数
- 资源使用率:CPU、内存、磁盘IO、网络带宽
- 并发用户数:高峰期同时在线用户数
- 数据库等待事件:Top 5等待事件是什么
举个例子,我习惯用awrrpt.sql生成Oracle的AWR报告,重点关注:
-- 查看Top 5等待事件
SELECT * FROM (
SELECT
event,
total_waits,
time_waited_micro/1000000 as time_waited_sec,
average_wait_micro/1000 as avg_wait_ms
FROM dba_hist_system_event
WHERE wait_class != 'Idle'
ORDER BY time_waited_micro DESC
) WHERE ROWNUM <= 5;
嗯,这里要注意:基线采集要覆盖业务高峰期和低峰期。我一般建议采集7天数据,包含2个完整的周末(很多批处理在周末跑)。
避坑指南: 我曾经只采集了工作日的性能数据,结果迁移后第一个周末跑批处理,直接超时。为什么?因为老系统周末有数据归档任务,我没采集到那个时间段的负载特征。
五、综合评估报告:把碎片拼成一张图
做完以上四步,最后要出一份系统评估报告。我习惯用这样的结构:
- 现状总览:模块清单、数据量汇总、接口数量、性能基线
- 风险点:高定制模块、大数据量表、关键接口、性能瓶颈
- 迁移建议:分阶段迁移策略、数据归档方案、接口改造计划
- 资源估算:需要多少存储、多少带宽、多少人力
说白了,这份报告就是迁移项目的“作战地图”。你评估得越细,后面踩的坑就越少。
记住一句话: 迁移前多花一周做评估,迁移中少花一个月填坑。这笔账,怎么算都划算。
好了,系统评估这部分就聊到这儿。下一章咱们聊聊数据清洗的具体打法——那些脏数据、重复数据、孤儿数据,怎么一个个收拾干净。