Oracle备份脚本带备份结果监控

Rman日常备份

使用方式:

编辑脚本 

vi  /home/oracle/dba/ora_backup.sh 

 插入以下内容

#!/bin/bash
##环境变量配置
##author yangshuDBA
source ~/.bash_profile
export NLS_DATE_FORMAT='yyyymmdd hh24:mi:ss';
BK_DATE=`date +%Y%m%d`
IPADDR=$(hostname -I | awk '{print $1}')
BAKPATH=/rman/${IPADDR}/$ORACLE_SID
CURPATH=$BAKPATH/${BK_DATE}
LOGDIR=${BAKPATH}/logs
SYSNAME='租赁系统'
DBBackStatus=''
DB_TYPE='Oracle'
MD5_FILE=${CURPATH}/${BK_DATE}.md5
if [ ! -d "${BAKPATH}" ]; then
        mkdir -p "${BAKPATH}"
fi
if [ ! -d "${CURPATH}" ]; then
        mkdir -p "${CURPATH}"
fi
if [ ! -d "${LOGDIR}" ]; then
        mkdir -p "${LOGDIR}"
fi

##全备份
function RMAN_FULL_BACKUP() {
TAG=${BK_DATE}_FULL
touch  ${LOGDIR}/Full_${BK_DATE}.log 
rman target / log=${LOGDIR}/Full_${BK_DATE}.log<<!
run{
allocate channel d1 device type disk;
allocate channel d2 device type disk;
allocate channel d3 device type disk;
allocate channel d4 device type disk;

sql 'alter system archive log current';
sql 'alter system checkpoint';
backup as compressed backupset incremental level=0 database format '${CURPATH}/%d_Full_0_%s_%t' tag '${TAG}';
sql 'alter system archive log current';
sql 'alter system archive log current';
sql 'alter system archive log current';
sql 'alter system checkpoint';
backup as compressed backupset archivelog all format '${CURPATH}/%d_Arch_%s_%t' not backed up 1 times tag '${TAG}';
backup spfile format '${CURPATH}/%d_SP_%s_%t' tag '${TAG}';
backup current controlfile format '${CURPATH}/%d_C_%s_%t' tag '${TAG}';

release channel d1;
release channel d2;
release channel d3;
release channel d4;
}
!
}

##增量备份
function RMAN_INCR_BACKUP() {
TAG=${BK_DATE}_Incr
touch  ${LOGDIR}/Incr_${BK_DATE}.log
rman target / log=${LOGDIR}/Incr_${BK_DATE}.log<<!
run{
allocate channel d1 device type disk;
allocate channel d2 device type disk;
allocate channel d3 device type disk;
allocate channel d4 device type disk;
sql 'alter system archive log current';
sql 'alter system checkpoint';
backup as compressed backupset incremental level=1 database format '${CURPATH}/%d_incr_0_%s_%t' tag '${TAG}';
sql 'alter system archive log current';
sql 'alter system checkpoint';
backup as compressed backupset archivelog all format '$CURPATH/%d_Arch_%s_%t' not backed up 1 times tag '${TAG}';
backup spfile format '$CURPATH/%d_SP_%s_%t' tag '${TAG}';
backup current controlfile format '$CURPATH/%d_C_%s_%t' tag '${TAG}';
release channel d1;
release channel d2;
release channel d3;
release channel d4;
}
!
}
function RMAN_DELETE_OLD() {
touch  ${LOGDIR}/DelLog_${BK_DATE}.log
rman target / log=${LOGDIR}/DelLog_${BK_DATE}.log<<!
crosscheck archivelog all;
crosscheck backupset;
delete noprompt expired backup;
delete noprompt expired archivelog all;
delete noprompt backup completed before 'sysdate-8';
delete noprompt force archivelog all completed before 'sysdate-2';
list backup summary;
exit
!
}

function CALCULATE_MD5() {
	 if [ ! -f "${MD5_FILE}" ]; then
        touch  "${MD5_FILE}"
	 fi
   find ${CURPATH}/*  -type f -exec md5sum {} \; | sort -k 2  >  ${MD5_FILE}
}

function SEND_JOB_STATUS(){
#写入备份结果至管理主机数据库
/var/opt/mysql/bin/mysql -udba -p'PASSWORD' -h192.168.1.61 -P3310 --ssl-mode=DISABLED   -e "insert into db_backup.t_dbbackup_info(ip,db_type,status,datadir,logdir,md5file,system_name)values('${IPADDR}','${DB_TYPE}','${DBBackStatus}','${CURPATH}','${LOGDIR}','${MD5_FILE}','${SYSNAME}');"
}
function MAIN_JOB() {
  day=$(date +%A)
 # if [ "$day" = "Saturday" ]; then
#备份等级判断及备份状态判断
  if [ "$day" = "Saturday" ]; then
    echo "Today is Saturday";
    RMAN_FULL_BACKUP
    DBBackStatus=$(grep "ORA-" ${LOGDIR}/Full_${BK_DATE}.log |wc -l)
  else
    echo "Todat is not Saturday"
    RMAN_INCR_BACKUP
    DBBackStatus=$(grep "ORA-" ${LOGDIR}/Incr_${BK_DATE}.log |wc -l)
  fi
  RMAN_DELETE_OLD
  CALCULATE_MD5
  DBBackStatus=$((${DBBackStatus} + $(grep "ORA-" ${LOGDIR}/DelLog_${BK_DATE}.log | wc -l)))
#发送报警信息至数据库管理平台
    if [ ${DBBackStatus} -gt 0 ]; then
        echo "DBBackStatus is greater than 0"
        DBBackStatus='fail'
    else
        echo "DBBackStatus is not greater than 0"
        DBBackStatus='OK'
    fi
 SEND_JOB_STATUS
}

MAIN_JOB

添加执行权限

chmod 755  /home/oracle/dba/ora_backup.sh 

增加计划任务

echo "30 0 * * *  /home/oracle/dba/ora_backup.sh" >> /var/spool/cron/oracle

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值