Oracle Rman备份脚本与自动删除重复备份文件

#!/bin/sh
source /home/oracle/.bash_profile

if [ -z $1 ]
then
  echo "Please Input a number,Usage: 0|1|2"
  exit
else
  RMAN_LEVEL=$1
fi

export ORACLE_SID=xxxx
export TODAY=`date '+%Y%m%d'`
export RMAN_DIR=/backup/archivelog/rman/$ORACLE_SID/$TODAY-$RMAN_LEVEL

mkdir -p $RMAN_DIR
cd $RMAN_DIR
LogFile=ora_rman_bk_$ORACLE_SID-L$RMAN_LEVEL-`date '+%Y%m%d'`.log

# rman backup
rman target /  msglog=$RMAN_DIR/$LogFile<<EOF
delete noprompt obsolete;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '$RMAN_DIR/cf%F';
run {
allocate channel c1 type disk;
allocate channel c2 type disk;
backup as compressed backupset incremental level $RMAN_LEVEL filesperset 3 tag 'dbL$RMAN_LEVEL' format '$RMAN_DIR/ora_o_%d_%t%s%p%u'
 database skip readonly include current controlfile;
sql 'alter system archive log current' ;
backup(archivelog all format '$RMAN_DIR/ora_a_%d_%t%s%p%u' delete input);
release channel c1;
release channel c2;
}

list backup;
exit;
EOF

#mail backup log
mail -s "$ORACLE_SID rman L$RMAN_LEVEL backup log $TODAY"  [email protected] < $RMAN_DIR
/$LogFile

顺便提一嘴:

delete noprompt
obsolete与delete obsolete
区别

noprompt :是不用提示,在shell脚本中不需要对发起的delete命令进行“yes
or no”的确认。

在crontab 中设置如下:

0 4 * * 5 sh /backup/scripts/oracle/oracle_rman_bak.sh 0 > /backup/archivelog/logs/rman.log 2>&1

0 4 * * 2 sh /backup/scripts/oracle/oracle_rman_bak.sh 1 > /backup/archivelog/logs/rman.log 2>&1

进行一周一次增量与0级备份。

时间: 2024-11-01 16:19:17

Oracle Rman备份脚本与自动删除重复备份文件的相关文章

Oracle RMAN 备份及不完全恢复(删除archievelog)

RMAN备份命令 backup Database format='/home/oracle/backup/bak_full_%U_%T' tag='bak_full'; sql 'alter system archive log current'; backup archivelog all tag='arc_bak' format='/home/oracle/backup/arch_%U_%T' delete input; backup current controlfile tag='bak

Oracle 11g R2 RAC RMAN备份脚本示例

一.将RAC切换成归档模式 1. 修改数据库的归档模式,通常在安装RAC的时候都会配置归档并且使用闪回区,已经配置过归档下面的方式可以略过. SQL> alter system set cluster_database=false scope=spfile sid='*'; 2. 关闭所有实例(两边都要shutdown) SQL> shutdown immediate 或直接关闭所有实例   $ srvctl stop database -d orcl 3. 在任意一个实例上将数据库启动到mo

ORACLE RMAN备份及还原 RMAN可以进行增量备份:数据库,表空间,数据文件

ORACLE RMAN备份及还原 RMAN可以进行增量备份:数据库,表空间,数据文件 只有使用过的block可以被备份成backup set 表空间与数据文件对应关系:dba_data_files / v$datafile_header 在noarchivelog模式下,可以使用RMAN备份read-only和offline的表空间 ORACLE RMAN停机备份: 备份 RMAN连接上ORACLE,WINDOWS下在命令模式下 RMAN TARGET / 连接本地数据库用的是本地认证模式.RM

Oracle RMAN备份策略

建立增量备份:如果数据库运行于不归档模式下,只能在数据库干净关闭的情况下 ( 以 normal .immediate . transactional 方式关闭 ) 才能进行一致性的增量备份,如果数据库运行于归档模式下,那即可以在数据库关闭状态进行,也可以在数据库打开状态进行备份.再次说明了打开归档模式的优势,归档日志也就是多占些磁盘空间,可也相当于又给数据加了层保护.建立增量备份,实质就是一个参数 incremental level=n ,在执行 backup命令时加上即可,例如,建立一个增量级

rman备份脚本

在数据库中启用块跟踪 alter database enable block change tracking: alter database enable block change tracking using file '/u01/app/oracle/track/blockchange.trc': 取消块跟踪 alter database disable block change tracking 查看是否启动块跟踪 SQL> select * from v$block_change_tra

Oracle RMAN备份中catalog和nocatalog区别

nocatalog方式:用control file作为catalog,每一次备份都要往控制文件里面写好多备份信息,控制文件里面会有越来越多的备份信息,即RMAN的备份信息写在本地控制文件里面. catalog方式:必须要首先要创建目录备份数据库(catalog,也称知识库),建立恢复目录,即数据库的备份信息写到恢复目录里面. 当通过rman nocatalog方式备份Oracle数据库,Oracle使用controlfile存放RMAN的备份信息.因此,当使用Rman nocatalog方式备份

Oracle RMAN 备份一例

Oracle RMAN备份一例: Solaris 10 + Oracle 11.2.0.3 Shell:csh 备份策略:周日0级备份,周一~周六1级备份,每6小时备份归档日志,每天清理历史文件夹. --0级备份脚本: #!/bin/csh #db0 level backup foldername=`date +%Y%m%d` cd /oradata1/backup if [ -d $foldername ] then echo 'go on' else echo 'need mkdir' mk

Oracle RMAN备份深入解析--联机备份

Oracle RMAN备份深入解析--联机备份 RMAN> backup database plus archivelog;    1.首先,进程使用alter system archivelog current命令完成了日志切换操作.    2.进程将现存所有归档重做日志备份    3.开始执行实际的数据库备份操作,此时会发生一次日志切换(alter system archivelog current),同时RMAN备份剩余的归档重做日志(使用backup archivelog all命令).

Oracle 自动化备份脚本

Oracle 日常RMAN备份脚本,很基础.但是对于多个需要备份的Oracle数据库,可以很简单实施,并利于后期批量状态的查询. 备份脚本,基于linux,windows环境需要适当修改.主脚本,会调用2,3步骤的rman.sql&status.sql $ more main.sh #set env #########################Change the below parameter for the different server################## expo