Greenplum 与 PostgreSQL 修改元数据(catalog)的方法 allow_system_table_mods

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

标签

PostgreSQL , Greenplum , 元数据 , allow_system_table_mods


背景

PostgreSQL大量的信息保存在元数据中,所有的元数据都是内部维护的,例如建表、建索引、删表等操作,自动维护元数据。

在某些迫不得已的情况下才可能需要直接对元数据进行修改。

默认情况下,用户是允许修改元数据的。

postgres=# \set VERBOSITY verbose  
  
postgres=# delete from pg_class where relname='test';  
ERROR:  42809: permission denied: "pg_class" is a system catalog  
LOCATION:  setTargetTable, parse_clause.c:802  

Greenplum 打开修改元数据开关的方法

postgres=# set allow_system_table_mods='DML';  
SET  
postgres=# begin;  
BEGIN  
postgres=# delete from pg_class where relname='test';  
DELETE 1  
postgres=# rollback;  
ROLLBACK  

PostgreSQL 打开修改元数据开关的方法

1、与Greenplum不同

postgres=# set allow_system_table_mods='DML';  
ERROR:  parameter "allow_system_table_mods" cannot be changed without restarting the server  

2、需要重启生效,配置为on, off。

postgres=# alter system set allow_system_table_mods=on;  
ALTER SYSTEM  
  
postgres=# \q  
digoal@  -> pg_ctl stop -m fast  
waiting for server to shut down....................... done  
server stopped  
  
digoal@  -> pg_ctl start  
waiting for server to start....2018-06-24 10:27:04.987 CST [4239] LOG:  00000: listening on IPv4 address "0.0.0.0", port 4000  
2018-06-24 10:27:04.987 CST [4239] LOCATION:  StreamServerPort, pqcomm.c:593  
2018-06-24 10:27:04.990 CST [4239] LOG:  00000: listening on Unix socket "/tmp/.s.PGSQL.4000"  
2018-06-24 10:27:04.990 CST [4239] LOCATION:  StreamServerPort, pqcomm.c:587  
2018-06-24 10:27:04.991 CST [4239] LOG:  00000: listening on Unix socket "./.s.PGSQL.4000"  
2018-06-24 10:27:04.991 CST [4239] LOCATION:  StreamServerPort, pqcomm.c:587  
  
..2018-06-24 10:27:06.980 CST [4239] LOG:  00000: redirecting log output to logging collector process  
2018-06-24 10:27:06.980 CST [4239] HINT:  Future log output will appear in directory "log".  
2018-06-24 10:27:06.980 CST [4239] LOCATION:  SysLogger_Start, syslogger.c:635  
 done  
server started  
  
  
digoal@  -> psql  
psql (11beta1)  
Type "help" for help.  
  
postgres=# show allow_system_table_mods;  
 allow_system_table_mods   
-------------------------  
 on  
(1 row)  
  
postgres=# begin;  
BEGIN  
postgres=# delete from pg_class where relname='test';  
DELETE 1  
postgres=# rollback;  
ROLLBACK  
postgres=# \d test  
                             Table "public.test"  
 Column |  Type  | Collation | Nullable |               Default                 
--------+--------+-----------+----------+-------------------------------------  
 id     | bigint |           |          |   
 c1     | text   |           |          | md5((random())::text)  
 c2     | text   |           |          | md5((random())::text)  
 c3     | text   |           |          | md5((random())::text)  
 c4     | text   |           |          | md5((random())::text)  
 c5     | text   |           |          | md5((random())::text)  

参考

https://www.postgresql.org/docs/10/static/runtime-config-developer.html

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
SQL 关系型数据库 分布式数据库
PostgreSQL 在线修改数据类型 - online ddl 方法之一
标签 PostgreSQL , online ddl , trigger , ddl 事务 背景 有张表的主键id是serial,但现在不够了,需要升级成bigserial,有什么优雅的方法吗?我看下来好像会锁表很久(因为数据量挺大) 如果直接alter table,由于数据类型从4字节改成了8字节,而tuple结构是在METADATA里面的,不是每行都有,所以DEFORM需要依赖METADATA,目前来说,这种操作需要rewrite table。
3624 0
|
4月前
|
监控 关系型数据库 Java
SpringBoot【集成 01】Druid+Dynamic+Greenplum(实际上用的是PostgreSQL的驱动)及 dbType not support 问题处理(附hikari相关配置)
SpringBoot【集成 01】Druid+Dynamic+Greenplum(实际上用的是PostgreSQL的驱动)及 dbType not support 问题处理(附hikari相关配置)
70 0
|
SQL 关系型数据库 数据库连接
PostgreSQL 修改数据库属性
PostgreSQL 修改数据库属性
96 0
|
关系型数据库 MySQL PostgreSQL
ruoyi数据源修改为PostgreSQL分页错误
ruoyi数据源修改为PostgreSQL分页错误
130 0
|
SQL 存储 缓存
Citus 分布式 PostgreSQL 集群 - SQL Reference(摄取、修改数据 DML)
Citus 分布式 PostgreSQL 集群 - SQL Reference(摄取、修改数据 DML)
124 0
|
SQL 存储 关系型数据库
【学习资料】第2期PostgreSQL、Greenplum 技术+108个场景结合最佳实践《如来神掌》
大家好,这里是PostgreSQL、Greenplum 《如来神掌》 - 目录 - 珍藏级
【学习资料】第2期PostgreSQL、Greenplum 技术+108个场景结合最佳实践《如来神掌》
|
SQL Oracle 关系型数据库
【学习资料】第1期Oracle DBA 增值 PostgreSQL,Greenplum 学习计划 - 珍藏级
大家好,这里是Oracle DBA 增值 PostgreSQL,Greenplum 学习计划 - 珍藏级
|
监控 关系型数据库 测试技术
PostgreSQL 双节点流复制如何同时保证可用性、可靠性(rpo,rto) - (半同步,自动降级方法实践)
PostgreSQL 双节点流复制如何同时保证可用性、可靠性(rpo,rto) - (半同步,自动降级方法实践)
1156 0
|
弹性计算 监控 关系型数据库
PostgreSQL 双节点流复制如何同时保证可用性、可靠性(rpo,rto) - (半同步,自动降级方法实践)
标签 PostgreSQL , 同步 , 半同步 , 流复制 背景 两节点HA架构,如何做到跨机房RPO=0(可靠性维度)?同时RTO可控(可用性维度)? 半同步是一个不错的选择。 1、当只挂掉一个节点时,可以保证RPO=0。如下: 主 -> 从(挂) 主(挂) -> 从 2、当一个节点挂掉后,在另一个节点恢复并开启同步模式前,如果在此期间(
2066 0
|
SQL 缓存 Java
修改PostgreSQL字段长度导致cached plan must not change result type错误
修改PostgreSQL字段长度可能导致cached plan must not change result type错误
6083 0

相关产品

  • 云原生数据库 PolarDB