Oracle RAC 实验环境RMAN备份v1.01
环境:RHEL 6.5 + Oracle GI 11.2.0.4 + RAC 11.2.0.4 (2 nodes)
需求:制定RAMN备份策略
版本:v1.01
说明:之前说过本系列的实验环境宗旨就是完全模拟生产环境,所有的操作记录在案,每次版本变更都需要详细记录。
1.前期准备
2.备份脚本
3.定时执行
1.前期准备
确认备份路径?
备份路径是NAS存储的一个目录,通过NFS映射过来。
/etc/fstab增加一行:
192.168.
1.196:/mnt/HD/HD_a2/Public
/public nfs rw,bg,hard,nointr,rsize=
32768,wsize=
32768,tcp,actimeo=
0,vers=
3,timeo=
600
注:这里之所以有很多参数,可参考:《在NAS设备上用NFS服务为RAC数据库和集群件存储Oracle文件时的mount选项》
然后创建挂载点目录,挂载:
mkdir /
public
mount -a
备份路径规划为:/public/hotback/jyzhao
mkdir -p /
public/hotback/jyzhao
确认备份策略?
根据我这里测试环境的数据量,制定出如下备份策略:
制定备份保留策略为保留最近的3份备份
每天11:30进行0级全备,删除保留策略之外的陈旧备份
每天6:00、12:00、18:00进行归档日志备份
每天13:00删除备份目录下的陈旧备份文件夹
注:我这里的备份时间都是白天时段,是因为我的实验环境都是白天开启,晚上关机。而如果是7*24的生产环境,一般都选择晚上业务闲暇时进行定时备份。
2.备份脚本
依据之前的文章《Oracle RMAN 备份一例》,根据本实验环境的具体情况进行备份策略和脚本的制定。
备份脚本部署在RAC节点1(192.168.1.50)的oracle用户下:
2.1 数据库0级备份脚本
vi db0_backup.rman
#!/bin/bash
#db0 level backup
foldername=`date +%Y%m%d`
BACKUP_BASE=/public/hotback/jyzhao
cd $BACKUP_BASE
if [
-d $foldername ]
then
echo 'go on'
else
echo 'need mkdir'
mkdir
$foldername
fi
export ORACLE_BASE=/opt/app/oracle
export ORACLE_HOME=/opt/app/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=jyzhao1
export NLS_LANG=
"simplified chinese_china.ZHS16GBK"
export NLS_DATE_FORMAT=
"YYYY-MM-DD HH24:Mi:SS"
export LD_LIBRARY_PATH=
$ORACLE_HOME/lib:
$ORACLE_HOME/lib32
export PATH=
$ORACLE_HOME/bin:
$ORACLE_HOME/OPatch:/sbin:/bin:/usr/sbin:/usr/bin
rman target /
log=
$BACKUP_BASE/
$foldername/full_LOG.log << RMAN_BACKUP
run{
CONFIGURE RETENTION POLICY TO REDUNDANCY 3;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO
'$BACKUP_BASE/$foldername/controlfile%F';
allocate channel c1 device
type disk;
backup incremental level 0 tag
'db0' database format
'$BACKUP_BASE/$foldername/db0_%d_%T_%s' include current controlfile;
delete noprompt obsolete;
release channel c1;
}
RMAN_BACKUP
2.2 数据库归档日志备份脚本
arch_backup.rman
#!/bin/bash
#arch backup
foldername=`date +%Y%m%d`
BACKUP_BASE=/public/hotback/jyzhao
cd $BACKUP_BASE
if [
-d $foldername ]
then
echo 'go on'
else
echo 'need mkdir'
mkdir
$foldername
fi
export ORACLE_BASE=/opt/app/oracle
export ORACLE_HOME=/opt/app/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=jyzhao1
export NLS_LANG=
"simplified chinese_china.ZHS16GBK"
export NLS_DATE_FORMAT=
"YYYY-MM-DD HH24:Mi:SS"
export LD_LIBRARY_PATH=
$ORACLE_HOME/lib:
$ORACLE_HOME/lib32
export PATH=
$ORACLE_HOME/bin:
$ORACLE_HOME/OPatch:/sbin:/bin:/usr/sbin:/usr/bin
rman target /
log=
$BACKUP_BASE/
$foldername/arch_LOG.log << RMAN_BACKUP
run{
CONFIGURE RETENTION POLICY TO REDUNDANCY 3;
allocate channel c1 device
type disk;
sql
'alter system archive log current';
backup archivelog all delete input format
'$BACKUP_BASE/$foldername/arch_%d_%T_%s';
release channel c1;
}
crosscheck archivelog all;
delete noprompt expired archivelog all;
RMAN_BACKUP