DB2 da soporte a tres tipos de objetos grandes (LOB): objetos grandes de caracteres (CLOB), objetos grandes de caracteres de doble byte (DBCLOB) y objetos grandes binarios (BLOB). Para obtener información general sobre el soporte de LOB de DB2, consulte los siguientes manuales de DB2:
En un sistema de bases de datos federado, puede acceder y manipular LOB en fuentes de datos remotas. Puesto que los LOB pueden ser muy grandes, la transferencia de LOB desde una fuente de datos remota puede llevar mucho tiempo. La base de datos federada de DB2 intenta minimizar la transferencia de datos LOB desde las fuentes de datos y también intenta distribuir los datos LOB solicitados directamente desde la fuente de datos a la aplicación que los solicita sin materializar el LOB en DB2.
Esta sección trata estos temas:
Los sistemas federados de DB2 utilizan dos mecanismos para recuperar LOB: modalidad continua de LOB y materialización de LOB.
En la modalidad continua de LOB, los datos LOB se recuperan por fases. DB2 utiliza la modalidad continua de LOB para datos de grupos de resultados de consultas que están completamente inactivas. Por ejemplo, supongamos que tenemos la siguiente consulta:
SELECT empname, picture FROM orc_emp_table WHERE empno = '01192345'
donde picture representa una columna de LOB y orc_emp_table representa un seudónimo que hace referencia a una tabla de Oracle que contiene datos de empleados. El procesador de consultas de DB2 marca la columna picture para modalidad continua si decide ejecutar la consulta completa en la fuente de datos de Oracle. En el momento de la ejecución, si DB2 nota que hay un LOB marcado para modalidad continua, recupera el LOB por fases de la fuente de datos. Luego DB2 transfiere los datos al espacio de memoria de la aplicación.
En materialización de LOB, DB2 recupera los datos LOB remotos y los almacena localmente en el servidor federado. DB2 utiliza materialización de LOB cuando:
Las aplicaciones pueden suministrar localizadores de LOB para los LOB almacenados en fuentes de datos remotas. Un localizador de LOB es un valor de 4 bytes almacenado en una variable de sistema principal que puede utilizar un programa para hacer referencia a un valor LOB (o expresión LOB) mantenido en el sistema de bases de datos. Mediante la utilización de un localizador de LOB, un programa puede manipular el valor LOB como si el LOB estuviera almacenado en una variable de sistema principal normal. La diferencia es que al utilizar el localizador de LOB no es necesario transportar el valor LOB desde el servidor a la aplicación (y posiblemente devolverlo). Consulte el manual DB2 Application Development Guide para obtener más información sobre localizadores de LOB.
DB2 puede recuperar los LOB desde fuentes de datos remotas, almacenarlos en DB2 y luego emitir un localizador de LOB sobre el LOB almacenado. Los localizadores de LOB se liberan cuando:
Cuando se utilizan y recuperan LOB, tenga en cuenta que:
Hay algunos casos en que puede correlacionar un tipo de datos LOB de DB2 con un tipo de datos no LOB en una fuente de datos. Cuando tiene que crear una correlación entre una columna con un tipo LOB de DB2 y su correspondiente columna en la fuente de datos, se recomienda utilizar un tipo de datos LOB como columna correspondiente si es posible.
Para crear una correlación, utilice la sentencia de DDL create type mapping. Por ejemplo:
CREATE TYPE MAPPING my_oracle_lob FROM sysibm.clob TO SERVER TYPE oracle TYPElong
donde:
Si una aplicación que recupera LOB remotos devuelve un mensaje de error que indica que no hay suficientes recursos del sistema para procesar la sentencia, aumente el valor del parámetro de tamaño de pila de la aplicación, APPLHEAPSZ, en el archivo de configuración de base de datos. Por ejemplo:
DB2 UPDATE DB CFG FOR EMPLOYEE USING APPLHEAPSZ 512
donde EMPLOYEE es el nombre de la base de datos que está ajustando y 512 es el valor del parámetro del tamaño de la pila de aplicación.