Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/07/2012, 16:48
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: ORA-01555: snapshot too old al usar BULK COLLECT en una tabla fija.

Hola gnzsoloyo

Realmente el bulk collect no genera segmentos de rollback. Pero toda operación DML si lo hace. (No solo delete y update). Este error puede estar presentandose debido a la cantidad masiva de inserts que realizas y que posiblemente no realizas commit hasta que termine la totalidad del proceso.

Por lo que veo, tu proceso es bastante grande y por lo que dices, a nivel de infraestructura no tienen problemas de memoria ni de hardware como tal.

Los segmentos de rollback tienen un comportamiento circular y su liberación está basada en un algoritmo llamado LRU (Less Recent Used).

Existe un parámetro en oracle llamado undo_retention en el que se configura en segundos (900 por defecto - 15 minutos) la persistencia de segmentos de rollback en los bloques de memoria.

Es posible que por la magnitud de tu proceso, este tiempo se sobrepase y este segmento se pierda.

Yo ensayaría 2 opciones:
1. Controlado por un ciclo, hacer un commit cada N inserciones.
2. Aumentar este parámetro a un valor de tiempo mas grande.

Saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming