第一步编写脚本
#配置oracle的环境变量(必须配置)
export ORACLE_BASE=/data/server/oracle
export ORACLE_HOME=/data/server/oracle/product/12.2.0.1/db_1
export ORACLE_SID=les
export ORACLE_TERM=xterm
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export LANG=C
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
curdate=$(date "+%y_%m_%d") #获取当天日期
days=5 #定义删除几天前的数据
orsid=ip:port/sid #设置连接数据库参数
orowner=les #定义用哪个用户
bakuser=les #设置连接数据库用户(此用户必须具有备份数据的权限)
bakpass=123456 #设置连接数据库密码
bakdir=/data/lesDataBack #备份存储目录
bakdata=$orowner"_"$curdate.dmp #备份的数据文件
baklog=$orowner"_"$curdate.log #备份的日志名称
ordatabak=$orowner"_"$curdate.tar.gz #备份数据文件和日志打包的jar名
cd $bakdir
mkdir -p $orowner
cd $orowner
exp $bakuser/$bakpass@$orsid grants=y owner=$orowner file=$bakdir/$orowner/$bakdata log=$bakdir/$orowner/$baklog #开始备份
tar -zcvf $ordatabak $bakdata $baklog #打包
find $bakdir/$orowner -type f -name "*.log" -exec rm {} \; #删除数据备份文件
find $bakdir/$orowner -type f -name "*.dmp" -exec rm {} \; #删除数据备份日志文件
find $bakdir/$orowner -type f -name "*.tar.gz" -mtime +$days -exec rm -rf {} \;#删除多少天之前的备份数据
第二步添加定时任务
切换到oracle用户 su - oracle
crontab -e
30 02 * * * /data/les/orcalBack.sh
保存后重启定时任务
service crond start