据我所知,当您将Oracle数据库回滚到保存点时,标记在该原始保存点之后的所有保存点都将被删除,但是所有已提交的事务都会被撤消,因为该保存点也会回滚吗?它是数据库的完整闪回吗?我假设它只是想澄清一下。非常感谢。
答案 0 :(得分:1)
如果您提交了您的事务,那么之前的所有保存点都将失效,因此“自该保存点也回滚后所有提交的事务”都没有意义。你不能回滚提交。
将ROLLBACK与TO SAVEPOINT子句一起使用将执行以下操作:
- 在保存点之后回滚事务的一部分。它不会结束交易。
- 删除在该保存点之后创建的所有保存点。保留命名的保存点,因此您可以多次回滚到同一个保存点。之前的保存点也会保留。
在您的问题中使用“所有交易”令人困惑。事务和保存点仅适用于单个会话 - 其他会话中的任何事务都不受您在会话中执行的任何回滚的影响。
将会话回滚到保存点会删除“在同一会话中的原始保存点之后标记的任何保存点,因此它们位于同一事务中。它不会影响任何其他会话中的任何事务或保存点,并且您当前的事务仍处于活动状态。
所以不,它不是数据库的完整闪回。 Tools exist to do that,但保存点完全不同。