Problemas de tiempo de espera excedido y bloqueo: utilidad de carga de base de datos de DB2®
Utilice las siguientes sugerencias para ayudarle a resolver los problemas de tiempo de espera excedido y bloqueo que puedan producirse cuando se utiliza una utilidad de carga de base de datos de DB2® con IBM® Campaign.
Síntomas
Se ejecutan simultáneamente varios diagramas de flujo y los diagramas graban en la misma tabla. Una ejecución de diagrama de flujo falla con los errores siguientes:
*
IBM® Campaign UI: "El comando del cargador salió con el estado de error 4" y
*
Por ejemplo, está utilizando varios diagramas de flujo para insertar registros en la tabla UA_ContactHistory utilizando el cuadro de proceso Lista de correo.
Causas
La utilidad de carga no soporta la carga de datos a nivel de jerarquía. Cuando ejecuta simultáneamente varios diagramas de flujo que cargan datos en la misma tabla, cada proceso de carga individual bloquea la tabla. Cada proceso de carga tiene que esperar a que finalice la carga anterior. Si un proceso tarda más tiempo en finalizar, el proceso de carga siguiente en la cola excede el tiempo de espera y genera los errores listados anteriormente.
Bloqueo de tablas durante operaciones de carga: En la mayoría de los casos, la utilidad de carga utiliza el bloqueo a nivel de tabla para restringir el acceso a las tablas. El nivel de bloqueo depende de la etapa de la operación de carga y de si se ha especificado para permitir el acceso de lectura.
Una operación de carga en modalidad ALLOW NO ACCESS utiliza un bloqueo exclusivo super (Z-lock) en la tabla durante el tiempo que dura la carga. Antes de que empiece una operación de carga en modalidad ALLOW READ ACCESS, la utilidad de carga espera a que todas las aplicaciones que comenzaron antes de la operación de carga liberen sus bloqueos en la tabla de destino. Al comienzo de la operación de carga, la utilidad de carga adquiere un bloqueo de actualización (U-lock) en la tabla. Conserva este bloqueo hasta que se confirman los datos. Cuando la utilidad de carga adquiere el bloqueo U-lock en la tabla, espera a que todas las aplicaciones que mantienen bloqueos en la tabla antes del inicio de la operación de carga los liberen, incluso si tienen bloqueos compatibles. Esto se consigue mediante la actualización temporal del U-block a Z-lock, que no entra en conflicto con las nuevas peticiones de bloqueo de tabla en la tabla de destino, siempre y cuando los bloqueos solicitados sean compatibles con el U-lock de la operación de carga. Cuando se confirman los datos, la utilidad de carga actualiza el bloqueo a Z-lock, por lo que puede haber cierto retraso en el tiempo de confirmación mientras la utilidad de carga espera a que finalicen las aplicaciones con bloqueos en conflicto.
*
Resolución del problema
Solución temporal: IBM® Campaign utiliza un script de shell (o un ejecutable, para Windows) especificado en la propiedad de configuración Loadercommand para invocar la utilidad de carga de base de datos. Puede añadir lógica de cola al script de shell o ejecutable para solucionar este problema. Esta lógica comprueba si un cargador está en ejecución y realizando la operación de carga en una tabla; si es así, no permite que otros cargadores inicien la carga hasta que el anterior se haya completado.