如题,分享我在Linux服务器上备份Oracle数据库(使用客户端备份)的脚本。
如果你需要在非Oracle数据库服务器上备份,且只需要安装客户端exp命令,详见:https://blog.terrynow.com/2021/10/23/linux-oracle-install-client-exp-tool-not-install-oracle-server/
总的思路和实现的功能
- 设置环境变量(因为是cron下运行,一些环境变量可能没有)
- 根据Oracle的用户名、密码备份当前Owner下的数据库内容(dmp)
- 使用rar用密码加密dmp内容(rar的压缩效率很高,所以采用了rar)
- 删除30天前的旧备份,防止备份内容越来越大
- 把备份内容复制到其他服务器(做到异地备份)
脚本实现
#!/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
文章评论