Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/05/2012, 20:21
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: lectura, actualización e inserción usado BULK COLLECT en PL/SQL

Hola gnzsoloyo, me place saludarte

Mi humilde opinión.

Cita:
1) ¿El array resultante de un BULK COLLECT se puede recorrer una sola vez, o se puede hacer mas de una vez sin necesidad de volver a leer?
Se puede usar los valores de la tabla en memoria veces que quieras mientras haya una sesión activa o no ejecutes la sentencia tabla.DELETE.
La ventaja de bulk collect con respecto a los cursores, radica en que son tablas en memoria que pueden ser consultadas y llenadas sin posiciones fijas.

Cita:
2) ¿Es necesario ejecutar un UPDATE con los datos del registro leído en un momento dado, o el actualiza los campos del registro del array se encarga de eso?
Esta no la entendí

Cita:
3) ¿Es conveniente leer toda la tabla en una sola operación, o es más performantico hacerlo en bloques de N registros, usando LIMIT?
Si la tabla es muy grande es recomendable partir la operación en varias aperturas. la razón de esto, es que por bulk collect envias a memoria una cantidad enorme de registros. Este proceso no genera bloqueos en los registros resultantes, lo que permite que otras sesiones modifiquen los datos que fueron cargados a partir de la consulta. Cuando esto pasa, al momento de llegar a las posiciones de la tabla en memoria, la información no va a ser igual a la contenida en la BD, por esta razón va a buscar a los tablespace UNDO si hay transacciones que involucren estos registros. Estos tablespace tienen un parametro de configuración llamado undo_retention (15 minutos por defecto) que solo retiene cambios por este lapso de tiempo. Al pasar este tiempo, la información contenida en la tabla en memoria y la base de datos ya no va a ser la misma y no existirá rastro de un dato consistente. Cuando pasa esto se genera el error ORA-1555. (Snapshot too old)

Espero haberte ayudado.

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