RMAN NOCATALOG备份方案

        我管理的某个数据库最近打算使用RMAN来进行数据库备份。对RMAN有一些简单说明如下:

        1. 若要使用RMAN,数据库必须运行在归档模式下。

        2. RMAN大概有几种备份模式:全量、增量,各种备份级别的关系如下

LEVEL 0 : 相当于全备,他是基础备份,没有执行过LEVEL=0的备份将无法进行LEVEL1或更高级别的备份。

LEVEL 1 : 上次备份过的0或者1至今的变化。

LEVEL 2 : 上次备份至今的增量,无论是0或1或2。

    因此,我制定了如下备份策略

10356975_201208131627161.jpg

        以下是我的备份脚本

#!/usr/bin/bash
#Author: Feng
#Function: backup database with rman

#set variable
export ORACLE_SID=nmcdb
export ORACLE_HOME=/app/oracle/product/10.2.0
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

#set run variable
RMAN=$ORACLE_HOME/bin/rman
SQLPLUS=$ORACLE_HOME/bin/sqlplus
FILE1=`date +%Y%m%d`
FILE2=`date +%H%M`
LOGFILE=/ainmc/bak/rmanbak/rmanbk$FILE1-$FILE2.LOG

#backup dest
DBDEST=/ainmc/bak/rmanbak/${ORACLE_SID}
CTLFILE=/ainmc/bak/rmanbak/${ORACLE_SID}/${ORACLE_SID}_ctl_$FILE1.ctl

#increate backup set
WEEK_DAILY=`date +%a`
case "$WEEK_DAILY" in
      "Mon")
           BAK_LEVEL=2
           ;;
      "Tue")
           BAK_LEVEL=2
           ;;
      "Wed")
           BAK_LEVEL=2
           ;;
      "Thu")
           BAK_LEVEL=1
           ;;
      "Fri")
           BAK_LEVEL=2
           ;;
      "Sat")
           BAK_LEVEL=2
           ;;
      "Sun")
           BAK_LEVEL=0
           ;;
      "*")
           BAK_LEVEL=error
esac
export BAK_LEVEL=$BAK_LEVEL
echo $BAK_LEVEL

echo "begin running rman to backup archivelog and note the backup log" > $LOGFILE

echo "-----------------------backup start---------------------" > $LOGFILE

echo "----Today is $WEEK_DAILY incremental level=$BAK_LEVEL----" > $LOGFILE
$RMAN nocatalog TARGET sys/******@nmcdb msglog $LOGFILE append <

CROSSCHECK archivelog all;

run
{
  CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;  (保存7天内的备份)
  CONFIGURE CONTROLFILE AUTOBACKUP ON; (自动备份controlfile)
  CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '$DBDEST/%F'; (格式化备份的文件格式)
  ALLOCATE CHANNEL CHL1 DEVICE TYPE DISK;
  ALLOCATE CHANNEL CHL2 DEVICE TYPE DISK;
  ALLOCATE CHANNEL CHL3 DEVICE TYPE DISK;  (同时打开3个通道并行)
  sql 'alter system archive log current';
  backup incremental level=$BAK_LEVEL database format '$DBDEST/NMCDB_lvl${BAK_LEVEL}_%U_%T.bkp' FILESPERSET 10 TAG='NMCDB_lvl${BAK_L
EVEL}'; (incremental level = xx,备份方式为增量备份级别为xx;FILESPERSET 10 每10个数据文件写入一个备份片,这个要参考数据文件的大小以及操作系统所允许的最大单个文件大小,如果设置得太大会导致单个文件大小超过操作系统限制而报错;backup 可以启用压缩,命令如 backup AS COMPRESSED BACKUPSET incremental level=xxx 启用压缩功能,但是启用压缩以后,写入变得会非常慢,是不压缩的1/5不到。)
  backup spfile tag='spfile' format='$DBDEST/NMCDB_SPFILE_%U_%T.ora';
  backup archivelog all tag='arc_bak' format='$DBDEST/NMCDB_arch_%U_%T' filesperset 100 delete all input;
  RELEASE CHANNEL CHL1;
  RELEASE CHANNEL CHL2;
  RELEASE CHANNEL CHL3;
}

#delete the OBSOLETE backup pice
#ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK;
CROSSCHECK BACKUPSET; (核对备份集是否有效)
DELETE NOPROMPT OBSOLETE; (删除无效的备份集)

exit;
END_OF_COMMAND

#when the rman end, begin backup controlfile using sqlplus
$SQLPLUS "/ as sysdba" <alter database backup controlfile to '$CTLFILE';
exit;
END_OF_COMMAND

echo "-----------------------backup end---------------------" >> $LOGFILE

 

        可以使用下述方式来验证备份集

在RMAN下运行:

    restore validate controlfile;
    restore validate database;

 

 

fj.png1.jpg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10356975/viewspace-740886/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10356975/viewspace-740886/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值