收到业务侧在某集群无法正常 drop 表的情况。就是执行 drop 语句这条会话会卡在那里,也没有任何报错提示。
遇到这种情况第一时间想的是会不会两条调度同时对一张表执行 dml 操作导致的冲突,也就是锁表。于是第一时间查看当前会话。
select * from pg_stat_activity where current_query <> ‘<IDLE>’::text;
加上 where 条件可以去除空闲会话。
但是 drop 的时候集群空闲,只有这一个会话。
那会不会是在 segment 节点的锁冲突导致呢,因为 greenplum 数据库中的每个 segment 节点都是相当于一个独立的 pg 数据库,完全可能出现这种情况。
但是这样的会话怎么定位?生产集群有几十台主机几百个实例总不能一个一个实例登录吧。
这里有个方法,在 gp 数据库中所有执行的调度中会在 Linux 层面显示 sess_id。
+
上图不是问题会话,如果在 segment 节点有残留会话会在 idle 的位置显示 waiting。
找到残留会话就需要登录那个实例
PGOPTIONS="-c gp_session_role=utility" psql -hip -p 端口号 -d 实例名
然后查看所有的会话
select * from pg_stat_activity where current_query <> ‘<IDLE>’::text;
注意看会话开始执行的时间,一般残留会话都是几天前的会话。或者看有没有调度使用到了 drop 的表。直接清理。
select pg_terminate_backend(‘procpid’);
这样就解决了这个问题。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
记一次ORA600内部错误故障分析与修复实录
Digital Observer
281次阅读
2025-03-05 09:33:15
大连农商40万,采购Greenplum数据库原厂订阅服务
天下观查
274次阅读
2025-03-13 09:52:29
记一次oracle rac 一个节点load averge高导致的问题
Digital Observer
230次阅读
2025-03-13 10:13:43
REMOTE_LISTENER引发的血案
Digital Observer
166次阅读
2025-03-17 09:27:37
Greenplum异常节点恢复,屋漏偏逢连夜雨?
easonhyj
51次阅读
2025-03-24 18:00:37
170 TB Greenplum订阅服务!民生银行
天下观查
27次阅读
2025-03-11 10:14:31
为什么别人家的GreenPlum数据库能跑的那么快?
呆呆的私房菜
13次阅读
2025-03-13 09:52:22
记一次watchdog引起的Oracle数据库异常
Digital Observer
12次阅读
2025-04-01 09:59:38
170 TB Greenplum订阅服务!民生银行
天下观查
9次阅读
2025-03-07 07:06:44
TA的专栏
学习成长
收录1篇内容