Linux服务器上备份Oracle数据库脚本示例介绍

2021-10-22 737点热度 0人点赞 0条评论

如题,分享我在Linux服务器上备份Oracle数据库(使用客户端备份)的脚本。

如果你需要在非Oracle数据库服务器上备份,且只需要安装客户端exp命令,详见:https://blog.terrynow.com/2021/10/23/linux-oracle-install-client-exp-tool-not-install-oracle-server/

总的思路和实现的功能

  1. 设置环境变量(因为是cron下运行,一些环境变量可能没有)
  2. 根据Oracle的用户名、密码备份当前Owner下的数据库内容(dmp)
  3. 使用rar用密码加密dmp内容(rar的压缩效率很高,所以采用了rar)
  4. 删除30天前的旧备份,防止备份内容越来越大
  5. 把备份内容复制到其他服务器(做到异地备份)

脚本实现

#!/bin/sh

#设置环境变量
export LANG="en_SU.UTF-8"
export NLS_LANG="Simplified Chinese_china".ZHS16GBK
export ORACLE_BASE=/home/oracle/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib

#设置当前时间和30天的时间,给备份文件起带时间的名字,方便维护
nowdate=`date +%Y-%m-%d`
olddate=`date +%Y-%m-%d -d '30 day ago'`

#删除前一天遗留下来的dump数据
rm -rf /home/oracle/db.dmp
rm -rf /home/oracle/dbrar.log
rm -rf /home/oracle/db.dmp*.rar

#备份当天的oracle数据
exp username/[email protected]:1521/sid FILE=/home/oracle/db.dmp FULL=n

#使用rar压缩保存,rar for linux命令行程序 https://www.rarlab.com/download.htm 下载,免费下载
/home/oracle/rar a -agYYYYMMDD -ppassword /home/oracle/db.dmp.rar /home/oracle/db.dmp >>/home/oracle/dbrar.log

#去掉日期,-agYYYYMMDD就不会出现日期
#/home/oracle/rar a -ppassword /home/oracle/db.dmp.rar /home/oracle/db.dmp >>/home/oracle/dbrar.log

#如果不输入密码,需要加authorized_keys
scp /home/oracle/db.dmp*.rar [email protected]:/root/db.dmp.rar
#或者mount其他的服务器,然后复制过去
cp /home/oracle/db.dmp*.rar /mnt/backup/db_$nowdate.dmp.rar

#删除30天前旧的备份
rm -f /mnt/backup/db_$olddate.dmp.rar

 

admin

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论