华为云用户手册

  • 创建、修改和删除角色 非三权分立时,只有系统管理员和具有CREATEROLE属性的用户才能创建、修改或删除角色。三权分立下,只有初始用户和具有CREATEROLE属性的用户才能创建、修改或删除角色。 创建角色,请参见CREATE ROLE。 在现有角色中添加或删除用户,请参见ALTER ROLE。 删除角色,请参见DROP ROLE。DROP ROLE只会删除角色,并不会删除角色中的成员用户账户。
  • MY_TAB_COLUMNS MY_TAB_COLUMNS视图显示当前用户拥有的表和视图的字段信息。该视图同时存在于PG_CATA LOG 和SYS Schema下。该视图所有用户可访问,仅显示该用户所属的信息。 表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,nvarchar2,bpchar,char类型置B,其余置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) 列所属的名称空间的名称。 父主题: 系统视图
  • GLOBAL_OPERATOR_HISTORY GLOBAL_OPERATOR_HISTORY系统视图显示的是当前用户在所有CN节点上执行作业结束后的算子的相关记录。 表1 GLOBAL_OPERATOR_HISTORY的字段 名称 类型 描述 queryid bigint 语句执行使用的内部query_id。 pid bigint 后端线程id。 plan_node_id integer 查询对应的执行计划的plan node id。 plan_node_name text 对应于plan_node_id的算子的名称。 start_time timestamp with time zone 该算子处理第一条数据的开始时间。 duration bigint 该算子到结束时候总的执行时间(ms)。 query_dop integer 当前算子执行时的并行度。 estimated_rows bigint 优化器估算的行数信息。 tuple_processed bigint 当前算子返回的元素个数。 min_peak_memory integer 当前算子在所有DN上的最小内存峰值(MB)。 max_peak_memory integer 当前算子在所有DN上的最大内存峰值(MB)。 average_peak_memory integer 当前算子在所有DN上的平均内存峰值(MB)。 memory_skew_percent integer 当前算子在各DN间的内存使用倾斜率。 min_spill_size integer 若发生下盘,所有DN上下盘的最小数据量(MB),默认为0。 max_spill_size integer 若发生下盘,所有DN上下盘的最大数据量(MB),默认为0。 average_spill_size integer 若发生下盘,所有DN上下盘的平均数据量(MB),默认为0。 spill_skew_percent integer 若发生下盘,DN间下盘倾斜率。 min_cpu_time bigint 该算子在所有DN上的最小执行时间(ms)。 max_cpu_time bigint 该算子在所有DN上的最大执行时间(ms)。 total_cpu_time bigint 该算子在所有DN上的总执行时间(ms)。 cpu_skew_percent integer DN间执行时间的倾斜率。 warning text 主要显示如下几类告警信息: Sort/SetOp/HashAgg/HashJoin spill Spill file size large than 256MB Broadcast size large than 100MB Early spill Spill times is greater than 3 Spill on memory adaptive Hash table conflict 父主题: Operator
  • GS_LABELS GS_LABELS视图显示所有已配置的资源标签信息。需要有系统管理员或安全策略管理员权限才可以访问此视图。 表1 GS_LABELS字段 名称 类型 描述 labelname name 资源标签的名称。 labeltype name 资源标签的类型。对应系统表GS_POLICY_LABEL中的labeltype字段。 fqdntype name 数据库资源的类型。如table、schema、index等。 schemaname name 数据库资源所属的schema名称。 fqdnname name 数据库资源名称。 columnname name 数据库资源列名称,若标记的数据库资源不为表的列则该项为空。 父主题: 系统视图
  • 示例 gaussdb=# deallocate all; DEALLOCATE ALL gaussdb=# prepare p1 as insert /*+ no_gpc */ into t1 select c1,c2 from t2 where c1=$1; PREPARE gaussdb=# execute p1(3); INSERT 0 1 gaussdb=# select * from dbe_perf.global_plancache_status where schema_name='public' order by 1,2; nodename | query | refcount | valid | databaseid | schema_name | params_num | func_id | pkg_id | stmt_id ----------+-------+----------+-------+------------+-------------+------------+---------+--------+--------- (0 rows) dbe_perf.global_plancache_status视图中无结果即没有计划被全局缓存。
  • 操作步骤 连接数据库。 查看数据库运行参数当前取值。 方法一:使用SHOW命令。 使用如下命令查看单个参数: 1 gaussdb=# SHOW server_version; server_version显示数据库版本信息的参数。 使用如下命令查看所有参数: 1 gaussdb=# SHOW ALL; 方法二:使用pg_settings视图。 使用如下命令查看单个参数: 1 gaussdb=# SELECT * FROM pg_settings WHERE NAME='server_version'; 使用如下命令查看所有参数: 1 gaussdb=# SELECT * FROM pg_settings;
  • 原因分析 ORA模式数据库能够插入成功并通过校验:Hibernate框架在校验数据时,通过判断插入数据类型java.lang.Long的TypeCode,与表结构的number类型的TypeCode进行对比,结果不一致,随后会把插入数据的long类型的sqlType与表结构的Type作比较,将long类型转成number(19,0)(对应关系由org.hibernate.dialect.OracleDialect进行维护),因为表结构的type是number,number(19,0)以number开头,所以校验可以通过。使用ORA模式数据库时,业务代码涉及整数类型的数据,可以使用java.lang.Long类型插入。 GaussDB数据库 校验不同,关闭校验后数据插入成功:Hibernate框架在插入数据做校验时,业务代码是java.lang.Long类型,和表数据类型bigint的TypeCode是对应的,所以不报错。但是表数据类型是Integer时无法对应,首先判断业务代码java.lang.Long类型的TypeCode,与表数据Integer的TypeCode比较,结果不一致,之后根据org.hibernate.dialect.PostgreSQLDialect对应关系,会将long类型转换为int8,将表数据类型Integer转换为int4,无法对应,所以校验失败。使用 GaussDB 数据库时,业务代码涉及整数类型的数据,必须使用表类型对应的Java整型。
  • PV_INSTANCE_TIME 提供当前节点下的各种时间消耗信息,主要分为以下类型: DB_TIME: 作业在多核下的有效时间花费。 CPU_TIME:CPU时间的消耗。 EXECUTION_TIME:执行器内花费的时间。 PARSE_TIME:SQL解析的时间花费。 PLAN_TIME:生成Plan的时间花费。 REWRITE_TIME:SQL重写的时间消耗。 PL_EXECUTION_TIME :PL/SQL(存储过程)的执行时间. PL_COMPILATION_TIME:PL/SQL(存储过程)的编译时间。 NET_SEND_TIME:网络上的时间花销。 DATA_IO_TIME:I/O时间上的花销。 表1 PV_INSTANCE_TIME字段 名称 类型 描述 stat_id integer 统计编号。 stat_name text 类型名称。 value bigint 时间值(单位:微秒)。 父主题: 系统视图
  • PG_PROC PG_PROC系统表存储函数或过程的信息。 表1 PG_PROC字段 名称 类型 描述 oid oid 行标识符(隐含字段,必须明确选择)。 proname name 函数名称。 pronamespace oid 包含该函数名称空间的OID。 proowner oid 函数的所有者。 prolang oid 这个函数的实现语言或调用接口。 procost real 估算的执行成本。 prorows real 估算的影响行的数目。 provariadic oid 参数元素的数据类型。 protransform regproc 此函数的简化调用方式。 proisagg boolean 函数是否是聚集函数。 t(true):表示是。 f(false):表示不是。 proiswindow boolean 函数是否是窗口函数。 t(true):表示是。 f(false):表示不是。 prosecdef boolean 函数是否是一个安全定义器(也就是一个“setuid”函数)。 t(true):表示是。 f(false):表示不是。 proleakproof boolean 函数是否没有副作用。如果函数没有对参数进行防泄露处理,则会抛出错误。 t(true):表示没副作用。 f(false):表示有副作用。 proisstrict boolean t(true):使用该函数时,如果入参有空值,则函数实际上不调用直接返回空。 f(false):使用该函数时,即使入参有空值,也要调用。所以该函数必须处理空输入。 proretset boolean 函数返回值是否为一个集合(也就是说,指定数据类型的多个数值)。 true:函数返回值是一个集合。 false:函数返回值不是一个集合。 provolatile "char" 该函数的结果是否只依赖于它的输入参数,或者还会被外界因素影响。 i:“不可变的”(immutable)函数,对于相同的输入总是产生相同的结果。 s:“稳定的”(stable)函数,(对于固定输入)其结果在一次扫描里不变。 v:“易变”(volatile)函数,其结果可能在任何时候变化v也用于那些有副作用的函数,因此调用它们无法得到优化。 pronargs smallint 参数数目。 pronargdefaults smallint 有默认值的参数数目。 prorettype oid 返回值的数据类型。 proargtypes oidvector 一个存放函数参数的数据类型的数组。数组里只包括输入参数(包括INOUT参数),代表该函数的调用签名(接口)。 proallargtypes oid[] 一个包含函数参数的数据类型的数组。数组里包括所有参数的类型(包括OUT和INOUT参数),如果所有参数都是IN参数,则这个字段就会是空。请注意数组下标是以1为起点的,而因为历史原因,proargtypes的下标起点为0。 proargmodes "char"[] 一个保存函数参数模式的数组,编码如下: i表示IN参数。 o表示OUT参数。 b表示INOUT参数。 v表示VARIADIC参数。 如果所有参数都是IN参数,则这个字段为空。请注意,下标对应的是proallargtypes的位置,而不是proargtypes。 proargnames text[] 一个保存函数参数的名称的数组。没有名称的参数在数组里设置为空字符串。如果没有一个参数有名称,这个字段将是空。请注意,此数组的下标对应proallargtypes而不是proargtypes。 proargdefaults pg_node_tree 默认值的表达式树。是PRONARGDEFAULTS元素的列表。 prosrc text 描述函数或存储过程的定义。例如,对于解释型语言来说就是函数的源程序,或者一个连接符号,一个文件名,或者函数和存储过程创建时指定的其他任何函数体内容,具体取决于语言/调用习惯的实现。 probin text 关于如何调用该函数的附加信息。同样,其含义也是和语言相关的。 proconfig text[] 函数针对运行时配置变量的本地设置。 proacl aclitem[] 访问权限。具体请参见GRANT和REVOKE。 prodefaultargpos int2vector 函数具有默认值的入参的位置。 fencedmode boolean 函数的执行模式,表示函数是在fence还是not fence模式下执行。 true:fence模式,函数的执行会在重新fork的进程中执行。 false:not fence模式。 proshippable boolean 表示该函数是否可以下推到DN上执行,默认值是false。 对于IMMUTABLE类型的函数,函数始终可以下推到DN上执行。 对于STABLE/VOLATILE类型的函数,仅当函数的属性是SHIPPABLE的时候,函数可以下推到DN执行。 propackage boolean 表示该函数是否支持重载,默认值是false。 t(true):表示支持。 f(false):表示不支持。 prokind "char" 表示该对象为函数还是存储过程。 'f':表示该对象为函数。 'p':表示该对象为存储过程。 proargsrc text 描述兼容ORA语法定义的函数或存储过程的参数输入字符串,包括参数注释。默认值为NULL。 proargtypesext oidvector_extend 当函数参数较多时,用来存放函数参数的数据类型的数组。数组里只包括输入参数(包括INOUT参数),代表该函数的调用签名(接口)。 prodefaultargposext int2vector_extend 当函数参数较多时,函数具有默认值的入参的位置。 allargtypes oidvector 用来存放存储过程参数的数据类型的数组,包含存储过程所有参数(入参、出参、INOUT参数)。 allargtypesext oidvector_extend 当函数参数较多(大于666个)时,用来存放存储过程参数的数据类型的数组,包含所有参数(入参、出参、INOUT参数)。 新建函数时,会向pg_proc表中插入数据,更新索引。当出入参个数很多时,索引的长度可能会超过页面的三分之一,进而可能会产生“Index row size xxx exceeds maximum xxx for index "pg_proc_proname_all_args_nsp_index"”的报错,此为预期情况。您可以通过减少参数个数,避免该报错的产生。 父主题: 系统表
  • 注意事项 只有系统管理员或者被授予了node group的ALTER权限的用户可以修改node group信息。 修改node group操作都是系统内部操作,除了SET DEFAULT语法之外,其他操作都需要在维护模式下(调用set xc_maintenance_mode=on;)。 ALTER NODE GROUP语法仅仅应该在数据库内部使用,使用者不应该手动调用这些SQL语句,否则会导致数据库系统数据不一致。
  • 示例 --查询集群DN初始状态。 gaussdb=# SELECT node_name, nodeis_preferred FROM pgxc_node WHERE node_type = 'D' ORDER BY 1; node_name | nodeis_preferred -----------+------------------ dn_6001_6002_6003 | f dn_6004_6005_6006 | f dn_6007_6008_6009 | f (3 rows) --创建NODE GROUP,用上一步中查询到的真实节点名称替换dn_6001_6002_6003。 gaussdb=# CREATE NODE GROUP test_group WITH ( dn_6001_6002_6003 ); --修改创建出的NODE GROUP名称为test_group_new。需要在维护模式下(调用SET xc_maintenance_mode=on;)。 gaussdb=# SET xc_maintenance_mode=on; gaussdb=# ALTER NODE GROUP test_group RENAME TO test_group_new; --查询NODE GROUP。 gaussdb=# SELECT group_name, group_members FROM pgxc_group; group_name | group_members ----------------+------------------- group_version1 | 16384 16388 16394 test_group_new | 16384 (2 rows) --删除NODE GROUP,且关闭维护模式。 gaussdb=# DROP NODE GROUP test_group_new; gaussdb=# SET xc_maintenance_mode=off;
  • 参数说明 groupname 需要修改的node group名称。 取值范围:字符串,要符合标识符命名规范。 SET DEFAULT 将系统中除了groupname指定的node group之外的其他node group对象的in_redistribution字段设置为'y'。考虑到兼容以前版本,该语法仍然保留,且不需要设置维护模式。 RENAME TO new_group_name 将groupname指定的node group的名称修改为new_group_name。 SET TABLE GROUP new_group_name 将所有CN节点的pgxc_class表中pgroup字段是group_name的记录修改为new_group_name。 COPY BUCKETS FROM src_group_name 从src_group_name表示的NodeGroup中,将group_members字段和group_buckets字段的内容拷贝到groupname所表示的NodeGroup中。 ADD NODE ( nodename [, ... ] ) 从groupname指定的NodeGroup中增加指定的节点,这些新增节点在PGXC_NODE系统表中存在。该语句仅仅修改系统表,不会进行实际的节点添加和数据重分布,用户不应该直接调用该SQL语句。可以在PGXC_GROUP系统表中观察该语句的影响。 DELETE NODE ( nodename [, ... ] ) 从groupname指定的NodeGroup中,将指定的节点移除,这些被移除的节点仍然存在于PGXC_NODE系统表中。该语句仅仅修改系统表,不会进行实际的节点移除和数据重分布,用户不应该直接调用该SQL语句。可以在PGXC_GROUP系统表中观察该语句的影响。 RESIZE TO dest_group_name 设置集群resize操作标志,将groupname所表示的NodeGroup设置为重分布的源NodeGroup,并取消is_installation标志;同时将desst_group_name设置为重分布的目的NodeGroup,并设置is_installation标志。
  • 语法格式 1 2 3 4 5 6 7 8 9 10 11 12 ALTER NODE GROUP groupname { | SET DEFAULT | RENAME TO new_group_name | SET VCGROUP RENAME TO new_group_name | SET NOT VCGROUP | SET TABLE GROUP new_group_name | COPY BUCKETS FROM src_group_name | ADD NODE ( nodename [, ... ] ) | DELETE NODE ( nodename [, ... ] ) | RESIZE TO dest_group_name | SET VCGROUP WITH GROUP new_group_name };
  • 查看表所在节点 用户在建表时可以指定表如何在节点之间分布或者复制,详情请参考•DISTRIBUTEBY,分布方式介绍可参阅选择分布方式。 用户在建表时也可设置“Node Group”来指定表所在的Group,详情请参考•TO{GROUPgroupname|...。 用户还可以通过以下命令查看表所在实例。 查询表所在的schema。 select t1.nspname,t2.relname from pg_namespace t1,pg_class t2 where t1.oid = t2.relnamespace and t2.relname = 'table1'; 上述命令中,“nspname”为schema的名称,“relname”为表、索引、视图等对象的名称,“oid”为行标识符,“relnamespace”为包含这个关系的名称空间的OID,“table1”为表名称。 查看表的relname和nodeoids。 select t1.relname,t2.nodeoids from pg_class t1, pgxc_class t2, pg_namespace t3 where t1.relfilenode = t2.pcrelid and t1.relnamespace=t3.oid and t1.relname = 'table1' and t3.nspname ='schema1'; 上述命令中,“nodeoids”为表分布的节点OID列表,“relfilenode”为这个关系在磁盘上的文件的名称,“pcrelid”为表的OID,“schema1”为1中查询出的该表所在schema。 根据查询到的表分布的节点,查询表所在实例。 select * from pgxc_node where oid in (nodeoids1, nodeoids2, nodeoids3); 上述命令中的“nodeoids1, nodeoids2, nodeoids3”为2中查询到的3个nodeoids,操作时以实际查询到的为准,各nodeoids间以“,”隔开。 父主题: 表设计最佳实践
  • Psycopg接口参考 Psycopg接口是一套提供给用户的API方法,本节将对部分常用接口做具体描述。 psycopg2.connect() connection.cursor() cursor.execute(query,vars_list) cursor.executemany(query,vars_list) connection.commit() connection.rollback() cursor.fetchone() cursor.fetchall() cursor.close() connection.close() 父主题: 基于Psycopg开发
  • inet inet类型在一个数据区域内保存主机的IPv4地址,以及一个可选子网。主机地址中网络地址的位数表示子网(“子网掩码”)。如果子网掩码是32并且地址是IPv4,则这个值不表示任何子网,只表示一台主机。 该类型的输入格式是address/y,address表示IPv4地址,y是子网掩码的二进制位数。如果省略/y,则子网掩码对IPv4是32,所以该值表示只有一台主机。如果该值表示只有一台主机,/y将不会显示。 inet和cidr类型之间的基本区别是inet接受子网掩码,而cidr不接受。 示例: gaussdb=# CREATE TABLE inet_test(id int, i inet); CREATE TABLE gaussdb=# INSERT INTO inet_test VALUES (1, '192.168.100.128/25'); INSERT 0 1 gaussdb=# INSERT INTO inet_test VALUES (2, '192.168.100.128'); INSERT 0 1 gaussdb=# INSERT INTO inet_test VALUES (3, '192.168.1.0/24'); INSERT 0 1 gaussdb=# INSERT INTO inet_test VALUES (4, '192.168.1.0/25'); INSERT 0 1 gaussdb=# INSERT INTO inet_test VALUES (5, '192.168.1.255/24'); INSERT 0 1 gaussdb=# INSERT INTO inet_test VALUES (6, '192.168.1.255/25'); INSERT 0 1 gaussdb=# INSERT INTO inet_test VALUES (7, '10.1.2.3/8'); INSERT 0 1 gaussdb=# INSERT INTO inet_test VALUES (8, '11.1.2.3/16'); INSERT 0 1 gaussdb=# INSERT INTO inet_test VALUES (9, '12.1.2.3/24'); INSERT 0 1 gaussdb=# INSERT INTO inet_test VALUES (10, '13.1.2.3/32'); INSERT 0 1 gaussdb=# INSERT INTO inet_test VALUES (11, '2001:4f8:3:ba::/64'); INSERT 0 1 gaussdb=# INSERT INTO inet_test VALUES (12, '2001:4f8:3:ba:2e0:81ff:fe22:d1f1/128'); INSERT 0 1 gaussdb=# INSERT INTO inet_test VALUES (13, '::ffff:127.0.0.0/120'); INSERT 0 1 gaussdb=# INSERT INTO inet_test VALUES (14, '::ffff:127.0.0.0/128'); INSERT 0 1 gaussdb=# SELECT * FROM inet_test ORDER BY id; id | i ----+---------------------------------- 1 | 192.168.100.128/25 2 | 192.168.100.128 3 | 192.168.1.0/24 4 | 192.168.1.0/25 5 | 192.168.1.255/24 6 | 192.168.1.255/25 7 | 10.1.2.3/8 8 | 11.1.2.3/16 9 | 12.1.2.3/24 10 | 13.1.2.3 11 | 2001:4f8:3:ba::/64 12 | 2001:4f8:3:ba:2e0:81ff:fe22:d1f1 13 | ::ffff:127.0.0.0/120 14 | ::ffff:127.0.0.0 (14 rows) gaussdb=# DROP TABLE inet_test; DROP TABLE
  • macaddr macaddr类型存储MAC地址,也就是以太网卡硬件地址(尽管MAC地址还用于其它用途)。可以接受下列格式: '08:00:2b:01:02:03' '08-00-2b-01-02-03' '08002b:010203' '08002b-010203' '0800.2b01.0203' '08002b010203' 以上示例都表示同一个地址。对于数据位a到f,大小写均可。输出时都是以第一种形式展示。 示例: gaussdb=# CREATE TABLE macaddr_test(id int, m macaddr); CREATE TABLE gaussdb=# INSERT INTO macaddr_test VALUES (1, '08:00:2b:01:02:03'); INSERT 0 1 gaussdb=# INSERT INTO macaddr_test VALUES (2, '08-00-2b-01-02-03'); INSERT 0 1 gaussdb=# INSERT INTO macaddr_test VALUES (3, '08002b:010203'); INSERT 0 1 gaussdb=# INSERT INTO macaddr_test VALUES (4, '08002b-010203'); INSERT 0 1 gaussdb=# INSERT INTO macaddr_test VALUES (5, '0800.2b01.0203'); INSERT 0 1 gaussdb=# INSERT INTO macaddr_test VALUES (6, '08002b010203'); INSERT 0 1 gaussdb=# SELECT * FROM macaddr_test ORDER BY id; id | m ----+------------------- 1 | 08:00:2b:01:02:03 2 | 08:00:2b:01:02:03 3 | 08:00:2b:01:02:03 4 | 08:00:2b:01:02:03 5 | 08:00:2b:01:02:03 6 | 08:00:2b:01:02:03 (6 rows) gaussdb=# DROP TABLE macaddr_test; DROP TABLE
  • cidr cidr(无类别域间路由,Classless Inter-Domain Routing)类型,保存一个IPv4网络地址。声明网络格式为address/y,address表示IPv4地址,y表示子网掩码的二进制位数。如果省略y,则掩码部分使用已有类别的网络编号系统进行计算,但要求输入的数据已经包括了确定掩码所需的所有字节。具体请参见表2 表2 cidr类型输入举例 cidr输入 cidr输出 abbrev(cidr) 192.168.100.128/25 192.168.100.128/25 192.168.100.128/25 192.168/24 192.168.0.0/24 192.168.0/24 192.168/25 192.168.0.0/25 192.168.0.0/25 192.168.1 192.168.1.0/24 192.168.1/24 192.168 192.168.0.0/24 192.168.0/24 10.1.2 10.1.2.0/24 10.1.2/24 10.1 10.1.0.0/16 10.1/16 10 10.0.0.0/8 10/8 10.1.2.3/32 10.1.2.3/32 10.1.2.3/32 示例: gaussdb=# CREATE TABLE cidr_test(id int, c cidr); CREATE TABLE gaussdb=# INSERT INTO cidr_test VALUES (1, '192.168.100.128/25'); INSERT 0 1 gaussdb=# INSERT INTO cidr_test VALUES (2, '192.168/24'); INSERT 0 1 gaussdb=# INSERT INTO cidr_test VALUES (3, '192.168/25'); INSERT 0 1 gaussdb=# INSERT INTO cidr_test VALUES (4, '192.168.1'); INSERT 0 1 gaussdb=# INSERT INTO cidr_test VALUES (5, '192.168'); INSERT 0 1 gaussdb=# INSERT INTO cidr_test VALUES (6, '10.1.2'); INSERT 0 1 gaussdb=# INSERT INTO cidr_test VALUES (7, '10.1'); INSERT 0 1 gaussdb=# INSERT INTO cidr_test VALUES (8, '10'); INSERT 0 1 gaussdb=# INSERT INTO cidr_test VALUES (9, '2001:4f8:3:ba::/64'); INSERT 0 1 gaussdb=# INSERT INTO cidr_test VALUES (10, '2001:4f8:3:ba:2e0:81ff:fe22:d1f1/128'); INSERT 0 1 gaussdb=# INSERT INTO cidr_test VALUES (11, '::ffff:127.0.0.0/120'); INSERT 0 1 gaussdb=# INSERT INTO cidr_test VALUES (12, '::ffff:127.0.0.0/128'); INSERT 0 1 gaussdb=# SELECT * FROM cidr_test ORDER BY id; id | c ----+-------------------------------------- 1 | 192.168.100.128/25 2 | 192.168.0.0/24 3 | 192.168.0.0/25 4 | 192.168.1.0/24 5 | 192.168.0.0/24 6 | 10.1.2.0/24 7 | 10.1.0.0/16 8 | 10.0.0.0/8 9 | 2001:4f8:3:ba::/64 10 | 2001:4f8:3:ba:2e0:81ff:fe22:d1f1/128 11 | ::ffff:127.0.0.0/120 12 | ::ffff:127.0.0.0/128 (12 rows) gaussdb=# DROP TABLE cidr_test; DROP TABLE
  • STAT_ALL_INDEXES 显示数据库当前节点中的每个索引的访问信息。 表1 STAT_ALL_INDEXES字段 名称 类型 描述 relid oid 该索引的表的OID。 indexrelid oid 索引的OID。 schemaname name 索引所在的Schema名。 relname name 索引的表名。 indexrelname name 索引名。 idx_scan bigint 该索引上执行的索引扫描次数。 idx_tup_read bigint 该索引上扫描返回的索引项数。 idx_tup_fetch bigint 使用该索引的简单索引扫描在原表中抓取的活跃行数。 父主题: Object
  • ecpg组件介绍 ecpg支持平台 表1 ecpg支持平台 操作系统 平台 EulerOS V2.0SP5 x86_64位 EulerOS V2.0SP9 ARM64位 ecpg组件 ecpg:用于对嵌入式SQL-C进行预处理的可执行二进制文件。 libecpg:为ecpg提供连接、执行SQL、事务等实现的动态库,包括libecpg.so、libecpg.so.6和libecpg.so.6.4,在C语言程序编译执行时通过“-lecpg”参数引用。 libpgtypes:ecpg提供的用于实现数值、日期、时间戳、区间类型数据操作运算的动态库,包括libpgtypes.so、libecpg.so.6和libecpg.so.6.4,在C语言程序编译执行时通过“-lpgtypes”参数引用。 ecpg组件的获取路径 ecpg二进制获取路径:$GAUSSHOME/bin ecpg依赖动态库路径:$GAUSSHOME/lib ecpg所需头文件路径:$GAUSSHOME/include/ecpg 父主题: 基于ecpg开发
  • 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 --创建用户webuser。 gaussdb=# CREATE USER webuser PASSWORD '********'; --授予用户webuser对模式tpcds下视图的所有操作权限。 gaussdb=# DO $$DECLARE r record; BEGIN FOR r IN SELECT c.relname,n.nspname FROM pg_class c,pg_namespace n WHERE c.relnamespace = n.oid AND n.nspname = 'tpcds' AND relkind IN ('r','v') LOOP EXECUTE 'GRANT ALL ON ' || quote_ident(r.table_schema) || '.' || quote_ident(r.table_name) || ' TO webuser'; END LOOP; END$$; --删除用户webuser。 gaussdb=# DROP USER webuser CASCADE;
  • SUMMARY_STAT_XACT_SYS_TABLES 显示集群内所有节点的Schema中系统表的事务状态统计信息(在CN节点使用,按表名对每个节点中表的事务状态统计信息汇总求和)。 表1 SUMMARY_STAT_XACT_SYS_TABLES字段 名称 类型 描述 schemaname name 该表所在的Schema名。 relname name 表名。 seq_scan numeric 该表发起的顺序扫描数。 seq_tup_read numeric 顺序扫描抓取的活跃行数。 idx_scan numeric 该表发起的索引扫描数。 idx_tup_fetch numeric 索引扫描抓取的活跃行数。 n_tup_ins numeric 插入行数。 n_tup_upd numeric 更新行数。 n_tup_del numeric 删除行数。 n_tup_hot_upd numeric HOT更新行数(即没有更新索引列的行数)。 父主题: Object
  • COMM_CLIENT_INFO COMM_CLIENT_INFO视图显示单个节点活跃的客户端连接信息(DN上查询该视图显示CN连接DN的信息),默认只有系统管理员权限才可以访问此系统视图。 表1 COMM_CLIENT_INFO字段 名称 类型 描述 node_name text 当前DN节点的名称,如dn_6001_6002_6003。 app text DN上查询该视图,app显示为连接当前DN的客户端,如coordinator(CN)、GTM、DN等。 tid bigint 当前线程的线程号。 lwtid integer 当前线程的轻量级线程号。 query_id bigint 查询ID,对应debug_query_id。 socket integer 如果是物理连接,显示socket fd。 remote_ip text 对端节点IP。 remote_port text 对端节点port。 logic_id integer 如果是逻辑连接,显示sid。 父主题: 系统视图
  • LOCAL_THREADPOOL_STATUS LOCAL_THREADPOOL_STATUS视图显示线程池中工作线程及会话的状态信息。该视图仅在线程池开启(enable_thread_pool = on)时生效。 表1 LOCAL_THREADPOOL_STATUS字段 名称 类型 描述 node_name text 节点名称。 group_id integer 线程池组ID。 bind_numa_id integer 该线程池组绑定的NUMA ID。 bind_cpu_number integer 该线程池组绑定的CPU信息。如果未绑定CPU,该值为NULL。 listener integer 该线程池组的Listener线程数量。 worker_info text 线程池中线程相关信息,包括以下信息: default:该线程池组中的初始线程数量。 new:该线程池组中新增线程的数量。 expect:该线程池组中预期线程的数量。 actual:该线程池组中实际线程的数量。 idle:该线程池组中空闲线程的数量。 pending:该线程池组中等待线程的数量。 session_info text 线程池中会话相关信息,包括以下信息: total:该线程池组中所有的会话数量。 waiting:该线程池组中等待调度的会话数量。 running:该线程池中正在执行的会话数量。 idle:该线程池组中空闲的会话数量。 stream_info text Stream线程池相关信息,包括以下信息: total:该线程池组中所有的stream线程数量。 running:该线程池组中当前正在工作的stream线程数量。 idle:该线程池组中空闲的stream线程数量。 父主题: Session/Thread
  • 参数说明 OR REPLACE 当存在同名的存储过程时,替换原来的定义。 procedure_name 创建的存储过程名称,可以带有模式名。 取值范围:字符串,要符合标识符命名规范。 argmode 参数的模式。 VARIADIC用于声明数组类型的参数。 取值范围: IN,OUT,INOUT或VARIADIC。缺省值是IN。只有OUT模式的参数后面能跟VARIADIC。并且OUT和INOUT模式的参数不能用在RETURNS TABLE的过程定义中。 argname 参数的名称。 取值范围:字符串,要符合标识符命名规范。 argtype 参数的数据类型。可以使用%ROWTYPE间接引用表的类型。 取值范围:可用的数据类型。 expression 参数的默认表达式。 在参数a_format_version值为10c和a_format_dev_version值为s2的情况下,参数为INOUT模式时不支持默认表达式。 推荐使用方式:将所有默认值参数定义在所有非默认值参数后。 调用带有默认参数的函数时,入参从左往右排入函数,如果有非默认参数的入参缺失则报错。 打开 proc_uncheck_default_param 参数,调用带有默认参数的函数时,入参从左往右排入函数,如果有非默认参数的入参缺失,则会用错位的默认值填充该参数。 在参数a_format_version值为10c、a_format_dev_version值为s1和关闭proc_outparam_override,函数参数同时包括out出参和default时,默认值不可缺省。 IMMUTABLE、STABLE等 行为约束可选项。各参数的功能与CREATE FUNCTION类似,详细说明见CREATE FUNCTION plsql_body PL/SQL存储过程体。 当在存储过程体中进行创建用户、修改密码或加解密等涉及密码或密钥相关操作时,系统表及日志中会记录密码或密钥的明文信息。为防止敏感信息泄露,不建议用户在存储过程体中进行涉及密码或密钥等敏感信息的相关操作。 argname和argmode的顺序没有严格要求,推荐按照argname、argmode、argtype的顺序使用。
  • 语法格式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 gaussdb=# CREATE [ OR REPLACE ] PROCEDURE procedure_name [ ( {[ argname ] [ argmode ] argtype [ { DEFAULT | := | = } expression ]}[,...]) ] [ { IMMUTABLE | STABLE | VOLATILE } | { SHIPPABLE | NOT SHIPPABLE } | [ NOT ] LEAKPROOF | { CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT } | {[ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER | AUTHID DEFINER | AUTHID CURRENT_USER} | COST execution_cost | SET configuration_parameter { [ TO | = ] value | FROM CURRENT } ][ ... ] { IS | AS } plsql_body /
  • 注意事项 如果创建存储过程时参数或返回值带有精度,不进行精度检测。 创建存储过程时,存储过程定义中对表对象的操作建议都显示指定模式,否则可能会导致存储过程执行异常。 在创建存储过程时,存储过程内部通过SET语句设置current_schema和search_path无效。执行完函数search_path和current_schema与执行函数前的search_path和current_schema保持一致。 SELECT、CALL调用函数时,必须要在出参位置提供实参进行调用,实参不会发生作用。 不能创建仅形参名字不同(存储过程名和参数列表类型都一样)的重载存储过程。 不能创建与函数拥有相同名称和参数列表的存储过程。 不支持仅默认值不同的存储过程重载。 存储过程仅IN、OUT、INOUT这三种类型不同的参数,打开GUC参数behavior_compat_options(behavior_compat_options='proc_outparam_override')后,不允许重载。关闭该参数后,可以重载。 重载的存储过程在调用时变量需要明确具体的类型。 在存储过程内部使用未声明的变量,存储过程被调用时会报错。 在创建procedure时,不能在avg函数外面嵌套其他agg函数,或者其他系统函数。 函数定义时如果指定为IMMUTABLE和SHIPPABLE类型,应该尽量避免函数中存在INSERT,UPDATE,DELETE,MERGE和DDL操作,因为上述操作应该由CN判断对应的执行节点,否则执行结果可能产生错误。 存储过程中不支持需要return集合的操作。 在存储过程内部调用其它无参数的存储过程时,可以省略括号,直接使用存储过程名进行调用。 在存储过程内部调用其他有出参的函数,如果在赋值表达式中调用时,需要打开guc参数 set behavior_compat_options = 'proc_outparam_override' ,并提前定义与出参类型相同的变量,然后将变量作为出参调用带有出参的其他函数,出参才能生效。否则,被调函数的出参会被忽略。 存储过程支持参数注释的查看与导出、导入。 存储过程支持介于IS/AS与plsql_body之间的注释的查看与导出、导入。 被授予CREATE ANY FUNCTION权限的用户,可以在用户模式下创建/替换存储过程。 存储过程默认为SECURITY INVOKER权限,如果想将默认行为改为SECURITY DEFINER权限,需要设置guc参数behavior_compat_options='plsql_security_definer'。 存储过程创建时依赖未定义对象,如参数behavior_compat_options='plpgsql_dependency'打开,创建可执行,通过WARNING提示;如参数未打开,存储过程创建不可执行。 当打开三权分立时,对于定义者权限的存储过程,只能由本用户自己重建。 如果将定义者权限的存储过程创建到其他用户Schema下,则会以其他用户的权限执行该存储过程,有越权风险,请谨慎使用。 在表达式中使用out参数作为出参时,如下情况不会生效,例如:使用execute immediate sqlv using func语法执行函数、使用select func into语法执行函数、使用insert、update等DML语句执行、使用select where a=func();带out出参的函数,作为入参时,fun(func(out b),a),out出参b未生效等。 调用带out出参的存储过程,设置GUC参数set behavior_compat_options = 'proc_outparam_transfer_length'后可以传递参数长度。规格限制如下: 支持的基本类型包括:CHAR(n)、CHARACTER(n)、NCHAR(n)、VARCHAR(n)、VARYING(n)、VARCHAR2(n)、NVARCHAR2(n)类型的参数。 out出参不生效的情况下(比如perform)不需要传递长度。 不支持精度传递的基本类型包括:NUMERIC、DECIMAL、NUMBER、FLOAT、DEC、INTEGER、TIME、TIMESTAMP、INTERVAL、TIME WITH TIME ZONE、TIMESTAMP WITH TIME ZONE、TIME WITHOUT TIME ZONE、TIMESTAMP WITHOUT TIME ZONE。 GUC参数set behavior_compat_options是否设置为proc_outparam_override时都支持传递参数长度。
  • 示例 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 --删除EMP表中某部门的所有员工,如果该部门中已没有员工,则在DEPT表中删除该部门。 CREATE TABLE hr.staffs_t1 AS TABLE hr.staffs; CREATE TABLE hr.sections_t1 AS TABLE hr.sections; CREATE OR REPLACE PROCEDURE proc_cursor3() AS DECLARE V_DEPTNO NUMBER(4) := 100; BEGIN DELETE FROM hr.staffs WHERE section_ID = V_DEPTNO; --根据游标状态做进一步处理 IF SQL%NOTFOUND THEN DELETE FROM hr.sections_t1 WHERE section_ID = V_DEPTNO; END IF; END; / CALL proc_cursor3(); proc_cursor3 -------------- (1 row) --删除存储过程和临时表 DROP PROCEDURE proc_cursor3; DROP TABLE hr.staffs_t1; DROP TABLE hr.sections_t1;
  • PG_COMM_DELAY PG_COMM_DELAY视图展示单个DN的通信库时延状态。 表1 PG_COMM_DELAY字段 名称 类型 描述 node_name text 节点名称。 remote_name text 连接对端节点名称。 remote_host text 连接对端IP地址。 stream_num integer 当前物理连接使用的stream逻辑连接数量。 min_delay integer 当前物理连接一分钟内探测到的最小时延,单位微秒。 说明: 负数结果无效,请重新等待时延状态更新后再执行。 average integer 当前物理连接一分钟内探测时延的平均值,单位微秒。 max_delay integer 当前物理连接一分钟内探测到的最大时延,单位微秒。 父主题: 系统视图
  • upgrade_mode 参数说明:升级模式。该参数属于升级参数,不建议用户自己修改。 该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。 取值范围:整型,0~2147483647‬ 0表示不在升级过程中或者就地升级和灰度升级的小版本升级过程中。 1表示在就地升级大版本升级过程中(执行升级命令,过了检查阶段生效)。 2表示在灰度升级大版本升级过程中(执行升级命令,过了检查阶段生效)。 默认值:0 用户执行完新包的前置命令,切回集群用户,source环境变量后,通过gs_upgradectl -t chose-strategy命令查询是大版本升级还是小版本升级。 返回Upgrade strategy: large-binary-upgrade 代表大版本升级。 返回Upgrade strategy: small-binary-upgrade 代表小版本升级。
共100000条
提示

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