【发布时间】:2016-05-23 04:14:57
【问题描述】:
我已经编写了使用 RMAN 进行 oracle 备份和恢复的脚本。 注意我拿了备份数据库+存档日志
现在,我在 oracle 中做了一些 sql 语句,但没有提交事务,那么它可能在重做日志中的某个地方我不确定。
现在,在上述情况下,我使用了备份数据库 + 存档日志并进行了还原。
未提交的数据不存在。
我对这种情况感到困惑,这种情况是正确的还是丢失了我的数据或我错过了某个地方。
【问题讨论】:
我已经编写了使用 RMAN 进行 oracle 备份和恢复的脚本。 注意我拿了备份数据库+存档日志
现在,我在 oracle 中做了一些 sql 语句,但没有提交事务,那么它可能在重做日志中的某个地方我不确定。
现在,在上述情况下,我使用了备份数据库 + 存档日志并进行了还原。
未提交的数据不存在。
我对这种情况感到困惑,这种情况是正确的还是丢失了我的数据或我错过了某个地方。
【问题讨论】:
这很好。您的交易实际上正在重做。但是由于您没有提交它,因此恢复过程在重新应用它后将其回滚,因为它在重做流的末尾找不到提交语句。这是设计使然。相反会是一个问题,如果你已经提交了一个语句,无论服务器发生了什么(断电,崩溃)你应该能够在恢复服务器并应用所有重做/归档后看到它。
这样做的原因是,一旦您提交,所有重新执行事务的工作都应该存储在磁盘上(重做日志文件)。还有其他类型的提交(例如,COMMIT WRITE NOWAIT)绕过了这种行为,应该避免。
希望这会有所帮助。
【讨论】: