近日,数据库的测试环境中有一个打印日志表,一共有将近50w的数据,Java程序在查询的时候一直超时。
在DBvisualizer中查询数据无论是使用select *
还是 select count(*)
查询的时候都是一直在执行,就是查询不到结果。
以上操作均不奏效,因没有数据库管理员权限,找到数据库管理员,进行排查。
查看了与该表有关的锁,出现了好多个IX锁,X锁和IS锁。
怀疑是锁表,请管理员force掉对应的application,但是由于数据库所在的服务器IP之前因一些原因重新修改过,导致数据库的注册信息不一致,实例用户无法对数据库进行操作。
最终,决定重启数据库,更新数据库的注册信息。同时在重启数据库的时候,相关的进程也都被force了,在重启结束后数据库表查询无反应问题解决了。
数据库表一直查询无反应,大概率是数据表被锁死了。下次遇到的话需要优先考虑这个问题(排查的时候需要有管理员权限,查看锁相关信息。
db2pd -db 数据库名字 -locks show detail | grep 表明