昨天早上一上班,老大就急忙忙的说客户发现一个严重的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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24162137/viewspace-1034738/