Backup manual

La forma más primaria de hacer backup de una BBDD Oracle es mediante herramientas del Sistema Operativo como copy, dd, tar, etc.

Se pueden realizar backups correctos de esta forma. Es más, está documentado como hacerlo.

Nota: Cuando se indica Base de Datos parada, implica que se ha parado mediante un comando

shudown, shutdowm immediate o shutdown trasaccional.

En particular, no se ha parado mediante shutdown abort. En caso de una BBDD RAC, todas las instancias están paradas y se han parado de esta forma

Vamos a ver los ficheros a copiar y como se copian.

  • initSID.ora:
    • Es un fichero de texto y se puede listar, editar, etc.
    • Si solo incluye la linea spfile='...', se puede imprimir o guardar esta linea en un documento como referencia.
    • Si incluyera la linea ifile='...' indica que el fichero init es el referenciado, se debe:
      • Imprimir o guardar esta linea en un documento como referencia.
      • Copiar el fichero al que hace referencia mediante un comando de copia a nivel del sistema operativo.
  • spfile:
    • Es un fichero binario.
    • Se debe copiar cuando no se estén modificando los parámetros de configuración de la BBDD
    • Se copia con cualquier comando de copia a nivel de sistema operativo: hay que tener en cuenta que es binario.
  • controlfile:
    • Es un fichero binario.
    • Si la BBDD está parada, se puede copiar directamente con cualquier herramienta del S.O. (basta con copiar cualquiera de las copias)
    • Si la BBDD está en marcha, no se puede copiar directamente puesto que la BBDD lo está modificando continuamente y podríamos obtener una copia inconsistente.
      • Se debe indicar a la BBDD que genere una copia consistente y debemos guardar esta copia con cualquier herramienta del S.O.
      • Para generar la copia consistente, se debe ejecutar la siguiente sentencia SQL una vez conectados a la BBDD como usuario sysdba:
        • ALTER DATABASE BACKUP CONTROLFILE TO '/path/completo/de/un/fichero' REUSE;
      • Esta copia es un fichero binario y debe tratarse como tal.
  • datafiles:
    • Son ficheros binarios.
    • Si los datafiles residen en un sistema ASM, el backup se  debe hacer con RMAN: es la única forma soprtada.
    • Si los datafiles no residen en un sistema ASM:
      • Si la BBDD está parada, se pueden copiar directamente con cualquier herramienta del S.O.
      • Si la BBDD está en marcha:
        • Solo se puede hacer Backup si la BBDD está en modo ArchiveLog
        • Antes de la copia se debe poner el Tablespace (o la BBDD) en modo Begin Backup. Después de la copia, se debe deshacer el modo Begin Backup.
        • Es decir:
          • Antes de copiar los datafiles de un Tablespace, se debe ejecutar la sentencia SQL (ejecutada con un usuario sysdba)

            • ALTER TABLESPACE xxx BEGIN BACKUP;
          • A continuación se hace la copia de los Datafiles de este Tablespace con cualquier herramienta del S.O.
          • Finalmente, después de la copia de todos los Datafiles del Tablespace, se debe ejecutar la sentencia SQL (ejecutada con un usuario sysdba)
            • ALTER TABLESPACE xxx END BACKUP;
        • Como alternativa:
          • Antes de la copia de los Datafiles, ejecutar la sentencia SQL (ejecutada con un usuario sysdba)
            • ALTER DATABASE BEGIN BACKUP;
          • A continuación se hace la copia de los Datafiles
          • Finalmente, después de la copia de todos los Datafiles, se debe ejecutar la sentencia SQL (ejecutada con un usuario sysdba)
            •  ALTER DATABASE END BACKUP;
  • LogFiles:
    • Nunca, en ninguna circunstancia, se debe hacer copia de los mismos
  • archivelogs:
    • Son ficheros binarios.
    • Solo se generarán si la BBDD está en modo ArchiveLog.
    • Para que el backup sea autocontenido y completo:
      • Si la BBDD está parada, deberíamaos haber ejecutado la siguiente sentencia SQL inmediatamente antes de la parada (ejecutada con un usuario sysdba):
        • ALTER SYSTEM SWITCH LOGFILE;
          • En caso de una BBDD en RAC, este comando se ha debido ejecutar en cada instancia.
      • Si la BBDD está en marcha, el orden correcto de actuación es:
        • Copia de los datafiles.
        • Después de finalizar, ejecutar la siguiente sentencia SQL (ejecutada con un usuario sysdba):
          • ALTER SYSTEM SWITCH LOGFILE;
            • Para el caso de una BBDD en RAC, se tiene que ejecutar en todas las instancias. Un métgodo alternativo es ejecutar desde cualquier nodo:
            • alter system archive log thread 1 current;
            • alter system archive log thread 2 current;
            • ...
      • A continuación, se copian todos los ficheros ArchiveLog con cualquier herramienta del S.O.
    • Si se desea, se pueden borrar los archivers copiados.
      • Es de destacar que, la falta de un ArchiveLog, impide la restauración. Por tanto, como medida de seguridad, al borrar los ArchiveLogs es mejor dejar los generados en los últimos N minutos (es posible que se hayan generado durante la copia y no se hayan copiado)