频道栏目
首页 > 数据库 > Oracle > 正文
undo系列学习之undo段及区的状态和使用概述
2012-08-01 08:45:12           
收藏   我要投稿


undo系列学习之undo段及区的状态和使用概述

 

   undo表空间只做一件事:保存旧值。在AUM下,段是自动生成,区是自动分配与回收,且是不连续的。oracle自动使用undo段,在某种意义上,我们只要关注undo表空间的大小就可以了。

 

    查询当前哪个undo表空间被激活:

[sql] 

sys@ORCL> show parameter undo_tablespace  

    www.2cto.com  

NAME                                 TYPE        VALUE  

------------------------------------ ----------- ------------------------------  

undo_tablespace                      string      UNDOTBS1  

 

    查询undo表空间里面有多少个数据文件:

[sql] 

sys@ORCL> col file_name for a72  

sys@ORCL> select file_name,bytes/1024/1024 m from dba_data_files where tablespace_name like '%UNDOTBS%';  

  

FILE_NAME                                                                         M  

------------------------------------------------------------------------ ----------  

/u01/app/oracle/oradata/ORCL/datafile/o1_mf_undotbs1_8050fkc6_.dbf              100  

/u01/app/oracle/oradata/ORCL/datafile/thinkundo.dbf                              30  

 

    查询undo表空间里面在线有多少个段:

[sql] 

sys@ORCL> select * from v$rollname;  

    www.2cto.com  

       USN NAME  

---------- ------------------------------  

         0 SYSTEM  

         1 _SYSSMU1$  

         2 _SYSSMU2$  

         3 _SYSSMU3$  

         4 _SYSSMU4$  

         5 _SYSSMU5$  

         6 _SYSSMU6$  

         7 _SYSSMU7$  

         8 _SYSSMU8$  

         9 _SYSSMU9$  

        10 _SYSSMU10$  

  

11 rows selected.  

    查询段有多少个区和块:

[sql] 

sys@ORCL> select segment_name,extents,blocks from dba_segments where segment_name='_SYSSMU3$';  

  

SEGMENT_NAME       EXTENTS     BLOCKS  

--------------- ---------- ----------  

_SYSSMU3$               17        256  

  www.2cto.com  

    查询区有多少个块:

[sql] 

sys@ORCL> select file_id,tablespace_name,segment_name,extent_id,block_id,blocks from dba_extents where  

  2  segment_name='_SYSSMU3$';  

  

   FILE_ID TABLESPACE_NAME                SEGMENT_NAME     EXTENT_ID   BLOCK_ID     BLOCKS  

---------- ------------------------------ --------------- ---------- ---------- ----------  

         2 UNDOTBS1                       _SYSSMU3$                0         41          8  

         2 UNDOTBS1                       _SYSSMU3$                1         49          8  

         2 UNDOTBS1                       _SYSSMU3$                2         17          8  

         2 UNDOTBS1                       _SYSSMU3$                3         33          8  

         2 UNDOTBS1                       _SYSSMU3$                4        161          8  

         2 UNDOTBS1                       _SYSSMU3$                5        169          8  

         2 UNDOTBS1                       _SYSSMU3$                6        177          8  

         2 UNDOTBS1                       _SYSSMU3$                7        185          8  

         2 UNDOTBS1                       _SYSSMU3$                8        201          8  

         2 UNDOTBS1                       _SYSSMU3$                9        209          8  

         2 UNDOTBS1                       _SYSSMU3$               10        217          8  

         2 UNDOTBS1                       _SYSSMU3$               11        225          8  

         2 UNDOTBS1                       _SYSSMU3$               12        233          8  

         2 UNDOTBS1                       _SYSSMU3$               13        241          8  

         2 UNDOTBS1                       _SYSSMU3$               14        249          8  

         2 UNDOTBS1                       _SYSSMU3$               15        257          8  

         7 UNDOTBS1                       _SYSSMU3$               16        521        128  

    www.2cto.com  

17 rows selected.  

 

    从这里我们也可以看出,undo段中的区的分配是不连续的。

 

    undo段中区的状态:

    1)free:没有分配给任何一个段

    2)active:区中有事务没有提交

    3)inactive:区中的事务提交了

    4)expired:事务提交而且达到了undo_retention

    注:我们可以通过设定undo_retention来保住inactive的区,若没有free,则自动扩展;若扩展不了,则优先使用expired;若还不够,则就会使用inactive,但如果此时retention是guarantee保证的,则无法使用inactive,会报ORA-30036.

 

[sql] 

sys@ORCL> select extent_id,bytes,status from dba_undo_extents where segment_name='_SYSSMU3$';  

  

 EXTENT_ID      BYTES STATUS  

---------- ---------- ---------  

         0      65536 EXPIRED  

         1      65536 EXPIRED  

         2      65536 EXPIRED  

         3      65536 EXPIRED  

         4      65536 EXPIRED  

         5      65536 EXPIRED  

         6      65536 EXPIRED  

         7      65536 EXPIRED  

         8      65536 EXPIRED  

         9      65536 EXPIRED  

        10      65536 EXPIRED  

        11      65536 EXPIRED  

        12      65536 EXPIRED  

        13      65536 EXPIRED  

        14      65536 EXPIRED  

        15      65536 EXPIRED  

        16    1048576 EXPIRED  

    www.2cto.com  

17 rows selected.  

 

 

作者 linwaterbin

点击复制链接 与好友分享!回本站首页
相关TAG标签 习之 状态 段及区
上一篇:Oracle与SQLserver区别
下一篇:oracle 10g已删除数据查询的两种方式
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站