oracle undo 讀書筆記,oracleundo
跟undo 相關的兩個參數:
undo_tablespace
UNDO_MANAGEMENT =auto
在oracle 9i 以後 oracle 推薦我們使用 undo 自動管理;
undo_retention
這個參數用來保證undo 復原段中的內容不會被覆蓋。但是這個參數使用時要和 undo 的大小設定(maxsize ,unlimit )一起考慮。
否則是 無意義的。
當undo tbs 大小一定時,設定undo_retention 參數無任何意義。oracle 不會保證undo中內容在 undo retention 設定的時間間隔內不被複寫。
undo 中內容的持久性,直接會影響 oracle 的一致性讀,閃回特性,long-running query。
啟用 undo—retention:
在建庫create database or create undo tablespace 時指定 RETENTION GUARANTEE;
alter tablespace 設定;
使用 alter tablespace 可以禁用 undo—retention
aler tablespace xxx RETENTION NOGUARANTEE
oracle 會自動調整 undo retention ,但是不支援 lob 欄位, undo information for LOBs is stored in the segment
itself and not in the undo tablespace
如何確定當前undo 的保留原則:
select to_char(begin_time, 'DD-MON-RR HH24:MI') begin_time,
to_char(end_time, 'DD-MON-RR HH24:MI') end_time, tuned_undoretention
from v$undostat order by end_time;
如何設定undo_retention
ALTER SYSTEM SET UNDO_RETENTION = 2400;
該參數可以動態設定,立即生效,但是不能保證oracle 一定會遵守我們設定的要求,一切前提以 undo 的大小設定參數為準,以及是否設定 retention guarantee