2019独角兽企业重金招聘Python工程师标准>>>

进阶篇则主要是rman的一些功能扩展和增加功能,利用前篇你已经完全可以完成数据库的备份,而通过本篇你可以更好更方便的完成数据库的备份。

一、建立增量备份

  如果数据库运行于不归档模式下,那么你只能在数据库干净关闭的情况下(以NORMAL、IMMEDIATE、TRANSACTIONAL方式关闭)才能进行一致性的增量备份,如果数据库运行于归档模式下,那即可以在数据库关闭状态进行,也可以在数据库打开状态进行备份。再次说明了打开归档模式的优势,归档日志也就是多占些磁盘空间,好处不是一些是很多,可是也相当于又给数据库加了层保险啊。

  建立增量备份也是相当简单,实质就是一个参数INCREMENTAL LEVEL=n,在执行BACKUP命令时加上即可,例如,建立一个增量级别0的全库备份:

RMAN> BACKUP INCREMENTAL LEVEL=0 DATABASE;

  再例如,建立一个增量级别1的users01.dbf数据文件备份

RMAN> BACKUP INCREMENTAL LEVEL=1 TABLESPACE SYSTEM DATAFILE ¨ F:\ORAHOME1\ORADATA\JSSWEB\ USERS01 . DBF¨;

  注:Rman默认创建的增量备份是Differential方式,如果要建立Cumulative方式的增量备份,在执行BACKUP命令时显式指定即可,例如:

RMAN> BACKUP INCREMENTAL LEVEL=2 CUMULATIVE DATABASE;

  关于增量备份概念性解释,比如Differential与Cumulative两种方式间的区别请阅读后续内容。

二、建立镜像复制

  首先大家需要明了这个概念,rman中的镜像复制实质与通过操作系统copy命令备份相同,甚至连命令的格式都相似,只不过直接应用操作系统的copy命令复制数据文件时,只是文件拷贝,而rman的copy则能够在复制的同时,验证数据的有效性。

  个人认为rman中的镜像复制应用有限,而且也体现不出rman的优势,所以俺也只是大致了解了概念,没有进行过实际操作,感兴趣的朋友可以自己做做试验,这里就不多做介绍了。

三、建立冗余备份

  RMAN 提供了一种更谨慎的备份策略: Duplexed 方式备份 ,其实质即是在生成备份集的同时,向指定位置生成指定份数(最大不超过4份)的备份集复制,以避免在灾难性事故时数据库损坏和备份丢失的情况下导致完全崩溃,提高备份可用性。当然,这是人类美好的愿意,对于那些没有异机异地备份条件的,假如机房发生火灾、地震之类大灾难,就算dba把备份文件复制了100份也照样玩完,上述是个假设,万勿对号入座,火灾、地震也不是哪都会发生地,大家好好活着,别害怕。

  RMAN 中提供了三种方式实现Duplexed方式备份:

  1 、在RMAN中执行BACKUP命令时显式指定COPIES参数。例如:

RMAN>  BACKUP COPIES 3 DATABASE;

  上述命令将会在全库备份的同时,自动生成当前备份集的2份拷贝到默认备份目录。

  2 、在RUN{}命令块中利用SET BACKUP COPIES命令为该命令块中所有的BACKUP命令设置Duplexed方式,例如:

RMAN>  RUN{2>SET BACKUP COPIES 2;3>BACKUP DEVICE TYPE DISK FORMAT ¨D:\BACKUP1\%U¨,¨D:\BACKUP2\%U¨ 4>TABLESPACE USERS,SALES;5>}

  上述命令将生成两份备份集,分别存储到d:\backup1和d:\backup2目录。

3 、通过CONFIGURE ..... BACKUP COPIES命令设置预定义的备份Duplexed方式。

  CONFIGURE ... BACKUP COPIES 命令可以为指定的设备类型设置默认的备份拷贝数量。这个配置仅适用于数据文件与归档重做日志文件和备份,并且,只有在使用自动分配的通道时才能够使用CONFIGURE ... BACKUP COPIES命令设置的配置。例如:

RMAN>  CONFIGURE DEFAULT DEVICE TYPE TO DISK;RMAN>  CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE disk TO 2;RMAN>  CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE disk TO 2;

  上述命令将disk设置上数据文件与归档文件的拷备数量设置为2,当再执行BACKUP DATABASE备份时,即会自动生成2份数据文件的备份集。

四、设置RMAN备份的保存策略

  如果你的数据库非常大,并且备份执行也比较频繁,有必要对你这些备份文件的保存制订合理的策略。该挪的挪,该搬的搬,该删的删,合理释放,最大化利用有限的磁盘空间。

  在通过RMAN创建的备份片段中,由于备份文件也是由rman创建和维护,所以手工删除并不明智,并且RMAN也提供了备份保留策略,合理制订,由RMAN自动删除过旧的备份文件更加安全,也更加方便。

  RMAN 中提供了两种备份保留策略: 基于时间 和 基于冗余数量

  为RMAN设置了备份保留策略之后,RMAN会自动判断哪些备份集或镜像复制文件不必再保留。这些备份文件将会被标记为“废弃(Obsolete)”,可以通过REPORT OBSOLETE命令查看当前处于废弃状态的备份文件,或者通过DELETE OBSOLETE命令删除这些废弃的备份。例如:


RMAN>  report obsolete;
正在使用目标数据库控制文件替代恢复目录RMAN  保留策略将应用于该命令将 RMAN 保留策略设置为 3 天的恢复窗口已废弃的备份和副本报表类型                 关键字 完成时间           文件名/句柄-------------------- ------ ------------------ --------------------备份集               21     04-7月 -07备份段       21     04-7月 -07         D:\BACKUP\C-3391142503-20070704-01RMAN> delete obsolete;RMAN  保留策略将应用于该命令将 RMAN 保留策略设置为 3 天的恢复窗口分配的通道: ORA_DISK_1通道 ORA_DISK_1: sid=14 devtype=DISK删除以下已废弃的备份和副本:类型                 关键字 完成时间           文件名/句柄-------------------- ------ ------------------ --------------------备份集               21     04-7月 -07备份段       21     04-7月 -07         D:\BACKUP\C-3391142503-20070704-01是否确定要删除以上对象 (输入 YES 或 NO)? y已删除备份段备份段 handle=D:\BACKUP\C-3391142503-20070704-01 recid=21 stamp=6270616451  对象已删除

在执行删除命令时有两点需要了解:

  • 如果被判断为废弃的备份是一个单独数据文件的镜像复制,那么在执行DELETE命令时将直接删除这个镜像复制文件。
  • 如果被判断为废弃的备份是一个备份集中的一部分,则必须等到整个备份集中所有其它文件都被废弃之后,才能删除这个备份集。

提示:

  • 注意这里oracle对于obsolete和expired的定义与我们常规理解是相反的。Oracle的定义是这样的,对于手工删除的文件,物理上已经不存在了的,在执行了crosscheck之后,oracle将其标记为expired,而对于那些超出了备份保留策略的备份集备份片,则标记为obsolete。

1 、基于时间的备份保留策略。

说的简单些,就是你希望数据库最早能恢复到几天前。比如将恢复时间段设置为7,那么RMAN所保留的备份即是可以保证你将数据库恢复到一周内任何时刻下那些文件。

设置基于时间的备份保留策略可以通过CONFIGURE命令,例如:

RMAN>  CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF n DAYS;

注:n=大于0的正整数

执行该命令后,RMAN将始终保留那些将数据库恢复到n天前的状态时需要用到的备份,比如,恢复时间段被设置为7天,那么各个数据文件的备份必须满足如下条件:

SYSDATE-(SELECT CHECKPOINT_TIME FROM V$DATAFILE)>=7

任何不满足上述条件的备份都将被RMAN废弃并可通过DELETE OBSOLETE命令删除。Ok,基本知识讲完了,下面考验你的时刻到了, 提问 :如果满足条件的备份你也想删,咋整?啥?DEL?D你个大头鬼,再回去看看第二章。

2 、基于冗余数量的备份保留策略

基于冗余数量实质即某个数据文件以各种形式(包括备份集和镜像复制)存在的备份的数量。如果某个数据文件的冗余备份数量超出了指定数量,RMAN将废弃最旧的备份。

同样,基于数量的备份保留策略也是通过CONFIGURE命令设置,例如:

RMAN>  CONFIGURE RETENTION POLICY TO  REDUNDANCY n ;

同上:n=大于0的正整数

你也可以通过下列命令设置成不采用任何备份保留策略:

RMAN>  CONFIGURE RETENTION POLICY TO NONE;

五、备份优化

  RMAN 中的备份优化(Backup Optimization)是指在备份过程中,如果满足特定条件,RMAN将自动跳过某些文件而不将它们包含在备份集中以节省时间和空间。说的直白些就是能不备的它就不备了,不像原来甭管文件有没有备份过统统再备一遍。由上可知,优化就是偷懒嘛,en,我也要优化的干活:)

  话说回来,这个懒也不是什么时候都能偷的,ooo,说错了,是优化。通常必须满足如下几个条件的情况下,才能够启用备份优化的功能:

  • CONFIGURE BACKUP OPTIMIZATION 参数置为on;
  • 执行的BACKUP DATABASE或BACKUP ARCHIVELOG命令中带有ALL或LIKE参数。
  • 分配的通道仅使用了一种设备类型,也就是没有同时分配使用sbt与disk的多个通道。(我知道我知道,通道还没讲,你也等着看外传吧。不过在这儿可以简单描述一下我的理解,In my opinion,sbt与disk就像一条是公路,一条是海路,而通道则相当于你选择了走公路之后,还得选择是走北三环,还是走北五环,还是两条一块走)

  打开备份优化设置通过如下命令:

RMAN>  CONFIGURE BACKUP OPTIMIZATION ON;

  那么在进行备份优化时,RMAN是如何判断要备份的文件是否需要被优化呢,这个算法就相当复杂了,而且可能影响优化算法的因素也非常多,假如某库在上午9点被执行过一次全库备份,等下午3点再次执行全库备份时,备份的文件没有变动而且也已经被备份过时,才会跳过这部分文件。所以理论上备份优化仅对于只读表空间或offline表空间起作用。当然对于已经备份过的archivelog文件,它也会跳过。

转载于:https://my.oschina.net/u/154628/blog/1529777

RMAN 学习过程之四,备份演练进阶篇相关推荐

  1. C#使用Xamarin开发可移植移动应用进阶篇(10.综合演练,来一份增删改查CRUD)

    说点什么.. 呃 也有半个月没更新了. 本来这篇的Demo早就写完了,文章也构思好了.迟迟没发布..是因为实在太忙.. 项目要上线..各种  你们懂的.. 正赶上自己十一人生大事..结婚..所以..忙 ...

  2. Oracle 知识篇+RMAN带库备份恢复/带库全备恢复/带库0级备份恢复操作概要

    说明:本文为Oracle RMAN带库备份恢复/带库全备恢复/带库0级备份恢复操作概要 温馨提示:如果您发现本文哪里写的有问题或者有更好的写法请留言或私信我进行修改优化 ①带库备份 rman targ ...

  3. Docker 数据卷之进阶篇

    Docker 数据卷之进阶篇 原文:Docker 数据卷之进阶篇 笔者在<Docker 基础 : 数据管理>一文中介绍了 docker 数据卷(volume) 的基本用法.随着使用的深入, ...

  4. Kafka核心设计与实践原理总结:进阶篇

    作者:未完成交响曲,资深Java工程师!目前在某一线互联网公司任职,架构师社区合伙人! kafka作为当前热门的分布式消息队列,具有高性能.持久化.多副本备份.横向扩展能力.我学习了<深入理解K ...

  5. toughradius 配置mysql_ToughRADIUS 安装进阶篇

    在进阶篇里,我们将会提供本地化的安装参考,但相比起快速指南,进阶篇需要更强的专业知识和动手能力,为了节约您宝贵的时间,我们并不鼓励所有人都来尝试. 在安装成功之前,你可能会遇到关于 linux,git ...

  6. DEV01-GBase 8a MPP Cluster SQL 编码进阶篇

    GBase 8a MPP Cluster SQL 编码进阶篇 一.概述: 二.常用内置函数 (一)函数体系 (二)内置函数的基本概念: (三)内置函数的使用位置: (四)内置函数概览 (五)数学函数 ...

  7. 进阶篇:4)面向装配的设计DFA总章

    本章目的:理解装配的重要性,明确结构工程师也要对装配进行设计. 1.基础阅读 ①进阶篇:1)DFMA方法的运用: ②需要一台FDM3d打印机:请查看 基础篇:8)结构设计装备必备: 2.为什么要学习D ...

  8. 牛客网SQL 进阶篇刷题

    牛客网SQL 进阶篇刷题(1-19) 用户1001在2021年9月1日晚上10点11分12秒开始作答试卷9001,并在50分钟后提交,得了90分: 用户1002在2021年9月4日上午7点1分2秒开始 ...

  9. 黑马MySQL进阶篇笔记

    目录 MySQL进阶篇 一.存储引擎 1.1 Mysql体系结构图 1.2 存储引擎 1.概念 2.InnoDB 3.MyISAM 4.Memory 5.三种引擎对比 6.引擎的选择 1.3 安装my ...

  10. Java面试题-进阶篇(2022.4最新汇总)

    Java面试题-进阶篇 1. 基础篇 1.1 基本数据类型和包装类 1.2 Double转Bigdecimal可能会出现哪些问题?怎么解决? 1.3 equals 与 == 的区别? 1.4 Java ...

最新文章

  1. win7实用技巧之十——卷影副本
  2. linux下编写时钟代码,Linux时间子系统之一:clock source(时钟源)【转】(示例代码)...
  3. Kafka学习 之 第一个例子(一)
  4. 什么叫pmt测试分析_RVS — 面向目标硬件的软件性能测试工具
  5. 通过jdbc的mysql驱动连接oceanbase mysql模式数据库
  6. ubuntu17安装mysql后数据库乱码_linux安装MySQL数据库,设置编码为utf8
  7. Linux 命令tar的简单用法
  8. bat怎么发起网络请求_接口测试实战| GETPOST 请求区别详解
  9. 密码库LibTomcrypt的内容介绍及分析
  10. Windows自动关机命令
  11. 华为海思芯片自立自强!
  12. android辅助点击软件吗,自动点击器安卓7.0版本粒可辛点击上线了
  13. Windows API 获取所有进程音量并调节
  14. php微信小商城系统设计,基于微信小程序的互联网商城系统设计开题报告
  15. 计算机已从异常关机中恢复,win7系统经常遇到“windows已从异常关机中恢复”的解决方法...
  16. 鼠标移入a标签更换图片,移出图片复原。
  17. 初级、中级、高级程序员的区别在哪里?
  18. S5PV210 I2C电容触摸屏驱动
  19. 机械战警原型开发 - 仓田机器人
  20. ffmpeg 多视频 画中画

热门文章

  1. Web页面的生命周期函数
  2. windows环境安装python
  3. PHP exit()与die()的区别
  4. Py下载指定路径下所有图片
  5. linux远程升级运行程序,在LINUX上对DSP程序远程升级的实现想法
  6. numpy 矩阵 秩_Python(NumPy):集合只能映射秩1数组
  7. OpenCV最简JAVA版范例
  8. 安卓GLSurfaceView使用简单范例
  9. 论耐力,哺乳动物中人类可能是第一
  10. 讨论:寺庙和尚义工不宜说感谢,可以祝福