一次人大金仓剔除锁经历

网友投稿 344 2022-11-04


一次人大金仓剔除锁经历

前几天有同事在群里问,怎么杀掉人大金仓的锁?因为伊在安装软件的时候遇到警告,提示有锁,无法继续。

这种问题,应该由DBA负责,我们开发人员只是二把刀,甚至连二把刀都称不上,并非专业的DBA,况且人大金仓刚接触。就算是oracle,遇到这种问题,也只能查资料或翻看以往的记录,不可能记住这些繁琐的命令。这次也是从网上搜来的语句,我试了一下,问题解决。

SELECT pid,usename,application_nameapp,client_addr,xact_start,wait_event_type,wait_event,state,queryFROM sys_stat_activityWHERE pid<>(SELECT sys_backend_pid())AND datname='gistest' AND usename='sde';//数据库名和用户名SELECT sys_terminate_backend(6120);//将觉得有问题的pid处理一下,居然是用select,有点令人惊讶

第一条语句查找指定数据库和用户的当前活动,最重要的是列出了pid。如果觉得有些活动有问题,就终结它(terminate)。终结者,terminator,阿诺猪华生力啤。

这些pid由2个数字组成,中间用逗号隔开。但sys_terminate_backend函数里,它们全部堆上去,并无逗号。比如这个6120,明明是"6,120"。

sys_stat_activity,是人大金仓里的一个动态统计视图,显示每个会话进程的当前活动信息,如进程PID、进程状态、查询语句、 开始时间等。

同事这次遇到的锁,是有人修改了东西,没有commit,因此锁住了。这类似于是一个长事务。事务和锁,是关系型数据库支持并发的手段。事务的原则,简而言之,就是晚开启,早释放。长事务,是不受欢迎的。

附录:

 长事务的弊端

阻止垃圾回收,导致表和索引膨胀频繁唤醒autovacuum进程,浪费I/O 查找长事务SELECT pid,state,query FROM sys_stat_activity WHERE state <> ‘idle’ AND now()-xact_start >interval ‘300s’; 终止长事务、长连SELECT sys_terminate_backend(pid)清理长事务

幸甚至哉,记它。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java生成pdf文件或jpg图片的案例讲解
下一篇:统信里安装人大金仓
相关文章

 发表评论

暂时没有评论,来抢沙发吧~