Oracle保存点

时间:2017-04-04 09:40:23

标签: oracle11g savepoints

据我所知,当您将Oracle数据库回滚到保存点时,标记在该原始保存点之后的所有保存点都将被删除,但是所有已提交的事务都会被撤消,因为该保存点也会回滚吗?它是数据库的完整闪回吗?我假设它只是想澄清一下。非常感谢。

1 个答案:

答案 0 :(得分:1)

如果您提交了您的事务,那么之前的所有保存点都将失效,因此“自该保存点也回滚后所有提交的事务”都没有意义。你不能回滚提交。

From the docs

  

将ROLLBACK与TO SAVEPOINT子句一起使用将执行以下操作:

     
      
  • 在保存点之后回滚事务的一部分。它不会结束交易。
  •   
  • 删除在该保存点之后创建的所有保存点。保留命名的保存点,因此您可以多次回滚到同一个保存点。之前的保存点也会保留。
  •   

在您的问题中使用“所有交易”令人困惑。事务和保存点仅适用于单个会话 - 其他会话中的任何事务都不受您在会话中执行的任何回滚的影响。

将会话回滚到保存点会删除“在同一会话中的原始保存点之后标记的任何保存点,因此它们位于同一事务中。它不会影响任何其他会话中的任何事务或保存点,并且您当前的事务仍处于活动状态。

所以不,它不是数据库的完整闪回。 Tools exist to do that,但保存点完全不同。

Read more about transactions and savepoints