ODS 状态修复加个人理解

ODS很简单也很容易坏,特别是在做 Delta过程中,往往因为错误地删除某些Request导致新导入的Request无法激活。 

     前辈遗留了一支程序

REPORT  ZDMDELTAREPAIR                          .
parameters: l_ods type RSDODSOBJECT.

data l_count type sytabix.
select countdistinct PARTID ) from rsdmdelta into l_count
  where icname = l_ods.
if l_count > 0.
  write 'Status are still set. Delta can not be repaired (note 578150)'.
  exit.
endif.

data l_max type RSSID.
select max( requid ) into l_max from rsbodslog
          where odsobject = l_ods.
update rsbodslogstate set active = l_max
                          PROCESSED_ALL = 0
                          PROCESSED_ONE = 0
                      where odsobject = l_ods.

----------------------

说实在的程序本身没有为我解决什么问题,倒是这里的表 rsbodslogstate  给了我不少帮助,好几次我直接手工去改动这里的数字,问题还真的解决了。

=============================================================

以上是摘自一位前辈的文章,我的理解是这样的:

      如果DSO出现加载失败,包括自身加载数据,从DSO加载数据到别的DSO或CUBE时,可能因为频繁删除主求而出现导入新的Request。

1、通过DSO的名字,查看表 rsdmdelta(数据集 Delta 管理) ,如果字段PARTID有值,则表示增量加载无法修复,参考NOTE  578150。

2、否则查看表rsbodslog(ODS 更改日志中的请求),获取最大的REQUID字段的值。

3、查看表rsbodslogstate(ODS 对象的更改日志状态),看ACTIVE的值是否与上一步查得的REQUID的值是否一样, PROCESSED_ALL 是否为0,PROCESSED_ONE 是否为0,如果不是,将其更改。

=========================================

关于Request的几个表

RSREQDONE:   Monitor: Saving of the QM entries     记录 Request的状态及基本信息
RSICCONT:        Monitor: Saving of the updated IC and ODS per request  记录Cube或ODS内Request的状态
 
另外
 
RSBODSLOGSTATE:Changelog Status for ODS Object   记录ODS中Request的激活,Delta等Request

 

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值