Oracle ITL (Interested Transaction List) - 事务槽

Oracle ITL.

什么是Interested Transaction List(ITL)及ITL等待?  如何减少ITL等待?如何诊断ITL等待?怎样调整INITRANS 的值 ?   

 

ITL是block中的相关事务信息的记录,包括 事务信息的记录(包括list编号、回滚段地址、事务类型、事务状态[提交否]、事务在该block影响的记录条数等)。ITL 是  consistents reads 的基础,根据ITL 才能去回滚段中找变化前的数据 。 如果这个事务已经提交,那么这个ITL的位置就可以被反复使用了,因为ITL类似记录,所以,有的时候也叫itl槽位。   每一个ITL 对应一个 SCN 。

如果这个事务已经提交,那么,ITL槽位中还保存的有这个事务提交时候的SCN号

对于已经提交的事务,itl槽位最好不要马上被覆盖,因为一致性读可能会用到这个信息,一致性读的时候,可能需要从这里获得回滚段的入口,并从回滚段中获得一致性读。

itl的个数,受参数initrans控制,最大的itl个数,受maxtrans控制,在一个块内部,默认分配了2个或3个itl的个数,如果这个块内还有空闲空间,那么Oracle是可以利用这些空闲空间并再分配itl的。如果没有了空闲空间,那么,这个块因为不能分配新的itl,所以就可能发生itl等待。
如果在并发量特别大的系统中,最好分配足够的itl个数,其实它并浪费不了太多的空间,或者,设置足够的pctfree,保证itl能扩展,但是pctfree有可能是被行数据给消耗掉的,如update,所以,也有可能导致块内部的空间不够而导致itl等待。

如果想增加initrans个数,参数可以动态修改,但是,只是针对以后的新块起效,以前的块如果想生效,需要在新参数下,重整表数据,如重建该表,或者move该表。


需要同时修改一个block数据的session超过maxtrans参数的限制, 或者由于block空间使用过多导致数据库无法扩展itl, 就会发生itl的等待了.


适当增大initrans的个数,, 一般有3-4个就足够了..

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

转载于:http://blog.itpub.net/35489/viewspace-671133/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值