以前在博客里面介绍了RMAN备份脚本一列分享,通过RMAN备份到本地路径,然后通过FTP将备份文件上传到FTP服务器。 下面简单介绍另外一例RMAN备份解决方案,下面是我简单画的一个图(很少画图,感觉有点粗制滥造)。

首先将数据库备份到本地服务器的一个目录下(目录是按日期格式生成,本地备份保留周期视存储情况而定.一般一天即可)。

然后将备份文件通过Symantec Backup Exec 2012 Agent 将本地备份上传到磁带设备(容灾备份,磁带备份保留90天)。

最后清理本地备份路径下的备份。

如上所示,只有三个步骤,整体思路非常简单,下面介绍一下实施的具体脚本

首先介绍一下备份脚本backup_db_xxxx.sh (注意xxx为数据库实例名称,脚本里面很多xxx需要根据具体场景进行替换,例如实例名称、邮件地址等)

   1: #********************************************************************************

   2: #  FileName     :               backup_db_xxxx.sh 

   3: #********************************************************************************

   4: #  Author       :               Tommy

   5: #  CreateDate   :               2012-07-18

   6: #  Description  :               this script is backup the oracle database by rman

   7: #********************************************************************************

   8: #   Parameters  :                         参数说明

   9: #********************************************************************************

  10: #                                    此脚本无参数,直接调用即可

  11: #********************************************************************************

  12: #      Modified Date    Modified User     Version            Modified Reason

  13: #********************************************************************************

  14: #      2014-04-26         Kerry           V1.0.1       脚本部分地方、调整脚本格式

  15: # 

  16: #********************************************************************************

  17:  

  18:  

  19:  

  20: #REM - USER DEFINED VARIABLES -

  21: export DATESTAMP=`date '+%F'`

  22:  

  23: #REM - Oracle specific settings: -

  24: . /home/oracle/.bash_profile

  25: export CATALOG=NOCATALOG

  26:  

  27: #REM - Specify the Logfiles -

  28: export BACKUP_FULL_LOG=/u04/backup/backuplogs/rman_backup_db_xxx_$DATESTAMP.log

  29:  

  30: #REM - BACKUP SECTION -

  31: echo $BACKUP_FULL_LOG

  32: rman target / $CATALOG cmdfile=/u04/backup/scripts/backup_db_xxx.rcv log=$BACKUP_FULL_LOG

  33:  

  34: EMAILTMP=/u04/backup/backuplogs/rman_backup_db_xxx_$DATESTAMP.TMP

  35:  

  36: ######################## config email parameters ##########################

  37: echo 'Content-Type: text/html' > $EMAILTMP

  38: echo 'To: xxx@xxx.com, xxx@xxx.com,xxx@xxx.com' >> $EMAILTMP

  39: echo 'Subject : Backup Status - xxxx(RMAN hot backup)' >> $EMAILTMP

  40: echo '<pre style="font-family: courier; font-size: 9pt">' >> $EMAILTMP

  41: ###########################################################################

  42:  

  43: echo "=======================================================" >> $EMAILTMP

  44: echo "================ Daily Backup for xxxx ================" >> $EMAILTMP

  45: echo "=======================================================" >> $EMAILTMP

  46: echo " " >> $EMAILTMP 

  47:  

  48: cat $BACKUP_FULL_LOG >> $EMAILTMP 2>&1

  49: echo " " >> $EMAILTMP 

  50: echo "================ End of Rman Backup ==================" >> $EMAILTMP

  51: echo "======================================================" >> $EMAILTMP

  52:  

  53: /usr/sbin/sendmail -t -f "BackupAdmin" < $EMAILTMP

  54: rm $EMAILTMP

 
backup_db_xxx.rcv 文件其实RMAN的命令文件(backup_db_xxxx.sh 里面调用)。如下所示
   1: run {

   2: CONFIGURE RETENTION POLICY TO REDUNDANCY 2; # default

   3: CONFIGURE BACKUP OPTIMIZATION ON;

   4: CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

   5: CONFIGURE CONTROLFILE AUTOBACKUP ON;

   6: CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u04/backup/backupsets/ora_cf%F';

   7: CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default

   8: CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

   9: CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

  10: CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/u04/backup/backupsets/ora_df%t_s%s_s%p';

  11: CONFIGURE MAXSETSIZE TO UNLIMITED; # default

  12: CONFIGURE ENCRYPTION FOR DATABASE OFF; # default

  13: CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default

  14: CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default

  15: sql 'alter system archive log current';

  16: backup as compressed backupset database plus archivelog delete input;

  17: copy current controlfile to '/u04/backup/backupsets/controlfile.copy';

  18: }

  19: exit

delete_obj_xxxx.sh  文件如下所示:

   1: #*****************************************************************************************

   2: #  FileName     :               delete_obj_xxxx.sh 

   3: #*****************************************************************************************

   4: #  Author       :               Tommy

   5: #  CreateDate   :               2012-07-18

   6: #  Description  :               this script is delete the obsolete object through rman

   7: #*****************************************************************************************

   8: #   Parameters  :                                             参数说明

   9: #*****************************************************************************************

  10: #                                                                此脚本无参数,直接调用即可

  11: #*****************************************************************************************

  12: #      Modified Date    Modified User     Version            Modified Reason

  13: #*****************************************************************************************

  14: #      2014-04-26         Kerry           V1.0.1         修改脚本部分地方、调整脚本格式

  15: # 

  16: #                               

  17: #                               

  18: #*****************************************************************************************

  19:  

  20:  

  21: #REM - USER DEFINED VARIABLES -

  22: export DATESTAMP=`date '+%F'`

  23:  

  24: #REM - Oracle specific settings: -

  25: . /home/oracle/.bash_profile

  26: export CATALOG=NOCATALOG

  27:  

  28: #REM - Specified the logfiles -

  29: export BACKUP_FULL_LOG=/u04/backup/backuplogs/rman_delete_ob_xxx_$DATESTAMP.log

  30:  

  31: #REM - BACKUP SECTION -

  32: echo $BACKUP_FULL_LOG

  33: rman target / $CATALOG cmdfile=/u04/backup/scripts/delete_ob_xxx.rcv log=$BACKUP_FULL_LOG

/u04/backup/scripts/delete_ob_xxx.rcv文件为RMAN的cmdfile,如下所示

   1: run {

   2: CONFIGURE RETENTION POLICY TO REDUNDANCY 2; # default

   3: CONFIGURE BACKUP OPTIMIZATION ON;

   4: CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

   5: CONFIGURE CONTROLFILE AUTOBACKUP ON;

   6: CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u04/backup/backupsets/ora_cf%F';

   7: CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default

   8: CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

   9: CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

  10: CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/u04/backup/backupsets/ora_df%t_s%s_s%p';

  11: CONFIGURE MAXSETSIZE TO UNLIMITED; # default

  12: CONFIGURE ENCRYPTION FOR DATABASE OFF; # default

  13: CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default

  14: CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default

  15: sql 'alter system archive log current';

  16: delete obsolete;

  17: }

然后再crontab作业里面配置作业

15 00 * * * /u04/backup/scripts/backup_db_xxx.sh >/dev/null 2>&1

00 08 * * * /u04/backup/scripts/delete_ob_xxx.sh >/dev/null 2>&1

也许会有人问,不是还有Symantec Backup Exec Agent 将备份文件上带吗,其实关于这个,首先需要在Linux服务器安装Symantec Backup Exec 2012 Agent,这个可以参考我博客Symantec Backup Exec 2012 Agent For Linux安装。在配置文件指定Symantec Backup Exec Server,然后只需要在服务器设定一个作业定时备份文件即可。感觉没有啥可以说的。

Oracle RAMN 备份解决方案一例的更多相关文章

  1. Oracle RMAN 备份一例

    Oracle RMAN备份一例: Solaris 10 + Oracle 11.2.0.3 Shell:csh,安装有bash,脚本调用bash 备份策略:周日0级备份,周一~周六1级备份,每6小时备 ...

  2. Oracle Ora 错误解决方案合集

    注:本文来源于 < Oracle学习笔记 --- Oracle ORA错误解决方案 > ORA-00001: 违反唯一约束条件 (.)错误说明:当在唯一索引所对应的列上键入重复值时,会触发 ...

  3. oracle 数据库备份、还原、和使用心得(表丢失、视图丢失的解决办法)

    一.oracle数据备份:exp 关键字     说明(默认值)                  关键字      说明(默认值) --------------------------------- ...

  4. Oracle 数据库备份和恢复配置

    可能的失败及其解决方法 失败类型 我们坑你遇到的失败或错误分为两大类:物理和逻辑.物理错误一般是硬件错误或使用数据库的应用程序中的软件错误,而逻辑错误一般在终端用户级别(数据库用户和管理员). 按从轻 ...

  5. Oracle DB备份恢复篇之丢失控制文件

    实验目的 本篇主要模拟控制文件丢失后,如何根据实际情况恢复数据库,才能使数据库尽可能不丢失数据. 实验环境 1)Linux系统环境 [oracle@DG1 ~]$ lsb_release -a LSB ...

  6. ORACLE RMAN备份及还原 RMAN能够进行增量备份:数据库,表空间,数据文件

    ORACLE RMAN备份及还原   RMAN能够进行增量备份:数据库.表空间.数据文件 仅仅有使用过的block能够被备份成backup set 表空间与数据文件相应关系:dba_data_file ...

  7. Oracle数据库备份/导出(exp/expd)、导入(imp/impd)

    ​ 常用的oracle数据库备份(导入/导出)有两种,分别是exp/imp和expd/impd,前者是Orace早期版本带有的导入导出工具,后者是Oracle10g后出现的,下面进行分别介绍! 1.e ...

  8. Oracle 定时备份数据库

    [操作说明] 在前面的博客中,学习了如何Oracle如何备份数据库,实际开发过程中数据库应该每隔一段时间就要备份一次,所以我们就需要一个定时执行这个代码的功能,同时备份的文件可能进行一些处理,比如压缩 ...

  9. oracle(数据备份)

    1 --oracle数据备份(三种方法) 2 --1.逻辑备份与恢复:用Oracle提供的工具,导入/导出(exp,imp),数据 3 --泵导入/导出(impdp,expdp),装入器(SQL*Lo ...

随机推荐

  1. 构建自己的PHP框架--实现Model类(2)

    在上一篇博客中我们简单实现了findOne方法,但我们可以看到,还是有一些问题的,下面我们来修正一下这些问题. 首先是返回的数据中,数字被转换成了字符串.我们需要的是数字啊... PDO中有属性可以支 ...

  2. Oracle在线重定义DBMS_REDEFINITION 普通表—>分区表

    实验环境:RHEL 6.4 + Oracle 11.2.0.3实验:在线重定义 普通表 为 分区表,包括主键对应的索引都改造为分区索引. 1,构造普通表t_objects conn test1/tes ...

  3. struts2学习笔记--struts.xml配置文件详解

    这一节主要讲解struts2里面的struts.xml的常用标签及作用: 解决乱码问题 <constant name="struts.i18n.encoding" value ...

  4. 【原创】新手入门一篇就够:从零开发移动端IM

    一.前言 IM发展至今,已是非常重要的互联网应用形态之一,尤其移动互联网时代,它正以无与论比的优势降低了沟通成本和沟通代价,对各种应用形态产生了深远影响. 做为IM开发者或即将成为IM开发者的技术人员 ...

  5. SQL Server基础之《视图的概述和基本操作》

     数据库中的视图是一个虚拟表.同真实的表一样,视图包含一系列带有名称的列和行数据,行和列数据用来自由定义视图和查询所引用的表,并且在引用视图时动态产生.本篇将通过一些实例来介绍视图的概念,视图的作用, ...

  6. Struts2 源码分析——拦截器的机制

    本章简言 上一章讲到关于action代理类的工作.即是如何去找对应的action配置信息,并执行action类的实例.而这一章笔者将讲到在执行action需要用到的拦截器.为什么要讲拦截器呢?可以这样 ...

  7. Hibernate —— 检索策略

    一.Hibernate 的检索策略本质上是为了优化 Hibernate 性能. 二.Hibernate 检索策略包括类级别的检索策略.和关联级别的检索策略(<set> 元素) 三.类级别的 ...

  8. null和undefined的一些区别

    读了阮一峰的博客,自己总结一下,便记录一篇博客 在javacript的基本类型中,有2种基本类型,只有1个值,便是null和undefined,都表示的是"无".在一定程度上是相等 ...

  9. webpack+vue-cli项目打包技巧

    1.设置config文件夹index.js中productionSourceMap的值为false,也就是设置webpack配置中devtool为false,打包后文件体积可以减少百分之八十!!!!! ...

  10. 【转】App开放接口api安全性—Token签名sign的设计与实现

    前言 在app开放接口api的设计中,避免不了的就是安全性问题,因为大多数接口涉及到用户的个人信息以及一些敏感的数据,所以对这些接口需要进行身份的认证,那么这就需要用户提供一些信息,比如用户名密码等, ...