Cita:
Iniciado por Alextroy Hola.
Necesito hacer una backup periodico de una tabla de auditoria enorme.
Se supone que tengo que almacenar toda la información que ha registrado esa tabla a partir de un mes hacia atrás en una tabla similar en otro esquema, y eliminar la información que he guardado.
Propuse hacer un script que crease una tabla igual en otro esquema y la llenase de datos con un comando del tipo INSERT INTO TABLE (select * from..... where...) para luego eliminar los registros de la tabla de producción. Pero tras probar este metodo me comunican que es demasiado lento y no es viable.
Queria saber si algúen tiene experiencia con algún caso parecido y como ha podido solucionarlo. Mi conocimiento es bastante limitado, y mas o menos a trompicones voy sacando las cosas, pero lo referente a mejora de rendimiento, optimizacion de recursos y demás se me queda algo grande.
Un saludo
Pues mira, la solucion que tu has propuesto me parece la mas coherente y la mas lógica : Acotar los datos que quieres traspasar y usar un INSERT.... SELECT. ¿ que es lento ?, no se a que llaman lentitud los que te han dicho eso. Y tampoco sé el volumen de datos que quieres traspasar.
Estos dias estoy haciendo algo parecido. El primer paso era pasar todos los datos a procesar a una temporal ( Datos de un año entero, unos 356.000.000 de registros ).
Lo que hize fué crear una tabla auxiliar identica a la original en un tablespace aparte ( solo para mi ), poner tablespace y tabla en NOLOGGING y tirar el INSERT SELECT :
INSERT /*+ APPEND*/ INTO TABLA_AUXILIAR
SELECT * FROM TABLA_ORIGEN
WHERE FECHA BETWEEN TO_DATE('01012009' ,'DDMMYYYY') AND TO_DATE('31122009' ,'DDMMYYYY')
/
El resultado fué que me insertó unos 356.000.000 de registros en una hora mas o menos. ¿ Esto se puede calificar de lento ?, yo creo que no.
No se si te he ayudado en algo........................