Modalidades de bloqueo de tabla soportadas por el programa de utilidad de importación

El programa de utilidad de importación admite dos modalidades de bloqueo de tabla: la modalidad fuera de línea o ALLOW NO ACCESS, y la modalidad en línea o ALLOW WRITE ACCESS.

La modalidad ALLOW NO ACCESS impide que aplicaciones simultáneas accedan a los datos de la tabla. La modalidad ALLOW WRITE ACCESS permite a las aplicaciones simultáneas el acceso tanto de lectura como de escritura a la tabla de destino de la importación. Si no se especifica de forma explícita ninguna modalidad, la importación se ejecuta en la modalidad predeterminada, ALLOW NO ACCESS. Además, el programa de utilidad de importación está enlazado de forma predeterminada con la base de datos con un nivel de aislamiento RS (estabilidad de lectura).

Importación fuera de línea (ALLOW NO ACCESS)

En la modalidad ALLOW NO ACCESS, la importación adquiere un bloqueo exclusivo (X) sobre la tabla de destino antes de insertar filas. La retención de un bloqueo sobre una tabla tiene dos implicaciones:
  • En primer lugar, si hay otras aplicaciones que retienen un bloqueo de tabla o bloqueos de fila sobre la tabla de destino de importación, el programa de utilidad de importación espera a que esas aplicaciones confirmen o retrotraigan sus cambios.
  • En segundo lugar, mientras se está ejecutando la importación, cualquier otra aplicación que solicite bloqueos espera a que finalice la operación de importación.
Nota: Puede especificar un valor de tiempo de espera de bloqueo, que impide que las aplicaciones (incluida la utilidad de importación) esperen indefinidamente un bloqueo.
Al solicitar un bloqueo exclusivo al principio de la operación, la importación impide que se produzcan puntos muertos como resultado de que otras aplicaciones trabajen y retengan bloqueos de fila sobre la misma tabla de destino.

Importación en línea (ALLOW WRITE ACCESS)

En la modalidad ALLOW WRITE ACCESS, el programa de utilidad de importación adquiere un bloqueo no exclusivo (IX) sobre la tabla de destino. La retención de este bloqueo sobre la tabla tiene las implicaciones siguientes:
  • Si hay otras aplicaciones que retienen un bloqueo de tabla incompatible, el programa de utilidad de importación no inicia la inserción de datos hasta que todas estas aplicaciones confirman o retrotraen sus cambios.
  • Mientras se está ejecutando la importación, cualquier otra aplicación que solicite un bloqueo de tabla incompatible espera hasta a que la importación confirma o retrotrae la transacción actual. Tenga en cuenta que el bloqueo de tabla de la importación no persiste entre límites de transacción. Como resultado, la importación en línea tiene que solicitar y potencialmente esperar a un bloqueo de tabla después de cada confirmación.
  • Si hay otras aplicaciones que retienen un bloqueo de fila incompatible, el programa de utilidad de importación deja de insertar datos hasta que todas estas aplicaciones confirman o retrotraen sus cambios.
  • Mientras se está ejecutando la importación, cualquier otra aplicación que solicita un bloqueo de fila incompatible espera hasta que la operación de importación confirma o retrotrae la transacción actual.

Para conservar las propiedades en línea y reducir la posibilidad de un punto muerto, una importación de tipo ALLOW WRITE ACCESS confirma periódicamente la transacción actual y libera todos los bloqueos de fila antes de escalar a un bloqueo de tabla exclusivo. Si no ha establecido explícitamente una frecuencia de confirmación, la importación realiza confirmaciones como si se hubiera especificado COMMITCOUNT AUTOMATIC. No se realizan confirmaciones si COMMITCOUNT se establece en 0.

La modalidad ALLOW WRITE ACCESS no es compatible con lo siguiente:
  • Importaciones en modalidad REPLACE, CREATE o REPLACE_CREATE
  • Importaciones con inserciones en el almacenamiento intermedio
  • Importaciones en una vista de destino
  • Importaciones en una tabla jerárquica
  • Importaciones en una tabla con su granularidad de bloqueo establecida en el nivel de tabla (establecida mediante el parámetro LOCKSIZE de la sentencia ALTER TABLE)