今天遇到一个问题,发现greenplumn有一个表无法进行DDL,经过排查,表现存在一个表级锁accessshare lock,通过管理员账号解锁后,仍无法进行DDL,最后经通过杀死相关系统进程,才将问题解决。
方法如下:
1.查询表级锁
select a.locktype,a.database,a.pid,a.mode,a.relation,b.relname
from pg_locks a
join pg_class b on a.relation = b.oid
where upper(b.relname) = 'TABLE_NAME';
2.再根据上面查出来的pid去表pg_stat_activity查询一下该锁对应的SQL语句:
select usename,current_query ,query_start,procpid,client_addr from pg_stat_activity where procpid=pid;
3.如果query_start是多天以前开始的,那就应该是查询问题了。要杀进程解锁。
杀掉方法:在PG数据库mydb服务器中,查询这个进程PID然后Kill掉。
在服务器下操作
ps -ef|grep pid
kill -9 pid