你好,游客 登录 注册 搜索
背景:
阅读新闻

Oracle每天自动备份脚本

[日期:2017-07-02] 来源:Linux社区  作者:jim123 [字体: ]

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

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

[root@localhost ~]# chown oracle:oinstall /data/backup/oracle_backup

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

#!/bin/bash
#oracle_backup.sh version1.0 chmod 700
#writer jim
#00 00 * * * /usr/local/scripts/oracle_backup.sh
#chmod 700 /usr/local/scripts/oracle_backup.sh
#You must first import the environment variables in the Oracle user's bash_profile file
#Must be used to define the DBA account first dpdata1 path and authorized directory to read and write, modify the dpdata1 group
#history
#2017.07.01
export ORACLE_BASE=/usr/local/u01/oracle
export ORACLE_HOME=/usr/local/u01/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=oracle11
export NLS_LANG="american_america.ZHS16GBK"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:Mi:SS"
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$PATH
datetime=$(date +"%Y%m%d")
dpdata1_dir="/data/backup/oracle_backup"
oracle_u01="u01"
oracle_u02="u02"
oracle_password1="u01_password"
oracle_password2="u02_password"
  
expdp ${oracle_u01}/${oracle_password1} directory=dpdata1 dumpfile=${oracle_u01}_${datetime} logfile=${oracle_u01}_${datetime}.log
  
if [ $? -ne 0 ];then
    echo "$(date +"%Y-%m-%d_%H:%M:%S")oracle_${oracle_u01}_backup_file!" > ${dpdata1_dir}/${datetime}_err.log
fi
  
expdp ${oracle_u02}/${oracle_password2} directory=dpdata1 dumpfile=${oracle_u02}_${datetime} logfile=${oracle_u02}_${datetime}.log
  
if [ $? -ne 0 ];then
    echo "$(date +"%Y-%m-%d_%H:%M:%S")oracle_${oracle_u02}_backup_file!" >> ${dpdata1_dir}/${datetime}_err.log
fi
  
/usr/bin/bzip2 -z ${dpdata1_dir}/*${datetime}*
find $dpdata1_dir -type f -ctime +30 -name "*.bz2" -exec rm -vf {} \;

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

更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-07/145355.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款