一.环境:
1系统属于中小型业务系统,客户服务器基本都属于低端配置,磁盘容量小,安全性较差;
2.系统可容许短时间停止整顿,但数据绝不可丢失;
3.数据库采用ORACLE10g,为保证性能运行于非归档模式;
4.系统由WEB服务器(192.168.1.101),数据库服务器(192.168.1.102)组成;
二.备份方案:
1.ORACLE非归档模式运行,数据量不是特别大,所以采用EXP,IMP工具进行备份.
2.备份方案目的:
WEB服务器上保留N天备份数据,ORACLE数据库同时保留最近备份数据,实际保留时间视磁盘情况而定.
3.备份脚本:
# 备份test用户数据(文件目录可自定义,执行脚本前先建好目录和日志目录并赋予相应权限)
exp test/test file=/home/oracle/local/test`date +%y%m%d`.dmp  log=/home/oracle/local/log/backup.log
#检查日志文件,查看备份是否成功
result=`cat /home/oracle/local/log/backup.log|grep 'Export terminated successfully with warnings.'`
#如果备份成功,则将备份文件通过sftp上传至WEB服务器中保存
if [ "$result" ]
then
cd /home/oracle/local/
HOST=192.168.1.101
USER=test
PASS=test123
 
echo "Starting to sftp..."
lftp -u ${USER},${PASS} sftp://${HOST} <<EOF
cd  /home/testbackup/
put test`date +%y%m%d`.dmp
bye
EOF
echo "done"
 
#上传完成后删除本地1天前的备份文件以及其日志,如果硬盘足够大可以保留多日备份文件
rm -rf `find /home/oracle/local -mtime +1|grep test`
rm -rf `find /home/oracle/local/log -mtime +1|grep test`
#将本次备份日志文件标注保存
mv /home/oracle/local/log/backup.log /home/oracle/local/log/test`date +%y%m%d`.log
#如果备份失败,生成日志文件,并发送邮件通知
else
echo 'the exp failed'>/home/oracle/local/log/errorExp`date +%y%m%d`.log
service sendmail restart
mail -v -s "The `hostname` data exp failed!" [email]niu8878@163.com[/email]</home/oracle/local/log/errorExp`date +%y%m%d`.log
sleep 60
service sendmail stop
fi