为什么我们需要备份Oracle存档日志以及数据文件


12

Oracle®数据库备份和恢复基础10g第2版(10.2)指出

存档的重做日志是成功恢复媒体的关键。定期备份它们。

但是,我想知道为什么存档日志的备份如此重要。仅使用常规RMAN完整和增量数据文件备份就可以进行时间点恢复。

Answers:


16

不,您仍然需要存档的重做日志。RMAN备份与冷备份不同。还原时,您需要应用从开始备份到备份完成之间生成的所有重做操作,以使SCN在所有数据文件和控制文件中保持一致。

让我们考虑一下老式的热备份。在这种模式下,将整个更改的数据库块写入重做日志流,并将文件复制到OS中。这会导致块破裂,即在备份读取期间块已更改。因此,要恢复数据库,我们将还原DBF,然后恢复过程将已存档的重做日志中已更改的块覆盖到文件中的破裂块上,然后返回到一致的数据库。

在RMAN备份中,消除了块破裂的问题,因为Oracle通过SGA而不是像Unix之类的Unix工具通过SGA读取块cp。但是,DBF在读取第一个块和最后一个块的时间之间会发生变化,因此这是一个相同的问题,只是规模更大。也就是说,SCN在备份的第一个和最后一个块之间更改。存档的重做日志也涵盖了这一点。

RMAN为您提供了目录的可管理性,并且提供了一种热备份的方式,而无需以更高的速度生成重做(这给磁盘,备份系统等带来了很大的压力)。但是BACKUP DATABASE不会给你一个一致的数据库本身; 在Oracle中这样做的唯一方法是冷备份。


1
+1我更喜欢您的回答,我只是想补充一下其他信息。
Leigh Riffel

7

仅在以“存档日志”模式运行时才需要备份存档日志,因此问题又回到了数据库是否应该执行此操作。在标题为“ 决定ARCHIVELOG和NOARCHIVELOG模式之间”下引用的同一文档中对此进行了介绍。这是节选:

在ARCHIVELOG和NOARCHIVELOG模式之间选择

数据库的重做日志提供对数据库数据文件所做更改的完整记录(有一些例外,例如直接路径加载)。

您可以以以下两种模式之一运行数据库:ARCHIVELOG模式或NOARCHIVELOG模式。在ARCHIVELOG模式下,必须将已使用的联机重做日志组复制到一个或多个归档目标,然后才能重新使用它。归档重做日志将保留该日志中存储的所有事务,以便以后可以在恢复操作中使用它们。在NOARCHIVELOG模式下,重用日志时,只会覆盖联机重做日志组。重做日志组中记录的有关事务的所有信息都将丢失。

2.3.3.1以NOARCHIVELOG模式运行的含义

以NOARCHIVELOG模式运行数据库对备份和恢复策略施加了严格的限制。

  • 您无法执行数据库的联机备份。您必须彻底关闭数据库,然后才能在NOARCHIVELOG模式下进行备份。

  • 您不能使用任何需要归档重做日志的数据恢复技术。其中包括“数据恢复的形式”中所述的完整和时间点的介质恢复,以及更高级的恢复技术,例如单个表空间和闪回数据库的时间点恢复(如Oracle数据库备份和恢复高级中所述)。用户手册。)。

如果以NOARCHIVELOG模式运行,并且由于磁盘故障而必须从对数据文件的损坏中恢复,则有两个主要恢复选项:

  • 删除所有具有范围的对象位于受影响的文件中,然后删除文件。数据库的其余部分保持不变,但是受影响文件中的所有数据都丢失了。

  • 从最近的备份还原整个数据库,并丢失自备份以来对数据库的所有更改。(由于备份需要进行媒体恢复,因此要恢复更改,该操作将使用存档的重做日志。)

...

当性能要求极高或磁盘空间限制很严重时,尽管此选择对您的恢复选项施加了限制,但还是最好在NOARCHIVELOG模式下运行。

您几乎总是希望以ARCHIVELOG模式运行,因此几乎总是希望备份存档日志。


您应该始终希望以ARCHIVELOG模式运行,否则总有一天会后悔的。即使在开发/测试数据库上。
马克·斯图尔特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.