大批量删除_你问我答 EBS中大批量物料如何从既有库存组织导入到新加库存组织...

b4d7055a97f1a035056e37266e186888.png 4950875c87a9f8694b9c056db1f1a707.png 0b39e7465d33f3651a8e51d084a94ee4.png 8acb7ca755d07d22f1c267485e53fa3b.png 问题: EBS 中大批量物料如何从既有库存组织导入到新加库存组织上。 答案:

这是一个实际项目的需求:将子库存组织A状态为Active的物料全部分配至新建的库存组织,且限制新库存组织中物料属性,ATO物料所有ATO相关属性均参照主组织,非ATO物料所有属性参照子库存组织A。

调查过程以及方案如下: 根据需求确定初期方案:开发一个使用标准物料导入接口的脚本导入数据。 后续实际测试时发现了以下几个问题点: 问题一

数据检验。数据导入测试后以何种方式确认数据是否正常导入,即如何对比所有物料所有属性?考虑到需要多组织多物料多字段一起显示,数据量巨大且三维显示不便。

问题二

客户不提供数据文件无法获取template,移行数据脚本逻辑如何跟addon接口程序保持一致。客户环境既存一套专门用于物料导入的addon接口程序,其中一关键字段“template”,用于控制物料属性,addon接口通过识别外围系统传入数据文件中特定的几个物料属性匹配找到相应的template,某些属性只能从外围系统获取,且因为是多对一的关系故无法逆推。

问题三

物料导入均使用标准请求如何优化性能。物料导入测试时间不理想。数据量200W+如何在规定的时间内(2天)导入完成。

对策一

分析:数据对比是首先要完成的,在开发过程中会频繁的使用,例如前期方案可行性调查,方案实施后数据导入校验。那么以何种方式才能最快?一般来说数据比对都是用的excel,但是这次情况有点特殊,第一几百万这么庞大的数据量超过了excel所能处理的上限,第二同时显示物料,组织,字段和各个组织下的字段值,excel多维显示不是很方便。那咋办呢?一听说要比对几百万数据而且还需要比对几个组织好几百个字段?还要按照多维格式输出,呃呃,难搞哦,我想静静。

不过细想之下其实问题很容易就可以解决,几百万数据虽然excel 处理起来很困难但是用sql 就不一样了,毕竟哪张表还没有个几百万数据呢,可以先通过sql 语句快速将有差异的物料取出,然后逐一对比这些物料所有字段不同组织的值,考虑到物料表字段太多,写几百个判断也不现实,可用动态sql 灵活拼接物料,组织,字段,组成sql 循环执行进行比对,最后以ITEM_CODE,COLUMN_NAME,COLUMN_VALUE(ORG1_US),COLUMN_VALUE(ORG2_US),COLUMN_VALUE(ORG3_US) 这样的格式输出,这样第一个问题就解决了。 结论:开发一个数据对比脚本。用动态sql 灵活拼接物料和字段,循环对比所有组织所有物料所有字段,并按适用于excel 分析的格式将差异字段列出。从测试结果来看对比单个组织所有物料和其它5 个组织的差异共耗时90 分钟。 对策二

分析:将数据库中的物料按照类别每种随机取一个进行前期物料导入测试,接口表中仅传入物料和组织。导入后的数据用对策一中的数据对比脚本跟其他组织对比发现,所有字段基本都和主组织保持一致,可以得出结论这种方式导入的物料所有属性均参照主组织。

另外仍使用数据对比脚本对比子库存组织对象数据和主组织的差异时发现除了ATO 物料和主组织存在差异之外另外仅有极少数物料存在差异,通过数据比对结果显示addon 物料导入接口使用Template 导入的数据除ATO 品目外都跟主组织保持一致,结合客户的需求“非ATO 物料参照子库存组织A ,ATO 物料参照主组织”,可以推测测试脚本导入数据后,理论上来说差异应该是极少的,我们可以先将数据全部导入,导入后再根据数据比对结果和客户确认修复内容,确认好后另开发数据修复脚本将这些差异项修复。 结论: 开发物料导入脚本和数据修复脚本,物料导入成功后对比数据,差异项用数据修复脚本修复。 对策三

分析:脚本代码逻辑确定后,开始性能测试,考虑到测试物料删除这一动作比较费时间,所以数据无法重复使用,数据删除不易,且用且珍惜….

查看标准并发管理器的设置最多可同时提交70个并发请求

bcb053c1b1e37ed72666e8334e7ba05d.png

故先准备分两个数据量导入用于测试性能,4W,20W,这里需要提醒下因为导入数据后INV模块标准表数据量变动很大所以需要实时运行表统计数据收集请求,分析表和索引信息,只有这样CBO执行计划查询效率才能最优。

惭愧,自己在性能测试前并没有考虑到这一点而测试环境很久没有跑过该请求导致前期性能测试进展不佳。这里代码做出调整,在调用标准物料导入请求前追加逻辑调用表统计数据收集请求。物料导入测试结果显示,4W耗时1h,20W耗时5h,时间和数据量成正比。

为得出单个请求的最佳处理数据量,将数据量依次降低进行测试,最终数据量在4000耗时降低明显仅4min。按照最高70个的设定如按照最优处理量设定,需要将数据量分批导入也就是需要准备多个脚本,考虑到脚本分批提交动作繁复且客户是用SSH工具执行,避免因客户电脑黑屏或其他问题导致脚本后台执行出现问题,故这里代码再次调整,选择新规并发请求,请求中分批提交请求,设置单个请求处理数据量为4000,同一时间最多提交30个请求,为啥是30呢因为测试发现同时提交的请求太多反而极慢,查看AWR报表发现大多数请求处于IO等待,故选择了一个比较合理的30,核心处理是程序会自动判断前一批旧请求中是否存在已结束的,判断结束后立即提交新的请求替代,直至数据全部处理结束请求结束,以此种模式处理全部数据。

结论:新开发物料导入addon请求,以标准并发最优处理数据量,分批次处理数据。最终在客户正式环境下240W数据6h全部导入完成。

解决了以上的一些问题,按照以下3步骤,上线后没有出现问题。

Step1:新开发物料导入addon请求,执行物料导入请求;

Step2:执行数据对比脚本,将差异项列出根据业务去对比字段的差异是否合理,整理后和客户确认数据修复内容;

Step3:根据2中的确认内容,更新数据修复脚本并执行。

0cb114b18b4941a171deb13178d870d1.png

3d13564bcaa550130ddc67605c19e850.png

作者:李真

审核:梁超

编辑:许娜

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值