SBL-GEN-03001: Error allocating %1
Applies to:
Error Message Area:Generic - GEN
Version:Siebel 8.1
Purpose
This document is intended to provide cause and corrective action
information about Siebel Error Message SBL-GEN-03001: Error allocating
%1
Scope
This document is informational and intended for any user.
SBL-GEN-03001: Error allocating %1
Explanation
Unable to allocate memory for the specified entity. Most likely, memory resources on the machine are exhausted.
Corrective Action
Check available memory on the machine.
Applies to:
Siebel Assignment Manager - Version: 8.0.0.5 [20420] and later [Release: V8 and later ]
Information in this document applies to any platform.
Symptoms
Customer recently added some organizational skills to their skill tables
by migrating the data from their development. Upon this change, the
assignment manager component is crashing when restarted. This means no
objects can be assigned and it is holding up their business.
Customer is receiving a SBL-GEN-03001 error upon restart at the point of the organizational skill load.
Cause
SBL-GEN-03001 indicates that there are not enough memory resouces to
perform the requested action. In this case, Assignment Manager is
attempting to load the organizational skills into the skill cache at the
time the crash occur. So, this would indicate that there are
inadequate memory resources available for the number of skills.
Prior to this issue there were 25.7 million skill items, now there are over 26 million.
Customer discloses that not all skill items in the table are active.
Part of the Assignment Manager process when starting is to create a
skill cache in memory. This allows assignment manager to perform at a
higher level when assigning records. If there are inadequate memory
resources available for the skills, then assignment manager cannot
create the cache.
Solution
It was discovered that when the skill item is deleted, the
corresponding skill item detail is not also deleted. This was causing a
large number of orphaned records in the skill table. CR 12-1XZBSYJ has been opened to address these orphaned records.
Customer is going to prepare SQL or PL/SQL to clean the orphaned data from the table.
it is recommended that a backup of the table be taken prior to these actions executing.
References
BUG:10592003 - SBL-GEN-03001: ERROR ALLOCATING DYNARRCREATE ORGANIZATION SKILL ITEMS
Applies to:
Siebel Assignment Manager - Version: 7.8.2.5 SIA [19227] and later [Release: V7 and later ]
Information in this document applies to any platform.
Symptoms
We started the Batch Assignment task to assign one contact:
TaskConfig TaskCfgParamInit 4 0 2010-04-02 12:17:08 Assignment Object Name : Contact
TaskConfig TaskCfgParamInit 4 0 2010-04-02 12:17:08 Object Where Clause : where row_id='BBL-6YZ'
The task failed to start up while loading the assignment rules with the error:
GenericLog GenericError 1 0 2010-04-02 12:24:28 (asgnsrvr.cpp (1035)
err=3001 sys=0) SBL-GEN-03001: (asgnrule.cpp: 4269) error code = 3001,
system error = 2, msg1 = DynArrCreate pRuleApi->ruleItemArr, msg2 =
(null), msg3 = (null), msg4 = (null)
There were 3840 new assignment rules imported via EIM in the environment.
Cause
Large number of assignment rules with criteria and values exhausting
Batch Assignment component memory while loading them at task start-up.
It hits the 2 GB heap memory limit is at machine/OS level.
Look up in Assignment Rules UI in Site Map > Administration -
Assignment > Assignment Rules List, very few are expired. And select
count(*) SQL right before the error from AsgnBatch log:
SELECT COUNT(*)
FROM SIEBEL.S_ASGN_RULE CR, SIEBEL.S_ASGN_RULE_ITEM VAL, SIEBEL.S_ASGN_GRP R,
SIEBEL.S_ASGN_RULE_GRP RG, SIEBEL.S_ASGN_RULE_GRP RG1,
SIEBEL.S_ASGN_ITEM_TYPE ACR
WHERE
CR.ASGN_GRP_ID = R.ROW_ID
AND VAL.ASGN_RULE_ID= CR.ROW_ID
AND RG.ROW_ID=R.ASGN_RULE_GRP_ID
AND RG.ROOT_RULE_GRP_ID=RG1.ROW_ID
AND RG1.KEY_BASED_FLG = 'N'
AND ACR.NAME = CR.ITEM_TYPE_NAME
AND ACR.REPOSITORY_ID = ?
AND ACR.INACTIVE_FLG='N'
AND CR.TEMPLATE_FLG='N'
AND (R.EFF_END_DT >= {fn now()} OR R.EFF_END_DT IS NULL)
SQLSlowQuery Bind Variables 4 0 2010-04-02 12:24:05 01:1-PT64-1
returns 2740281 rows which is a high number.
Solution
Immediate solution is to reduce the number of assignment rules by
deleting assignment rules. Customer worked with their Assignment Admin
person to delete assignment rules. After that Batch Assignment worked.
For
the long term, you may look at engaging Oracle Consulting/Expert
Services to review the rules and optimize them to a lesser number.
Additional information:
Siebel
Server is a 32 bit application. For each process, the memory limit is 4
GB. In Windows, the heap limit is 2 GB. Batch Assignment (AsgnBatch)
is a Siebel component. It's a process at runtime. In order to improve
the runtime performance ASAP, AsgnBatch loads all
rule/criteria/employee/position/org/skill/skill items into heap memory
at starting up. We never set any limit on this. 2 GB is a 32 bit
machine and OS limit. We have no way to overcome this.
By the
way 2 GB is not only for rules, all other stuff likes skill reside in
heap also. We can't use the number of rules to determine how much
memory is needed since 1 rule may has a lot of criteria while the other 1
only has a few.
AsgnBatch support loading all rules or some rules within one rule group.
Set the AsgnKey to a rule group Id while submitting server request to AsgnBatch.
Then AsgnBatch will just load the rules with the rule group Id.
Too many rules is not a good thing for Assignment Manager. You can try
to divide the existing rules into several different rule groups. But
this may fail again if the customer has a large number of rules within
one rule group. We don't have limit on number of assignment rules, the 2
GB memory limit is at machine/OS level.
Actually 1 Siebel Server is enough. For example, we have rule group 1
and 2. When you submit request to AsgnBatch, if you specify the AsgnKey
= group 1, only the rules under rule group 1 will be loaded.
Of course you can submit another request to AsgnBatch with AsgnKey =
group 2. This is different with the server key mapping for Assignment
Manager (AsgnSrvr) component.
Applies to:
Siebel Assignment Manager - Version: 8.1.1.2 SIA[21215] and later [Release: V8 and later ]
Information in this document applies to any platform.
Symptoms
On : 8.1.1.2 SIA[21215] version, Assignment Manager
When attempting to Start Assignment Manager
the following error occurs.GenericLog GenericError 1 000053d84dd91268:0
2011-05-22 12:45:41 (asgnrule.cpp (6963) err=3001 sys=2) SBL-GEN-03001:
Error allocating DynArrCreate pRuleApi->EmpArr
ERROR
-----------------------
SBL-GEN-03001
STEPS
-----------------------
The issue can be reproduced at will with the following steps:
1. Start Assignment Manager
2. Wait
3. component crashes
Due to this issue, users cannot have records assigned as expected.
Cause
Upon restart, Assignment Manager will build a cache of candidates for
assignment that is held in memory. A Significant change in the number
of employees is pushing this memory cache beyond its limits.
SBL-GEN-03001 is indicative of a memory problem per <>.
Additionally customer has indicated that they recently added over
900,000 employees to the database, many of which are terminated
Solution
The solution is to use the Active Employee Where Clause parameter on the
Assignment Manager component to limit the number of employees loaded
into cache on component restart.
1. In Server Configuration > Server >Components locate the Assignment Manager Component, Parameters
2. Locate the Employee Where Clause Paramenter
3. Enter the where clause, in SQL formatting, not Siebel formatting, to
select only the employees to be considered for assignment. In this
case, customer chose the where clause WHERE emp.EMPLOYEE_STATUS_CD =
'HR'
References
NOTE:1103948.1
תגובות
הוסף רשומת תגובה