1

我已经使用 RMAN 编写了用于 oracle 备份和恢复的脚本。注意我拿了备份数据库+存档日志

现在,我在 oracle 中做了一些 sql 语句,但没有提交事务,那么它可能在重做日志中的某个地方我不确定。

现在,在上述情况下,我使用了备份数据库 + 存档日志并进行了还原。

未提交的数据不存在。

我对这种情况感到困惑,这种情况是正确的还是丢失了我的数据或者我错过了某个地方。

4

1 回答 1

2

这很好。您的交易实际上是在重做。但是由于您没有提交它,因此恢复过程在重新应用它后将其回滚,因为它在重做流的末尾找不到提交语句。这是设计使然。相反会是一个问题,如果您提交了一个声明,无论服务器发生了什么(断电、崩溃),您都应该能够在恢复服务器并应用所有重做/归档后看到它。

原因是一旦你提交,所有重新执行事务的工作都应该存储在磁盘上(重做日志文件)。还有其他类型的提交(例如,COMMIT WRITE NOWAIT)绕过了这种行为,应该避免。

希望这可以帮助。

于 2016-02-12T05:41:43.627 回答