ODS 狀態修復加個人理解

fog911811發表於2012-08-14
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

 

  

相關文章