在 oracle RMAN 备份中不提交事务会发生什么
What happens to not commited transaction in oracle RMAN backup
我已经编写了使用 RMAN 进行 oracle 备份和恢复的脚本。
注意我备份了数据库+存档日志
现在,我在 oracle 中做了一些 sql 语句但没有提交事务然后它可能在重做日志中的某个地方我不确定。
现在,在上述情况下,我备份了数据库+存档日志并进行了恢复。
未提交的数据不存在。
我对这种情况感到困惑,这种情况是正确的还是缺少我的数据或者我错过了什么地方。
这很好。您的交易实际上正在重做。但是因为你没有提交它,恢复过程在重新应用它之后将它回滚,因为它在重做流的末尾找不到提交语句。这是设计使然。相反的是一个问题,如果你提交了一个声明,无论服务器发生了什么(断电,崩溃)你应该能够在恢复服务器并应用所有 redo/archives.[= 后看到它10=]
这样做的原因是,一旦您提交,重新执行事务的所有工作都应存储在磁盘(重做日志文件)中。还有其他类型的提交(例如 COMMIT WRITE NOWAIT)可以绕过这种行为,应该避免。
希望对您有所帮助。
我已经编写了使用 RMAN 进行 oracle 备份和恢复的脚本。 注意我备份了数据库+存档日志
现在,我在 oracle 中做了一些 sql 语句但没有提交事务然后它可能在重做日志中的某个地方我不确定。
现在,在上述情况下,我备份了数据库+存档日志并进行了恢复。
未提交的数据不存在。
我对这种情况感到困惑,这种情况是正确的还是缺少我的数据或者我错过了什么地方。
这很好。您的交易实际上正在重做。但是因为你没有提交它,恢复过程在重新应用它之后将它回滚,因为它在重做流的末尾找不到提交语句。这是设计使然。相反的是一个问题,如果你提交了一个声明,无论服务器发生了什么(断电,崩溃)你应该能够在恢复服务器并应用所有 redo/archives.[= 后看到它10=]
这样做的原因是,一旦您提交,重新执行事务的所有工作都应存储在磁盘(重做日志文件)中。还有其他类型的提交(例如 COMMIT WRITE NOWAIT)可以绕过这种行为,应该避免。
希望对您有所帮助。