如何查询db2数据库表是否被锁

如何查询db2数据库表是否被锁,第1张

1、首先点击桌面上的SQL server数据库

2、然后打开SQL server数据库,输入登录名,密码,点击连接。

3、接着点击左上角新建查询,选择master数据库。

4、先查看数据库被锁的表。

5、接着输入解锁进程,然后执行就可以进行数据库解锁了。

Sybase只能用sp_helpdb或者sp_spaceuesd类似的系统存储过程,考虑了一下,看系统表的参考吧。所以写出如下语句

    use master

    go

    select b.name,sum(a.size) *2 ,sum(a.unreservedpgs) *2 unreservedpgs from sysusages a,sysdatabases b

    where a.dbid=b.dbid

    group by b.name

    go

测试,ok。

说明:*2表示页的大小是2k,得到的结果也是k,结果集中第一个字段是数据库的名称,第二个是该数据库分配的空间,第三个是该数据库尚未使用的空间。根据实际需要扩展该sql即可,可以得到某个表空间的使用率超过75%之类的告警。

对于死锁的监控,很麻烦,参考sp_sysmon以及sp_who和sp_lock的实现,写了语句如下:

select p.spid,suser_name(p.suid),p.blocked,suser_name(p1.suid),db_name(p.dbid),p.status,p.program_name,getdate(),p.time_blocked

from master..sysprocesses p,master..sysprocesses p1

where p.blocked>0 and p.blocked *=p1.spid

可以根据time_blocked的大小判断是阻塞还是死锁,如果时间很短就结束了,说明是阻塞,如果很长,就应该是死锁了。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9933900.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-03
下一篇2023-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存