每个块都有一个块首部。这个块首部中有一个事务表。事务表中会建立一些条目来描 述哪些事务将块上的哪些行/元素锁定。这个事务表的初始大小由对象的INITRANS 设置指定。对于表,这个值默认为2(索引的INITRANS 也默认为2)。事务表会根据需要动态扩展,最大达到MAXTRANS 个条目(假设块上有足够的自由空间)。所分配的每个事务条目需要占用块首部中的23~24 字节的存储空间。注意,对于Oracle 10g,MAXTRANS 则会忽略,所有段的MAXTRANS 都是255。
也就是说,如果某个事物锁定了这个块的数据,则会在这个地方记录事务的标识,当然那个事务要先看一下这个地方是不是已经有人占用了,如果有,则去看看那个事务是否为活动状态。如果不活动,比如已经提交或者回滚,则可以覆盖这个地方。如果活动,则需要等待(闩的作用)
所以,如果有大量的并发访问使用的这个块,则参数不能太小,否则资源竞争将导致系统并发性能下降。
文章出处:DIY部落(http://www.diybl.com/course/7_databases/oracle/oraclexl/200919/154477.html)
pctfree:当一个块的使用空间达到100-pctfree值时,这个块从自由列表脱离。比如pctfree为10,那么当这个块使用90%的时候将会脱离freeelist,后续的insert将不会用到这个block。来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/11411056/viewspace-733395/ ,如需转载,请注明出处,否则将追究法律责任。