华为云用户手册

  • GS_BUCKET_LOCKS GS_BUCKET_LOCKS视图存储各打开事务所持有的bucket锁信息。仅支持分布式下的CN查询。 表1 GS_BUCKET_LOCKS字段 名称 类型 引用 描述 node_name text - 节点名称。 database oid PG_DATABASE.oid 被锁定对象所在数据库的OID。 virtualtransaction text - 持有此锁或者在等待此锁的事务的虚拟ID。 pid bigint - 持有或者等待这个锁的服务器线程的逻辑ID。如果锁是被一个预备事务持有的,则为NULL。 sessionid bigint - 持有或者等待这个锁的会话ID。 modegs_seg_segments text - 这个线程持有的或者是期望的锁模式。 可能取值为:AccessShareLock、AccessExclusiveLock。 granted boolean - 如果锁是持有锁,则为TRUE。 如果锁是等待锁,则为FALSE。 fastpath boolean - 如果通过fast-path获得锁,则为TRUE;如果通过库级别锁信息获得锁或者两阶段提交时的锁,则为FALSE。 global_sessionid text - 全局会话ID。 bucketlist text - 被锁定的bucket列表。 bucket_group smallint - 被锁定的bucket所在的bucket组。 父主题: 其他系统视图
  • 参数说明 database_name 需要修改属性的数据库名称。 取值范围:字符串,要符合标识符命名规范。 connlimit 数据库可以接收的最大并发连接数(管理员用户连接除外)。 取值范围:[-1, 2^31-1]的整数,建议填写1~50的整数。-1(缺省)表示没有限制。 new_name 数据库的新名称。 取值范围:字符串,要符合标识符命名规范,且最大长度不超过63个字符。若超过63个字符,数据库会截断并保留前63个字符当做数据库名称。当数据库名称中包含大写字母时数据库会自动转换为小写字母,如果需要创建包含大写字母的数据库名称,则需要使用双引号进行声明。 标识符需要为小写字母(a~z)、大写字母(A~Z)、下划线(_)、数字(0~9)或美元符号($),且必须以字母或下划线开头。 new_owner 数据库的新所有者。 取值范围:字符串,有效的用户名。 new_tablespace 数据库新的默认表空间,该表空间为数据库中已经存在的表空间。默认的表空间为pg_default。 取值范围:字符串,有效的表空间名。 configuration_parameter 把指定的数据库会话参数值设置为给定的值。如果value是DEFAULT或者RESET,则在新的会话中使用系统的缺省设置。OFF关闭设置。 当前版本不支持设置数据库级别参数。 value 把指定的数据库会话参数值设置为给定的值。如果value是DEFAULT或者RESET,则在新的会话中使用系统的缺省设置。OFF关闭设置。 取值范围:字符串。 DEFAULT OFF RESET 用户指定的值:需要满足修改参数的取值限制。 FROM CURRENT 取当前会话中的值设置为configuration_parameter的值。 time_zone 设置database_name的数据库的时区值,需要有对应的数据库的权限。 取值范围:字符串。 系统支持的时区和其相应的缩写。 -15:59~+15:00 RESET configuration_parameter 重置指定的数据库会话参数值。 当前版本不支持重置数据库级别参数。 RESET ALL 重置全部的数据库会话参数值。 当前版本不支持重置数据库级别参数。 group_name hashbucket表绑定的node group名字,普通用户只支持绑定到installation node group上且不支持修改。 修改数据库默认表空间,会将旧表空间中的所有表和索引转移到新表空间中,该操作不会影响其他非默认表空间中的表和索引。 修改的数据库会话参数值,将在下一次会话中生效。 执行完参数设置后,需要手动执行CLEAN CONNECTION清理旧连接,否则可能存在集群节点间参数值不一致。
  • 语法格式 修改数据库的最大连接数。 1 2 ALTER DATABASE database_name [ WITH ] CONNECTION LIMIT connlimit; 修改数据库名称。 1 2 ALTER DATABASE database_name RENAME TO new_name; 禁止重命名templatea。 修改数据库所有者。 1 2 ALTER DATABASE database_name OWNER TO new_owner; 修改数据库默认表空间。 1 2 ALTER DATABASE database_name SET TABLESPACE new_tablespace; 如果该数据库中的某些表或对象已经创建在new_tablespace下,则无法将该数据库的默认表空间修改为new_tablespace,执行会报错。
  • 注意事项 只有数据库的所有者或者被授予了数据库ALTER权限的用户才能执行ALTER DATABASE命令,系统管理员默认拥有此权限。针对所要修改属性的不同,还有以下权限约束: 修改数据库名称,必须拥有CREATEDB权限。 修改数据库所有者,当前用户必须是该DATABASE的所有者或者系统管理员,必须拥有CREATEDB权限,且该用户是新所有者角色的成员。 修改数据库默认表空间,该用户必须拥有新表空间的CREATE权限。这个语句会从物理上将一个数据库原来缺省表空间上的表和索引移至新的表空间。注意不在缺省表空间的表和索引不受此影响。 不能重命名当前使用的数据库,如果需要重新命名,须连接至其他数据库上。 不允许将其他模式重命名为templatem,不允许将templatem模式重命名为其他名称。
  • 注意事项 序列的所有者或者被授予了序列ALTER权限的用户或者被授予了ALTER ANY SEQUENCE权限的用户才能执行ALTER SEQUENCE命令,三权分立开关关闭时,系统管理员默认拥有该权限。但要修改序列的所有者,当前用户必须是该序列的所有者或者系统管理员,且该用户是新所有者角色的成员。 当前版本仅支持修改拥有者、归属列和最大值。若要修改其他参数,可以删除重建,并用Setval函数恢复当前值。 ALTER SEQUENCE MAXVALUE不支持在事务、函数和存储过程中使用。 修改序列的最大值后,会清空该序列在所有会话的cache。 ALTER SEQUENCE会阻塞nextval、setval、currval和lastval的调用、
  • 语法格式 修改序列归属列和最大值。 1 2 3 ALTER SEQUENCE [ IF EXISTS ] name [MAXVALUE maxvalue | NO MAXVALUE | NOMAXVALUE] [ OWNED BY { table_name.column_name | NONE } ] ; 修改序列的拥有者。 1 ALTER SEQUENCE [ IF EXISTS ] name OWNER TO new_owner;
  • 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 --创建一个名为serial的递增序列,从101开始。 gaussdb=# CREATE SEQUENCE serial START 101; --创建一个表,定义默认值。 gaussdb=# CREATE TABLE t1(c1 bigint default nextval('serial')); --将序列serial的归属列变为t1.c1。 gaussdb=# ALTER SEQUENCE serial OWNED BY t1.c1; --删除序列和表。 gaussdb=# DROP SEQUENCE serial CASCADE; gaussdb=# DROP TABLE t1; --创建一个序列seq_test。 gaussdb=# CREATE SEQUENCE seq_test; --查询序列信息。 gaussdb=# \ds List of relations Schema | Name | Type | Owner | Storage --------+----------+----------+-------+--------- public | seq_test | sequence | omm | (1 row) --创建用户u_test并修改序列所有者。 gaussdb=# CREATE USER u_test PASSWORD '********'; gaussdb=# ALTER SEQUENCE seq_test OWNER TO u_test; gaussdb=# \ds List of relations Schema | Name | Type | Owner | Storage --------+----------+----------+--------+--------- public | seq_test | sequence | u_test | (1 row) --删除用户和序列。 gaussdb=# DROP SEQUENCE seq_test; gaussdb=# DROP USER u_test;
  • 参数说明 name 将要修改的序列名称。 IF EXISTS 当序列不存在时使用该选项,不会显示ERROR,而是返回一个NOTICE信息。 MAXVALUE maxvalue | NO MAXVALUE | NOMAXVALUE 执行序列的最大值。新修改的最大值必须大于当前gtm存储的最大值;如果没有指定,将保持原有的最大值。 取值范围:(gtm_last_value, 263-1]。 OWNED BY 将序列和一个表的指定字段进行关联。这样,在删除该字段或其所在表的时候会自动删除已关联的序列。 如果序列已经和表有关联后,使用这个选项后新的关联关系会覆盖旧的关联。 关联的表和序列的所有者必须是同一个用户,并且在同一个模式中。 使用OWNED BY NONE将删除任何已经存在的关联。 new_owner 序列新所有者的用户名。用户要修改序列的所有者,必须是新角色的直接或者间接成员,并且该角色必须有序列所在模式上的CREATE权限。
  • ADM_DIRECTORIES ADM_DIRECTORIES显示数据库中所有目录对象的信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATA LOG 和SYS Schema下。 表1 ADM_DIRECTORIES字段 名称 类型 描述 owner oid 目录的所有者。 directory_name name 目录名称。 directory_path text 目录的操作系统路径名。 origin_con_id character varying(256) 暂不支持,值为NULL。 父主题: 其他系统视图
  • 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 --创建一个表tb_for_label。 gaussdb=# CREATE TABLE tb_for_label(col1 text, col2 text, col3 text); --基于表创建资源标签。 gaussdb=# CREATE RESOURCE LABEL IF NOT EXISTS table_label add TABLE(public.tb_for_label); --再次创建已存在的表资源标签,对比加参数IF NOT EXISTS与不加IF NOT EXISTS参数的区别。 gaussdb=# CREATE RESOURCE LABEL IF NOT EXISTS table_label add TABLE(public.tb_for_label); NOTICE: table_label label already defined, skipping CREATE RESOURCE LABEL gaussdb=# CREATE RESOURCE LABEL table_label add TABLE(public.tb_for_label); ERROR: table_label label already defined --基于列创建资源标签。 gaussdb=# CREATE RESOURCE LABEL IF NOT EXISTS column_label add COLUMN(public.tb_for_label.col1); --创建一个模式schema_for_label。 gaussdb=# CREATE SCHEMA schema_for_label; --基于模式创建资源标签。 gaussdb=# CREATE RESOURCE LABEL IF NOT EXISTS schema_label add SCHEMA(schema_for_label); --创建一个视图view_for_label。 gaussdb=# CREATE VIEW view_for_label AS SELECT 1; --基于视图创建资源标签。 gaussdb=# CREATE RESOURCE LABEL IF NOT EXISTS view_label add VIEW(view_for_label); --创建一个函数func_for_label。 gaussdb=# CREATE FUNCTION func_for_label RETURNS TEXT AS $$ SELECT col1 FROM tb_for_label; $$ LANGUAGE SQL; --基于函数创建资源标签。 gaussdb=# CREATE RESOURCE LABEL IF NOT EXISTS func_label add FUNCTION(func_for_label); --删除表资源标签table_label。 gaussdb=# DROP RESOURCE LABEL IF EXISTS table_label; --删除列资源资源标签column_label。 gaussdb=# DROP RESOURCE LABEL IF EXISTS column_label; --删除函数资源标签func_for_label。 gaussdb=# DROP FUNCTION func_for_label; --删除视图资源标签view_for_label。 gaussdb=# DROP VIEW view_for_label; --删除模式资源标签schema_for_label。 gaussdb=# DROP SCHEMA schema_for_label; --删除表tb_for_label。 gaussdb=# DROP TABLE tb_for_label;
  • DBE_PLDEBUGGER.add_breakpoint debug端调试过程中,调用add_breakpoint增加新的断点。如果返回-1则说明指定的断点不合法,请参考canbreak字段确定合适的断点位置。进入内层函数前,外层函数无断点,则不支持在内层函数执行时,给外层函数添加断点,如表1所示。 表1 add_breakpoint入参和返回值列表 名称 类型 描述 funcoid IN text 函数id。 lineno IN integer 行号。 breakpointno OUT integer 断点编号。 父主题: DBE_PLDEBUGGER Schema
  • GS_LOGICAL_CONSTRAINT GS_LOGICAL_CONSTRAINT系统表记录逻辑解码需要使用的表上的检查约束、主键和唯一约束。 表1 GS_LOGICAL_CONSTRAINT字段 名称 类型 描述 conname name 约束名称(不一定是唯一的)。 connamespace oid 包含这个约束的名称空间的OID。 contype "char" c:检查约束。 p:主键约束。 u:唯一约束。 t:触发器约束。 x:互斥约束。 f:外键约束。 s:聚簇约束。 i:无效约束。 condeferrable boolean 这个约束是否可以推迟。 true:表示可以。 false:表示不可以。 condeferred boolean 缺省时这个约束是否可以推迟。 true:表示可以。 false:表示不可以。 convalidated boolean 约束是否有效。目前,只有外键和CHECK约束可将其设置为false。 true:表示有效。 false:表示无效。 conrelid oid 这个约束所在的表,如果不是表约束则为0。 contypid oid 这个约束所在的域,如果不是一个域约束则为0。 conindid oid 与约束关联的索引ID。 confrelid oid 如果是外键,则为参考的表,否则为0。 confupdtype "char" 外键更新动作代码。 a:没动作。 r:限制。 c:级联。 n:设置为null。 d:设置为缺省。 confdeltype "char" 外键删除动作代码。 a:没动作。 r:限制。 c:级联。 n:设置为null。 d:设置为缺省。 confmatchtype "char" 外键匹配类型。 f:全部。 p:部分。 u:未指定(在f的基础上允许匹配NULL值)。 conislocal boolean 是否是为关系创建的本地约束。 true:表示是。 false:表示不是。 coninhcount integer 约束直接继承父表的数目。继承父表数非零时,不能删除或重命名该约束。 connoinherit boolean 是否可以被继承。 true:表示可以。 false:表示不可以。 consoft boolean 是否为信息约束(Informational Constraint)。 true:表示是。 false:表示不是。 conopt boolean 是否使用信息约束优化执行计划。 true:表示使用。 false:表示不使用。 csnmin bigint 插入元组时的 CS N(提交序列号)。 csnmax bigint 更新或删除元组时的CSN。 createtime timestamp with time zone 插入元组的时间戳。 originid integer 元组的来源标识符。 dbnode oid 数据库OID。 constroid oid 行标识符。 conkey smallint[] 如果是表约束,则是约束控制的字段列表。 confkey smallint[] 如果是一个外键,是参考的字段的列表。 conpfeqop oid[] 如果是一个外键,是做PK=FK比较的相等操作符ID的列表。 conppeqop oid[] 如果是一个外键,是做PK=PK比较的相等操作符ID的列表。 conffeqop oid[] 如果是一个外键,是做FK=FK比较的相等操作符ID的列表。 conexclop oid[] 如果是一个排他约束,是列的排他操作符ID列表。 consrc text 如果是检查约束,则是表达式的可读形式。 conincluding smallint[] 不用做约束,但是会包含在INDEX中的属性列。 父主题: 逻辑解码
  • GS_ADM_ILMPOLICIES GS_ADM_ILMPOLICIES视图反映ILM策略的概要信息,包含策略名称、类型、启用禁用状态、删除状态。需要有系统管理员权限才可以访问此系统视图。 表1 GS_ADM_ILMPOLICIES字段 名称 类型 描述 policy_name character varying(128) ADO策略名称,系统自动生成,规则为:p+策略ID。 policy_type character varying(13) 策略类型。 tablespace character varying(30) 表空间名称,当该策略制定在表空间上时此处有值。当前版本值为null。 enabled character varying(6) 策略是否开启。 deleted character varying(7) 策略是否被删除。 node_name name 数据来源节点的名称。 父主题: OLTP表压缩
  • GLOBAL_BAD_BLOCK_INFO GLOBAL_BAD_BLOCK_INFO视图,在CN上执行,统计所有实例数据页面损坏的情况,查询信息会显示损坏页面的基本信息。在DN上执行结果为空。根据这些信息利用数据损坏检测修复函数中的页面检测修复函数进行修复操作。默认只有初始用户、具有系统管理员属性的用户、在运维模式下具有运维管理员属性的用户以及监控用户可以查看,其余用户需要赋权后才可以使用。 表1 GLOBAL_BAD_BLOCK_INFO字段 名称 类型 描述 node_name text 当前损坏页面的节点信息。 spc_node oid 当前损坏页面对应的表空间id。 db_node oid 当前损坏页面对应的数据库id。 rel_node oid 当前损坏页面对应的relation的relfilenode。 bucket_node integer 当前损坏页面的bucket_node,该字段在修复时作为是否是段页式表的判断依据。 -1:非段页式表。 非0值:段页式表。 block_num oid 当前损坏页面的页面号。 fork_num integer 当前损坏页面的文件forknum。 file_path text 当前损坏页面的相对路径。段页式表显示的是逻辑路径,非真实存在的文件。 check_time timestamp with time zone 当前损坏页面检测出问题的时间。 repair_time timestamp with time zone 当前损坏页面被修复的时间。 父主题: 其他系统视图
  • 参数说明 IF EXISTS IF EXISTS表示如果函数存在则执行删除操作,函数不存在也不会报错,只是发出一个notice。 function_name 要删除的函数名称。 取值范围:已存在的函数名。 argmode 函数参数的模式。 argname 函数参数的名称。 argtype 函数参数的类型 CASCADE | RESTRICT CASCADE:级联删除依赖于函数的对象 。 RESTRICT:如果有任何依赖对象存在,则拒绝删除该函数(缺省行为)。
  • 示例 删除函数可省略参数列表 --创建函数。 gaussdb=# CREATE FUNCTION func_test(varchar) RETURN VARCHAR AS BEGIN RETURN $1||_'test'; END; / --删除函数。 gaussdb=# DROP FUNCTION func_test; 删除存在同名的函数 如果存在同名函数,删除时需加上参数列表,否则报错。 --创建函数。 gaussdb=# CREATE FUNCTION func_add(int) RETURNS int AS $$ BEGIN RETURN $1+10; END; $$ LANGUAGE PLPGSQL; --重载函数func_add。 gaussdb=# CREATE FUNCTION func_add(int,int) RETURNS int AS $$ BEGIN RETURN $1+$2; END; $$ LANGUAGE PLPGSQL; --删除函数。 gaussdb=# DROP FUNCTION func_add(int); gaussdb=# DROP FUNCTION func_add(int,int);
  • PG_STATIO_SYS_INDEXES PG_STATIO_SYS_INDEXES视图显示命名空间中所有系统表索引的I/O状态信息。具体字段信息如表1所示。 表1 PG_STATIO_SYS_INDEXES字段 名称 类型 描述 relid oid 该索引所在的表的OID。 indexrelid oid 该索引的OID。 schemaname name 该索引的模式名。 relname name 该索引的表名。 indexrelname name 索引名称。 idx_blks_read bigint 从索引中读取的磁盘块数。 idx_blks_hit bigint 索引命中缓存数。 父主题: 其他系统视图
  • PG_DATABASE PG_DATABASE系统表存储关于可用数据库的信息。 表1 PG_DATABASE字段 名称 类型 描述 oid oid 行标识符(隐含字段,必须明确选择)。 datname name 数据库名称。 datdba oid 数据库所有人,通常为其创建者。 encoding integer 数据库的字符编码方式。 datcollate name 数据库使用的排序顺序。 datctype name 数据库使用的字符分类。 datistemplate boolean 是否允许作为模板数据库。 true:表示允许。 false:表示不允许。 datallowconn boolean 这个字段用于保护template0/templatea数据库不被更改。 true:表示用户可以连接到这个数据库。 false:表示没有用户可以连接到这个数据库。 datconnlimit integer 该数据库上允许的最大并发连接数,-1表示无限制。 datlastsysoid oid 数据库里最后一个系统OID 。 datfrozenxid xid32 用于跟踪该数据库是否需要为了防止事务ID重叠而进行清理。当前版本该字段已经废弃使用,为保持前向兼容,保留此字段,新增datfrozenxid64用于记录此信息。 dattablespace oid 数据库的缺省表空间。 datcompatibility name 数据库兼容模式。当前支持四种兼容模式:PG、ORA、MYSQL、TD。 datacl aclitem[] 访问权限。 datfrozenxid64 xid 用于跟踪该数据库是否需要为了防止事务ID重叠而进行清理。 datminmxid xid 该数据库中所有在这个之前的多事务ID已经被一个事务ID替换。这用于跟踪该数据库是否需要为了防止事务ID重叠或者允许收缩pg_clog而进行清理。它是此数据库中所有表的12.2.15.28 PG_CLASS中relminmxid的最小值。 dattimezone name 数据库时区信息,默认为PRC时区。 父主题: 其他系统表
  • CONFIG_SETTINGS CONFIG_SETTINGS视图显示数据库运行时参数的相关信息,如表1所示。 表1 CONFIG_SETTINGS字段 名称 类型 描述 name text 参数名称。 setting text 参数当前值。 unit text 参数的隐式结构。 category text 参数的逻辑组。 short_desc text 参数的简单描述。 extra_desc text 参数的详细描述。 context text 设置参数值的上下文,包括internal、postmaster、sighup、backend、superuser和user。 vartype text 参数类型,包括bool、enum、integer、real和string。 source text 参数的赋值方式。 min_val text 参数最大值。如果参数类型不是数值型,那么该字段值为null。 max_val text 参数最小值。如果参数类型不是数值型,那么该字段值为null。 enumvals text[] enum类型参数合法值。如果参数类型不是enum型,那么该字段值为null。 boot_val text 数据库启动时参数默认值。 reset_val text 数据库重置时参数默认值。 sourcefile text 设置参数值的配置文件。如果参数不是通过配置文件赋值,那么该字段值为null。 sourceline integer 设置参数值的配置文件的行号。如果参数不是通过配置文件赋值,那么该字段值为null。 父主题: Configuration
  • GaussDB 中模式、用户和角色如何理解? 答:模式是对数据库做一个逻辑分割,所有的数据库对象都建立在模式下面。模式和用户是弱绑定的,弱绑定是指虽然创建用户的同时会自动创建一个同名模式,但用户也可以单独创建模式,并且为用户指定其他的模式。 用户和角色是用来控制对数据库的访问。一个数据库可能有很多的用户需要访问,为了方便管理这些用户,将用户组成一个数据库角色。根据角色自身的设置不同,一个角色可以看做是一个数据库用户,或者一组数据库用户。角色和用户之间的区别只在于角色默认是没有LOGIN权限的。在业务设计中,仅建议通过ROLE来配置权限,而不是用来访问数据库。 父主题: FAQ
  • PGXC_NODE PGXC_NODE系统表存储集群节点信息。 PGXC_NODE系统表存储数据库实例节点信息。PGXC_NODE系统表仅在CN下有具体含义且数据有效正确。 在DN节点查询PGXC_NODE系统表结果数据中只有node_id字段是有意义,其他字段值没有意义且为无效数据。 表1 PGXC_NODE字段 名称 类型 描述 oid oid 行标识符(隐含字段,必须明确选择)。 node_name name 节点名称。 node_type "char" 节点类型。 C:协调节点。 D:数据节点。 S:数据节点的备节点。 node_port integer 节点的端口号。 node_host name 节点的主机名称或者IP(如配置为虚拟IP,则为虚拟IP)。 node_port1 integer 复制节点的端口号。 node_host1 name 复制节点的主机名称或者IP(如配置为虚拟IP,则为虚拟IP)。 hostis_primary boolean 表明当前节点是否发生主备切换。 t(true):表示发生。 f(false):表示不发生。 nodeis_primary boolean 在replication表下,是否优选当前节点作为优先执行的节点进行非查询操作。 t(true):表示优选。 f(false):表示不优选。 nodeis_preferred boolean 在replication表下,是否优选当前节点作为首选的节点进行查询。 t(true):表示优选。 f(false):表示不优选。 node_id integer 节点标识符。由node_name经过哈希函数计算后得到。 sctp_port integer 主节点使用TCP代理通信库的数据通道侦听端口(当前版本已经不再支持SCTP通信库)。 control_port integer 主节点使用TCP代理通信库的控制通道侦听端口。 sctp_port1 integer 备节点使用TCP代理通信库的数据通道侦听端口(当前版本已经不再支持SCTP通信库)。 control_port1 integer 备节点使用TCP代理通信库的控制通道侦听端口。 nodeis_central boolean 表明当前节点是否为中心控制节点,只用于CN,对DN无效。 t(true):表示是。 f(false):表示不是。 nodeis_active boolean 表明当前节点是否是正常状态,用于标记CN是否被剔除,对DN无效。 t(true):表示是。 f(false):表示不是。 父主题: 通信
  • MY_TAB_COLUMNS MY_TAB_COLUMNS视图显示当前用户拥有的表和视图的字段信息。该视图同时存在于PG_CATALOG和SYS Schema下。该视图所有用户可访问,仅显示该用户所属的信息。具体字段信息如表1所示。 表1 MY_TAB_COLUMNS字段 名称 类型 描述 owner character varying(64) 表的所有者。 table_name character varying(64) 表名称。 column_name character varying(64) 列名。 data_type character varying(128) 列的数据类型。 data_type_mod character varying(3) 暂不支持,值为NULL。 data_type_owner character varying(128) 列的数据类型的所有者。 data_length integer 列的字节长度。 data_precision integer 数据类型的精度,对于numeric数据类型有效,其他类型为NULL。 data_scale integer 小数点右边的位数,对于numeric数据类型有效,其他类型为0。 nullable bpchar 该列是否允许为空,对于主键约束和非空约束,该值为n。 column_id integer 创建表时列的序号。 default_length numeric 列的默认值字节长度。 data_default text 列的默认值。 num_distinct numeric 列中不同值的数量。 low_value raw 列中的最小值。 high_value raw 列中的最大值。 density numeric 列密度。 num_nulls numeric 列中空值数。 num_buckets numeric 列的直方图的桶数。 last_analyzed date 上次分析的日期。 sample_size numeric 用于分析此列的样本量。 character_set_name character varying(44) 暂不支持,值为NULL。 char_col_decl_length numeric 字符类型列的声明长度。 global_stats character varying(3) 暂不支持,值为NO。 user_stats character varying(3) 暂不支持,值为NO。 avg_col_len numeric 列的平均长度(单位字节)。 char_length numeric 列的长度(单位字符),只对varchar,nvarchar2,bpchar,char类型有效。 char_used character varying(1) 暂不支持,varchar、bpchar与char类型值为B;nvarchar2类型值为C;其余值为NULL。 v80_fmt_image character varying(3) 暂不支持,值为NULL。 data_upgraded character varying(3) 暂不支持,值为YES。 histogram character varying(15) 表示直方图是否存在,如果存在的话是什么类型: NONE:表示不存在直方图。 FREQUENCY:表示频率直方图。 EQUI_W IDT H:表示等宽直方图。 default_on_null character varying(3) 暂不支持,值为NULL。 identity_column character varying(3) 暂不支持,值为NULL。 sensitive_column character varying(3) 暂不支持,值为NULL。 evaluation_edition character varying(128) 暂不支持,值为NULL。 unusable_before character varying(128) 暂不支持,值为NULL。 unusable_beginning character varying(128) 暂不支持,值为NULL。 collation character varying(100) 列的排序规则。因该字段与保留关键字冲突,调用该字段需加视图名。 comments text 列的注释。 schema character varying(64) 列所属的名称空间的名称。 父主题: 其他系统视图
  • 背景 一个数据库可能有很多的用户需要访问,为了方便管理这些用户,将用户组成一个数据库角色。一个数据库角色可以视为一个数据库用户或者一组数据库用户。 对于数据库来说,用户和角色是基本相同的概念,不同之处在于,使用CREATE ROLE创建角色,不会创建同名的SCHEMA,并且默认没有LOGIN权限;而使用CREATE USER创建用户,会自动创建同名的SCHEMA,默认有LOGIN权限。换句话说,一个拥有LOGIN权限的角色可以被认为是一个用户。在业务设计中,仅建议通过ROLE来组织权限,而不是用来访问数据库。
  • 解决方案 数据库用户 数据库用户的主要用途是使用该用户账号连接数据库、访问数据库对象和执行SQL语句。在连接数据库时,必须使用一个已经存在的数据库用户。因此,作为数据库管理员,需要为每一个需要连接数据库的使用者规划一个数据库用户。 在创建数据库用户时,至少需要指定用户名和密码。 默认情况下,数据库用户可以分为两大类,详细信息请参见表1。 表1 用户分类 分类 描述 初始用户 具有数据库的最高权限,并且具有所有的系统权限和对象权限。初始用户不受对象的权限设置影响。这个特点类似Unix系统的root的权限。从安全角度考虑,除了必要的情况,建议尽量避免以初始用户身份操作。 在安装数据库或者初始化数据库时,可以指定初始用户名和密码。如果不指定用户名则会自动生成一个与安装数据库的OS用户同名的初始用户。如果不指定密码则安装后初始用户密码为空,需要通过gsql客户端设置初始用户的密码后才能执行其他操作。 说明: 基于安全性考虑,GaussDB Kernel禁止了所有用户trust方式的远程登录方式,禁止了初始用户的任何方式的远程登录。 普通用户 默认可以访问数据库的默认系统表和视图(pg_authid、pg_largeobject、pg_user_status和pg_auth_history除外),可以连接默认的数据库postgres以及使用public模式下的对象(包括表、视图和函数等)。 可以通过CREATE USER、ALTER USER指定系统权限,或者通过GRANT ALL PRIVILEGE授予SYSADMIN权限。 可以通过GRANT语句授予某些对象的权限。 可以通过GRANT语法将其他角色或用户的权限授权给该用户。 数据库权限分类 通过权限和角色,可以控制用户访问指定的数据,以及执行指定类型的SQL语句。详细信息请参见表2。 系统权限只能通过CREATE/ALTER USER、CREATE/ALTER ROLE语句指定(其中SYSADMIN还可以通过GRANT/REVOKE ALL PRIVILEGES的方式赋予、回收),无法从角色继承。 表2 权限分类 分类 描述 系统权限 系统权限又称为用户属性,可以在创建用户和修改用户时指定,包括SYSADMIN、MONADMIN、OPRADMIN、POLADMIN、CREATEDB、CREATEROLE、AUDITADMIN和LOGIN。 系统权限一般通过CREATE/ALTER USER语句指定。除了SYSADMIN外的其他系统权限,无法通过GRANT/REVOKE进行授予和撤销。并且,系统权限无法通过ROLE被继承。 对象权限 对象权限是指在表、视图、索引和函数等数据库对象上执行各种操作的权限,对象权限包括SELECT、INSERT、UPDATE和DELETE等。 只有对象的所有者或者系统管理员才可以执行GRANT/REVOKE语句来分配/撤销对象权限。 角色 角色是一组权限的集合,可以将一个角色的权限赋予其他角色和用户。 由于无法给其他角色和用户赋予系统权限,所以角色只有是对象权限的集合时才有意义。 数据库权限模型 系统权限模型 默认权限机制 图1 权限架构 权限架构如图1,默认权限机制下sysadmin具有大多数的权限。 初始安装用户:集群安装过程中自动生成的账户,拥有系统的最高权限,能够执行所有的操作。 SYSADMIN:系统管理员权限,权限仅次于初始安装用户,默认具有与对象所有者相同的权限,但不包括监控管理员权限和运维管理员权限。 MONADMIN:监控管理员权限,具有监控模式dbe_perf及模式下视图和函数的访问权限和授予权限。 OPRADMIN:运维管理员权限,具有使用Roach工具执行备份恢复的权限。 CREATEROLE:安全管理员权限,具有创建、修改、删除用户/角色的权限。 AUDITADMIN:审计管理员权限,具有查看和维护数据库审计日志的权限。 CREATEDB:具有创建数据库的权限。 POLADMIN:安全策略管理员权限,具有创建资源标签,数据动态脱敏策略和统一审计策略的权限。 三权分立机制 图2 三权分立机制 SYSADMIN:系统管理员权限,不再具有创建、修改、删除用户/角色的权限,也不再具有查看和维护数据库审计日志的权限。 CREATEROLE:安全管理员权限,具有创建、修改、删除用户/角色的权限。 AUDITADMIN:审计管理员权限,具有查看和维护数据库审计日志的权限。 一个用户/角色只能具有SYSADMIN、CREATEROLE和AUDITADMIN中的一项系统权限。 对象权限模型 对象权限:指在数据库、模式、表等数据库对象上执行特定动作的权限,比如:SELECT、INSERT、UPDATE、DELETE和CONNECT等。 针对不同的数据库对象有不同的对象权限,相应地可以被授予用户/角色。 通过GRANT/REVOKE来传递对象权限,对象权限可以通过角色被继承。 角色权限模型 GaussDB Kernel提供了一组默认角色,以gs_role_开头命名。它们提供对特定的、通常需要高权限操作的访问,可以将这些角色GRANT给数据库内的其他用户或角色,让这些用户能够使用特定的功能。在授予这些角色时应当非常小心,以确保它们被用在需要的地方。表3描述了内置角色允许的权限范围。 表3 内置角色权限 角色 权限描述 gs_role_copy_files 具有执行copy … to/from filename的权限,但需要先打开GUC参数enable_copy_server_files。 gs_role_signal_backend 具有调用函数pg_cancel_backend()、pg_terminate_backend()和pg_terminate_session()来取消或终止其他会话的权限,但不能操作属于初始用户和PERSISTENCE用户的会话。 gs_role_tablespace 具有创建表空间(tablespace)的权限。 gs_role_replication 具有调用逻辑复制相关函数的权限,例如kill_snapshot()、pg_create_logical_replication_slot()、pg_create_physical_replication_slot()、pg_drop_replication_slot()、pg_replication_slot_advance()、pg_create_physical_replication_slot_extern()、pg_logical_slot_get_changes()、pg_logical_slot_peek_changes(),pg_logical_slot_get_binary_changes()、pg_logical_slot_peek_binary_changes()。 gs_role_account_lock 具有加解锁用户的权限,但不能加解锁初始用户和PERSISTENCE用户。 gs_role_pldebugger 具有执行dbe_pldebugger下调试函数的权限。 gs_role_directory_create 具有执行创建directory对象的权限,但需要先打开GUC参数enable_access_server_directory。 gs_role_directory_drop 具有执行删除directory对象的权限,但需要先打开GUC参数enable_access_server_directory。 系统权限配置 默认权限机制配置方法 初始用户 数据库安装过程中自动生成的账户称为初始用户。初始用户也是系统管理员、监控管理员、运维管理员和安全策略管理员,拥有系统的最高权限,能够执行所有的操作。如果安装时不指定初始用户名称则该账户与进行数据库安装的操作系统用户同名。如果在安装时不指定初始用户的密码,安装完成后密码为空,在执行其他操作前需要通过gsql客户端修改初始用户的密码。如果初始用户密码为空,则除修改密码外无法执行其他SQL操作以及升级、扩容和节点替换等操作。 初始用户会绕过所有权限检查。建议仅将此初始用户作为DBA管理用途,而非业务用途。 系统管理员 gaussdb=#CREATE USER u_sysadmin WITH SYSADMIN password '********'; --或者使用如下SQL,效果一样,需要该用户已存在。 gaussdb=#ALTER USER u_sysadmin01 SYSADMIN; 监控管理员 gaussdb=#CREATE USER u_monadmin WITH MONADMIN password '********'; --或者使用如下SQL,效果一样,需要该用户已存在。 gaussdb=#ALTER USER u_monadmin01 MONADMIN; 运维管理员 gaussdb=#CREATE USER u_opradmin WITH OPRADMIN password "xxxxxxxxx"; --或者使用如下SQL,效果一样,需要该用户已存在。 gaussdb=#ALTER USER u_opradmin01 OPRADMIN; 安全策略管理员 gaussdb=#CREATE USER u_poladmin WITH POLADMIN password "xxxxxxxxx"; --或者使用如下SQL,效果一样,需要该用户已存在。 gaussdb=#ALTER USER u_poladmin01 POLADMIN; 三权分立机制配置方式 此模式需要设置guc参数“enableSeparationOfDuty”的值为“on”,该参数为POSTMASTER类型参数,修改完之后需要重启数据库。 gs_guc set -Z coordinator -Z datanode -N all -I all -c "enableSeparationOfDuty=on" gs_om -t stop gs_om -t start 创建和配置相应的用户权限的语法和默认权限一致。 角色权限配置 --创建数据库test gaussdb=#CREATE DATABASE test; --创建角色role1,创建用户user1 gaussdb=#CREATE ROLE role1 PASSWORD '********'; gaussdb=#CREATE USER user1 PASSWORD '********'; --赋予CREATE ANY TABLE权限角色role1 gaussdb=#GRANT CREATE ON DATABASE test TO role1; --将角色role1赋予给用户user1,则用户user1属于组role1,继承role1的相应权限可以在test数据库中创建模式。 gaussdb=#GRANT role1 TO user1; --查询用户和角色信息 gaussdb=#\du role1|user1; List of roles Role name | Attributes | Member of -----------+--------------+----------- role1 | Cannot login | {} user1 | | {role1}
  • WORKLOAD_SQL_ELAPSE_TIME WORKLOAD_SQL_ELAPSE_TIME用来统计workload(业务负载)上的SUID(查询/更新/插入/删除)信息,如表1所示。 表1 WORKLOAD_SQL_ELAPSE_TIME字段 名称 类型 描述 workload name workload(业务负载)名称。 total_select_elapse bigint 总select的时间花费(单位:微秒)。 max_select_elapse bigint 最大select的时间花费(单位:微秒)。 min_select_elapse bigint 最小select的时间花费(单位:微秒)。 avg_select_elapse bigint 平均select的时间花费(单位:微秒)。 total_update_elapse bigint 总update的时间花费(单位:微秒)。 max_update_elapse bigint 最大update的时间花费(单位:微秒)。 min_update_elapse bigint 最小update的时间花费(单位:微秒)。 avg_update_elapse bigint 平均update的时间花费(单位:微秒)。 total_insert_elapse bigint 总insert的时间花费(单位:微秒)。 max_insert_elapse bigint 最大insert的时间花费(单位:微秒)。 min_insert_elapse bigint 最小insert的时间花费(单位:微秒)。 avg_insert_elapse bigint 平均insert的时间花费(单位:微秒)。 total_delete_elapse bigint 总delete的时间花费(单位:微秒)。 max_delete_elapse bigint 最大delete的时间花费(单位:微秒)。 min_delete_elapse bigint 最小delete的时间花费(单位:微秒)。 avg_delete_elapse bigint 平均delete的时间花费(单位:微秒)。 dbid oid 统计信息所属的数据库id。 父主题: Workload
  • ledger_hist_check(text, text) 描述:校验指定防篡改用户表的表级数据hash值与其对应历史表hash一致性。 参数类型:text 返回值类型:Boolean 示例: 1 2 3 4 5 6 7 8 9 10 11 --创建schema。 gaussdb=# CREATE SCHEMA ledgernsp WITH BLOCKCHAIN; --创建表。 gaussdb=# CREATE TABLE ledgernsp.tab(a int, b text); --插入数据。 gaussdb=# INSERT INTO ledgernsp.tab values(generate_series(1, 10000), 'test'); gaussdb=# SELECT ledger_hist_check('ledgernsp','tab'); ledger_hist_check ------------------- t (1 row)
  • ledger_hist_archive(text, text) 描述:归档指定防篡改用户表对应的历史表至审计日志目录中hist_back文件夹下。如果用户历史表名称中带有'/'符号,归档所生成的文件名中将会把'/'替换为'_'。 参数类型:text 返回值类型:Boolean 示例: 1 2 3 4 5 gaussdb=# EXECUTE DIRECT ON (datanode1) 'select pg_catalog.ledger_hist_archive(''ledgernsp'', ''tab'');'; ledger_hist_archive --------------------- t (1 row)
  • ledger_gchain_repair(text, text) 描述:修复指定防篡改用户表在全局历史表中的relhash,使之与其历史表hash一致,返回指定表的hash总和。 参数类型:text 返回值类型:hash16 示例: 1 2 3 4 5 gaussdb=# SELECT ledger_gchain_repair('ledgernsp','tab'); ledger_gchain_repair ---------------------- da30c1260af5be50 (1 row)
  • ledger_gchain_check(text, text) 描述:校验指定防篡改用户表对应的历史表hash与全局历史表对应的relhash一致性。 参数类型:text 返回值类型:Boolean 示例: 1 2 3 4 5 gaussdb=# SELECT ledger_gchain_check('ledgernsp','tab'); ledger_gchain_check --------------------- t (1 row)
  • ledger_hist_repair(text, text) 描述:修复指定防篡改用户表对应的历史表hash值,使之与用户表hash一致,返回hash差值。 参数类型:text 返回值类型:hash16 示例: 1 2 3 4 5 gaussdb=# SELECT ledger_hist_repair('ledgernsp','tab'); ledger_hist_repair -------------------- 0000000000000000 (1 row)
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全