ITPub博客

首页 > Linux操作系统 > Linux操作系统 > undo_retention 与 undo extent 的使用

undo_retention 与 undo extent 的使用

原创 Linux操作系统 作者:tolywang 时间:2010-08-02 09:44:19 0 删除 编辑


Oracle为undo的管理提供了另一个参数:undo_retention。该参数以秒为单位,表示当
事务提交或回滚以后,该事务所使用的undo块里的数据需要保留多长时间;当保留的时
间超过undo_retention所指定的时间以后,该undo块才能够被其他事务覆盖。

 

当我们使用AUM,并设置了undo_retention以后,undo块就存在四种状态。
a. Active:表示正在使用该undo的事务还没有提交或回滚。
b. Inactive:表示该undo上没有活动的事务,该状态的undo可以被其他事务覆盖。
c. Expired:表示该undo持续inactive的时间超过undo_retention所指定的时间。
d. Freed:表示该undo块内容是空的,从来没有被使用过。

 

当活动的事务使用undo segment时,在AUM下,事务可以在不同的undo segment
之间动态交换undo空间(也就是extents),当一个执行的事务需要更多的undo空间
时,首先会重用当前undo segment里的可用空间,如果不足,则按照下面步骤获
取所需要的extent :
a. 获取undo表空间中可用的,空的extents;
b. 获取其他undo segment里的expired状态的extents;
c. 如果undo数据文件启用了自动扩展,则文件自动扩展;
d. 如果undo文件都没有启用自动扩展,则获取其他undo segment中inactive的;
e. 如果以上步骤均无法获得可用空间时,报空间不足的错误消息.


从这里可以看出,在AUM里,分配undo块的算法不仅有效,而且会尽可能地将INACTIVE
状态的extents保留足够长的时间。在Oracle10g里,如果undo表空间有足够的可用空间
,则Oracle会将undo信息保留的时间与当前运行时间最长的那个查询所需要的时间相同。

 

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

请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    14695628