Oracle undo表空间

一、回滚段的介绍

  在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 undo

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
undo_management              string     AUTO
undo_retention                 integer     900
undo_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               ONLINE

SEGMENT_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               OFFLINE

21 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 APPLY
SYSAUX                   NOT APPLY
UNDOTBS1               NOGUARANTEE
TEMP                   NOT APPLY
USERS                   NOT APPLY
UNDOTBS2               NOGUARANTEE
EXAMPLE                NOT APPLY
TBS01                   NOT APPLY
TBS02                   NOT APPLY
CATALOGDAT               NOT APPLY
TBS_TRAN               NOT APPLY

11 rows selected.
回退保持力非强制

 

  

posted on 2018-10-29 20:11  Memory_Python  阅读(180)  评论(0编辑  收藏  举报

导航