最近对客户数据库服务器上的备份脚本进行了修改,主要使用Shell脚本循,简化代码结构。
###
#!/bin/bash
sids1="12 dbname list"
sids2=" 12 dbname list"
#this is instance list
sids3=$sids1$sids2
export ORACLE_HOME=/u01/app/oracle/11gR2/dbhome
DA2=`date "+%Y%m%d"`
dmpfil=" "
lgfile=" "
attach=" "
cnti=1
tt_fail=" "
tt_succ=" "
path=/ora11gbackup/EXP_BAK/
logpath=/ora11gbackup/EXP_BAK/EXP_HIS_LOG
TO_MAIL=my_email
CC_MAIL=dba_email
##clean old data
find $path -name '*xxxprod*dmp*' -a -mtime +2 -exec rm {} \;
find $logpath -name '*xxxx*.log*' -a -mtime +30 -exec rm {} \;
##switch directory
cd $path
for dbsid in $sids3 ;
do
export ORACLE_SID=$dbsid
dmpfil=xxxprod_Full_expdp_$dbsid$DA2.dmp
lgfile=xxxprod_Full_expdp_$dbsid$DA2.log
attach=$path$lgfile
tt_fail="**Warning**_xxxx(9.149.xx.xx)_($dbsid)_($cnti)_Full_expdp failed on `date "+%Y%m%d"`"
tt_succ="xxx(9.149.xx.xx)_($dbsid)_($cnti)_Full_expdp successful on `date "+%Y%m%d"`"
expdp \'/ as sysdba \' dumpfile=$dmpfil logfile=$lgfile full=y directory=expdp_bk PARALLEL=2
#expdp \'/ as sysdba \' dumpfile=expdp_bk:$dmpfil logfile=$lgfile full=y PARALLEL=2
#
cat $lgfile| grep -i "ORA-"
if [ "$?" -eq 0 ] ; then
mailx -s $tt_fail -c $CC_MAIL $TO_MAIL <$attach
#echo $tt_fail
else
mailx -s $tt_succ -c $CC_MAIL $TO_MAIL <$attach
#echo $tt_succ
fi
let "cnti=cnti+1 " #sequence of instance
done
mv *.log $logpath
##end