General Recommendations for the IBM DB2 for z/OS Loading Process
This topic is part of Database Guidelines for Optimizing Siebel EIM.
The following general recommendations apply when performing the IBM DB2 for z/OS loading process for Siebel EIM:
Use the
ONLY BASE TABLES
andIGNORE BASE TABLES
parameters orONLY BASE COLUMNS
andIGNORE BASE COLUMNS
parameters in the IFB files to reduce the amount of processing performed by Siebel EIM. By using theIGNORE BASE COLUMNS
option, you allow foreign keys to be excluded, which reduces both processing requirements and error log entries for keys which cannot be resolved. Remember that the key wordsONLY
andIGNORE
are mutually exclusive. For example, the following settings exclude the optionsIGNORE BASE TABLES
andONLY BASE COLUMNS
:ONLY BASE TABLES = S_CONTACT IGNORE BASE COLUMNS = S_CONTACT.PR_MKT_SEG_ID
Import parents and children separately. Wherever possible, load data such as accounts, addresses, and teams at the same time, using the same EIM table.
Use batch sizes that allow all of the EIM table data in the batch to be stored in the database cache (approximately 5,000 records for IBM DB2 for z/OS). Siebel EIM can be configured through the use of an extended parameter to use a range of batches. Remember to put the variable name into the IFB file.
Multiple Siebel EIM processes can be executed against an EIM table, provided they all use different batches or batch ranges. However, the main limit to Siebel EIM performance is not the application server but the database. Contention for locks on common objects can occur if multiple Siebel EIM streams are executed simultaneously for the same base table. Multiple Siebel EIM job streams can run concurrently for different base tables, for example,
S_ORG_EXT
andS_ASSET
.Run Siebel EIM during periods of minimum user activity, outside of business hours, if possible. This reduces the load for connected users and makes sure that the maximum processing capacity is available for the Siebel EIM processes.
Set the system preference that disables transaction logging during the initial database load. This setting (in the Administration - Siebel Remote screen, and Remote System Preferences view) is a check box labeled Enable Transaction Logging. Unchecking this preference reduces transaction activity to the Siebel docking tables, which are used for synchronizing mobile clients.
Disable the database triggers by removing them through the Server Administration screens. Doing this can also help to improve the throughput rate. Remember to reapply the triggers after the Siebel EIM load has completed, because the lack of triggers will mean that components, such as Workflow Policies and Assignment Manager, will not function for the new or updated data.
Make sure that the required columns
ROW_ID
,IF_ROW_STAT
, andIF_ROW_BATCH_NUM
are correctly populated in the EIM table to be processed. The most efficient time to do this is when populating the EIM table from the data source or staging area, after cleansing the data.Unless there are specific processing requirements, make sure that the EIM table is empty before loading data into it for Siebel EIM processing. Always make sure that suitable batch numbers are being used to avoid conflicts within the EIM table. If you are using an automated routine, then truncating the EIM table between loads from the data source helps to preserve performance.
When running Siebel CRM on an IBM DB2 for z/OS database, Siebel EIM can sometimes stop responding when updating the
S_LST_OF_VAL
base table. This is due to a data issue. TheBU_ID
column in theS_LST_OF_VAL
base table might have only one or very few distinct values. That makes the DB2 optimizer perform a table scan through all rows in theS_LST_OF_VAL
table when most or all rows have the sameBU_ID
column value.To avoid this problem and speed up the query, modify the statistics data by running the following SQL statements:
update sysibm.sysindexes set firstkeycard=1000 where name='S_LST_OF_VAL_M2'; update sysibm.syscolumns set colcard = 1000 where tbname='S_LST_OF_VAL' and name='BU_ID';
Note: Depending on the data with which you are working, you might need to run other SQL statements beforehand.