【问题标题】:Oracle save points甲骨文保存点
【发布时间】:2017-04-04 09:40:22
【问题描述】:

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

【问题讨论】:

    标签: oracle11g savepoints


    【解决方案1】:

    如果您提交事务,那么在此之前的所有保存点都将失效,因此“自从该保存点也回滚以来所有提交的事务”并没有真正的意义。您永远无法回滚提交。

    From the docs:

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

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

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

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

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

    Read more about transactions and savepoints.

    【讨论】:

    • 这完美地解释了一切。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 2010-10-05
    • 2011-07-19
    • 2014-09-11
    相关资源
    最近更新 更多