查询锁表语句和 pid:
select pid, query from pg_stat_activity where datname='数据库名' and wait_event_type = 'Lock';
可以看到那些执行 sql 语句的进程被锁了,卡住了。
select pg_cancel_backend( '进程pid');
该语句可以把锁住的进程杀掉。
通过 sql 语句拼装可以方便的把所有进程号封装起来,进而进行批量解锁
select 'select pg_cancel_backend( '''|| pid ||''');' pid from pg_stat_activity where datname='auto_2012_oracle_yz1' and wait_event_type = 'Lock';
查询后的结果复制下来可以直接执行。
select pg_cancel_backend( '17275'); select pg_cancel_backend( '31138'); select pg_cancel_backend( '4167'); select pg_cancel_backend( '8426'); select pg_cancel_backend( '8427'); select pg_cancel_backend( '30100'); select pg_cancel_backend( '30102'); select pg_cancel_backend( '30104'); select pg_cancel_backend( '28862'); select pg_cancel_backend( '16557');
可以达到批量解锁表的功能。
喜欢的点个赞❤吧!