Oracle每天自动备份脚本

前端之家收集整理的这篇文章主要介绍了Oracle每天自动备份脚本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

因为需要最近写了一个适用于Oracle上的备份脚本,Oracle的数据备份不像MysqL一样直接使用二进制工具就可以备份,在Oracle上进行数据备份需要 做好相应的配置,在配置好后才能进行正常的数据备份脚本,所以在Oracle备份数据前需要做一些配置。

首先,因为Oracle的11g开始的特性,空表不会分配表空间所以在备份脚本中我使用了expdp工具来进行数据备份,在备份开始之前需要先把Oracle的数据泵导出目录用DBA账户先做好指定并且授权读写,再修改目录的属组,操作很简单,就是一些expdp数据泵的操作,这个以前有说明过,在这里就不做篇幅做说明了,可以参看:http://www.jb51.cc/article/p-gsdscsud-bha.html,在设置好dpdata1目录后,还需要修改dpdata1目录的属组这点很重要,不然使用expdp导出的数据文件无法写入,具体根据当时安装Oracle时定义的属组修改权限

  1. [root@localhost~]#chownoracle:oinstall/data/backup/oracle_backup

修改完以上的步骤后,再把Oracle用户下的bash_profile配置文件中在安装时定义好的环境变量拷贝到脚本中,在定义好脚本的执行时间就可以了,脚本的实现比较简单,如下:

  1. #!/bin/bash
  2. #oracle_backup.shversion1.0chmod700
  3. #writerjim
  4. #0000***/usr/local/scripts/oracle_backup.sh
  5. #chmod700/usr/local/scripts/oracle_backup.sh
  6. #YoumustfirstimporttheenvironmentvariablesintheOracleuser'sbash_profilefile
  7. #MustbeusedtodefinetheDBAaccountfirstdpdata1pathandauthorizeddirectorytoreadandwrite,modifythedpdata1group
  8. #history
  9. #2017.07.01
  10. exportORACLE_BASE=/usr/local/u01/oracle
  11. exportORACLE_HOME=/usr/local/u01/oracle/product/11.2.0/dbhome_1
  12. exportORACLE_SID=oracle11
  13. exportNLS_LANG="american_america.ZHS16GBK"
  14. exportNLS_DATE_FORMAT="YYYY-MM-DDHH24:Mi:SS"
  15. exportLD_LIBRARY_PATH=$ORACLE_HOME/lib
  16. exportPATH=$ORACLE_HOME/bin:$PATH
  17. datetime=$(date+"%Y%m%d")
  18. dpdata1_dir="/data/backup/oracle_backup"
  19. oracle_u01="u01"
  20. oracle_u02="u02"
  21. oracle_password1="u01_password"
  22. oracle_password2="u02_password"
  23.  
  24. expdp${oracle_u01}/${oracle_password1}directory=dpdata1dumpfile=${oracle_u01}_${datetime}logfile=${oracle_u01}_${datetime}.log
  25.  
  26. if[$?-ne0];then
  27. echo"$(date+"%Y-%m-%d_%H:%M:%S")oracle_${oracle_u01}_backup_file!">${dpdata1_dir}/${datetime}_err.log
  28. fi
  29.  
  30. expdp${oracle_u02}/${oracle_password2}directory=dpdata1dumpfile=${oracle_u02}_${datetime}logfile=${oracle_u02}_${datetime}.log
  31.  
  32. if[$?-ne0];then
  33. echo"$(date+"%Y-%m-%d_%H:%M:%S")oracle_${oracle_u02}_backup_file!">>${dpdata1_dir}/${datetime}_err.log
  34. fi
  35.  
  36. /usr/bin/bzip2-z${dpdata1_dir}/*${datetime}*
  37. find$dpdata1_dir-typef-ctime+30-name"*.bz2"-execrm-vf{}\;

当然,也可以把失败的地方换成写好的发邮件的function,在失败的时候发一封邮件也可以

猜你在找的Oracle相关文章