ITPub博客

首页 > Linux操作系统 > Linux操作系统 > undo tablespace介绍

undo tablespace介绍

原创 Linux操作系统 作者:season0891 时间:2011-08-09 11:06:19 0 删除 编辑

转载的地址没记下来......
报错: ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS1'
以下是介绍:
没写具体的解决方法

select segment_name, blocks, bytes/1024, status,BLOCK_ID,BLOCK_ID+blocks-1 from
dba_undo_extents where tablespace_name = 'UNDOTBS1'

auto undo management

auto undo management是oracle推出代替manual rollback
segment,oracle官方的文档上有介绍AUM的原理和实现方法,今天我们不再重复这些内容,
我们来深入一些官方文档中点到为止的东西。

 当创建undo
 tablespace时最少包含一个初始segment,最多包含十个初始segment,每个初始segment包
 括2个extent,在9i中的话第一个extent被保留了一个块,只有7个block可用,10g的话8个
 块都可以用。

---- undo space reuse

每个undo extent可以有三种状态:

active:有活动事务在此extent上

expired:已结束的事务,undo 信息超过undo_retention时间限制

unexpired:已经结束的事务,undo 信息未达到undo_retention时间限制

---- 当一个事务开始它将会去寻找可用的undo
block来存放undo信息,它将按照以下顺序请求undo space

1.先去搜索拥有非active extent的undo segment,如果没有发现,那么会去创建新的undo
segment,如果空间不够不能创建,将返回错误。过程如下

2.如果有一个undo segment被选中,但是其中free的undo block并不足以存储该事务的undo
信息,那么它将尝试创建extent,如果没有空间,那么将会进入下一步

3.如果创建新extent失败,它将会搜索其他undo segment中expired extent并重用。

4.如果其他undo segment中没有expired extent可使用,那么它会继续搜索其他undo
segment中unexpired extent并重用。

5.如果经过以上尝试还没有可用空间,将会返回错误。

出现了steal,也就是reuse了unexpired extent

EXPSTEALCNT:尝试请求expired extent的次数 EXPBLKREUCNT:实际使用expired
block数 UNXPSTEALCNT:尝试请求unexpired extent的次数
UNXPBLKREUCNT:实际使用unexpired block数

从上面这些实验中我们也可以看出9i的undo_retention并不保证undo
block一直会被保持到retention过期,不过10g已经提供了这种保证。

create undo tablespace UNDO_FOUR datafile
'/opt/oracle/oradata/dbtest/undo04.dbf' size 320K reuse RETENTION GUARANTEE

come from :http://blog.csdn.net/rainv/article/details/1576926

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/90618/viewspace-704475/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-06-10

  • 博文量
    791
  • 访问量
    1946652