Hendane 发表于 2010-11-19 14:25

栏位长度改不了

有个表的栏位要从char(12)------>char(20),但是一直改不了,提示

   242: 无法开启资料库表格 (informix.bcw_file).
   106: ISAM 错误:非独占性存取.

但是却并未发现有锁之类的,请问如何处理?

liaosnet 发表于 2010-11-19 14:43

onstat -k 看下吧。。。使用parnum的16进制查找~

Hendane 发表于 2010-11-19 16:46

本帖最后由 Hendane 于 2010-11-19 16:49 编辑

select hex(partnum) from systables
where tabname like "鎖住的表名"
這條語句會返回該表的物理地址。(取物理地址最后六位,如有大寫字母換成小寫。)
然后返回到informix用戶下
onstat -k | grep 表的物理地址(6位)
會返回該表的鎖定行。如果沒有返回。則証明該表沒有鎖定。
onstat -u | grep 鎖定地址
返回哪個用戶會話鎖定該表


这个是没发现有锁的。但是就是改不了。
改了几天了。

之前我也遇到过,但是实在没办法,就只能把这个库的所有session杀掉,再修改。
但是我想informix也不至于这么烂吧,是不是有其它方法能找到哪个session在使用这个表。

liaosnet 发表于 2010-11-19 17:20

select hex(partnum) from systables
where tabname like "鎖住的表名"
這條語句會返回該表的物理地址。( ...
Hendane 发表于 2010-11-19 16:46 http://bbs.chinaunix.net/images/common/back.gif


    onstat -g opn通过partnum去匹配rstcp, 然后在onstat -u中匹配rstcp获取会话ID。

BTW:由于手动操作/即便是SHELL操作也是需要时间的,可能抓不到匹配的会话ID。 可以考虑set lock mode to wait ; lock table ..      ; drop table方式来删除表。

Hendane 发表于 2010-11-19 17:34

TKS,刚试了试没找到匹配的,但是已经改掉了,可能是用户退出了。下次遇到这种情况再试试。还从来没用过
opn这个选项:dizzy:

大梦 发表于 2010-11-19 22:03

你的还是个中文版的!
看来挺别扭的!

这种情况肯定是锁了!

Hendane 发表于 2010-11-20 08:24

知道是锁了,但是平常方法找不出锁,所以改不了。
确切的说是繁体版的

hanner_cheung 发表于 2010-11-22 00:00

回复 4# liaosnet


    這種方法是否能應對如下情況:造成表鎖的原因是由於指向該表的synonym造成(虛表有人在操作,虛表不在本機)?
   我們日常操作還有一種方法: select owner from sysmaster:syslocks where tabname like ""和onmode -z owner 組合。但該方法只適合于常規。
页: [1]
查看完整版本: 栏位长度改不了