暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle RMAN备份

askTom 2018-07-24
238

问题描述

嗨,

关于RMAN,我几乎不需要澄清。

1.在增量RMAN备份期间-Oracle如何处理未提交的事务?

2.如果备份运行了很长时间 (10-20小时)-Oracle如何处理备份过程-备份启动时启动并在备份完成时完成的事务会发生什么?

3.基于SCN的增量备份不起作用,基于顺序的备份不起作用而基于时间的备份不起作用的情况是什么?

如果您可以将我引向一些在线文章-在其中讨论了大量RMAN内部构件,我很乐意对其进行评论。


Regds
TG

专家解答

不管怎样,真正重要的是重做日志。在任何时候 (无论是否在备份期间),数据文件都可以被视为数据库当前状态的 “模糊” 表示。这是因为我们不会在每次您执行事务时都编写数据文件-这将是低效的。

因此,我们不时确保数据文件与 “现实” 相对最新。重做日志是一个不同的故事-它们是数据库中发生的事情的100% 定义。

因此,是的,当您备份数据文件时,您会得到数据库的不精确表示,这仅仅是因为正如您所指出的那样,备份需要时间才能运行。但是在 “恢复” 期间,我们可以使用重做日志 (当前日志或我们已备份的日志) 来解决这种不精确性。它们不会不精确,因为我们备份了数据库不再主动更改的 * 存档 * 重做。

假设在上午11点,我们恢复了在上午9点备份的数据文件。因此,该数据文件中的每个块可能代表一个时间点 * 接近 * 上午9点,但不是精确地上午9点。

因此,当我们恢复时,第一个块可能 (例如) 精确到上午8:58-我们可以使用从该点开始的重做来向前滚动该块。下一个块可能是准确的上午8:59-我们可以使用从该点开始的重做,向前滚动该块,依此类推。每个块的 * 起点 * 点可能略有不同,但是使用重做,我们可以将它们全部向前滚动到公共的 * 终点 * 点 (上午10点或我们指定的任何内容)。

当然,当我在上文中引用 “一天中的时间” 时,这实际上是SCN的同义词。在备份的数据文件中,每个块都有不同的SCN,但是我可以使用重做将它们转发到公共SCN,因此我的数据库变得一致。

一旦保持一致,这些块可能包含来自未提交事务的数据。没关系,因为我也把 * undo * 表空间带到了那个一致的时间点。因此,在那里,我有回滚那些未提交的事务所需的信息。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论