案列一、

目标:

1、每天夜间1 点执行;
2、数据库全备,同时备份控制文件及归档日志文件,备份文件保存至: /backup\目录下,并在完成归档日志文件备份后,自动删除已备份的归档日志;
3、备份保留7 天,过期则自动删除;
4、保留操作日志备查;

1. 编写RMAN脚本:

RUN{
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/%F';
ALLOCATE CHANNEL CH1 DEVICE TYPE DISK FORMAT '/backup/%U';
BACKUP DATABASE SKIP INACCESSIBLE FILESPERSET 10
PLUS ARCHIVELOG FILESPERSET 20
DELETE ALL INPUT;
RELEASE CHANNEL CH1;
}
ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK;
CROSSCHECK BACKUPSET;
DELETE NOPROMPT OBSOLETE;

  SKIP INACCESSIBLE:表示跳过不可读的文件。

  SKIP OFFLINE:跳过offline 的数据文件;

  SKIP READONLY:跳过那些所在表空间为read-only 的数据文件;

2. 执行,并将输出日志重定向到指定文件

rman target/ msglog /home/oracle/Script/logs/`date +%F`.log cmdfile=/home/oracle/Script/orclDB_backup.rman 

3.检测结果

[oracle@oracle Script]$ ls /backup/
0mro5acq_1_1 0oro5afm_1_1
0nro5ada_1_1 c-1458478724-20161223-00
[oracle@oracle Script]$ ls logs/
2016-12-23.log

案列二、增量备份

##===========================================================
## db_bak_rman.sh
## created by Robinson
## //
## usage: db_bak_rman.sh <$ORACLE_SID> <$BACKUP_LEVEL>
## BACKUP_LEVEL:
## F: full backup
## : level
## : level
##============================================================
#!/bin/bash
# User specific environment and startup programs if [ -f ~/.bash_profile ];
then
. ~/.bash_profile
fi ORACLE_SID=${}; export ORACLE_SID
RMAN_LEVEL=${}; export RMAN_LEVEL
TIMESTAMP=`date +%Y%m%d%H%M`; export TIMESTAMP
DATE=`date +%Y%m%d`; export DATE
RMAN_DIR=/u02/database/${ORACLE_SID}/backup/rman; export RMAN_DIR
RMAN_DATA=${RMAN_DIR}/${DATE}; export RMAN_DATA
RMAN_LOG=/u02/database/${ORACLE_SID}/backup/rman/log export RMAN_LOG # Check rman level
#======================================================================
if [ "$RMAN_LEVEL" == "F" ];
then unset INCR_LVL
BACKUP_TYPE=full
else
INCR_LVL="INCREMENTAL LEVEL ${RMAN_LEVEL}"
BACKUP_TYPE=lev${RMAN_LEVEL}
fi RMAN_FILE=${RMAN_DATA}/${ORACLE_SID}_${BACKUP_TYPE}_${TIMESTAMP}; export RMAN_FILE
SSH_LOG=${RMAN_LOG}/${ORACLE_SID}_${BACKUP_TYPE}_${TIMESTAMP}.log; export SSH_LOG
MAXPIECESIZE=4G; export MAXPIECESIZE #Check RMAN Backup Path
#========================================================================= if ! test -d ${RMAN_DATA}
then
mkdir -p ${RMAN_DATA}
fi if [ ! -d ${RMAN_LOG} ];
then
mkdir -p ${RMAN_LOG}
fi echo "---------------------------------" >>${SSH_LOG}
echo " " >>${SSH_LOG}
echo "Rman Begin to Working ........." >>${SSH_LOG}
echo "Begin time at:" `date` --`date +%Y%m%d%H%M` >>${SSH_LOG} #Startup rman to backup
#=============================================================================
$ORACLE_HOME/bin/rman log=${RMAN_FILE}.log <<EOF
connect target /
run {
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF DAYS;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '${RMAN_FILE}_%F';
ALLOCATE CHANNEL 'ch1' TYPE DISK maxpiecesize=${MAXPIECESIZE};
ALLOCATE CHANNEL 'ch2' TYPE DISK maxpiecesize=${MAXPIECESIZE};
set limit channel ch1 readrate=;
set limit channel ch1 kbytes=;
set limit channel ch2 readrate=;
set limit channel ch2 kbytes=;
CROSSCHECK ARCHIVELOG ALL;
DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
BACKUP
#AS COMPRESSED BACKUPSET
${INCR_LVL}
DATABASE FORMAT '${RMAN_FILE}_%U' TAG '${ORACLE_SID}_${BACKUP_TYPE}_${TIMESTAMP}';
SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
BACKUP ARCHIVELOG ALL FORMAT '${RMAN_FILE}_arc_%U' TAG '${ORACLE_SID}_arc_${TIMESTAMP}'
DELETE INPUT;
DELETE NOPROMPT OBSOLETE;
RELEASE CHANNEL ch1;
RELEASE CHANNEL ch2;
}
sql "alter database backup controlfile to ''${RMAN_DATA}/cntl_${BACKUP_TYPE}.bak''";
exit; EOF RC=$? cat ${RMAN_FILE}.log >>${SSH_LOG}
echo "Rman Stop working @ time:"`date` `date +%Y%m%d%H%M` >>${SSH_LOG} echo >>${SSH_LOG}
echo "------------------------" >>${SSH_LOG}
echo "------ Disk Space ------" >>${SSH_LOG}
df -h >>${SSH_LOG} echo >>${SSH_LOG} if [ $RC -ne "" ]; then
echo "------ error ------" >>${SSH_LOG}
else
echo "------ no error found during RMAN backup peroid------" >>${SSH_LOG}
rm -rf ${RMAN_FILE}.log
fi #Remove old backup than days
#============================================================================
RMDIR=${RMAN_DIR}/`/bin/date +%Y%m%d -d "3 days ago"`; export RMDIR
echo >>${SSH_LOG}
echo -e "------Remove old backup than 3 days ------\n" >>${SSH_LOG} if test -d ${RMDIR}
then
rm -rf ${RMDIR}
RC=$?
fi echo >>${SSH_LOG} if [ $RC -ne "" ]; then
echo -e "------ Remove old backup exception------ \n" >>${SSH_LOG}
else
echo -e "------ no error found during remove old backup set peroid------ \n" >>${SSH_LOG}
fi exit

运行:

[oracle@oracle Script]$ sh  db_rman.sh orcl
RMAN> RMAN> > > > > > > > > > > > > > > > > > > > > > > > RMAN> RMAN> [oracle@oracle Script]$

结果:

[oracle@oracle rman]$ ls
log
[oracle@oracle rman]$ ls /
cntl_lev0.bak orcl_lev0_201612280027_arc_2qroidlp_1_1
orcl_lev0_201612280027_2mroidj8_1_1 orcl_lev0_201612280027_c---
orcl_lev0_201612280027_2nroidj9_1_1 orcl_lev0_201612280027_c---
orcl_lev0_201612280027_arc_2proidlp_1_1

RMAN的实战篇--备份脚本的更多相关文章

  1. RMAN冷备份、一致性备份脚本

    RMAN冷备份.一致性备份脚本 run{ shutdown immediate; startup mount; allocate channel c1 type disk; allocate chan ...

  2. (转)企业Shell实战-MySQL分库分表备份脚本

    本文来自http://www.xuliangwei.com/xubusi/252.html 免费视频讲解见 http://edu.51cto.com/course/course_id-5064.htm ...

  3. RMAN详细教程(四):备份脚本实战操作

    RMAN详细教程(一):基本命令代码 RMAN详细教程(二):备份.检查.维护.恢复 RMAN详细教程(三):备份脚本的组件和注释 RMAN详细教程(四):备份脚本实战操作 1.为了安全起见,先将数据 ...

  4. RMAN备份脚本一列分享

    在ORACLE数据库中,RMAN备份的脚本非常多,下面介绍一例shell脚本如何通过RMAN备份,以及FTP上传RMAN备份文件以及归档日志文件的脚本. fullback.sh 里面调用RMAN命令做 ...

  5. 一个简单的RMAN自动备份脚本

    rman备份脚本: #!/bin/bashsource /home/oracle/.bash_profile rman target / << EOFrun {allocate chann ...

  6. RMAN多种备份脚本分享

    1.相关参数介绍: 命令行参数 描述 TARGET 为目标数据库定义的一个连接字符串,当连接到一个目标数据库时,该连续是SYSDBA连接.该用户拥有启动和关闭数据库的权利,必须属于OSDBA组,必须建 ...

  7. Linux 平台下 RMAN 全备 和 增量备份 shell 脚本

    转:http://blog.csdn.net/tianlesoftware/article/details/5740630 全备脚本 以 nocatalog 模式为例: Shell 脚本: ##### ...

  8. RMAN兼容性、控制文件自动备份、保存时间、备份策略、备份脚本(二)

    RMAN 程序的兼容性 RMAN 环境由以下5部分组成:(1) RMAN executable(2) Recovery catalog database(3) Recovery catalog sch ...

  9. 【原创】rman 全库备份脚本

    rman 全库备份脚本 run { allocate channel d1 type disk; allocate channel d2 type disk; backup full database ...

随机推荐

  1. MyEclipse 8.5整合Git,并在Github上发布项目【转】

    最近Git火得如日中天,而且速度体验和团队模式都很不错.手头正好有个学生实训项目,时间紧任务重,而且学校内网管理太紧,所以就想借助于Internet的分布式开发,因此想到了Github. 经过一天的调 ...

  2. jquery实现nav的下拉

    <script type="text/javascript"> $(function(){ //tab_flag 根据此标记判断是否由父级nav指向了nav_list ...

  3. 弱引用?强引用?未持有?额滴神啊-- Swift 引用计数指导

    ARC ARC 苹果版本的自动内存管理的编译时间特性.它代表了自动引用计数(Automatic Reference Counting).也就是对于一个对象来说,只有在引用计数为0的情况下内存才会被释放 ...

  4. 循环调用MAIN

    --单位转移录入declare oi_errcode integer; oc_errtext varchar2(100);begin for p in (select * from ssunitinf ...

  5. pptp记录日志

    /etc/ppp/ip-up #!/bin/bash # This file should not be modified -- make local changes to # /etc/ppp/ip ...

  6. Python实现抓取页面上链接

    方法一:  # coding:utf-8 import re import requests # 获取网页内容 r = requests.get('http://www.163.com') data  ...

  7. 复制 replication 新增表 add new article

    immediate_sync   false   Synchronization files are created only if there are new subscriptions. Subs ...

  8. 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数011,ocr,字符识别

    <zw版·Halcon-delphi系列原创教程> Halcon分类函数011,ocr,字符识别 为方便阅读,在不影响说明的前提下,笔者对函数进行了简化: :: 用符号“**”,替换:“p ...

  9. Javascript图片无缝滚动

    http://www.cnblogs.com/shouce/p/5068787.html

  10. [Effective JavaScript 笔记]第7章:并发--个人总结

    前言 这一章的内容学到了事件队列和异步的API.js只是运行在其他应用程序的脚本语言.js即依赖于应用程序,也独立与应用程序.可以使它可以在多平台,多种环境上运行.ECMAScript标准中没有关于并 ...