回滚段测试

来源:互联网 发布:宁波海关数据 编辑:程序博客网 时间:2024/06/03 20:26

今天做了个回滚段的测试,来观察回滚段的使用情况:

1. 先看回滚段的一些设置:自动扩展关闭,回滚段使用率达到99%,undo表空间的RETENTION为NOGUARANTEE(即不一定保证undo_retention设置的undo保留时间)

SQL> SELECT t.TABLESPACE_NAME,t.AUTOEXTENSIBLE FROM Dba_Data_Files t WHERE t.TABLESPACE_NAME='UNDOTBS1';

TABLESPACE_NAME                AUT
------------------------------ ---
UNDOTBS1                       NO


SQL> SELECT t.retention  FROM Dba_Tablespaces t WHERE t.tablespace_name='UNDOTBS1';


RETENTION
-----------
NOGUARANTEE

2. 再看看回滚段各个区的状态:可以看到未过期的有3915.38(如果按undo_retention设置的时间来看,应该是早就过期了,因为这是我昨天产生的数据,只是oracle没人用的时候懒得回收

SELECT T.TABLESPACE_NAME,
       T.STATUS,
       ROUND(SUM(T.BYTES)/1024/1024,2) UNDO_SIZE
  FROM DBA_UNDO_EXTENTS T
 GROUP BY T.TABLESPACE_NAME,T.STATUS;

 UNDOTBS1  UNEXPIRED  3915.38
UNDOTBS1  EXPIRED  474.25

3.同样用上面的语句,来采样各个状态的变化:

UNDOTBS1     UNEXPIRED3915.38
UNDOTBS1 EXPIRED458.63
UNDOTBS1 ACTIVE 45.75


1 UNDOTBS1UNEXPIRED3915.38
2 UNDOTBS1 EXPIRED 201.69
3 UNDOTBS1 ACTIVE 302.38                           ----可见oracle在无力扩展的情况下,是会先重用EXPIRED的空间


1UNDOTBS1UNEXPIRED19.31
2 UNDOTBS1 EXPIRED 3938.56
3 UNDOTBS1 ACTIVE 461.56                          ----可见EXPIRED空间不够时,就会使用UNEXPIRED的空间,注意这里未过期并不一定说明其未超过undo_retention设置的undo保留时间,或 许只是oracle在悠闲的时候懒得去转换EXPIRED与UNEXPIRED的状态,所以即使undo表空间的RETENTION设置成了GUARANTEE,也有可能使用UNEXPIRED的空间(因为里面不一定都是未过期的内容)

1UNDOTBS1UNEXPIRED19.31
2 UNDOTBS1 EXPIRED 3341.69
3 UNDOTBS1 ACTIVE 1058.44

实验证明了我在UNDO_RETENTIOIN文章里面说明的回滚段使用规律。。。。

原创粉丝点击