Oracle-11g

為什麼我們需要 TSPITR 中的輔助實例

  • April 25, 2013

需要幫忙!

我已經閱讀了數據庫備份和恢復使用者指南 11g,但我不明白為什麼我們需要輔助實例來執行 tspitr。我們可以在同一個實例中完全恢復表空間,為什麼tspitr不可能?

Hemant K Chitale在這裡說:“您無法將表空間恢復到低於數據庫其餘部分的 SCN。 ”。誰能幫我理解為什麼?

在這條消息中顯示,當我們將表空間離線時,它的 SCN 會在一段時間後低於其他表空間的 SCN,當我們將其聯機時“它不會應用重做它只會採用目前的 SCN ”。

那麼,為什麼數據庫不能打開恢復,直到數據文件採用它的SCN 到目前?這是由於 OracleDB 的技術方面還是有其他原因?

TL;DR能夠在不覆蓋整個目前撤消的情況下恢復數據+撤消。

當您執行 RMAN 聯機備份時,一些事務正在處理中,它們確實更改了某些內容,但尚未執行它們的 COMMIT。事務性工作模型(“原子性”)要求這些事務在恢復時回滾(完全撤消)。Oracle 引擎會自動執行此操作。如果無法做到這一點,Oracle 引擎不允許聯機表空間,以防止使用者看到可能不一致的數據。那麼事務是否會在更改之前以某種方式保存“一致”數據?是的,在撤消表空間(或“回滾段”)中。這就是為什麼在恢復表空間時,您不能“忘記”它已撤消,您需要從同一時間點(相同的 SCN)恢復撤消。

綜上所述,Oracle引擎需要與主數據在同一時間點同步undo數據。

撤消通常被放入單個表空間,儘管它是來自許多不同數據表空間的“一致”資訊的混合。這就是為什麼您將 TSPITR 轉移到輔助實例的原因 - 能夠在不覆蓋整個目前撤消的情況下恢復數據+撤消。

一旦輔助上線,輔助的數據就已經保持一致,不再需要輔助的撤消。

引用自:https://dba.stackexchange.com/questions/40773