Siebel初始化"All Order Line Items Analysis View (Sales)"出現"SBL-DAT-00500"錯誤

JohnXu6發表於2010-06-29

昨天早上一上班,老大就急忙忙的說客戶發現一個嚴重的Defect:

使用者開啟View All Order Line Items Analysis View (Sales),Siebel給出一個錯誤SBL-DAT-00500: There were more rows than could be returned. Please refine your query to bring back fewer rows',介面上除了這個錯誤資訊什麼都沒有。

立即我們有以下幾個問題:

1 這個View在我們的開發環境跑的一點問題,為什麼在測試環境有這個問題?

我們在測試環境的資料庫查了一下,這個View要查詢的資料有20000條,而開發環境只有1000條。看來資料量可能是一個原因。

2 'SBL-DAT-00500'是一個非常容易重現的錯誤:在開發環境下,同一個View,我們一直drill從第一個記錄向下,游標從第500個移到下一行的時候,Siebel會給出"SBL-DAT-00500"錯誤。

在BC"Order Entry - Line Items",有2個引數Maximum Cursor Size,PreFetch Size,Siebel的標準配置都是500。這個可以解釋為什麼從第一個游標一直下移到第501條記錄的時候Siebel會報錯。

但是現在的問題是Siebel初始化這個View的時候就報錯了,到底為什麼呢?

看來和資料量有關,我們在測試環境定義了一個預定義查詢,使得返回的結果只有1000條,果然這個View可以正常顯示這個1000條資料了。

似乎問題解決了,但是使用者的需求是要在這個View查詢本週的所有訂單行,我們沒法改需求,沒法辦法只有去解決這個問題,提了個SR給Oracle.

我們得到以下回復:

1 建議做一個預定義查詢,使得返回會的結果小於10000條。這個方案討論過,不可行。

2 文件"ID 478337.1"解釋了,在Enterprise Data Source中的資料來源ServerData中有一個引數MaxFetchArraySize,它影響了所有Siebel執行查詢時可以返回的結果數量。

預設為0, 10000條

Oracle建議可以改為-1,沒有結果數量限制。

同時也說明了可以能出現記憶體耗盡而出現的Crash.

這個方案我們討論了下依然不可行。Crash問題的嚴重性要高於這個View沒法顯示資料,而且這個改動會影響所有的Siebel介面。

似乎問題走到了僵局。

有一個事情啟發了我們,在Account介面,我們在測試環境有10000多條資料,使用者開啟這個節目的時候沒有報錯,為什麼那個View有問題?

我們對比了下BC,Applet,View上的配置,發現在BC"Order Entry - Line Items"有個屬性Hierarchy Parent Field值為"Parent Order Item Id",而BC"Account"上這個值為空。我們查閱了Bookself,"Hierarchy Parent Field,"的解釋為

"Enables the business component to be a specialized hierarchy business component. The field specified there stores the parent information in the hierarchies. Shows nesting in Hierarchical list applets."

我們同時Trace得到了系統初始化2個不同View時的SQL,在有問題的SQL上有一個HINT,"/*+ALL ROWS*/",而"Account View"沒有。

看來問題可以解釋了:"Order Entry - Line Items" BC 上配置了"Hierarchy Parent Field"為"Parent Order Item Id"導致生成的SQL加上了HIT,"/*+ALL ROWS*/",去取SQL所有的結果集。

我們馬上做了一個測試,去除"Hierarchy Parent Field"上的值。果然View可以正常工作了,而且Trace出來的SQL沒有這個HINT /*+ALL ROWS*/。

最終的解決方案:

在metalink上有篇文件"825967.1",其實在Asset View也有這個問題,解決方案是在List Applet加一個User Property,"Disable Buscomp Hierarchy"為"TRUE".

糾結了一天的問題,終於解決了。。。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24162137/viewspace-1034738/,如需轉載,請註明出處,否則將追究法律責任。

相關文章