2014年6月29日 星期日

[ASCP] Part 2: Legacy Collection, PLANNING_PARTNER_SITE_CODE is invalid Error

    都是面對 On Hand 出現 PLANNING_PARTNER_SITE_CODE 的問題,之所以分兩篇寫,除了因為遇到的時機間隔了一段時間,還有一個主因,是因為錯誤的原因截然不同,分開寫可能會清楚些




    話說之前研究了 Oracle 的 Source Code,確實找到 Work Around 可以將 On Hand 以 VMI 模式匯入,也完成了驗證,將原本有問題的檔案,所有 Record 全數成功匯入。

    隔了兩週,拿到的新的一版資料,又遇到一樣的問題了!!

    與上次不同的是,之前遇到的狀況,是所有 Record 都失敗,而這次遇到的情況是,一部分成功匯入,一部分失敗了!!

    當下懷疑是不是資料品質的問題,但比對成功與失敗的 Record,個欄位值都相同,不應該存在邏輯上的問題。接著,只好再檢查 Source Code,懷疑是哪個 Bug 我沒看到,結果整整一天,實在看不出來還有什麼情況我的 Workaround 無法避開這個 Bug。

    更氣人的是,我修改 Flat File 只留下一筆無法匯入的 Record,單獨執行 Data Collection,X(消音處理,因為我實在太氣了,這個字不能省略,只好消音處理),竟然成功匯入!!

    除錯往往需要運氣,就像今天凌晨巴西對智利一樣,巴西就是那麼好運,靠著門眉救了一次,靠著門柱拿下 PK 的勝利一樣(我喜歡的義大利就很衰,跟哥斯大黎加那場,Ruiz也打到門眉,但球就是彈進球門線內)。

    我想 Monitor 看看到底 Pre-Processing Monitor 修改了那些欄位,看看是不是其他欄位被 Pre-Processing Monitor 亂塞值,導致後面的錯誤。於是,我將 Pre-Processing Monitor的 Processing Batch Size 由原本預設的 1000,改成 100。之後,我讓程式一邊執行,一邊 Select msc_st_supplies,藉以比對 Pre-Processing Monitor 修改前與修改後的 Record,看看有哪邊不一樣。

    結果,什麼都沒有比較出來,倒是發現 msc_st_supplies 只被處理了 100 筆 records,不就正好等於 Processing Batch Size 的值嗎?!

    真的暈倒,針對 On Hand,Oracle 竟然只處理了一個 Processing Batch Size 資料筆數,剩下的都被標示為 Error,所以不會被處理了!!!!!

    無奈,再不想改 Oracle Source Code(且找不到 Patch 修正 12.0 的 bug),只好把 Processing Batch Size 放大到 3000,果然就成功匯入了。

沒有留言: