数据库锁表故障的检查及处理

一、检查方法
Informix数据库的锁包括独占锁(exclusive)、升级锁(update)、共享锁(shared)、字节锁(byte)和意图锁(intent)五种类型。
我们经常遇到的是独占锁的问题。当一张表或一个记录被独占锁锁住时,其他的修改操作就无法完成,即使是普通的SQL语句也无法执行。
步骤 1        以informix用户登录数据库所在机器。
步骤 2        检查是否存在数据库锁表故障。
informix% onstat –k
address  wtlist           owner           lklist           type     tblsnum  rowid    key#/bsiz
c1809510 0        d656e774  c181cb3c     HDR+X    6002e1   2c602       0
如果存在type为HDR+X的记录,表示存在数据库锁表故障。
步骤 3        检查哪张表被锁。
1.        将tblsnum的值转换成十进制数。
例如6002e1转换成十进制数为6292193。
2.        登录系统数据库。
informix% dbaccess sysmaster
3.        根据提示,依次选择“Query-language > New”,输入如下SQL语句。
select * from systables where partnum='6292193';
退出后,选择“Run”,执行结果如下:
tabname    managelog
owner      tellin
partnum    6292193
tabid      12813
......
可以看到,锁表的名称为managelog。
----结束
二、处理方法
步骤 1        根据owner的值找出该线程所属的session ID。
informix% onstat -u |grep d656e774
d656e774 Y--P--- 2113     scu      tc     d0ab4460 0    1     2     0
加红部分为session ID。
步骤 2        根据session ID的值找出该线程所属的对应的进程ID。
informix% onstat -g ses 2113Informix Dynamic Server Version 9.40.FC7W4   -- On-Line -- Up 3 days 00:03:45 – -
134408 Kbytes
session                                        #RSAM    total      used
id       user     tty        pid     hostname threads  memory     memory
2113     scu      tc       5654      hp222    1        65536      47528
......
步骤 3        根据pid的值找出锁表的进程。
# ps -ef |grep 5654
scu  5654  5653  0  Oct 19  ?         2:03 iuserbill 0
如果是非紧要的进程,则可直接结束该session或进程
参与6

6同行回答

antyisonantyison数据库运维工程师南大通用
回复 5# hugolin     onstat -g opn|grep partnum  能看到是哪些线程打开了这张表。有的时候onstat -k看不到有锁,但还是报锁表。这时候看onstat -g opn是可以看到线程的。至于为什么会出现这种情况,我还没想明白:)...显示全部
回复 5# hugolin


    onstat -g opn|grep partnum  能看到是哪些线程打开了这张表。

有的时候onstat -k看不到有锁,但还是报锁表。这时候看onstat -g opn是可以看到线程的。

至于为什么会出现这种情况,我还没想明白:)收起
IT其它 · 2012-03-22
浏览787
hugolinhugolin数据库管理员gbase
onstat -g ppf是可以看。。显示全部
onstat -g ppf是可以看。。收起
互联网服务 · 2012-03-21
浏览716
hugolinhugolin数据库管理员gbase
回复 4# antyison     如何看呢?显示全部
回复 4# antyison


    如何看呢?收起
互联网服务 · 2012-03-20
浏览730
antyisonantyison数据库运维工程师南大通用
其实看锁表,onstat -g opn这个命令有时候挺方便的·~~;P显示全部
其实看锁表,onstat -g opn这个命令有时候挺方便的·~~;P收起
IT其它 · 2012-03-20
浏览753
lwmailtlwmailt网络管理员北京华泰
收藏,非常实用显示全部
收藏,非常实用收起
电信设备制造商 · 2012-03-12
浏览726
sikoleesikolee系统管理员sino
非常感谢,记下了显示全部
非常感谢,记下了收起
政府机关 · 2012-03-10
浏览712

提问者

saigon
系统运维工程师China
擅长领域: 服务器UnixAIX

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2011-07-14
  • 关注会员:0 人
  • 问题浏览:4278
  • 最近回答:2012-03-22
  • X社区推广