Oracle里使用Rman实现数据库增量备份--爱上你很容易

 

一直都没有整理有关RMAN的增量备份,上次在群里有人问过这个问题,虽然在群里给群里演示了增量备份的过程,还用图做了图解, 
不过在QQ里的图没有保留下来,很是可惜,前几天有客户刚好需要备份的功能,用RMAN做了增量备份的脚本,几经测试,已经OK 
在客户的机器上已经使用上了,刚好CSDN里的网友又问到了这个问题,这次要好好记一下了 

这里我的备份的策略,还是比较常见的策略。这里不需要创新,公众的经验是进过市场和现实的考验的。 

备份策略: 
星期天做0级备份 
星期一,星期四做一级增量备份 
星期二,星期三,星期五,星期六做二级增量备份, 
这样的备份要要要恢复到任何一个时刻,都可以很方便的找到我们需要的恢复文件。 

策略定下来了,下面就是我们的crontab了 


00 4 * * 0 $ORACLE_BASE/admin/$ORACLE_SID/rman/scripts/do_rman.sh 0 
00 4 * * 1,4 $ORACLE_BASE/admin/$ORACLE_SID/rman/scripts/do_rman.sh 1 
00 4 * * 2,3,5,6 $ORACLE_BASE/admin/$ORACLE_SID/rman/scripts/do_rman.sh 2 

再来看看我们的备份的脚本吧 
do_rman.sh 

 

#!/bin/bash 
#set env 
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK 
export PATH=$ORACLE_HOME/bin:$PATH 

TARGET_SID=$TARGET_SID 
RMAN_SID=$RMAN_SID 

export PATH=$ORACLE_HOME/bin:$PATH 
DATE=`date +%w` 
DATE_2=`date +%Y%m%d` 
BACKUP_PATH=$ORACLE_BASE/admin/$ORACLE_SID/rman/backup 
LEVEL=$@ 
BIN=$ORACLE_HOME/bin 
# Delete the data backuped last time 

rm -rf $BACKUP_PATH/data/$DATE/* 

if [ $# != 1 ]; then 
echo "usage: do_rman.sh n 
where n is the rman backup level(0,1,2 is permitted)." 
exit 1 
fi 
if [ $@ -ne 0 -a $@ -ne 1 -a $@ -ne 2 ]; then 
echo "usage: do_rman.sh n 
where n is the rman backup level(Only 0,1,2 is permitted)." 
exit 2 
fi 
echo "[do_rman] rman is starting." 
if [ $LEVEL = 0 ]; then 
$BIN/rman log $BACKUP_PATH/log/level.$TARGET_SID.$LEVEL.$DATE_2.log <<EOF 
connect target /; 
connect catalog rman/rman@$RMAN_SID; 
resync catalog; 
run{ 
allocate channel c1 type disk ; 
crosscheck backupset of archivelog all ; 
backup filesperset 3 format '$BACKUP_PATH/data/$DATE/arch.%d.live.$LEVEL.%t'(archivelog from time 'sysdate-7' all delete input) ; 
delete noprompt expired backupset of archivelog all ; 
release channel c1 ; 


run{ 
allocate channel c2 type disk ; 
crosscheck backupset of database ; 
backup incremental level $LEVEL filesperset 3 format '$BACKUP_PATH/data/$DATE/data.%d.live.$LEVEL.%t'(database include current controlfile) ; 
delete noprompt expired backupset of database ; 
delete noprompt obsolete ; 
release channel c2 ; 

exit; 
EOF 

else 
$BIN/rman log $BACKUP_PATH/log/level.$TARGET_SID.$LEVEL.$DATE_2.log <<EOF 
connect target sys/sys202; 
connect catalog rman/rman@$RMAN_SID; 
resync catalog; 
run{ 
allocate channel c1 type disk ; 
crosscheck backupset of archivelog all ; 
backup filesperset 3 format '$BACKUP_PATH/data/$DATE/arch.%d.live.$LEVEL.%t' (archivelog from time 'sysdate-1' all) ; 
delete noprompt expired backupset of archivelog all ; 
release channel c1 ; 


run{ 
allocate channel c2 type disk ; 
crosscheck backupset of database ; 
backup incremental level $LEVEL filesperset 3 format '$BACKUP_PATH/data/$DATE/data.%d.live.$LEVEL.%t' (database include current controlfile) ; 
delete noprompt expired backupset of database ; 
delete noprompt obsolete ; 
release channel c2 ; 


exit; 
EOF 

fi 

echo "[do_rman] rman is success."




 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

inthirties

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值