2017-04-04 56 views
-1

我知道當您將Oracle數據庫回滾到某個保存點時,在該原始保存點之後標記的任何保存點都將被擦除,但是所有已提交的事務都會自該保存點也回滾?它是數據庫的完整閃回嗎?我假設它是,只是想澄清。非常感謝。Oracle保存點

回答

1

如果您提交了事務,那麼之前的所有保存點都將失效,因此「自該保存點以來所有已提交的事務也回滾」並沒有任何意義。您無法回滾提交。

From the docs

使用ROLLBACK與TO SAVEPOINT條款執行以下操作:

  • 回滾只保存點後,交易的一部分。它不會結束交易。
  • 清除在該保存點之後創建的所有保存點。指定的保存點將保留,因此您可以多次回滾到相同的保存點。先前的保存點也保留。

在你的問題中使用「所有交易」是令人困惑的。事務和保存點僅適用於單個會話 - 其他會話中的任何事務都不受您在會話中進行的任何回滾的影響。

將會話回滾到保存點會清除「原始保存點之後標記的任何保存點」在同一會話中,因此它們在同一個事務中。它不會影響任何其他會話中的任何交易或保存點,並且您當前的交易仍處於活動狀態。

所以不,它不是數據庫的完整閃回。 Tools exist to do that,但保存點是完全不同的事情。

Read more about transactions and savepoints

+0

這可以完美地解釋一切。非常感謝。 – Franco