18/07/2012, 16:48
|
| 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 |