1.在rac01每晚进行全量备份,同时删除过期备份和归档日志文件;
2.为保证节点备份的可用性,备份时rac01本地保存一份,ASM存储保存一份;
3.本地rac01点发生故障时,rac02可以接管备份操作,在rac02上生成全备和ASM中生成备份。
1.rac01上的备份脚本如下:
[oracle@rac01 ~]$ cat node01_rman_backup.sh
#!/bin/bash
ORACLE_SID=testdb1
ORACLE_HOME=/u01/app/oracle/product/19.3.0/db_1
ORACLE_BASE=/u01/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=/tmp/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 '/u01/backup/node1_%d_%T_%u_%p','+DATA/testdb/backup/node1_%d_%T_%u_%p' ;
allocate channel c2 type disk FORMAT '/u01/backup/node1_%d_%T_%u_%p','+DATA/testdb/backup/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 /tmp/node1_backupall_$backtime.log oracle@rac02:/tmp
exit
2.rac02节点脚本如下
[root@rac02 backup]# cat /home/oracle/node02_rman_backup.sh
#!/bin/bash
ORACLE_SID=testdb2
ORACLE_HOME=/u01/app/oracle/product/19.3.0/db_1
ORACLE_BASE=/u01/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 /tmp/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=/tmp/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 '/u01/backup/node2_%d_%T_%u_%p','+DATA/testdb/backup/node2_%d_%T_%u_%p' ;
allocate channel c2 type disk FORMAT '/u01/backup/node2_%d_%T_%u_%p','+DATA/testdb/backup/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
exit
将脚本加入crontab 调度
rac01 和rac02的调度crontab中,每天晚上2点钟开始使用备份脚本,rac02节点每天4点执行备份脚本
[oracle@rac01 ~]$ crontab -l
0 2 * * * /home/oracle/node01_rman_backup.sh >> /home/oracle/node1_rman_bak.log 2>&1
[oracle@rac02 ~]$ crontab -l
0 4 * * * /home/oracle/node02_rman_backup.sh >> /home/oracle/node2_rman_bak.log 2>&1
版权声明:本文为博主原创文章,未经博主允许不得转载。
oracle