Cuando no tienes que tocar algo que no lo conoces

Hace unos 7 años cuando todavia no usaba de manera muy extensiva RMAN hice un script de backup para Oracle sobre Linux. Desde hace unos 5 años solamente hago backups con RMAN y el script este ya lo tengo como una reliquia en mi repositorio de scripts varios.

Hace unos dias (un fin de semana) tuve que acudir urgentemente a un cliente el cual estuve en el año 2003 y no he vuelto a estar. En su dia deje este script para que puedan hacer sus backups en caliente. Cuando llegue ví que estaban todos los archive logs desde el último backup y los backups de los 3 últimos dias. Pensé que esto va a ser chupado, restore, recover y pacasa. Empecé realizando el restore, como el script generaba un restore.sh era simplemente ejecutarlo. Una horita para el restore y empece a ejecutar el proceso de recover para mi sorpresa es que al intentar aplicar el recover de primer archive log salió un error quejandose de que los datafiles del tablespace de UNDO son más recientes que el fichero de control. Improbable, impensable e imposible porque acabo de restaurar todo incluido el fichero de control! (alguien intento hacer recover antes de que llegara y se jodio los ficheros de control actuales)

Empecé a ver las fechas de modificación de los datafiles de UNDO y comparando con el resto y efectivamente los datafiles de UNDO eran 6 horas mas recientes que el backup. Revisando el directorio donde se guardaba todos los backups me di cuenta que no existia los datafiles de UNDO, no me lo podia creer, me entró la idea de que entregue un script defectuoso al cliente hace 6 años y me sentía responsable de su situación sin embargo tampoco me cuadraba porque el script lo tenía puesto en varios clientes donde se han hecho recover con exito. Eche un vistazo el fichero de alert (que no se ha tocado en los ultimos 6 años) y me di cuenta que “alter tablespace undotbs1 begin backup” se dejó de ejecutarse el 30 de abril de 2004 (y la plataforma empezó a funcionarse desde 2003). Eso indicaba que alguien había modificado el script sin tener mucha idea de lo que estaba tocando.

En el script se invoca una función (Obtain_data_files) para obtener los datafiles a copiar, es una query contra dba_data_files y dba_tablespaces y se debe de copiar todos aquellos tablespaces que no sean del tipo TEMPORARY. Pues bien algún estimado cambió la condición de “where b.contents != ‘TEMPORARY'” a “where b.contents = ‘PERMANENT'” y el UNDO precisamente no se considera PERMANENT sino UNDO. Asi que desde esa modificación no se ha vuelto a hacer backups de UNDO durante los últimos 5 años……….

Por suerte se pudo recuperar pero siempre me quedará la duda del por qué de este cambio, sera que no gustaba la palabra temporary?

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