El query de la perdicion

Esta es una anecdota de un dia de trabajo.
Estaba realizando mis tareas cotidianas en el trabajo y traia una tarea desde hacia mas de una semana;  Esta consistia en la creacion de ciertos planes que se necesitaban en una tabla en el area de facturacion (no cabe mas decir que trabajo como outsourcing de analisis de sistemas en una transnacional), la cual genera gastos recurrentes para los clientes de esta empresa.

Estaba realizando un PL que automatizaba la generacion de los nuevos cargos en por lo menos 4 tablas que estaban relacionadas a la logica del negocio y en donde se debian de realizar.  Todo esto se trabaja en el ambiente de produccion y me habian dado anteriormente un PL que hacia este proceso automaticamente, asi que solo copie el mismo y comence a cambiarle los campos que necesitaba realizar para que la tarea se corriera automaticamente segun las incidencias que se me habia pedido que solucionara con este proceso automatizado.

Ni este libro me hubiera salvado...

Mas despues del salto…

El PL era por demas largo y tedioso y con una cantidad absurda de campos de las tablas relacionadas era bastante cansado hacer la revision entre la gran cantidad de variables que utilizaba el PL y los selects que llenaban estas variables, pero poco a poco fui armando el PL y era hora de la primer corrida del mismo.

Como era de preveer, le mande un correo a mi jefe inmediato superior de la transnacional, mandandole copia del PL y pidiendole que lo revisara para su debida primer corrida.  Este fue el primer error que cometi…

Mas tarde, recibi un correo de parte de mi jefe diciendome que lo corriera con envio de correo que el cambio se habia realizado a por lo menos 8 personas del area de facturacion y copia por supuesto a el y a mi.  Al ver esto hice mi corrida de prueba donde lo que hacia era un insert a una tabla temporal con los valores de los registros que presentaban esta incidencia y con el escenario orquestado para realizar la insercion masiva de la data y resultaba que esta corrida me tiraba alrededor de doscientos cincuenta incidencias y pense yo:  doscientos cincuenta correos diciendo que se hicieron las inserciones es un tanto molesto, mejor le mando correo a mi jefe para que en la primer corrida solo le mande correo a el y a mi y ya despues que salgan estas incidencias tempranas, las siguientes corridas solo representan uno o dos correos al dia.

Recibi la respuesta afirmativa de parte de mi jefe y procedi a la corrida inicial del PL con la insercion de los datos en las tablas requeridas.  Este fue mi segundo error en ese dia.  Al llevar una corrida de unos 15 minutos el PL se detenia diciendome que habia utilizado el maximo de secuencias posibles de un dia.  No es por demas decir que esto me extraño y entonces cometi el tercer error del dia.  Lo corri una vez mas para ver el porque de este error extraño.  Y para mi sorpresa me volvio a generar la misma alerta, asi que me puse a revisar el PL de nuevo select por select con su asignacion de variable por variable y ahi fue cuando cai en cuenta de mi primer error.

Al revisar el PL me percate que la generacion de la llave principal (seudo llave pues no tiene los privilegios de una PK sino que es un campo mas del registro en la tabla) no copiaba la llave del correlativo de la tabla en la que estaba procediendo a buscarlas sino que generaba una llave nueva cada vez que realizaba la insercion!

Al ver este problema recurri a los casi doscientos correos que recibi en mi bandeja de entrada para ver si entre la informacion que mandaba iba la nueva llave generada al azar sobre esta tabla y logre rastrear el problema a que solo lo hacia para una tabla y las otras cuatro, si realizaba la copia de la llave primaria de la tabla anterior.  Al ver esto me di cuenta que podia venir y borrar los registros erroneos de las tablas que necesitaban ser borradas y que unicamente de una tabla iban a quedar sus correlativos registros perdidos.  En ese momento corregi el segundo error que habia cometido ese dia.

Fui con un analista experto en estas tablas y la logica del negocio para que me asesorara de los registros que tenia que borrar y despues de media hora de explicacion llegamos a la conclusion de que podia borrar los doscientos registros de cierta tabla en la cual tenia una confianza del 100% que eran los que yo habia creado, pues se insertaba tambien el nombre del usuario que lo habia realizado y con eso podia hacer los count para corroborarlos y poder borrarlos.

Pero de ahi cometi el peor error que pude cometer ese dia…

Ya cuando habia localizado los datos que debia de borrar de esta pequeña tabla que guarda los cargos recurrentes a los clientes en cada periodo de facturacion, procedi a realizar un backup de los registros que iba a borrar y con un select los guarde en un dataset que guarde en un xls “por si las moscas” como diria mas de alguno.  Luego procedi a borrar los registros mas o menos como se ve en el siguiente delete.

delete from <tabla> where exists(select * from <tabla> where usuario =     ‘<usuario>’ and fecha >sysdate-1)

No dorothy...ya no estamos en kansas...

Dude de correr el sql al principio, luego verifique la informacion en el .xls y procedi a correr el query.  No le tomo mas de 3 segundos en correr y como uso el TOAD luego del mismo le di un commit y ya la hoja habia dado la vuelta y era parte del pasado.Todo esto paso como a eso de las 4:30 p.m. y senti unos escalofrios extraños el resto de la jornada, como cuando el cuerpo presiente que algo malo va a pasar, pero realice los borrados de las otras tablas con su copia en el xls antes de borrarlos y a las 6 de la tarde procedi a retirarme a mi hogar.
Todo el camino iba con la sensacion de que algo malo iba a pasar y que al dia siguiente (que era feriado) tenia que salir a las 3 a.m. para irme en un viaje de 6 horas en bus a comprar un carro a la frontera.  Al llegar a mi casa vi a mi madre con el telefono en la mano y viendome a los ojos y entonces fue cuando me convenci de la corazonada y me di cuenta que algo habia salido mal.  Era mi jefe en el telefono, que me habia estado llamando desde hacia una hora y no lograba localizarme, pues acababa de cancelar mi numero de celular hacia un par de dias y no cargaba otro conmigo.  Cuando recogi el telefono me pregunto mi jefe que si habia borrado algo de dichosa tabla en la tarde y le conteste que si, pero que habia hecho el conteo de los datos que habia borrado y que eran alrededor de doscientos registros nada mas.  (no podia estar mas equivocado, por lo que veran mas adelante)  Entonces me dijo que iban a seguir viendo el problema y que por cualquier “onda” el me volvia a llamar y si me podia localizar en ese numero de telefono, yo le conteste que si y luego de colgar segui pensando y repasando los hechos de esa tarde y tratando de descifrar si es que en algun momento habia hecho algo malo con estos registros y revisando la magnitud del error.
Luego a eso de las 9 p.m.  recibi otra llamada de mi jefe diciendome que el problema se habia arreglado y que al parecer habia un borrado de registros de una de esas tablas pero que cualquier cosa la cual pudiera pasar ya se habia resuelto y que no habia pasado a mas,  (Que equivocado estaba el en ese momento) y fue en ese momento en que realize el error que se podria decir que fue “el ultimo clavo a mi ataud” pues hice ver a mi jefe que existian estos xls con la informacion guardada de los registros que yo habia borrado (segun yo con esto iba a quedar como alguien muy cuidadoso) y me dijo que le diera el usuario y contraseña de mi maquina para el tomar los xls y ver si estos eran parte de los que se habian borrado, con gusto y agrado le mande un correo con la informacion y los datos de como entrar a la misma (tengo linux con dualboot) y la localizacion de los mentados archivos.

Wait for it....just wait for it...

Esa noche dormi sin problemas y al dia siguiente me desperte de madrugada para proceder al viaje como lo habia programado.  De tanta vuelta y maroma pues la mente se me aparto del problema de los registros y puesto que ya no me habian llamado esa noche pense que todo marchaba sobre ruedas, fui al viaje y regrese cansado pero contento que habia logrado comprar el carro que necesitaba y como el feriado fue un dia jueves pues el viernes habia que ir de regreso al trabajo y hasta ese dia me iba a enterar de la magnitud del problema.Ya en la mañana del siguiente dia laboral cuando regrese al trabajo habia un ambiente pesado en todos los compañeros y las miradas penetrantes y afiladas me decian que algo malo habia pasado y yo era el unico que no se habia enterado.  Al momento de entrar me percate de mi jefe dando vueltas y vueltas y espere a que se calmara para hacerle ver que ya habia llegado y si habia algun problema mas.  De inmediato me llevo a su cubiculo para platicar del problema y cual obra de teatro orquestada, de un momento para otro me llevo directo a la oficina del jefe de toda el area de produccion y sin mas palabra me quede ahi como oveja que es llevada por la corriente directamente a la cueva de los lobos.Comenzo la explicacion el jefe de produccion y me pregunto si me habia percatado del problema que les habia causado y la magnitud del mismo y fue cuando me enseño el screenshot del TOAD donde habia guardado el query de la perdicion y su resultado en un count sobre una tabla de backup de un dia anterior.El resultado del count fue de un millon doscientos cincuenta mil registros borrados de la tabla.

Sip...1,250,000+ registros.

No lograba comprender como habia pasado esto y como era que en tan poco tiempo se habian borrado tantos registros pero despues de esto pense que me iban a rostizar vivo ahi mismo pero lo unico que recibi fue una mirada de decepcion y falta de esperanza cual madre decepcionada del hijo prodigo.  No esta de mas contarles que esto fue lo que me desmoralizo aun mas y que la actitud de todo el departamento hacia mi persona durante las siguientes semanas fue aun mas stress del que nunca me hubiera imaginado.  Al salir de la oficina mi jefe me llevo con el resto del equipo y me volvio a dejar tirado ahi a merced de ellos y lo unico que pude hacer fue ofrecer mis mas sinceras disculpas y que iba a apoyarlos en todo para solucionar el problema.  Despues de mi humillacion publica hice lo que cualquiera hubiera hecho y trate de encontrar refugio en mis compañeros de empresa contandoles el problema y tratando de bromear acerca de ello para aligerar la tension del momento.

Recibia de todo tipo de comentarios, desde el “te pelaste! te echaste toda la tabla!”  hasta el clasico: “mira si te iban a mandar a la fregada, de una vez lo hubieran hecho”  Aunque la sosobra continuaba en mi persona y la unica manera que encontre de aligerar mi tension fue decirme a mi mismo:  Que es lo peor que puede pasar????

Esta pregunta en serio que me trajo bastante alivio, pues el pensar en que es lo peor que podia pasar hacia el problema mas alcanzable y las consecuencias del mismo menos fatidicas.  Pues lo unico a lo que pude concluir de esto era que lo peor que podia pasar era que me podian despedir del trabajo.  Y ya, sin mas ni menos, no iba a perder un riñon, tampoco sufrir de alguna enfermedad, simplemente me podian sacar del empleo y me tocaria ir a buscar uno.  Despues de pensar en esto detenidamente, me fui tranquilizando cada vez mas y poniendo mas atencion en los queries que corria desde ese entonces.

Al poco tiempo recibi un correo con copia a un monton de gente diciendo de que el problema de hacia unos dias habia sido causa del error humano y que estuvieramos mas atentos a la hora de borrar cosas de la base de datos.  La situacion se fue aligerando y para el dia del convivio de diciembre se volvio en nada mas que una anecdota divertida y chistosa.

huh?

Al tiempo iba con mi hermana en el carro para la universidad y estaba hecha un manojo de nervios por que iba a presentar su examen privado.  Lo unico en que pude pensar fue en decirle “pensa que es lo peor que te pudiera pasar si perdieras el examen?”…
Les dejo este pensamiento para reflexionar en nuestros tiempos de dudas y problemas serios.  Pensemos con el lado positivo de las cosas;  Todos los errores que cometemos nos ayudan para no volver a incurrir en ellos y madurar un poco mas cada dia por la sabiduria que obtuvimos al salir adelante de estas situaciones.

2 responses to “El query de la perdicion

  1. hahah me llegas mano xD, a mi me paso algo así, solo que yo no borre una tabla, yo borre unos 14 sitios de internet que producían buena plata xD logre solucionar el problema gastando como Q200 en llamadas al extrangero, a soporte tecnico del servidor que era un cloud server… y finalmente me rolaron un backup😀, pero si eso pasa, muchas veces cuando estas distraído, y como dijiste, es humano xD. que bueno que no te quitaron el chance xD

  2. Tomaré en cuenta la reflexión cuando esté en momentos de tensión y estrés… muy común en éstos tiempos.

    Sabes, otra cosa que he notado es que al salir de una seria enfermedad o de un caso de muerte, uno tiene el deseo y las ganas de conquistar el mundo, es decir, se te quitan los miedos y tienes valor para afrontar los retos. Lo malo es que ese efecto desaparece conforme pasa el tiempo. Sería bueno que ese efecto no desapareciera, o bien ¿cómo lograr mantener ese efecto en nuestras vidas?

    Un saludo.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s