显然归档的重做日志会根据需要经常备份,但是备份在线重做日志是否有意义?在线重做日志是否是打开且处于活动状态的文件,因此在此状态下复制它是浪费时间(与备份打开的数据库相同)?
如果在线重做日志有 20 分钟没有切换(以便日志可用于归档),那么如果系统发生故障并且需要介质恢复并且您没有备份在线重做日志,那么您肯定是丢失了最后 20 分钟的交易?
我知道还有其他更强大的方式来传输重做信息以确保不会丢失任何内容,但我仍然对在线重做日志文件的状态感兴趣。
谢谢你的时间。
澄清更新...
有一个定期运行的常规后台进程会发送归档日志文件和在线日志文件。我对这个过程没有太多控制权。在线日志文件是否可用,或者如果在进行备份时正在写入日志,它们是否会损坏?
建议您双工/多路复用您的在线重做日志。这样,它们被写入两个不同的物理磁盘。如果失败,您的数据库将停止(因为它无法写入重做日志)。您关闭 abort,然后在幸存的重做日志上启动数据库,然后当您解决问题时,您可以使用所有多路复用重新启动数据库。
如果你想“刷新”当前的重做日志以确保你有它的存档,你可以发出
从 SQLPLUS 或 RMAN
这将强制归档当前日志,然后您可以将其备份到异地。
另一种选择是使用较小的重做日志,以便数据库的自然事务率导致日志切换和归档以您更舒适的时间间隔进行。
“alter system switch logfile”不会强制存档当前日志,它只会从当前日志切换到下一个日志,使其可用于存档。“alter system archive log current”确实会强制归档当前日志。
要考虑的另一件事是备用数据库。您可以将其配置为让日志写入器将重做写入具有备用数据库的远程系统上的侦听器(实时应用)。这是近乎实时地完成的。好处是在系统发生故障且无需恢复的情况下,停机时间最短。只需激活备用数据库即可。
关于在不同磁盘上镜像你的重做日志组的建议是很好的建议。通常,一次只有一个日志组处于活动状态 - 其余的要么已经归档,要么正在等待归档。您不想复制活动的 - 在恢复情况下它可能没有用。
简而言之,不,您不能在数据库运行时复制实时重做日志,并希望在完成后获得任何有价值的东西。
这取决于您所说的备份是什么意思。如果您是传统意义上的意思,那么 DCookie 给出的正确答案是“简而言之,不,您不能在数据库运行时复制实时重做日志,并希望在完成后有任何有价值的东西。”。另一方面,有更新的备份类型技术可以对卷进行时间点快照。如果他们可以及时捕捉您的数据文件、控制文件和重做日志,那么您确实有一些有用的东西。如果在启动数据库时要恢复此数据,则它的行为就像在快照时断开了电源一样。任何未提交的事务都将被回滚,但在进行快照之前不会丢失任何已提交的事务。
如果您的在线日志在重新启动时可用并且它们没有损坏,那么 Oracle 应该能够识别它们并重放它们以及存档的日志。唯一会丢失的是崩溃时尚未提交的事务。
当然,如果您的硬盘驱动器崩溃,您将丢失所有未备份的内容。这就是为什么你应该有一些镜像或者更好地将重做日志存储在不同的磁盘/控制器/计算机上。