【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模式会更容易,更快速。建议数据库处于管理模式(无用户会话),因此可以轻松识别这些孤立模式。
删除方法:
批量删除:
批量删除所有库的:
只删除主节点的临时schema:
删除某个节点上的(gp5.0 之后不知道可不可以用):
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);
相关文章推荐
- 如何判断并删除临时表
- BASIS-如何删除SAP在用户修改表结构时创建的临时表
- java如何删除文件的前几行数据(不使用临时文件)
- 如何从 Active Directory 删除孤立的域
- 如何删除oracle10g中建的默认临时表空间啊,高人指点!感激不尽。。
- 如何设置自动删除Win10系统的临时文件 Win10临时垃圾文件自动删除图文方法
- Mysql中如何删除30天前的临时备份表
- 如何删除临时表的列
- 如何删除 SharePoint Workspace 2010 中的临时数据和永久数据
- 如何删除Internet临时文件 清理Cookies 清理缓存文件
- 如何删除卡巴斯基的临时文件,腾出硬盘空间
- Mysql如何删除以“#sql-”开头的临时表
- 如何删除系统临时文件,加快系统运行速度
- 如何快速删除Linux下的svn隐藏文件及其他临时文件
- greenplum如何激活,同步,删除standby和恢复原始master
- 如何快速删除Linux下的svn隐藏文件及其他临时文件 (转载)
- 在Oracle中如何利用Rowid查找和删除表中的重复记录
- git如何删除远程仓库的某次错误提交
- mysql如何删除作为外键的数据
- 如何写高效的批量插入和删除sql语句 -sql语句 删除主键