Zeitlimitüberschreitungs- und Sperrungsprobleme: DB2®-Datenbankladeprogramm
Die folgenden Vorschläge sind hilfreich bei der Fehlerbehebung von Zeitlimitüberschreitungen und Sperrungen, die bei der Verwendung eines DB2®-Datenbankladeprogramms mit IBM® Campaign auftreten können.
Symptome
Es werden mehrere Ablaufdiagramme gleichzeitig ausgeführt und die Ablaufdiagramme schreiben in dieselbe Tabelle. Eine Ablaufdiagrammausführung schlägt mit den folgenden Fehlern fehl:
*
IBM® Campaign-Benutzerschnittstelle: "Der Ladeprogrammbefehl wurde mit dem Fehlerstatus 4 beendet" und
*
Sie verwenden beispielsweise mehrere Ablaufdiagramme, um Datensätze in die Tabelle UA_ContactHistory über das Prozessfeld "Mailliste" einzufügen.
Ursachen
Das Laden von Daten auf Hierarchieebene wird vom Ladedienstprogramm nicht unterstützt. Wenn Sie mehrere Ablaufdiagramme, die Daten in dieselbe Tabelle laden, gleichzeitig ausführen, wird die Tabelle durch jeden einzelnen Ladeprozess gesperrt. Jeder Ladeprozess muss warten, bis dar vorherige Prozess beendet ist. Wenn das Ausführen eines Prozesses länger dauert, überschreitet der nächste Ladeprozess in der Warteschlange das Zeitlimit, wodurch die oben genannten Fehler verursacht werden.
Tabellensperre während der Ladeoperation: In den meisten Fällen verwendet das Ladedienstprogramm Tabellenebenensperrung, um den Zugriff auf die Tabellen einzuschränken. Die Sperrungsebene hängt von der Phase der Ladeoperation ab und davon, ob Lesezugriff ermöglicht wurde.
Bei einer Ladeoperation im Modus "Keinen Zugriff ermöglichen" wird während des Ladezeitraums eine exklusive Sperre (Z-Sperre) für die Tabelle verwendet. Bevor eine Ladeoperation im Modus "Lesezugriff ermöglichen" gestartet wird, wartet das Ladedienstprogramm darauf, dass alle Anwendungen, die vor der Ladeoperation begonnen haben, die Sperren der Zieltabelle entriegeln. Am Anfang der Ladeoperation fordert das Ladedienstprogramm eine Aktualisierungssperre (U-Sperre) der Tabelle an. Diese Sperre wird gehalten, bis die Daten festgeschrieben sind. Wenn das Ladedienstprogramm die U-Sperre der Tabelle anfordert, wartet es darauf, dass alle Anwendungen, die die Tabelle vor dem Start der Ladeoperation gesperrt haben, die Sperren entriegeln, selbst wenn die Anwendungen über kompatible Sperren verfügen. Dies wird durch ein temporäres Upgrade der U-Sperre zu einer Z-Sperre ermöglicht, was nicht mit den neuen Anforderungen einer Tabellensperre auf der Zieltabelle kollidiert, solang die angeforderten Sperren mit der U-Sperre der Ladeoperation kompatibel sind. Wenn Daten festgeschrieben werden, wird die Sperre durch das Ladedienstprogramm zu einer Z-Sperre aktualisiert, sodass es zu einer Zeitverzögerung beim Festschreiben kommen kann, während das Ladedienstprogramm darauf wartet, dass Anwendungen mit in Konflikt stehenden Sperren beendet werden.
*
Fehlerbehebung
Problemumgehung: In IBM® Campaign wird ein Shell-Script (oder eine ausführbare Datei bei Windows) verwendet, das in der Konfigurationseigenschaft Loadercommand zum Aufrufen des Datenbankladeprogramms angegeben ist. Sie können Ihrem Shell-Script oder Ihrer ausführbaren Datei eine Warteschlangensteuerungslogik hinzufügen, um dieses Problem zu umgehen. Mit dieser Logik wird überprüft, ob ein Ladeprogramm mit einer Ladeoperation für eine Tabelle ausgeführt wird. Wenn dies der Fall ist, verbietet die Logik den Start anderer Ladeprogramme bis das vorherige Programm beendet ist.