Nach der Implementierung von Datenbankserviceartefakten werden mehrere Indizes erstellt, die dazu führen, dass DB2 ungeeignete Zugriffspläne auswählt. Sie müssen unmittelbar nach der Implementierung und vor dem Start der Server für die Datenbankservicekomponenten einige Schritte ausführen, damit die Erstellung von geeigneten Zugriffsplänen sichergestellt ist.
Eines der Symptome, die auf einen ungeeigneten Zugriffsplan hindeuten, besteht darin, dass Daten nicht mehr in der Laufzeit- und der Protokolldatenbank angezeigt werden. Ursache hierfür sind lang andauernde Abfragen, die die Komponente für den Ziellebenszyklus auslasten. Normalerweise wird dieses Symptom von einem Anstieg der CPU-Zuordnung begleitet, die durch die DB2-Prozesse verursacht wird.
So können Sie dieses Problem lösen:
db2 connect to <laufzeitdatenbank>
db2 connect to <laufzeitdatenbank> user <benutzername>
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 <protokolldatenbank>
db2 connect to <protokolldatenbank> user <benutzername>
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