Zeitüberschreitungs- und Sperrprobleme: DB2 Datenbankladedienstprogramm

Die folgenden Vorschläge sind hilfreich bei der Fehlerbehebung von Zeitlimitüberschreitungen und Sperrungen, die bei der Verwendung eines DB2®-Datenbankladeprogramms mit Unica Campaign auftreten können.

Es werden mehrere Ablaufdiagramme gleichzeitig ausgeführt und die Ablaufdiagramme schreiben in dieselbe Tabelle. Eine Ablaufdiagrammausführung schlägt mit den folgenden Fehlern fehl:

  • Unica CampaignUI: "Der Ladeprogrammbefehl wurde mit einem Fehlerstatus beendet".
  • Protokolle des Ladeprogramms: "SQL0911N Die aktuelle Transaktion wurde wegen eines Deadlocks oder einer Zeitlimitüberschreitung rückgängig gemacht."

Sie verwenden beispielsweise mehrere Ablaufdiagramme, um Datensätze in die Tabelle UA_ContactHistoryüber das Prozessfeld "Mailliste" einzufügen.

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 der 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 Ladeoperationen: 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.

Anmerkung:
  • MinReqForLoaderCommand und MinReqForLoaderCommandForAppendfinden auf die Kontaktverlaufstabelle, die detaillierte Kontaktverlaufstabelle und die Antwortverlaufstabelle keine Anwendung.
  • Durch das Warten auf die Entriegelung der Tabellensperren anderer Anwendungen vor dem Laden kann es bei der Ladeoperation zu einer Zeitlimitüberschreitung kommen. Die Ladeoperation überschreitet das Zeitlimit jedoch nicht, wenn sie auf die für das Festschreiben der Daten benötigte Z-Sperre wartet.

Problemumgehung: Um das Ladedienstprogramm aufzurufen, verwendet Unica Campaign ein Shell-Script (oder, bei Windows™, eine ausführbare Datei), das in der Konfigurationseigenschaft Loadercommand angegeben wird. 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.