su – oracle
sqlplus /nolog
conn / as sysdba
CREATE OR REPLACE DIRECTORY BACKUP AS '/home/oracle/backup';
grant read,write on directory BACKUP to tams;
创建sh文件
#!/bin/sh
. ~/.bash_profile
#生效实例tams
export ORACLE_SID=TAMS
#执行备份库语句
expdp \" / as sysdba \" dumpfile=tams_$(date +%Y%m%d).dmp directory=BACKUP schemas=\(TAMS\) logfile=tams_$(date +%Y%m%d).log cluster=no
#进入备份目录
cd /home/oracle/backup/
#压缩备份文件
gzip tams_$(date +%Y%m%d).dmp tams_$(date +%Y%m%d).log
#删除N天以前的文件
find /home/oracle/backup/ -mtime +7 -name "tams_*" -exec rm -rf {} \;
创建定时任务
00 21 * * * sh /home/oracle/backup/autoBackupOracle.sh > /home/oracle/backup/autoBackupOracle.log 2>&1
备注
--压缩
zip -r autoBackupOracle.sh.zip autoBackupOracle.sh
--解压
unzip autoBackupOracle.sh.zip
--压缩
gzip -l tams_20200904.log tams_20200904.dmp
--解压
gzip -d tams_202009042.dmp.gz
二、设定脚本执行时间
我们设定规则为每天凌晨3点执行一次,采用crontab来进行处理
执行crontab -e,设定如下规则
00 03 * * * sh /backup/autoBackupOracle.sh > /backup/autoBackupOracle.log 2>&1
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
看 /var/log/cron这个文件就可以,可以用tail -f /var/log/cron观察