一、回滚段的介绍
在Oracle数据库中,当某个事务对数据库进行修改时,Oracle首先将数据库的原始值保存到一个回退段中,一个事务只能将它的信息保存到一个回滚段中,而多个并行事务可以使用同一个回滚段。
•回滚段的作用
--事务回滚:当事务事务执行失败或用户执行回滚操作时(rollback),Oracle会利用保存在回滚段中的信息将数据恢复到原来的值;
--数据库恢复:当数据库实例运行运行失败,在数据库重启恢复时,Oracle先利用重做日志文件对数据库进行恢复(包括已提交和未提交的事务),再利用回滚段中的信息回滚未提交的事务;
--一致性读,构建CR块:当一个用户对数据进行修改时,会预先将其原始值报错到回滚段中,这时有其他用户访问数据时,就会看到原始数据;
--闪回查询:通过保留在回滚段中的信息,用户可以查询某个数据在过去某个时刻的数据;
SELECT * FROM table as of timestamp to_timestamp('2018-10-11 00:34:09','yyyy-mm-dd hh24:mi:ss');
二、undo表空间介绍
--查询数据库当前使用的是哪个表空间
SQL> show parameter undoNAME TYPE VALUE------------------------------------ ----------- ------------------------------undo_management string AUTOundo_retention integer 900undo_tablespace string UNDOTBS1
--回滚段信息
SQL> select segment_name,tablespace_name ,status from dba_rollback_segs;SEGMENT_NAME TABLESPACE_NAME STATUS------------------------------ ------------------------------ ----------------SYSTEM SYSTEM ONLINE_SYSSMU1_3724004606$ UNDOTBS1 ONLINE_SYSSMU2_2996391332$ UNDOTBS1 ONLINE_SYSSMU3_1723003836$ UNDOTBS1 ONLINE_SYSSMU4_1254879796$ UNDOTBS1 ONLINE_SYSSMU5_898567397$ UNDOTBS1 ONLINE_SYSSMU6_1263032392$ UNDOTBS1 ONLINE_SYSSMU7_2070203016$ UNDOTBS1 ONLINE_SYSSMU8_517538920$ UNDOTBS1 ONLINE_SYSSMU9_1650507775$ UNDOTBS1 ONLINE_SYSSMU10_1197734989$ UNDOTBS1 ONLINESEGMENT_NAME TABLESPACE_NAME STATUS------------------------------ ------------------------------ ----------------_SYSSMU11_2405047275$ UNDOTBS2 OFFLINE_SYSSMU12_4193091853$ UNDOTBS2 OFFLINE_SYSSMU13_426403437$ UNDOTBS2 OFFLINE_SYSSMU14_3476995392$ UNDOTBS2 OFFLINE_SYSSMU15_2977663266$ UNDOTBS2 OFFLINE_SYSSMU16_70103909$ UNDOTBS2 OFFLINE_SYSSMU17_83561221$ UNDOTBS2 OFFLINE_SYSSMU18_1562838573$ UNDOTBS2 OFFLINE_SYSSMU19_432397083$ UNDOTBS2 OFFLINE_SYSSMU20_998160251$ UNDOTBS2 OFFLINE21 rows selected.--共21个回滚段
--参数说明
•undo_retention :设置回退信息在回滚段保留的时间,单位秒,作用之一闪回查询(只提供DML语句的闪回);
--如何监控undo segment 使用情况:使用动态性能视图,v$transaction,记录事务内每个用户使用回滚块的数量(sys用户,占用7号回滚段,1个数据块)
SQL> select a.USERNAME,b.XIDUSN,b.USED_UBLK from v$session a ,v$transaction b where a.SADDR = b.SES_ADDR;USERNAME XIDUSN USED_UBLK------------------------------ ---------- ----------SYS 7 1
•undo表空间特有属性retention(回退保持力,非强制),其他表空间都没有,跟undo_retention时间有关,回滚段里的保存回滚信息不强制保留900秒;
SQL> select tablespace_name,retention from dba_tablespaces;TABLESPACE_NAME RETENTION------------------------------ -----------SYSTEM NOT APPLYSYSAUX NOT APPLYUNDOTBS1 NOGUARANTEETEMP NOT APPLYUSERS NOT APPLYUNDOTBS2 NOGUARANTEEEXAMPLE NOT APPLYTBS01 NOT APPLYTBS02 NOT APPLYCATALOGDAT NOT APPLYTBS_TRAN NOT APPLY11 rows selected.回退保持力非强制