lunes, 4 de octubre de 2010

Programar backup Oracle 11g en Centos 5

A continuación se realizará un script que generará un backup de Oracle utilizando el utilitario de exportacion EXP


Script del archivo 1 (backup1.bat):



#!/bin/bash
###########################################################
## Script para realizar backup Oracle
## ver 1.0
## Alex Echavarría
###########################################################
XBACKUP="/backups/oracle"
XDIA=`date +'%Y%m%d-%H%M'`
XDIA_BACKUP=$XBACKUP/$D_DIA
XDIA_F=`date +'%d-%m-%Y %H%M'`
echo "***Proceso de Backup iniciado: " $D_DIA_F


##Creamos el directorio para realizar el backup
mkdir $XDIA_BACKUP
echo "  -> Carpeta creada..."
chmod 777 $XDIA_BACKUP
echo "  -> Generando backup..."


##Seteamos variables de Entorno
export ORACLE_SID=nombre_instancia_oracle
export ORACLE_HOME=/usr/app/oracle/product/11.1.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_OWNER=oracle


##Lanzamos exportacion de ORACLE
exp system/1234 file=$XDIA_BACKUP/archivo_data.dmp owner=pruebas, administracion, conta1, conta2 log=/tmp/export_orasite.log buffer=1000000
echo "  -> Comprimiendo el Backup..."


##Comprimimos el archivo generado
gzip -8 $XDIA_BACKUP/archivo_data.dmp
echo "  -> Backup Generado en " $XDIA_BACKUP 




Ahora necesitamos un script para ejecutar el archivo 1 y que todas las salidas de este se guarden en un archivo log. Para esto simplemente escribimos lo siguiente:


Script del archivo 2 (backup2.bat) :


#!/bin/bash
cd /home/oracle
./backup_oracle.bat >> /tmp/oracle.log


Lo que hará el segundo script es ejecutar el bat 1 y enviar todas las salidas del mismo al archivo oracle.log.

Si consultamos el archivo podremos visualizar algo así:


Ahora que ya tenemos ambos archivos debemos ejecutarlos indicarle al S.O. que lo ejecute en las horas que nosotros deseemos, para esto utilizamos el crontab (Programador de Tareas de Linux). Este es un archivo ubicado en /etc/crontab.

Editamos el archivo con vi:  # vi /etc/crontab

Y agregamos una línea como esta al final:


Donde 45 indica el minuto, y 12,18 la hora, es decir este script se ejecutará a las 12:45 pm. y a las 6:45 p.m.



14 comentarios:

  1. Recuerden de dar permisos de ejecucion a los archivos BAT.

    ResponderEliminar
  2. Cada cuando se ejecutaria este script segun el codigo que tienes?? diario?? cada que se encienda la maq??

    ResponderEliminar
  3. Pues, en el caso de la última imagen, indica que se ejecutará diariamente, a las 12 horas y 45 minutos del día y a las 18 horas y 45 minutos del día.

    ResponderEliminar
  4. Buenas esta muy bueno tu tutorial muchas gracias, dime algo esto lo puedo hacer en Suse Linux Enterprise Server?

    ResponderEliminar
    Respuestas
    1. Hola Xhanoserver, claro que lo puedes hacer, linux, tiene un archivo llamado crontab, ubicado en /etc/, este archivo debes editarlo y agregar la linea indicando la hora en el formato del crontab, guardar los cambios y listo.
      Mas información sobre el Programador de Tareas de SUSE en http://opensuse.swerdna.org/susecron.html

      Eliminar
    2. hola .... disculpa una pregunta ... como puedo copiar el contenido de varios (de 3 de 4 o mas ) archivos logs .....(cuyo contenido se van modificando constantemente en el dia ) en un archivo log automaticamente en 5 minutos ,,

      Eliminar
  5. Gracias mi amigo es una gran ayuda.... Espero cubra la necesidad que ando buscando, y cualquier novedad estaré haciendole conocer.

    ResponderEliminar
  6. buen tutorial Estimado y para importar se usa dump?

    ResponderEliminar
    Respuestas
    1. imp system/ file=/backup/backup.dmp full=yes ignore=yes
      log=/var/log/import_log.log buffer=1000000

      Eliminar
  7. man y para restaurar, tengo instalado centos en vmware

    ResponderEliminar
  8. hola,
    si me puedes ayuda, hice todos los pasos, pero me da este error, me falta algún permiso?

    EXP-00056: ORACLE error 12546 encountered
    ORA-12546: TNS:permission denied
    EXP-00000: Export terminated unsuccessfully

    ResponderEliminar
  9. Hola de nuevo,
    alguien me puede ayudar hice todos los pasos, pero me da este error, me falta algún permiso?

    EXP-00056: ORACLE error 12546 encountered
    ORA-12546: TNS:permission denied
    EXP-00000: Export terminated unsuccessfully

    Gracias

    ResponderEliminar
  10. Gracias por el tutorial. Pregunta: ¿Se debe uno autenticar con el usuario oracle en el S.O o con root?

    ResponderEliminar