En la Facultad de Economía y Administración funcionaba el Departamento de Informática, el que ahora pasó a ser una Facultad independiente. Como Facultad independiente tiene un departamento de alumnos separado del de Economía y pasan a generar números de legajo distintos a los de Economía.
Nuestra Solución a la separación fue hacer una copia de la base de Datos de Economía en el servidor de Informática y a partir de cierta fecha se comienza a trabajar de forma separada en 2 departamentos de alumnos distintos accediendo cada uno a un servidor distinto.
En la base de datos de Economía está bien que se mantengan los datos históricos (Alumnos e historia académica de Informática) pero en la base de datos de Informática debería sólo aparecer la información de los alumnos de Informática, cosa que no pasa porque también están los alumnos de Economía.
Intentamos hacer un script para borrar a TODOS los alumnos de Economía de la base de Informática (salvo aquellos que tengan al menos una carrera en Informática) pero nos da un error por transacción larga y hasta llegó a dejar una base de pruebas en Fast Recovery. Sólo nos deja borrar alumnos y actividad Académica de a 2 o 3 como máximo, pero va a ser medio tedioso borrar a los 2000 alumnos(aproximadamente).
Alguno paso por un caso similar? Alguno personalizó algo para hacer este proceso masivamente?
Cualquier ayuda será bienvenida
Ah, estamos en la version 2.5 con Informix 7 y las operaciones del SIU (Invalidación de historia Academica y Baja de Alumnos) no nos sirven porque un alumno que cursó una carrera en Economía y ahora quiere cursar una en Informática debería tener un legajo nuevo(FAI-XXX) y no mantener el viejo (FAEA-XXX)
te adjunto un script el mismo esta hecho para ejecutarlo por parte con aqua datastudio. esta comentado, lee los mismos y trata de ejecutarlo.
en el primer select remplaza por el código de tu carrera.
MUY IMPORTANTE hacelo en una base de pruebas primero hasta que sepas que todo quedo bien.
Por lo pronto hicimos un procedure como dijo Emilio y lo estamos corriendo en un servidor de pruebas, después de 2 horas corriendo salto un error de referencia en una tabla de equivalencias así que lo modificamos y seguimos corriendo. En esas 2 horas borro casi 5mil alumnos con actividad académica y quedan mas de 8.000.
El script de Carlos está también para probarlo en otra base de pruebas si surge otro imprevisto.
Cuando tenga mas noticias paso a contar como quedó y si puedo subo el procedure
Bueno, para Finalizar el tema les contamos lo que hicimos que nos esta dando resultados.
Hicimos un procedure como nos dijo Emilio para borrar carreras completas de la Base en la que no deberian estar. Luego si corresponde se borra al alumno pero no a la persona.
El procedure quedó kilometrico y es medio lento, por lo que lo ejecutamos desde el cron del servidor a las 2 de la mañana despues de realizado el backup diario.
Nuestras primeras pruebas nos dieron:
(En la base en Producción) Para borrar una carrera de 200 alumnos aproximadamente tardo 20 minutos (realizando el debug por si llegaba a saltar un error)
(En la base de Pruebas) Para borrar una carrera con 13.000 alumnos aproximadamente tardo 6 horas (con debug).
Bueno, adjunto el procedure y gracias por la ayuda
Es lógico, con Debug siempre te va a tardar una enormidad, ya que entre otras cosas escribe el archivo de texto del Debug. Puede ser enorme la diferencias en tiempos.
No lo deberían correr con DEbug màs que para encontrar alguna falla determinada del SP. Para eso se hacen las cosas en bases de prueba, tantas veces como sea necesario. Al menos esa es mi visión personal.