BW基于ALE的主数据增量机制分析
1 概述
前段时间在项目中碰到一个问题,地点物料0MAT_PLANT_ATTR属性主数据因为有两个多月没有做增量更新,导致在之后的每次增量抽取活动中因为抽取的数据量过大使得在源系统的进程中发生short dump。
发现在这问题后,为避免增量抽取的数据量过大,先给0MAT_PLANT_ATTR重新做了一次无数据传输的初始化和FULL REPAIR UPDATE,然后再重新再做增量抽取。但是发现在源系统端的数据抽取进程中还是发生了short dump,错误的原因也是一样要抽取的数据量过大,导致内存发生错误,如图1.2。
图1.2
为什么0MAT_PLANT_ATTR在做了初始化以后,在做增量抽取时还是会发生数据量过大导致内存溢出的错误呢,在网上查了相关资料以及给SAP发了
MESSAGE后得到了答案。原来在BW中有一部分主数据的抽取是基于ALE增量机制,该类型的增量数据保存在表BDCPV中,由字段PROCESS标识
数据是否已经抽取过,如图1.3所示。按正常情况,数据源做完初始化后,应该将初始化时间点前的所有数据都打上已处理标记,这样下次增量抽取时就可以避免
重复抽取这部份数据,但是显然SAP由于某些原因(应该算是SAP的一个BUG)忽略了这一点,导致数据抽取出现异常(当然一定要数据量够大时才会出现问
题)。这一类型的主数据增量不会保存在队列中,即虽然在RSA7中可以看到数据源0MAT_PLANT_ATTR,但是查不到任何数据,这一类数据源也不
支持重复增量。
2
查看数据源的增量处理类型
在源系统端运行TCODE:
RSA2,可以查看该数据源是否支持ALE指针增量机制,怎么鉴别一个数据源所对应的消息类型呢,可以通过表ROOSGEN来查看。查到数据源对应的消息类型后,还需要查看该消息类型是否已经激活,可以通过表TBDA2查看。
3
主数据和BDCPV之间的关系
以物料属性0MATERIAL_ATTR数据源为例,说明一下主数据更新和表BDCPV之间的关系。物料属性的更新在MM01中进行,当我们增加或修改了
某一个物料后,数据不但保存在MARA,而且还会将修改的数据保存到表BDCPV中,当我们在MM01中新增加一个物料后,表BDCPV中也增加了一条数
据记录,消息类型为RS0059(每个系统都有自己的消息类型,不是统一的),在CREATETIME为20091211103441时,表MARA也生
成了一条新数据(Change
ID为‘I’)。
物料属性0MATERIAL_ATTR数据源执行FULL UPDATE或DELTA PROCESS时,extractor
function module会使用不同的方法读取相应的数据,如图3.1所示,当是Full或Initial的时候,数据从Base
Table中读取,当是Delta时,数据从BDCPV中读取。
图3.1
4
增量抽取出现错误时的处理办法
在其他类型的增量数据处理中,如果当前的增量处理出现失败的情况,一般的处理办法是将当前请求置红,将目标数据中的请求删除,这样在下次做增量抽取时会自
动重新抽取这次没有抽成功的数据。但是在基于ALE的增量抽取机制中不支持重复抽取,因此不能简单的置红删除。而是需要先将错误请求置绿,处理好
BDCPV中记录的标识后,再重新运行增量信息包。
BW基于ALE的主数据增量机制分析的更多相关文章
- linux内核3.4基于wakeup_source的autosleep机制分析
点击打开链接 一:wakeup_source简介: linux 3.4内核PM使用了wakeup_source来保持唤醒状态,也就是keep awake.之前android一直是基于Linux加入了w ...
- 苏宁基于Spark Streaming的实时日志分析系统实践 Spark Streaming 在数据平台日志解析功能的应用
https://mp.weixin.qq.com/s/KPTM02-ICt72_7ZdRZIHBA 苏宁基于Spark Streaming的实时日志分析系统实践 原创: AI+落地实践 AI前线 20 ...
- Linux mips64r2 PCI中断路由机制分析
Linux mips64r2 PCI中断路由机制分析 本文主要分析mips64r2 PCI设备中断路由原理和irq号分配实现方法,并尝试回答如下问题: PCI设备驱动中断注册(request_irq) ...
- Android内存机制分析1——了解Android堆和栈
//----------------------------------------------------------------------------------- Android内存机制分析1 ...
- Linux内核态抢占机制分析(转)
Linux内核态抢占机制分析 http://blog.sina.com.cn/s/blog_502c8cc401012pxj.html 摘 要]本文首先介绍非抢占式内核(Non-Preemptive ...
- Linux x86_64 APIC中断路由机制分析
不同CPU体系间的中断控制器工作原理有较大差异,本文是<Linux mips64r2 PCI中断路由机制分析>的姊妹篇,主要分析Broadwell-DE X86_64 APIC中断路由原理 ...
- 基于 JDK 的动态代理机制
『动态代理』其实源于设计模式中的代理模式,而代理模式就是使用代理对象完成用户请求,屏蔽用户对真实对象的访问. 举个最简单的例子,比如我们想要「FQ」访问国外网站,因为我们并没有墙掉所有国外的 IP,所 ...
- Android内存机制分析2——分析APP内存使用情况
上面一篇文章说了Android应用运行在dalvik里面分配的堆和栈内存区别,以及程序中什么代码会在哪里运行.今天主要是讲解一下Android里面如何分析我们程序内存使用情况.以便后续可以分析我们程序 ...
- Linux 线程实现机制分析 Linux 线程模型的比较:LinuxThreads 和 NPTL
Linux 线程实现机制分析 Linux 线程实现机制分析 Linux 线程模型的比较:LinuxThreads 和 NPTL http://www.ibm.com/developerworks/c ...
随机推荐
- Web大文件上传控件-bug修复-Xproer.HttpUploader6
1.修复上传文件夹时,文件夹大小可能不正确的问题.这个问题是由于以MD5模式上传时没有更新文件夹总大小导致. 更新fd_complete.aspx 更新DBFile.cs-fd_complet ...
- hdu - 3952 Fruit Ninja(简单几何)
思路来自于:http://www.cnblogs.com/wuyiqi/archive/2011/11/06/2238530.html 枚举两个多边形的两个点组成的直线,判断能与几个多边形相交 因为最 ...
- SQLSERVER监控复制并使用数据库邮件功能发告警邮件
SQLSERVER监控复制并使用数据库邮件功能发告警邮件 最近熬出病来了,都说IT行业伤不起,不说了,说回今天的正题 正题 上个月月底的时候因为要搬迁机房,需要将一个数据信息数据库先搬到我们的机房,然 ...
- ELMAH入门
简介 ELMAH(Error Logging Modules and Handlers)错误日志记录模块和处理程序,是一种应用广泛的错误日志工具是完全可插拔.它可以动态添加到一个正在运行的ASP.NE ...
- Dynamic CRM 2013学习笔记(二十二)插件里调用WCF服务
1. 添加service: 2.调用WCF BasicHttpBinding myBinding = new BasicHttpBinding(); myBinding.Name = &q ...
- 尝试在Linux上编译KestrelHttpServer
Kestrel是目前在非Windows平台上运行ASP.NET 5应用程序的唯一可用Web服务器,但微软似乎将它冷落在一边,源代码更新很慢. 今天试着在Linux上编译Kestrel的源代码,遇到了很 ...
- 用Photoshop处理图片使背景透明
用Photoshop处理图片使背景透明 打开一张图片 双击背景或者右键背景图层,新建一个图层, 选择魔棒工具,单击图片, 会自动选择颜色相近的范围 按下键盘的delete键,就可以删除魔棒所选择的区域 ...
- 深入浅出OOP(一): 多态和继承(早期绑定/编译时多态)
在本系列中,我们以CodeProject上比较火的OOP系列博客为主,进行OOP深入浅出展现. 无论作为软件设计的高手.或者菜鸟,对于架构设计而言,均需要多次重构.取舍,以有利于整个软件项目的健康构建 ...
- C#与数据库访问技术总结(十七)
使用DataSet对象访问数据库 当对DataSet对象进行操作时,DataSet对象会产生副本,所以对DataSet里的数据进行编辑操作不会直接对数据库产生影响,而是将DataRow的状态设置为ad ...
- centos网卡错误Device eth0 does not seem to be present
在使用vmware及VirtualBox迁移linux系统过程中,发现部署后的linux系统无法启动网卡 报错为 Bringing up interface eth0: Device eth0 doe ...