Oracle 数据库使用crontab 定时任务进行备份
1、脚本
#!/bin/sh
#自动备份oracle数据库
#数据库用户
db_user="TEST";
#数据库密码
db_password="test";
#数据库服务器,需要在本地客户端tnsnames中定义好
db_server="cmsxx";
#本地客户端执行程序目录
oracle_bin_dir="/home/oracle/xx/bin";
#oracle虚拟目录名
oracle_directory="dpdata";
#本地备份目录,存放dump文件与临时压缩文件
local_backup_dir="/home/oradp";
#获取当前日期
date_now=$(date +%Y%m%d);
#获取上一次备份时间
date_old=$(date -d "-7 day" +%Y%m%d);
#备份当天的数据库
echo "-- $(date +'%Y-%m-%d %H:%M:%S') 自动备份数据库并压缩开始 ----------------------------------------------";
echo "-- $(date +'%Y-%m-%d %H:%M:%S') 数据库备份开始 --------------------------------------------------------";
echo "su oracle -lc \"${oracle_bin_dir}/expdp ${db_user}/${db_password}@${db_server} directory=${oracle_directory} full=y dumpfile=${db_server}_${date_now}.dmp logfile=${db_server}_${date_now}.log\"";
su oracle -lc "${oracle_bin_dir}/expdp ${db_user}/${db_password}@${db_server} directory=${oracle_directory} full=y dumpfile=${db_server}_${date_now}.dmp logfile=${db_server}_${date_now}.log";
echo "-- $(date +'%Y-%m-%d %H:%M:%S') 数据库备份结束 --------------------------------------------------------";
echo "-- $(date +'%Y-%m-%d %H:%M:%S') 删除旧备份原始文件开始 ----------------------------------------------";
echo "rm -rf ${local_backup_dir}/${db_server}_${date_old}.dmp ${local_backup_dir}/${db_server}_${date_old}.log"
rm -rf ${local_backup_dir}/${db_server}_${date_old}.dmp ${local_backup_dir}/${db_server}_${date_old}.log;
echo "-- $(date +'%Y-%m-%d %H:%M:%S') 删除旧备份原始文件结束 ----------------------------------------------";
配置定时任务,编辑 vim /etc/crontab
#定时任务示例
#每周六0点备份
0 0 * * 6 root /bin/sh /shell/backup_oracle.sh >> /shell/backup_oracle.log &
配置后刷新文件:source /etc/crontab
或者重启crontab服务: service crond restart