Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/11/2010, 05:38
pange
 
Fecha de Ingreso: noviembre-2010
Mensajes: 6
Antigüedad: 14 años
Puntos: 0
Lentitud extrema al grabar un CLOB. Urgente

Hola. Recurro a vosotros porque es un tema muy urgente y no encuentro salida por más que busco soluciones. Os cuento:

Desde una aplicación Weblogic con Oracle, tengo que generar un fichero .txt (se lanza anualmente) con aprox 10.000 filas y 2000 caracteres por fila.

He creado un PLSQL que tiene un cursor encargado de obtener los datos ya formateados. Está optimizado con índices y tarda un máximo de 20''.

Mi idea es meter esos datos en un campo CLOB y devolverlo al ejb que lo invoca.

El problema se encuentra al grabar en el CLOB, que tarda del orden de 15 minutos.
¿Hay alguna otra forma que se os ocurra?


-- Se inserta el nuevo registro inicializado
INSERT INTO HISTORICO (COD_ENVIO,FICHERO) VALUES (nCodigo,EMPTY_CLOB();

SELECT FICHERO INTO clob_pointer FROM HISTORICO WHERE COD_ENVIO =nCodigo FOR UPDATE;
DBMS_LOB.OPEN (clob_pointer,DBMS_LOB.LOB_READWRITE);
bolPunteroClobAbierto := TRUE;

LOOP
FETCH MICURSOR INTO r_Cursor;
EXIT WHEN (MICURSOR %NOTFOUND);
DBMS_LOB.WRITEAPPEND(clob_pointer, LENGTH(r_Cursor.DATOS), r_Cursor.DATOS);
END LOOP;


Muchisimas gracias de antemano

Última edición por pange; 12/11/2010 a las 05:43