![是否应备份 Oracle *在线*重做日志?](https://linux22.com/image/493116/%E6%98%AF%E5%90%A6%E5%BA%94%E5%A4%87%E4%BB%BD%20Oracle%20*%E5%9C%A8%E7%BA%BF*%E9%87%8D%E5%81%9A%E6%97%A5%E5%BF%97%EF%BC%9F.png)
显然,归档重做日志会按要求频繁备份,但备份是否有意义?在线的重做日志?联机重做日志是否是打开且活动的文件,以至于在这种状态下复制它是浪费时间(与备份打开的数据库相同)?
如果联机重做日志 20 分钟内没有切换(以便日志可用于归档),那么如果系统出现故障并且需要进行介质恢复并且您没有备份联机重做日志,那么您肯定会丢失过去 20 分钟的交易?
我知道还有其他更强大的方法来传输重做信息以确保不会丢失任何内容,但我仍然对在线重做日志文件的状态感兴趣。
谢谢你的时间。
澄清更新...
有一个常规后台进程定期运行,用于发送存档日志文件和在线日志文件。我对此进程没有太多控制权。在线日志文件是否可用,或者如果在备份时写入日志,它们是否会损坏?
答案1
另一个需要考虑的问题是备用数据库。您可以将其配置为让日志写入器将重做写入具有备用数据库的远程系统上的侦听器(实时应用)。这几乎是实时完成的。好处是,如果系统发生故障,停机时间最短,无需恢复。只需激活备用数据库即可。
关于将重做日志组镜像到不同磁盘的建议非常好。通常,一次只有一个日志组处于活动状态 - 其余日志组要么已经存档,要么正在等待存档。您不会想复制活动的日志组 - 在恢复场景中,它可能毫无用处。
简而言之,您不能在数据库运行时复制实时重做日志并希望在完成后获得任何有价值的东西。
答案2
建议你双工/多工您的在线重做日志。这样,它们将被写入两个不同的物理磁盘。如果其中一个磁盘发生故障,您的数据库将停止(因为它无法写入重做日志)。您关闭中止,然后在幸存的重做日志上启动数据库,然后当您解决问题后,您就可以使用所有多路复用重新启动数据库。
答案3
这取决于您所说的备份是什么意思。如果您指的是传统意义上的备份,那么 DCookie 给出了正确的答案:“简而言之,您不能在数据库运行时复制实时重做日志,并希望在完成后获得任何有价值的东西。”另一方面,有更新的备份类型技术可以对卷进行时间点快照。如果他们可以按时间点快照您的数据文件、控制文件和重做日志,那么您确实有一些有用的东西。如果在启动数据库时恢复这些数据,它的行为就像在快照时断电一样。任何未提交的事务都将被回滚,但直到快照进行时为止,任何已提交的事务都不会丢失。
答案4
如果在重新启动时在线日志可用且未损坏,Oracle 应该能够识别它们并重放它们以及存档的日志。唯一会丢失的是崩溃时尚未提交的事务。
当然,如果您的硬盘崩溃,您将丢失所有未备份的内容。这就是为什么您应该进行一些镜像,或者最好将重做日志存储在不同的磁盘/控制器/计算机上。