-------------------------------------------前期工作-----------------------------------------------
#创建备份数据库脚本文件存放目录
mkdir -p /backup/oracleshell
#新建Oracle数据库数据及日志等备份目录
mkdir -p /backup/oracledata
#设置目录权限为oinstall用户组的oracle用户
chown -R oracle:oinstall /backup/oracleshell
chown -R oracle:oinstall /backup/oracledata
--------------------------------------备份脚本文件内容-----------------------------------------------
#新建备份脚本文件
vi /backup/oracleshell/oracleshell.sh
#!/bin/bash 需要写在文件内容中表示需要声明
---------------------------------------------------备份文件内容------------------------------------------
#!/bin/bash
echo "备份脚本开始启动..."
export ORACLE_SID=orcl
export ORACLE_BASE=/root/data/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/user/lib
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export LANG=C
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
#以上变量内容可通过 su oracle,然后cat ~/.bash_profile查看该内容
#日期变量参数,注意这里不是引号,是波浪符号下边那个
exportdate=`date +%Y_%m_%d`
#保留三天
days=3
#数据库连接信息
orsid='ip:端口号/orcl'
orowner=账号
bakuser=账号
bakpass=密码
#备份数据、日志文件,及压缩文件存放变量
bakdir=/home/oracle/backup/oracledata
bakdata=$orowner"_"$exportdate.dmp
baklog=$orowner"_"$exportdate.log
ordatabak=$orowner"_"$exportdate.tar.gz
cd $bakdir
#数据泵导出命令
# directory 数据库配置的虚拟路径
expdp $bakuser/$bakpass@$orsid full=y directory=DBDATAS dumpfile=$bakdat logfile=$bakdir/$baklog$bakdir
echo "数据备份结束..."
echo "现在开始进行压缩备份数据..."
echo "压缩备份数据结束..."
echo "删除备份数据开始..."
find $bakdir/ -type f -name "*.log" -exec rm {} \;
find $bakdir/ -type f -name "*.dmp" -exec rm {} \;
find $bakdir/ -type f -name "*.tar.gz" -mtime +$days -exec rm -rf {} \;
echo "删除备份数据结束..."
echo "备份执行完毕..."
---------------------------------------------------备份文件内容------------------------------------------
:wq! 保存 退出
#将备份文件上传到远程服务器 如果不输人密码上传请参考
http://www.linuxidc.com/Linux/2017-11/148506.htm
添加脚本执行权限
chmod +x /backup/oracleshell/orashell.sh #添加脚本执行权限
4.编辑系统任务执行计划
crontab -e
输入一下信息:
#每天凌晨3点,以oracle用户执行P_DB_BAK.sh备份文件
00 03 * * * /backup/oracleshell/orashell.sh
:wq! #保存退出
5.重启crontab
service crond restart
从此每天的凌晨3点 系统会自动完成数据库的备份,压缩,并上传到远程服务器的指定路径下!
crontab -l //列出某个用户cron服务的详细内容
-----------注意点---------
创作不易,大家帮忙关注一下公众号,感谢。