UNDO作用:
1、回滾,rollback時
2、構造CR塊,提供讀一致性
3、回滾,實例恢復的時候
undo表空區的狀態:
1、free 可以使用的回滾段的區
2、active 表示此區中有活動的未提交的事務塊
3、inactive 表示此區中的事務已經提交,但未過undo_retention默認900秒時間,原則上ORACLE不會覆蓋他,但在UNDO空間不足,壓力大時也會被覆蓋。
4、expired 過了undo_retention時間的區
alter tablespace undotbs1 retention guarantee
此參數默認爲noguarantee,select TABLESPACE_NAME,RETENTION from dba_tablespaces;可查
修改成guarantee表示如果我們希望或想要求inactive區保證在900秒時間內不會被覆蓋,只有過了retention時間變成了expired狀態纔可以被覆蓋。
UNOD使用順序:
先找free區空間,如果不夠ORACLE會嘗試擴容UNDO表空間,如果不夠或不能擴容,則會嘗試覆蓋使用expired狀態的區空間,如果expired也不夠,則會嘗試覆蓋使用inactive狀態的區空間,如果設置了guarantee參數不能使用此狀態空間,或者inactive空間也用完了,事務則會被掛起。