Oracle备份最佳实践

日期: 2010-08-24 作者:W. Curtis Preston翻译:冬瓜头 来源:TechTarget中国 英文

问:什么是Oracle备份和恢复最佳实践?应该从哪里开始学习?   答:16年前,由于我对如何备份Oracle数据库缺乏必要的知识,导致当时我没能够为一家价值320亿美元的信用卡公司成功的恢复一个用于存放购买记录的数据库。这次失败促使我学习了一切有关于备份,特别是Oracle数据库备份方面的知识。在有限的资源下,想要了解所有关于Oracle备份和恢复的知识几乎是不可能的。这也成为市面上出现很多关于Oracle备份恢复方面书籍的原因之一。

而从我的角度来讲,至少可以提供给你一个关于Oracle备份最佳实践的概览,从而可以帮助你开始研究Oracle备份和恢复。   Oracle中的User-mana……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

问:什么是Oracle备份和恢复最佳实践?应该从哪里开始学习?

  答:16年前,由于我对如何备份Oracle数据库缺乏必要的知识,导致当时我没能够为一家价值320亿美元的信用卡公司成功的恢复一个用于存放购买记录的数据库。这次失败促使我学习了一切有关于备份,特别是Oracle数据库备份方面的知识。在有限的资源下,想要了解所有关于Oracle备份和恢复的知识几乎是不可能的。这也成为市面上出现很多关于Oracle备份恢复方面书籍的原因之一。而从我的角度来讲,至少可以提供给你一个关于Oracle备份最佳实践的概览,从而可以帮助你开始研究Oracle备份和恢复。

  Oracle中的User-managed备份

  使用时间最长的一种备份Oracle的方式就是所谓的“User-managed”备份方式。在这种方式下,管理员负责保证要备份的Oracle数据库被置于合适的模式下,然后才可以执行备份操作,之后,管理员负责将对应的数据文件或者相关文件进行备份。

  在执行User-managed备份之前,你可以将Oracle数据库置于两种状态中的一种:offline(离线)模式或者hot backup(热备)模式。将Oracle数据库置于离线模式,也就等同于将对应的数据库实例关闭,这个动作可以通过执行Oracle的关闭脚本实现。将Oracle置于热备模式的话,就有一点点复杂了,需要你为其定制一个单独的脚本,但依然也是比较容易做的,连接到对应数据库,然后执行一个alter database begin backup(在备份前选择数据库)这样含义的命令即可。当你将Oracle数据库成功的置于这两种模式中的一种之后,就可以安全的对相关文件进行备份了。另外,有一个值得深入探讨的话题,当你将Oracle数据库置于热备模式之后,会发生什么事情?有一个误导性传闻是说当Oracle处于热备模式之后,会停止一切对数据文件的写入动作,这显然是不符合实际的。实际上所发生的是:Oracle会将每个数据文件的SCN头冻结,同时将对数据文件的变更以及SCN的变更记录保存到日志中。SCN头是一个不停增长的数字值,当从某个备份集中恢复数据文件之后,文件中的SCN头信息会告诉Oracle这个数据文件是何时被置于热备模式从而被备份的。这样,就可以让Oracle使用redo日志来将这个恢复出来的数据文件进行replay操作,从而前滚到你想恢复的那个时间点。当Oracle进入热备模式之后,数据文件的主体依然会像正常模式一样被不断更新,正因如此,Oracle也会将变更的数据同步到redo日志中保存,这些块随后将会被用于日志重放过程以便恢复那些在备份过程中没有拷贝下来的变更的块。(译者注:热备模式下如果某数据块的部分内容发生变化,Oracle也需要将整个数据块放入redo日志而不仅仅是变化部分的上层内容,这样做的目的是为了防止block split(块分裂),操作系统底层备份时是按照底层文件系统块来分界的,由于竞争效应可能导致备份下来的Oracle块本身不一致。)

  除了数据文件,在做User-managed备份时,当然还有一些需要备份的Oracle数据库中的其他部分。控制文件可以使用backup controlfile命令,归档日志则可以使用任何标准备份工具来备份。对当前的redo日志进行切换永远都是一个好办法,使用alter system archive log current命令完成切换。(如果你使用脚本,就不应当使用类似的alter system switch logfile命令了,因为它会返回对话prompt,你需要应答之后他才会将当前redo日志归档切换)

  User-managed备份模式的主要好处是它不需要任何许可证,这一点不像RMAN中那些繁多的插件。不幸的是,User-Managed备份模式的一个劣势就是太过复杂。此外,使用这种备份模式的话,无法实现增量备份,所有针对数据文件的备份都是全备份。

  Oracle的RMAN备份模式

  Oracle Recovery Manager (RMAN)是最为推荐的一种备份和恢复Oracle的工具,每一版本的Oracle中都包含了这个工具。如果不使用任何第三方备份软件的商业插件/代理的话,RMAN本身可以将数据备份到本地磁盘中(你可以随后使用备份软件将这个磁盘被分到其他介质中)。如果需要通过网络备份或者备份到磁带中,那么你就不得不使用由第三方备份软件所提供的插件/代理了,这种插件可能会让你花费数百或者数千美元,根据不同产品而定。然而,这些钱应该说花的还是比较值的,插件会提供很多的增值功能,比如增强的自动备份schedule、报告以及自动将备份集离线保存等功能。

  RMAN也需要一些脚本才能运作,但是并不需要对数据库进行过多的查询操作才能得知数据库的状态。在这一点上,User-managed备份模式下的脚本就需要向Oracle数据库查询所有数据文件、控制文件、redo日志的位置,RMAN则早已得知了这些信息,你只需要通过诸如backup database,backup controlfile或者bckup archivelog这样的简单的告诉它需要将这些数据备份到预先设定的备份目标即可。同时,使用RMAN的时候也没有必要将Oracle置于热备模式了,因为此时是由Oracle负责将数据块传送到备份目标而且明确知道所备份的数据块的准备备份时间,所以此时也没有必要冻结SCN或者向redo日志中增加额外的数据了。(译者注:其实是由RMAN在Oracle系统内生成对应的进程将数据读出传送至备份目标)除了在操作和使用方面比User-managed备份模式更简便之外,RMAN的一个最大的优势就是它可以实现真正的增量备份。

  Oracle恢复最佳实践

  在数据恢复过程中,RMAN相对于User-managed备份模式的最大优势才会被完全显现出来。在user-managed恢复模式下,用户自身需要掌握到底恢复到哪个合适的时间点,然后将数据库的各个部分置于对应的模式下,然后从之前的备份介质中恢复数据,然后执行日志重放将对应的文件重放恢复到对应的时间点。但是使用RMAN,你只需要让他备份或者恢复数据库记好了。RMAN会自动检测出哪些数据文件需要恢复以及重放,而且RMAN清楚的知道这些数据文件需要存放到哪里,会从合适的地方将他们读出,然后写到合适的目标位置。

  综上所述,对Oracle备份和恢复的最佳实践做一下总结:如果你现在没有使用RMAN备份模式来备份Oracle数据库,那么你应该考虑使用它,它会让你的备份和恢复过程变得更加简便。如果你不打算购买RMAN的第三方插件,那么你可以考虑使用独立的RMAN,不用插件,你只需要一个足够大的本地磁盘来存放备份出来的数据即可,这样就可以免费使用RMAN所带来的便捷了。

作者

W. Curtis Preston
W. Curtis Preston

TechTarget存储执行编辑

相关推荐