oracle RAC RMAN自动备份脚本

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/moscot_wu/article/details/77877188

双节点服务器配置信息如下

编号

名称

用户

版本

备注

1

Oracle linux

TEST

7.3

扫描二维码关注公众号,回复: 6149755 查看本文章

2

Grid Infrastructure

Grid

12.2.0.1.0

3

Oracle database

Oracle

12.2.0.1.0

备份要求

条件一:在node1每晚进行全量备份,同时删除过期备份和归档日志文件;

条件二:为保证节点备份的可用性,备份时node1本地保存一份,ASM存储保存一份;

条件三:本地node1点发生故障时,node2可以接管备份操作,在node2上生成全备和ASM中生成备份。

脚本如下:

node1 节点脚本node1_rmanbak.sh

#!/bin/bash
ORACLE_SID=ORCL1
ORACLE_HOME=/oracle/app/oracle/product/12.2.0/dbhome_1
ORACLE_BASE=/oracle/app/oracle
export ORACLE_SID=$ORACLE_SID
export ORACLE_HOME=$ORACLE_HOME
export ORACLE_BASE=$ORACLE_BASE
backtime=`date +%Y%m%d`
echo $backtime
$ORACLE_HOME/bin/rman log=/oracle/rmanbak/log/node1_backupall_$backtime.log <<EOF
connect target /
run{ 
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 2;
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 2;
allocate channel c1 type disk FORMAT '/oracle/rmanbak/ORCL/node1_%d_%T_%u_%p','+FRA/ORCL/BACKUPSET/node1_%d_%T_%u_%p' ;
allocate channel c2 type disk FORMAT '/oracle/rmanbak/ORCL/node1_%d_%T_%u_%p','+FRA/ORCL/BACKUPSET/node1_%d_%T_%u_%p';
backup database ;
backup archivelog all  delete input;
report obsolete; 
delete noprompt  obsolete; 
crosscheck backup;
crosscheck archivelog all;
delete noprompt expired backup;
release channel c1;
release channel c2;
}
EOF
echo "backup complete!"
scp /oracle/rmanbak/log/node1_backupall_$backtime.log oracle@OracleNode2:/oracle/rmanbak/log/
exit

node2 备份脚本node2_rmanbak.sh

#!/bin/bash
ORACLE_SID=ORCL2
ORACLE_HOME=/oracle/app/oracle/product/12.2.0/dbhome_1
ORACLE_BASE=/oracle/app/oracle
export ORACLE_SID=$ORACLE_SID
export ORACLE_HOME=$ORACLE_HOME
export ORACLE_BASE=$ORACLE_BASE
backtime=`date +%Y%m%d`
echo $backtime
if [ -f /oracle/rmanbak/log/node1_backupall_$backtime.log ]
then
echo "node1 backup have been success!"
exit
else
echo "node1 backup have been filed,start node2 backup!"
$ORACLE_HOME/bin/rman log=/oracle/rmanbak/log/node2_backupall_$backtime.log <<EOF
connect target /
run{ 
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 2;
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 2;
allocate channel c1 type disk FORMAT '/oracle/rmanbak/ORCL/node2_%d_%T_%u_%p','+FRA/ORCL/BACKUPSET/node1_%d_%T_%u_%p' ;
allocate channel c2 type disk FORMAT '/oracle/rmanbak/ORCL/node2_%d_%T_%u_%p','+FRA/ORCL/BACKUPSET/node2_%d_%T_%u_%p';
backup database ;
backup archivelog all  delete input;
report obsolete; 
delete noprompt  obsolete; 
crosscheck backup;
crosscheck archivelog all;
delete noprompt expired backup;
release channel c1;
release channel c2;
}
EOF
echo "node2 backup complete!"
fi
#scp /oracle/rmanbak/log/node1_backupall_$backtime.log oracle@OracleNode2:/oracle/rmanbak/log/
exit


将脚本加入crontab 调度

node1 的调度crontab中,每天晚上1点钟开始使用备份脚本

#RAC rman backup scripts
0 1 * * * /oracle/rmanbak/node1_rmanbak.sh >> /oracle/rmanbak/log/node1_rmanbak.log 2>&1

######注意本处之前没有使用2>&1 导致部分执行失败记录并为记录,备份存在风险,目前已加上20190502

node2 的调度,每天晚上2点钟检测1节点是否备份正常,如不正常则开始接管全备

#RAC rman backup scripts
0 2 * * * /oracle/rmanbak/node2_rmanbak.sh >> /oracle/rmanbak/log/node2_rmanbak.log 2>&1


###原因同上

本地的备份/oracle/rmanbak/ORCL下使用操作系统命令即可查看。

ASM磁盘组中的备份集我们用如下方法进入

使用oracle或者grid用户登录,输入ASM的环境变量

. orenv 输入ASM实例名:+ASM1(数字为节点N)

ASMCMD进入后使用基本linux命令查看即可。

##########本例中由于对crontab 的标准输出理解不透彻,导致出现异常未能正常检测。2>&1

猜你喜欢

转载自blog.csdn.net/moscot_wu/article/details/77877188