Oracle

在 Oracle 11gR2 上我可以將撤消保留設置多高

  • November 13, 2012

設置非常高的撤消保留是否可行,以允許閃回查詢及時回溯數週?

自然,撤消表空間中必須有足夠的可用空間來包含所需的撤消數據量。還有其他我應該注意的限制嗎?

如果沒有足夠的撤消空間可用,會發生什麼?生產是否會受到任何影響,或者只是閃回和回滾受到限制(快照太舊等)。

更新:

每個實例每天的典型撤消生成量略低於 1 GB,每個實例的撤消空間價值高達 64 GB,以 30 天的撤消保留目標執行聽起來是可行的。不?

雖然我沒有嘗試過,但我傾向於懷疑,當您UNDO_RETENTION超過 Oracle 維護其 SCN 到時間戳映射的時間長度時,您會遇到問題。如果有記憶,那大約是 1 週(好吧,如果有記憶,在 10g 的日子裡是 1 週,我不知道在 11.2 中會有什麼改變)。我傾向於懷疑 Oracle 會使用該映射來確定哪些UNDO段足夠老以至於應該清除它們,並且如果超出該限制,您將開始遇到問題。

例如,在我的 11.2 系統上,我可以將 7 天前轉換為 SCN,然後再轉換回時間戳,但不能轉換為 8 天前

 1* select scn_to_timestamp( timestamp_to_scn( systimestamp - 7) ) from dual
SQL> /

SCN_TO_TIMESTAMP(TIMESTAMP_TO_SCN(SYSTIMESTAMP-7))
---------------------------------------------------------------------------
06-NOV-12 01.06.47.000000000 PM

SQL> ed
Wrote file afiedt.buf

 1* select scn_to_timestamp( timestamp_to_scn( systimestamp - 8) ) from dual
SQL> /
select scn_to_timestamp( timestamp_to_scn( systimestamp - 8) ) from dual
                        *
ERROR at line 1:
ORA-08180: no snapshot found based on specified time
ORA-06512: at "SYS.TIMESTAMP_TO_SCN", line 1

因此,我傾向於在我的系統上懷疑,如果我試圖保留 8 天的UNDO那個 Oracle 通常會遇到問題。驗證一種或另一種方式需要一周的時間,但如果我不得不下注,我傾向於下注嘗試持有超過一周的時間UNDO會失敗。

即使您可以保留UNDO那麼長時間,制定閃回查詢也將是一項重大挑戰,因為您無法指定時間戳。您可以通過編寫一個自動化作業來維護您自己的(更長期的)SCN 和時間戳之間的映射,該作業將每隔幾秒擷取一次並一次將它們保存數週或數月,然後AS OF SCN在您的閃回查詢中指定。我傾向於期望老年人UNDO會消失,但它可能會起作用。

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