APPLIES TO:
Siebel CRM - Version 7.5.3 SIA [16157] to 18.8 [Release V7 to V17]Information in this document applies to any platform.
Area(s):Client Functionality, System Administration
Release(s):V7 (Enterprise), V7 (MidMarket), V7 (Professional) and Later (IP2013, IP2014, IP2015, IP2016 and IP2017)
Database(s):All Supported Databases
App Server OS(s):All Supported Platforms
Latest release tested against:V7 (Enterprise)
Keywords:crash, SBL-DAT-00500, fetch, 10000, DSMaxFetchArraySize, leak, exception
DESCRIPTION
This Alert applies to all versions.
In Siebel 7 there are two cursor modes specified with the ExecuteQuery method, ForwardOnly and ForwardBackward.
ForwardOnly: Selected records can be processed only from the first record to the last record. Focus cannot return to a record.
ForwardBackward: Selected records can be processed from first to last or from last to first. This is the default if no value is specified.
DSMaxFetchArraySize is a named subsystem parameter that controls the maximum number of records that can be returned by a business component in ForwardBackward mode. It does not restrict the number of records returned for ForwardOnly cursors. By default, the DSMaxFetchArraySize parameter has a value of 0. When this parameter is set to 0, the Object Manager initializes the parameter to 10,000. This means that a maximum of 10,000 records can be returned by a business component in ForwardBackward mode.
When records are being retrieved from a business component in ForwardBackward mode, if the number of records retrieved is greater than the value of DSMaxFetchArraySize, (10,000 by default) then the following message will be displayed:
SBL-DAT-00500: "There were more rows than could be returned. Please refine your query to bring back fewer rows."
This is the expected behavior. An example of when this message would appear is when a user scrolls through the records in a list applet and tries to access the 10,001 th record (assuming the default value of DSMaxFetchArraySize is in place).
It is possible to alter this behavior by setting the DSMaxFetchArraySize to -1 (unlimited). This means that there is no limit to the number of records returned by a business component in ForwardBackward mode. All the records of the business component are enumerated. Essentially, all the records retrieved will stay in the memory until the next business component execution or when the business component is destroyed.
Setting DSMaxFetchArraySize to -1 has been found to cause large memory use and growth of the Object Manager process (siebmtshmw.exe), and could cause the Object Manager to crash from memory exhaustion. OM PIDs crashing when trying to allocate memory when process memory usage reached limit:
One of the call stacks noted for such crash type :
KERNELBASE!RaiseException+48
msvcr110!_CxxThrowException+57
msvcr110!operator new+4e
sslcshar!CCFBlockAllocator::AllocateBlock
sslcshar!CCFProcessMemPool::Allocate
sslcshar!CCFArray<CCFElemPtr<void> >::SetSize
sslcshar!CCFArray<CCFElemPtr<void> >::InsertAt
sscfdm!CSSACRSCEngine::UnRestrictBS
sscfdm!CSSSqlObj::DoAddListRow
sscfdm!CSSSqlObj::AddListRow
sscfdm!CSSSqlObj::NextRecord
NOTE: Setting the parameter DSMaxFetchArraySize to -1 or to a value greater than 10000 is not recommended.
OCCURRENCE
The behavior will occur if DSMaxFetchArraySize is set to -1. To verify this setting, in the Siebel Client, navigate to Site Map > Server Administration > Enterprise Configuration > Enterprise Profile Configuration, then highlight the ServerDataSrc named subsystem in the Component Profiles applet. In the Enterprise Profile Configuration applet, verify the DSMaxFetchArraySize parameter setting as shown below:
Additionally, you can use the srvrmgr command line utility to verify the setting of the DSMaxFetchArraySize parameter. In the srvrmgr command line utility, type the following:
Srvrmgr> list parameter DSMaxFetchArraySize for named subsystem ServerDataSrc
For Siebel v8.x and above Command will be :
Srvrmgr> list ADVANCED parameter DSMaxFetchArraySize for named subsystem ServerDataSrc
SYMPTOMS
Large memory use by the Object Manager processes; single processes, siebmtshmw.exe, using greater than 1GB of physical memory have been observed.
Object Manager memory leaks. For detailed information about memory usage and memory leaks, refer to Technical Note 361.
Object Manager crashes caused by memory exhaustion.
WORKAROUND
The workaround for this behavior is to make sure that the DSMaxFetchArraySize is set to 0 (the default). If it needs to be reset to 0, this can be done as follows:
For Version before 7.7 navigations:
You can use the Siebel Client to navigate to Site Map > Server Administration > Enterprise Configuration > Enterprise Profile Configuration, then highlight the ServerDataSrc named subsystem in Component Profiles applet. In the Enterprise Profile Configuration applet, set the DSMaxFetchArraySize parameter to.
For Version before 7.8 and later navigations:
You can use the Siebel Client to navigate to Site Map > Administration - Server configuration > Enterprise > Enterprise Profile Configuration, then highlight the ServerDataSrc named subsystem in Component Profiles applet. In the Enterprise Profile Configuration applet, set the DSMaxFetchArraySize parameter to.
You can use the srvrmgr command line utility to also change the value of the DSMaxFetchArraySize parameter. In the srvrmgr command line utility, type the following:
Srvrmgr> change parameter DSMaxFetchArraySize=0 for named subsystem ServerDataSrc
Restart all the Siebel servers for this change to take effect.
Source: Oracle Doc ID 477558.1
See Alos:
SBL-DAT-00590 Error While Trying to Pick A Value For A Picklist Field (Doc ID 1335003.1)
There were more rows than could be returned error occurs when executing LookupValue in an UI data map (Doc ID 1925807.1)
Comments
Post a Comment