После развертывания артефактов служб базы данных создаются несколько индексов, из-за которых DB2 выбирает медленный план доступа. Необходимо выполнить некоторые действия сразу после развертывания и перед запуском серверов компонентов служб данных для обеспечения создания быстрого плана доступа.
Одним из признаков того, что выбран медленный план доступа является остановка данных в базах данных Хронологии и Выполнения, из-за слишком длинных запросов, выполняющих обязанности компонента жизненного цикла приемника. Обычно это также связано с увеличением выделения процессорной мощности для процессов DB2.
Для устранения данной неполадки выполните следующие действия:
db2 connect to <База_данных_Среда_выполнения>
db2 connect to <База_данных_Среда_выполнения> user <Имя_пользователя>
SELECT 'DROP INDEX ' || CREATOR || '.' || NAME || ';'
FROM
SYSIBM.SYSINDEXES, WBIRMADM.RMMETADATA RM
WHERE
REPLACE(LTRIM(TBCREATOR) || '.' || LTRIM(TBNAME),' ','') = RM.TGT_RM_APP_STG_TAB_NAME
AND CREATOR='APP'
AND NAME LIKE 'CCD%'
;
db2 -txf createCCDindexesDrops.sql > dropRuntimeCCDIndexes.sql
DROP INDEX APP .CCDIX_CCD_45;
DROP INDEX APP .CCDIX_CCD_6;
DROP INDEX APP .CCDIX_CCD_7;
db2 -tvf dropRuntimeCCDIndexes
SELECT ' CALL SYSPROC.REBIND_ROUTINE_PACKAGE(''P'', ''' || TGT_RM_SPETL_NAME || ''', ''ANY'');'
FROM
WBIRMADM.RMMETADATA
WHERE
Service_Name='State to Runtime';
SELECT ' CALL SYSPROC.REBIND_ROUTINE_PACKAGE(''P'', ''' || TGT_RM_APP_PRUNE_SP_NAME || ''', ''ANY'');'
FROM
WBIRMADM.RMMETADATA
WHERE
Service_Name='State to Runtime';
db2 -txf createrebindDSRuntimeStoredProcedures.sql > rebindDSRuntimeStoredProcedures.sql
CALL SYSPROC.REBIND_ROUTINE_PACKAGE('P', 'WBIRMADM.WBIRMSP_10', 'ANY');
CALL SYSPROC.REBIND_ROUTINE_PACKAGE('P', 'WBIRMADM.WBIRMSP_14', 'ANY');
CALL SYSPROC.REBIND_ROUTINE_PACKAGE('P', 'WBIRMADM.WBIRMSP_47', 'ANY');
db2 -tvf rebindDSRuntimeStoredProcedures.sql
db2 connect to <База_данных_Хронология>
db2 connect to <База_данных_Хронология> user <Имя_пользователя>
SELECT 'DROP INDEX ' || CREATOR || '.' || NAME || ';'
FROM
SYSIBM.SYSINDEXES, WBIRMADM.RMMETADATA RM
WHERE
REPLACE(LTRIM(TBCREATOR) || '.' || LTRIM(TBNAME),' ','') = RM.TGT_RM_APP_STG_TAB_NAME
AND CREATOR='APP'
AND NAME LIKE 'CCD%'
;
db2 -txf createCCDindexesDrops.sql > dropRuntimeCCDIndexes.sql
DROP INDEX APP .CCDIX_CCD_45;
DROP INDEX APP .CCDIX_CCD_6;
DROP INDEX APP .CCDIX_CCD_7;
db2 -tvf dropRuntimeCCDIndexes
SELECT ' CALL SYSPROC.REBIND_ROUTINE_PACKAGE(''P'', ''' || TGT_RM_SPETL_NAME || ''', ''ANY'');'
FROM
WBIRMADM.RMMETADATA
WHERE
Service_Name='Runtime to Historical';
SELECT ' CALL SYSPROC.REBIND_ROUTINE_PACKAGE(''P'', ''' || TGT_RM_APP_PRUNE_SP_NAME || ''', ''ANY'');'
FROM
WBIRMADM.RMMETADATA
WHERE
Service_Name='Runtime to Historical';
db2 -txf createrebindDSRuntimeStoredProcedures.sql > rebindDSHistoryStoredProcedures.sql
CALL SYSPROC.REBIND_ROUTINE_PACKAGE('P', 'WBIRMADM.WBIRMSP_10', 'ANY');
CALL SYSPROC.REBIND_ROUTINE_PACKAGE('P', 'WBIRMADM.WBIRMSP_14', 'ANY');
CALL SYSPROC.REBIND_ROUTINE_PACKAGE('P', 'WBIRMADM.WBIRMSP_47', 'ANY');
db2 -tvf rebindDSHistoryStoredProcedures.sql