Chinaunix首页 | 论坛 | 博客
  • 博客访问: 86036
  • 博文数量: 18
  • 博客积分: 360
  • 博客等级: 一等列兵
  • 技术积分: 200
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-29 12:27
文章分类

全部博文(18)

文章存档

2014年(1)

2011年(17)

我的朋友

分类: Python/Ruby

2011-05-11 10:29:13

在做Oracle全备份脚本修改时,领导提的要求
1、如果已经有全备份了,则自动退出不要报错
2、如果有日志备份了,则继续等待直到日志备份结束才进行全备份

第一条的理由就不说了
为什么要提第二条理由呢,是因为如果全备份开始的时候日志备份依然在进行,则这个全备份的数据是不完全的(必须要加上一开始的那个日志备份备走的数据);

脚本中添加如下的判断语句
  1. DT=`/usr/bin/date +%Y%m%d%H%M`

  2. RMAN_LOG_FILE=${0}_${DT}.out
  3. echo > $RMAN_LOG_FILE
  4. chmod 666 $RMAN_LOG_FILE
  5. echo Script $0 >> $RMAN_LOG_FILE
  6. echo ==== started on `date` ==== >> $RMAN_LOG_FILE
  7. echo >> $RMAN_LOG_FILE

  8. ORACLE_HOME=/u01/oracle/product/db10gr2
  9. export ORACLE_HOME

  10. ORACLE_SID=idsauto
  11. export ORACLE_SID

  12. ORACLE_USER=oracle

  13. # Check if there any full backup or archivelog is running
  14. PROGNAME=$0
  15. MYPID=$$
  16. RUNNING_CHECK_NAME="$PROGNAME"
  17. ARCHIVELOG_CHECK_NAME="/usr/openv/scripts/${ORACLE_SID}_archivelog_backup.sh"
#判断是否有其他的全备份
  1. OTHERRUNS=`/usr/bin/ps -ef|/usr/bin/egrep "$RUNNING_CHECK_NAME"|grep -v $MYPID|grep -vc grep`
  2. echo "check running" >>$RMAN_LOG_FILE
  3. if [ $OTHERRUNS -gt 0 ]
  4. then
  5. echo "FULL BACKUP IS RUNNING, OTHER RUNS is $OTHERRUNS, Exit" >>$RMAN_LOG_FILE
  6. /usr/bin/ps -ef|/usr/bin/egrep "$RUNNING_CHECK_NAME|$FULLBACKUP_CHECK_NAME"|grep -v $MYPID|grep -v grep >>$RMAN_LOG_FILE
  7. exit 0
  8. fi
  9. #判断是否有日志备份
  10. ARCHIVELOGRUNS=`/usr/bin/ps -ef|/usr/bin/egrep "$ARCHIVELOG_CHECK_NAME"|grep -vc grep`
  11. echo "ARCHIVELOGRUNS $ARCHIVELOGRUNS" >>$RMAN_LOG_FILE
  12. while [ $ARCHIVELOGRUNS -gt 0 ]
  13. do
  14. echo "ARCHIVELOG IS RUNNING, WAIT 300 Seconds" >>$RMAN_LOG_FILE
  15. sleep 300
  16. ARCHIVELOGRUNS=`/usr/bin/ps -ef|/usr/bin/egrep "$ARCHIVELOG_CHECK_NAME"|grep -vc grep`
  17. echo "ARCHIVELOGRUNS $ARCHIVELOGRUNS" >>$RMAN_LOG_FILE
  18. done


阅读(1674) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~