Leistung nach der Implementierung von Datenbankserviceartefakten verbessern

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:

Schritte für Laufzeitdatenbank

  1. Stellen Sie mit einem Abfragetool Ihrer Wahl eine Verbindung zur Laufzeitdatenbank her.
    1. Bei lokaler Ausführung mit dem Implementierungsbenutzer:

      db2 connect to <laufzeitdatenbank>

    2. Bei ferner Ausführung

      db2 connect to <laufzeitdatenbank> user <benutzername>

  2. Erstellen Sie eine Datei namens createCCDindexesDrops.sql, die den folgenden Text enthält:

    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%'

    ;

  3. Führen Sie die soeben erstellte SQL-Anweisung aus, und leiten Sie die Ausgabe in eine Datei um.

    db2 -txf createCCDindexesDrops.sql > dropRuntimeCCDIndexes.sql

  4. Prüfen Sie die Datei. Sie sollte in etwa die folgenden Angaben enthalten:

    DROP INDEX APP .CCDIX_CCD_45;

    DROP INDEX APP .CCDIX_CCD_6;

    DROP INDEX APP .CCDIX_CCD_7;

  5. Führen Sie die generierte Datei wie folgt aus:

    db2 -tvf dropRuntimeCCDIndexes

  6. Erstellen Sie eine Datei namens createrebindDSRuntimeStoredProcedures.sql, und fügen Sie den folgenden Inhalt hinzu:

    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';

  7. Führen Sie die Datei aus.

    db2 -txf createrebindDSRuntimeStoredProcedures.sql > rebindDSRuntimeStoredProcedures.sql

  8. Prüfen Sie die generierte Datei. Folgendes sollte angezeigt werden:

    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');

  9. Führen Sie die generierte Datei aus, um die gespeicherten Prozeduren des Datenbankservices erneut zu binden, nachdem die Indizes entfernt wurden.

    db2 -tvf rebindDSRuntimeStoredProcedures.sql

Schritte für Protokolldatenbank

  1. Stellen Sie mit einem Abfragetool Ihrer Wahl eine Verbindung zur Protokolldatenbank her.
    1. Bei lokaler Ausführung mit dem Implementierungsbenutzer:

      db2 connect to <protokolldatenbank>

    2. Bei ferner Ausführung

      db2 connect to <protokolldatenbank> user <benutzername>

  2. Erstellen Sie eine Datei namens createCCDindexesDrops.sql, die den folgenden Text enthält. Sie können die für die Laufzeitdatenbank erstellte Datei wiederverwenden:

    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%'

    ;

  3. Führen Sie die soeben erstellte SQL-Anweisung aus, und leiten Sie die Ausgabe in eine Datei um.

    db2 -txf createCCDindexesDrops.sql > dropRuntimeCCDIndexes.sql

  4. Prüfen Sie die Datei. Sie sollte in etwa die folgenden Angaben enthalten:

    DROP INDEX APP .CCDIX_CCD_45;

    DROP INDEX APP .CCDIX_CCD_6;

    DROP INDEX APP .CCDIX_CCD_7;

  5. Führen Sie die generierte Datei wie folgt aus:

    db2 -tvf dropRuntimeCCDIndexes

  6. Erstellen Sie eine Datei namens createrebindDSRuntimeStoredProcedures.sql, und fügen Sie den folgenden Inhalt hinzu:

    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';

  7. Führen Sie die Datei aus.

    db2 -txf createrebindDSRuntimeStoredProcedures.sql > rebindDSHistoryStoredProcedures.sql

  8. Prüfen Sie die generierte Datei. Folgendes sollte angezeigt werden:

    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');

  9. Führen Sie die generierte Datei aus, um die gespeicherten Prozeduren des Datenbankservices erneut zu binden, nachdem die Indizes entfernt wurden.

    db2 -tvf rebindDSHistoryStoredProcedures.sql


Copyright IBM Corporation 2005, 2006. Alle Rechte vorbehalten.