您的位置:首页 > 其它

【greenplum】greenplum 如何删除临时schema(孤立schema)

2017-11-16 14:44 537 查看
参考:

1.
Orphaned Temporary Schemas in Greenplum Database 

2.
how to clean orphan temp schemas in greenplum 

      每个数据库会话都可以创建并使用临时模式来处理会话临时表。通常,这些模式在会话结束时被删除。但是,由于进程崩溃或其他非默认会话结束,会话完成后,这些临时模式仍然存在。



这些临时模式通常不会产生麻烦,除非涉及事务管理并完成目录检查。在前一种情况下,这些临时模式(及其中的对象)是特定于会话的,因此VACUUM命令无法处理它们。在后一种情况下,它们会在gpcheckcat日志文件中提供很多噪音,并可能掩盖其他重要的目录不一致情况。

由于上述原因,建议删除这些“孤立”临时模式,特别是在使用gpcheckcat进行目录检查之前。gpcheckcat实用程序当然会识别它们并将它们指向它们,但是在运行该工具之前删除这些孤立的temp模式会更容易,更快速。建议数据库处于管理模式(无用户会话),因此可以轻松识别这些孤立模式。

删除方法:

drop schema if exists pg_temp_XXXX cascade;


批量删除:

select
'drop schema if exists ' || nspname || ' cascade;'
from (
select nspname from pg_namespace where nspname like 'pg_temp%' -- 查主节点临时schema
union
select nspname from gp_dist_random('pg_namespace') where nspname like 'pg_temp%'  -- 查所欲节点上的临时schema
except
select 'pg_temp_' || sess_id::varchar from pg_stat_activity  -- 除去当前session的零时schema
) as foo


批量删除所有库的:

psql -Atc "select datname from pg_database where datname != 'template0'" | while read a;
do
echo "check for ${a}";
psql -Atc "select
'drop schema if exists ' || nspname || ' cascade;'
from
(
select nspname from pg_namespace where nspname like 'pg_temp%'
union select nspname from gp_dist_random('pg_namespace') where nspname like 'pg_temp%'
except select 'pg_temp_' || sess_id::varchar from pg_stat_activity
) as foo
" ${a};
done


只删除主节点的临时schema:

SELECT
'drop schema ' || nspname || ' cascade;'
FROM
(
SELECT nspname FROM pg_namespace WHERE nspname LIKE 'pg_temp%'
EXCEPT
SELECT 'pg_temp_' || sess_id :: VARCHAR FROM pg_stat_activity
) AS foo


删除某个节点上的(gp5.0 之后不知道可不可以用):

select
'PGOPTIONS=''-c gp_session_role=utility'' psql -h ' || g.hostname || ' -p '||g.port || ' -c ' || '''drop schema '||p.nspname||' cascade;'
from
gp_dist_random('pg_namespace') p,
gp_segment_configuration g
where p.nspname like 'pg_temp%'
and g.role='p'
and g.content=p.gp_segment_id
and p.nspname not in (select 'pg_temp_' || sess_id::varchar from pg_stat_activity);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息