Oracle数据库定时增量备份脚本

创建一个目录放备份脚本

mkdir rman_scripts

创建RMAN删除脚本

vim delete_rman.dat

键入以下内容:

ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE disk;
run{
 allocate channel d1 device type disk;
 allocate channel d2 device type disk;
 delete obsolete recovery window of 7days;
 release channel d1;
 release channel d2;
}

保存退出

创建RMAN备份脚本

vim rman_full.sh

键入以下内容:
注意修改环境变量、备份位置及tag的部分

#!/bin/bash
 
#设置环境变量
ORACLE_SID=limsdb
ORACLE_BASE=/u01/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
PATH=$PATH:$ORACLE_HOME/bin
RMAN_LOG=/u01/backup/logs/bpmdb_fullbk_`date +"%Y.%m.%d_%H.%M.%S"`.log
export ORACLE_SID ORACLE_BASE ORACLE_HOME PATH RMAN_LOG

#输出Rman备份开始时间到日志
START_DATE=`date +"%Y-%m-%d %H:%M:%S"`
echo Rman备份开始_当前时间: $START_DATE>$RMAN_LOG

#执行Rman备份
#su - oraps -c"
rman target / msglog=$RMAN_LOG append< 
run {
allocate channel ch00 type disk;
allocate channel ch01 type disk;
crosscheck archivelog all;
delete noprompt expired archivelog all;
backup incremental level=0 database format='/u01/backup/rman/orcl_incr0_%T_%t_%U'tag='lims_lev0';
sql'alter system archive log current';
backup archivelog all tag='lims_arc_bak'format='/u01/backup/rman/orcl_arch_%T_%t_%U'delete input;
backup current controlfile tag='lims_ctlfile'format='/u01/backup/rman/ctl_file_%T_%t_%U';
backup spfile tag='lims_spfile'format='/u01/backup/rman/spfile_%U_%T';
crosscheck backupset;
delete noprompt expired backup;
delete noprompt obsolete;
release channel ch00;
release channel ch01;
}
EOF

#输出Rman备份结束时间到日志
echo Rman备份结束_当前时间: `date +"%Y-%m-%d %H:%M:%S"`>>$RMAN_LOG

#根据日志输出内容检索错误信息
strRet=''
strRet=`awk'/ERROR MESSAGE/'$RMAN_LOG`

if [ -z"$strRet"] ;
then
echo SUCCESS!>>$RMAN_LOG
exit 0 ;
else
echo ERROR!>>$RMAN_LOG
exit 1 ;
fi

保存退出

利用crontab创建定时任务

没有crontab就安一个,在此不再赘述

查看定时任务列表

crontab -l

编辑定时任务列表

crontab -e

键入以下内容:

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

#backup of database
30 0 * * * /home/oracle/rman_scripts/rman_full.sh>/dev/null 2>/home/oracle/rman_scripts/error.log

END

posted @ 2020-06-08 11:31  游兮游兮  阅读(1035)  评论(0编辑  收藏  举报