Oracle
在 Oracle 11gR2 上我可以將撤消保留設置多高
設置非常高的撤消保留是否可行,以允許閃回查詢及時回溯數週?
自然,撤消表空間中必須有足夠的可用空間來包含所需的撤消數據量。還有其他我應該注意的限制嗎?
如果沒有足夠的撤消空間可用,會發生什麼?生產是否會受到任何影響,或者只是閃回和回滾受到限制(快照太舊等)。
更新:
每個實例每天的典型撤消生成量略低於 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
會消失,但它可能會起作用。