Problème de dépassement de délai et de verrouillage : Utilitaire de chargement de base de données DB2®
Utilisez les suggestions suivantes pour traiter les incidents de dépassement de délai et de verrouillage qui peuvent se produire lorsque vous utilisez un utilitaire de chargement de base de données DB2® avec IBM® Campaign.
Symptômes
Plusieurs diagrammes sont exécutés simultanément et les diagrammes écrivent dans la même table. Une exécution diagramme échoue avec les erreurs suivantes :
*
Interface utilisateur IBM® Campaign : "Commande chargeur quittée avec statut "Erreur"4 et
*
Par exemple, vous utilisez plusieurs diagrammes pour insérer des enregistrements dans la table UA_ContactHistory à l'aide du processus de liste d'adresses.
Causes
L'utilitaire de chargement ne prend pas en charge le chargement de données de niveau hiérarchie. Lorsque vous exécutez simultanément plusieurs diagrammes qui chargent des données dans la même table, chaque processus de chargement verrouille la table et doit attendre la fin du chargement précédent. Si un processus met du temps à se terminer, le processus de chargement suivant dans la file d'attente dépasse le délai d'attente et génère les erreurs mentionnées ci-dessus.
Verrouillage de table lors d'opérations de chargement : Dans la plupart des cas, l'utilitaire de chargement utilise un verrouillage de niveau table pour restreindre l'accès aux tables. Le niveau de verrouillage dépend de la phase de l'opération de chargement et de si cette opération a été définie pour autoriser l'accès en lecture.
Une opération de chargement en mode ALLOW NO ACCESS (N'autoriser aucun accès) utiliser un verrou exclusif sur la table pendant la durée du chargement. Avant le début d'une opération de chargement en mode ACCESS READ ALLOW (Autoriser un accès en lecture), l'utilitaire de chargement attend que toutes les applications qui ont démarré avant l'opération de chargement libèrent leurs verrous sur la table cible. Au début de l'opération de chargement, l'utilitaire de chargement acquiert un verrou de mise à jour (verrou U) sur la table. Il maintient ce verrou jusqu'à ce que les données soient validées. Lorsque l'utilitaire de chargement acquiert un verrou U sur la table, il attend que toutes les applications qui détiennent des verrous sur la table avant le début de l'opération de chargement lèvent ces verrous, même s'il s'agit de verrous compatibles. Cette opération est accomplie en transformant temporairement le verrou U en verrou Z qui n'entre pas en conflit avec les nouvelles demandes de verrou sur la table cible, dans la mesure où les verrous demandés sont compatibles avec le verrou U de l'opération de chargement. Lorsque des données sont validées, l'utilitaire de chargement transforme le verrou U en verrou Z, pour rendre possible un délai dans la durée de validation pendant que l'utilitaire de chargement attend que les applications avec des verrous en conflit se terminent.
*
Résolution de l'incident
Solution de contournement : IBM® Campaign utilise un script de shell (ou un exécutable, pour Windows) spécifié dans la propriété de configuration Loadercommand pour appeler l'utilitaire de chargement de base de données. Vous pouvez ajouter une logique de mise en file d'attente dans votre script de shell ou votre exécutable pour contourner ce problème. Cette logique vérifie si un chargeur est en cours d'exécution et effectue une opération de chargement sur une table. Si c'est le cas, elle n'autorise pas d'autres chargeurs à démarrer le chargement tant que le chargeur précédent n'a pas terminé.