TX锁处理方法和原理

摘自 http://www.itpub.net/695644,1.html[@more@]

问题陈述
ALTER TABLE table_name MOVE INITRANS int
数据库版本8174。 Oracle Portal 用户在表 WWV_CORNERS 上发生死锁。 Oracle Support让我们增加表init_trans.
用命令 ALTER TABLE WWV_CORNERS MOVE INITRANS 100
这里有些记不清了,为什么要加个"MOVE",两个有什么区别呀?
如果"MOVE"的话,对系统有什么影响,是不是也要重建相关的索引?
这是个本地管理的表空间。

我们有另一个程序定时收集数据库信息,下面发生死锁前一瞬间的lock纪录。
在这里,我主要想知道修改INITRANS的命令应该怎么用,如果是alter...move..的话,是不是要重建在表上的索引?
DATE_TIME TYPE HLD REQ ID1 ID2 CTIME BLK USERNAME SID SERI
AL# CLIENT
---------- ---- --- --- ----------- -------- -------- --- ------------ ------ ----
--- ----------------------------------
1222174929 TX X -- 458783 711166 10 0 PORTAL30_PUB 202 45
112 ? @tdk00401 (TNS V1-V3),
LIC

1222174929 TX -- X 458783 711166 1 0 PORTAL30_PUB 306 60
535 ? @tdk00401 (TNS V1-V3),
LIC

解决方法及原理
TX - Transaction enqueue

alter table table_name move initrans 100
等价于
alter table table_name move
+
alter table table_name initrans 100

move如果不指定tablespace_name的话,就在当前表空间下

The move_table_clause lets you relocate data of a nonpartitioned table into a new segment, optionally in a different tablespace, and optionally modify any of its storage attributes.
You can also move any LOB data segments associated with the table using the LOB_storage_clause and varray_col_properties clause. LOB items not specified in this clause are not moved.
move 的时候会锁表

TX 是oracle的 row level lock,要用到数据块的Interest Transaction Slots的,Inittrans 就是数据块的初始 Slots 数量。只有当事务提交以后才会释放TX。

Q还是不要move了,move就是重组表。应该在文档上多见啊,可以带online参数,不过还是会有锁,而且索引都会失效,不过如果move的话表结构会比较整齐了,如果在线系统还是别movel了

A必须这样改,如果怕影响业务的话需要用在线重定义表,自己搜索一下。直接对表改initrans参数并不能解决问题,因为这个参数只对接下来新增数据的数据块有效,而对原来有数据的块没有用,这样你还是会碰到这问题。看你业务能不能停了,能停的话就直接MOVE,重建索引啥了。不能停的话就用在线重定义表了。
en,要看对老数据的处理要求了!如果对历史数据大部分操作是select的话,不move也可以,减少系统影响!有机会再重组!

Q 是不是move把这个表的数据块改变了 这样oracle就认为是新增的数据块 因此修改的initrans就生效了??对吗??
A MOVE事实上是对表的空间进行重组,数据重新分布,等于新创建一张表,把原来的表删除。

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

转载于:http://blog.itpub.net/7794469/viewspace-886825/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值