informix和oracle锁表解锁
对于informix数据库
选择sysmaster数据库
select * from syslocks; 查到锁表的owner
然后在informix下onmode -z owner;
对于Oracle数据库的锁:
查看被锁的表:
select p.spid,
c.object_name,
b.session_id,
b.oracle_username,
b.os_user_name
from v$process p, v$session a, v$locked_object b, all_objects c
where p.addr = a.paddr
and a.process = b.process
and c.object_id = b.object_id
解锁:
alter system kill session '12345';(其中12345为锁住的进程号)
Informix 数据库锁处理
可以将 syssessions 表与 syslocks 表连接以获取关于锁的更多详细信息,如哪个会话当前锁定了哪个数据库中的哪个表,以此来帮助确定各用户之间潜在的锁冲突:
select owner, username, hostname, dbsname, tabname, type
from syssessions s, syslocks l
where sid = owner
and tabname = u_tablenameXXX
输出类似于:
Owner username hostname dbsname tabname type
1422 wsine apple prod customer S
1567 jlinder sys3524 dev products S
2237 ejhonson case prod orders X
6679 cjz020 sys4800 dev shipment S
889654 jfjianing omega test prices X
77622 hong build50 test items S
如果在锁使用方面存在某些冲突,例如某个用户需要对已被别的用户锁定的表进行专有访问,那么您可以方便地确定该锁的所有者,并根据用户的优先级发出 onmode -z sid 命令来杀死会话,然后释放该锁;sid 这个编号是从上面输出中的 owner 字段中获取的;请注意,只有用户“Informix”可以执行该命令。
阅读(1132) | 评论(0) | 转发(0) |