热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

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

undo系列学习之undo段及区的状态和使用概述undo表空间只做一件事:保存旧值。在AUM下,段是自动生成,区是自动分配与回收,且是不连续的。oracle自动使用undo段,在某种意义上,我们只要关注undo表空间的大小就...SyntaxHighlighter.all();

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

推荐阅读
author-avatar
俊惠芸菁亚扬
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有