-----------------------------------------
run{
allocate channel t1 type disk;
allocate channel t2 type disk;
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt archivelog all completed before 'sysdate-7';
crosscheck backup;
delete noprompt expired backup;
sql 'alter system archive log current';
backup as compressed backupset incremental level 0 database format '/oracle/dump/full_%d_%T_%s_%p' plus archivelog format '/oracle/dump/arch_%d_%T_%s_%p';
backup current controlfile format '/oracle/dump/ctrl_%d_%T_%s_%p';
report obsolete;
#delete noprompt obsolete;
release channel t1;
release channel t2;
}
-----------------------------------------
2、再创建一个调用以上脚本的脚本
命令:vim auto_backup.sh,作用:调用备份数据库脚本,并收集执行日志
-----------------------------------------
LOGDIR=/oracle/dump
WORKDIR=/oracle/dump
DATE=`date +"%F_%H-%M"`
LOGFILE="$LOGDIR"/"Level0_${DATE}.log"
BAKDIR=/oracle/dump
cd $WORKDIR
echo -e "\n\t \E[32m BACKUP DATABASE LEVEL=0 ---> Starting... "
sleep 1
echo -e " ."
sleep 0.5
echo -e " .."
if [ -e $BAKDIR ]; then
rman target / @rman_backup.sh > $LOGFILE 2>&1
else
echo "Failed, check SMB mount."
exit
fi
df -h >> $LOGFILE
echo -e "\n\t \E[32m* BACKUP DATABASE LEVEL=0 ---> Done *"
grep -i fail $LOGFILE
if [ $? != 0 ]; then
echo "\n\t BACKUP DATABASE IS OK [ ^_^ ]!"
else
echo "\n\t SORRY, IT'S FAIL! CHECK IT PLEASE. [ ^_^|| ]"
fi
tput sgr0
-----------------------------------------
3、在root用户下创建定期执行计划,每周三与日,0点0分执行0级增量备份
crontab -e
-----------------------------------------
00 00 * * 3,7 su - oracle -c /oracle/dump/auto_backup.sh 2>&1 >>/oracle/dump/lunch_auto_backup.log
-----------------------------------------