Skip to content

Instantly share code, notes, and snippets.

@iacosta
Created July 24, 2012 13:31
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save iacosta/3169928 to your computer and use it in GitHub Desktop.
Save iacosta/3169928 to your computer and use it in GitHub Desktop.
Datapump.sh
#!/bin/bash
# Script de copias de seguridad (DATAPUMP) Base de datos
# Autor = IVAN ACOSTA
export PATH=$PATH:/usr/local/bin:/bin:/usr/bin
echo "***********************************************"
echo "*Backup Database Inicializando *"
echo "***********************************************"
echo "Fecha:`date "+%Y-%m-%d %k:%M:%S"` ............."
echo "***********************************************"
echo "***********************************************"
echo "* Verifica la disponibilidad de los SID's *"
echo "***********************************************"
# Verifica el parametro recibido debe ser igual que el ORACLE_SID
if [[ $# -eq 0 ]]
then
echo "Database name argument is missing"
exit 1
fi
export ORA_SID_LOWER=`/bin/echo $1 | /usr/bin/tr "[:upper:]" "[:lower:]"`
export ORA_SID_UPPER=`/bin/echo $1 | /usr/bin/tr "[:lower:]" "[:upper:]" `
export ORA_INSTANCE=$ORA_SID_UPPER
# Verifica la disponibilidad de la Base de datos.
DBVERIFY=`ps -ef | grep ora_pmon_$ORA_SID_UPPER | grep -v 'grep' | wc -l`
if [ $DBVERIFY = "0" ]; then
echo "Base de datos con nombre $ORA_SID_UPPER no esta arriba"
exit 1
else
echo "Base de datos con nombre $ORA_SID_UPPER se encuentra arriba"
fi
echo "================================================"
echo "***********************************************"
echo "* Exporta Variables de Entorno ............ *"
echo "***********************************************"
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
export BACKUP_HOME=/home/oracle/rman_backup_scripts
export DMP_HOME="/u03/oradata/datapump/$ORACLE_SID"
export ORACLE_HOME=/u01/app/oracle/product/11.2.0
ORAENV_ASK=NO; export ORAENV_ASK
ORACLE_SID=$ORA_INSTANCE; export ORACLE_SID
echo $ORACLE_SID
source /usr/local/bin/oraenv
export WEEKDAY=`/bin/date +%A`
export WEEKDAY=`/bin/echo $WEEKDAY | /usr/bin/tr "[:lower:]" "[:upper:]" `
find ${DMP_HOME} -mtime +1 -name "*.dmp" -exec rm -Rf {} \;
find ${DMP_HOME} -mtime +1 -name "*.log" -exec rm -Rf {} \;
export NLS_LANG="LATIN AMERICAN SPANISH_AMERICA.WE8ISO8859P1"
export FECHA=`date +%Y-%m-%d_%H-%M-%S`
echo "================================================"
echo "== Inicio del Proceso..........................="
echo "================================================"
echo "***********************************************"
expdp system/${PTB}${PTA}${PTC} parfile=$BACKUP_HOME/parfile directory=DATA_PUMP_DIR dumpfile=dump_${ORACLE_SID}_${WEEKDAY}.dmp logfile=${ORACLE_SID}_${WEEKDAY}.log
echo "**Proceso Finalizado .....................OK..*"
echo "***********************************************"
echo "================================================"
echo "== Copia a NFS (dmp y log).....................="
echo "================================================"
echo "***********************************************"
export BACKUP_2="/backups"
sudo mount -t nfs server_nfs:/Backup/server_database/${ORACLE_SID} $BACKUP_2
find ${BACKUP_2} -mtime +2 -name "*.dmp" -exec rm -Rf {} \;
find ${BACKUP_2} -mtime +2 -name "*.log" -exec rm -Rf {} \;
export DB_PATH=$(sqlplus -s /nolog <<EOF
conn / as sysdba
set head off pagesize 0 feedback off linesize 200
whenever sqlerror exit 1
SELECT directory_path FROM DBA_DIRECTORIES where directory_name like '%DATA_PUMP%';
EOF)
cp ${DB_PATH}/dump_${ORACLE_SID}_${WEEKDAY}.dmp ${BACKUP_2}
cp ${DB_PATH}/${ORACLE_SID}_${WEEKDAY}.log ${BACKUP_2}
sudo umount -t nfs server_nfs:/Backup/server_database/${ORACLE_SID} $BACKUP_2
echo "**Proceso Finalizado .....................OK..*"
echo "***********************************************"
echo "***********************************************"
echo "**Enviando email .............................*"
mutt -s "Informe Datapump ${ORACLE_SID}" -a /u03/oradata/datapump/${ORACLE_SID}/${ORACLE_SID}_${WEEKDAY}.log email@dominio.com < $ORACLE_HOME/scripts/correo_body.txt
echo "** Proceso Finalizado .....................OK.*"
echo "***********************************************"
echo "================================================"
echo "== Fin del Proceso.............................="
echo "================================================"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment