当前位置:   article > 正文

Oracle RMAN备份和清理过期归档的通用脚本

Oracle RMAN备份和清理过期归档的通用脚本
  1. #!/usr/bin/ksh
  2. today=`date +%d`
  3. last_day=`cal | xargs | awk '{print $NF}'`
  4. if [ "$today" = "$last_day" ]; then
  5. exit 1
  6. fi
  7. . /home/oracle/.profile
  8. vdat=`date +%Y%m%d`
  9. mkdir -p /rmanbackup/$vdat
  10. mkdir -p /rmanbackup/$vdat
  11. logfile=/rmanbackup/$vdat/fullbackup_$vdat.log
  12. rman target / nocatalog log=$logfile
  13. run
  14. {
  15. ALLOCATE CHANNEL ch1 DEVICE TYPE disk;
  16. ALLOCATE CHANNEL ch2 DEVICE TYPE disk;
  17. ALLOCATE CHANNEL ch3 DEVICE TYPE disk;
  18. ALLOCATE CHANNEL ch4 DEVICE TYPE disk;
  19. backup as compressed backupset database format '/rmanbackup/$vdat/fullbackup_%u.bak' include current controlfile;
  20. sql 'alter system archive log current';
  21. backup archivelog all format '/rmanbackup/$vdat/archbackup_%u.bak';
  22. backup current controlfile format '/rmanbackup/$vdat/ctl_%d_%T.bak';
  23. backup spfile format '/rmanbackup/$vdat/SPFILE_%T_%s_%p.bak';
  24. crosscheck backup;
  25. crosscheck archivelog all;
  26. delete noprompt archivelog until time 'sysdate-14'
  27. delete force noprompt archivelog until time 'sysdate-2' ;
  28. delete noprompt expired backup;
  29. delete noprompt obsolete;
  30. release channel ch1;
  31. release channel ch2;
  32. release channel ch3;
  33. release channel ch4;
  34. }
  35. exit;
  36. EOF

1、备份1次的不再备份

backup archivelog all format '/rmanbackup/backupytj/$vdat/archbackup_%u.bak' not backed up 1 times;

2、备份没有备份过的归档日志

  1. backup archivelog all not backed up;
  2. 00 10 * * * find /rmanbackup/backupsets -name "*" ! -name "*.sh" ! -name rmanbackup -ctime +3 -exec rm -rf {} \;

3、定时删除归档备份文件的脚本

  1. #!/bin/sh
  2. BACK_DIR=/oracle-data/clear_archlog_task/log
  3. export DATE=`date +%F`
  4. echo " " >> $BACK_DIR/${DATE}_rman_backup.log
  5. echo `date '+%Y-%m-%d %H:%M:%S'` >> $BACK_DIR/${DATE}_rman_backup.log
  6. su - oracle -c "
  7. mkdir -p $BACK_DIR
  8. rman log=$BACK_DIR/${DATE}_rman_backup.log target / <<EOF
  9. run{
  10. crosscheck archivelog all;
  11. delete noprompt archivelog all completed before 'sysdate-1';
  12. }
  13. exit;
  14. EOF
  15. "
  16. echo "delete success" >> $BACK_DIR/${DATE}_rman_backup.log
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/793941
推荐阅读
相关标签
  

闽ICP备14008679号