版权声明:本文为博主原创文章,未经博主允许不得转载。 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