华为云用户手册

  • auto_increment_offset 参数说明:AUTO_INCREMENT自动增长列的起始值,自增值将由auto_increment_offset + N × auto_increment_increment计算而来,N为正整数。 参数类型:整型 参数单位:无 取值范围:1 ~ 65535 默认值:1 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:根据用户需要设置。 设置不当的风险与影响:设置不当会使自增值不符合预期。若参数值大于auto_increment_increment,自动增长列自增时会产生错误。
  • auto_increment_increment 参数说明:AUTO_INCREMENT自动增长列的自增步长,自增值将由auto_increment_offset + N × auto_increment_increment计算而来,N为正整数。 参数类型:整型 参数单位:无 取值范围:1 ~ 65535 默认值:1 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:根据用户需要设置。 设置不当的风险与影响:设置不当会使自增值不符合预期。若参数值小于auto_increment_offset,自动增长列自增时会产生错误。
  • sql_mode 参数说明:MYSQL兼容模式下和M-Compatibility模式下SQL行为控制配置项。 当sql_compatibility兼容性参数设置为MYSQL、b_format_version设置为'5.7'、b_format_dev_version设置为's1'时,sql_mode才会生效;或者sql_compatibility兼容性参数设置为M时生效。 使用SHOW sql_mode和SELECT @@sql_mode进行查询时,会依据REAL_AS_FLOAT、ANSI_QUOTES、ONLY_FULL_GROUP_BY、NO_UNSIGNED_SUBTRACTION、NO_AUTO_VALUE_ON_ZERO、NO_BACKSLASH_ESCAPES、STRICT_TRANS_TABLES、STRICT_ALL_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ALLOW_INVALID_DATES、ERROR_FOR_DIVISION_BY_ZERO、TRADITIONAL、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION及PAD_CHAR_TO_FULL_LENGTH的顺序,大写显示,不因设置时的顺序与大小写而改变。 参数类型:字符串 参数单位:无 取值范围: MYSQL模式:空字符串""或"strict_trans_tables,only_full_group_by,no_zero_in_date,no_zero_date,error_for_division_by_zero,no_auto_create_user,no_engine_substitution,pad_char_to_full_length,no_auto_value_on_zero"中的选项值。 M-Compatibility模式:除支持MYSQL模式参数外,还新增了no_unsigned_subtraction、ansi_quotes、allow_invalid_dates、real_as_float、strict_all_tables、traditional。 每个选项值的含义如表9所述。 表9 兼容性配置项 兼容性配置项 兼容性行为控制 MYSQL模式参数配置说明 M-Compatibility模式参数配置说明 strict_trans_tables 当前仅支持对MYSQL兼容数据库和M-Compatibility数据库数据类型及系统函数做校验。 设置时,对输入的参数格式和范围做严格校验。无效值输入或者超过范围时,解析报error。 不设置时,对输入的参数格式和范围做宽松校验,无效值输入或者超过范围时,解析报warning,返回对应数据的0值。 可独立设置和取消。 可独立设置和取消。 only_full_group_by 不允许出现非GROUP BY的key值、且不是常量和聚集函数的投影列。 可独立设置和取消。 可独立设置和取消。 no_zero_in_date 不允许日期中的年、月、日是0值。 可独立设置和取消,但无实际作用。 可独立设置和取消。 no_zero_date 不允许日期是0值(0000-00-00)。 可独立设置和取消,但无实际作用。 可独立设置和取消。 error_for_division_by_zero 不允许被0除。 可独立设置和取消,但无实际作用。 可独立设置和取消。 no_auto_create_user 无实际作用,仅用作SET SQL_MODE语句包含此选项时不报错的兼容作用。 可独立设置和取消。 可独立设置和取消。 no_engine_substitution 无实际作用,仅用作SET SQL_MODE语句包含此选项时不报错的兼容作用。 可独立设置和取消。 可独立设置和取消。 pad_char_to_full_length 用于表中的char类型列格式化输出,包含时输出带有尾部空格的字符串,否则输出不带尾部空格字符串。 可独立设置和取消。 可独立设置和取消。 no_auto_value_on_zero 包含此选项后,向AUTO_INCREMENT自动增长列插入0值将不会自增。 可独立设置和取消。 可独立设置和取消。 no_unsigned_subtraction 禁止无符号数减法,如果使用无符号整数进行减法操作,且结果为负数,则会返回一个错误。 可独立设置和取消,但无实际作用。 可独立设置和取消。 ansi_quotes 启用ANSI_QUOTES模式,该模式下双引号被视为标识符引用符号,而不是字符串引用符号。在该模式下,如果使用双引号引用表名或列名,则必须使用双引号引用整个名称,而不能使用反引号。 可独立设置和取消,但无实际作用。 可独立设置和取消。 allow_invalid_dates 允许插入无效日期,如果启用该选项,则MySQL将允许插入无效的日期,例如'0000-00-00'。 可独立设置和取消,但无实际作用。 可独立设置和取消。 real_as_float 默认将REAL类型视为DOUBLE类型,如果启用该选项,则将REAL类型视为FLOAT类型。 可独立设置和取消,但无实际作用。 可独立设置和取消。 strict_all_tables 与strict_trans_tables效果一致。 可独立设置和取消。 可独立设置和取消。 traditional 与同时设置strict_trans_tables、strict_all_tables、no_zero_in_date、no_zero_date、error_for_division_by_zero、no_auto_create_user和no_engine_substitution效果一致。 可独立设置和取消。 说明: 具体是否生效取决于MYSQL兼容模式本身是否支持。 可独立设置和取消。 默认值:"strict_trans_tables,only_full_group_by,no_zero_in_date,no_zero_date,error_for_division_by_zero,no_auto_create_user,no_engine_substitution" 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • b_format_version 参数说明:数据库平台兼容性行为配置项,用于控制MySQL兼容模式下的前向兼容性。 仅当sql_compatibility兼容性参数设置为MYSQL时,b_format_version参数才会生效。 当该参数设置为非空字符串时,会同时设置参数b_format_behavior_compat_options为“ALL”值,参数bytea_output为“escape”值。当该参数重新设置为空字符串时,会将b_format_behavior_compat_options、bytea_output参数设为原来的值。 参数类型:字符串 参数单位:无 取值范围:空字符串""或"5.7" 默认值:"" 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:与b_format_dev_version一起设置,在安装部署后立即设置,后期非必要无需变更。 设置不当的风险与影响:影响部分SQL的行为,导致兼容性问题。
  • a_format_dev_version 参数说明:数据库平台迭代小版本兼容性行为配置项。 参数类型:字符串 参数单位:无 取值范围:当前支持的兼容性配置项如表6所示。 默认值:"s6" 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。 表6 兼容性配置项 兼容性配置项 兼容性行为控制 s1 ORA平台兼容迭代小版本,影响函数(TRUNC(date, fmt),ROUND(date, fmt),NVL2,LPAD,RPAD,ADD_MONTHS,MONTHS_BETWEEN,REGEXP_REPLACE,REGEXP_COUNT,TREAT,EMPTY_CLOB,INSTRB,trunc(number),greatest,least,mod,round(number),cast,to_date,to_timestamp,chr,rtrim,translate,to_char,to_number,to_timestamp_tz)。 数据类型转换:小数字符串转换成整数类型(int1/int2/int4/int8/int16)时进行四舍五入。 数据类型转换:支持timestamp with time zone到timestamp without time zone的隐式转换。 s2 ORA平台兼容迭代小版本,影响函数(dump, to_single_byte, to_multi_byte, nls_upper, nls_lower, initcap, ascii2, asciistr, unistr, vsize, cosh, remainder, sinh, tanh, nanvl, current_date, current_timestamp, dbtimezone, numtodsinterval, numtoyminterval, new_time, sessiontimezone, sys_extract_utc, tz_offset, to_binary_double, to_binary_float, to_dsinterval, to_yminterval, lnnvl, ora_hash)。 兼容配置项为s1时的所有行为。 s3 ORA平台兼容迭代小版本,开启参数,支持无参函数嵌套调用。 兼容配置项为s2时的所有行为。 s4 ORA平台兼容迭代小版本,影响函数nchr(cvalue int|bigint)、to_timestamp_tz、getclobval(xml)、getstringval(xml)。 兼容配置项为s3时的所有行为。 s5 ORA平台兼容迭代小版本,开启参数,支持复合类型与函数同名,优先解析为复合类型,影响函数sys_guid()。 兼容配置项为s4时的所有行为。 s6 ORA平台兼容迭代小版本,开启参数,影响函数mod(text, int)。 兼容配置项为s5时的所有行为。
  • a_format_version 参数说明:数据库平台兼容性行为配置项。 参数类型:字符串 参数单位:无 取值范围:当前支持的兼容性配置项如表5所示。 默认值:"10c" 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。 表5 兼容性配置项 兼容性配置项 兼容性行为控制 10c ORA平台兼容10C版本。
  • m_format_dev_version 参数说明:数据库平台迭代小版本兼容性行为配置项。 当sql_compatibility兼容性参数设置为M时,m_format_dev_version才会生效。 参数类型:字符串 参数单位:无 取值范围:表8中的兼容性配置项。目前只可以设置"s1"。 表8 兼容性配置项 兼容性配置项 兼容性行为控制 s1 影响如下语法: 禁用SELECT FETCH FIRST ROWS ONLY语法。 禁用TRUNCATE CASCADE/RESTRICT语法。 禁用CREATE TABLE中定义主键时指定USING INDEX TABLESPACE tablespace_name语法。 DROP TABLE/VIEW/COLUMN中CASCADE/RESTRICT语法语义改变,改为忽略CASCADE/RESTRICT的语义,且默认行为为RESTRICT。 CREATE TABLE REFEREN CES 作为列约束时,语法语义改变,改为忽略该外键定义。 默认值:"s1" 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:在安装部署后立即设置,后期非必要无需变更。 设置不当的风险与影响:影响部分SQL的行为,导致兼容性问题。
  • group_concat_max_len 参数说明:搭配函数group_concat()使用,限制其返回值长度,超长截断,并产生相应报错/告警。当sql_mode设置含有STRICT_TRANS_TABLES时,DML语句中会产生报错,其余场景中提示告警。 参数类型:整型 参数单位:无 取值范围:0 ~ 9223372036854775807,目前实际生效的最大长度是1073741823,超出此长度后会有out of memory的报错。 默认值:1024 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:设置过小可能导致group_concat()返回的结果被截断。
  • support_extended_features 参数说明:控制是否支持数据库的扩展特性。 参数类型:布尔型 参数单位:无 取值范围: on:表示支持数据库的扩展特性。 off:表示不支持数据库的扩展特性。 默认值:off 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • b_format_behavior_compat_options 参数说明:数据库MYSQL模式兼容性行为配置项。 参数类型:字符串 参数单位:无 取值范围:当前只支持表1 MYSQL模式兼容性配置项,当设置多个兼容性配置项时,相邻配置项之间用逗号隔开。 默认值:"" 当b_format_version参数不为""时,b_format_behavior_compat_options会被设置为"all",而且不能被修改。 表1 MYSQL模式兼容性配置项 兼容性配置项 兼容性行为控制 default_collation 默认字符序前向兼容开关。 若不设置此配置项,在未显式指定字符类型字段的字符集或字符序且表级字符序也为空时,字段为default字符序。 若设置此配置项,当表级字符序不为空时,字符类型字段的字符序继承表级字符序,当表级字符序为空时,字符类型字段的字符序设置为数据库编码对应的默认字符序。 all 打开所有语法控制开关。 all不能同时和其他配置项一起指定。表格中除all外所有配置项逗号隔开的含义和取值为all含义相同。 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:控制一些MYSQL兼容性特性是否可用,若要更改,请在理解参数含义后谨慎操作,避免因误操作产生意料之外的风险。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • lastval_supported 参数说明:控制是否可以使用lastval()函数。 参数类型:布尔型 参数单位:无 取值范围: on:表示支持lastval()函数,同时nextval()函数不支持下推。 off:表示不支持lastval()函数,同时nextval()函数可以下推。 默认值:off 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • transform_null_equals 参数说明:是否控制表达式expr=NULL(或NULL=expr)当作expr IS NULL处理。正确的SQL标准兼容的expr=NULL总是返回NULL(未知)。Microsoft Access里的过滤表单生成的查询使用expr=NULL来测试空值。打开这个选项后,可以使用该接口来访问数据库。 参数类型:布尔型 参数单位:无 取值范围: on:表示控制表达式expr=NULL(或NULL=expr)当作expr IS NULL处理,如果expr得出NULL值则返回真,否则返回假。 off:表示不控制,即expr=NULL总是返回NULL(未知)。 默认值:off 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。 新用户经常在涉及NULL的表达式上语义混淆,故默认值设为off。
  • system_function_version 参数说明:数据库系统函数行为配置项。 参数类型:字符串 参数单位:无 取值范围:当前只支持表3,当设置多个兼容性配置项时,相邻配置项之间用逗号隔开,例如:"SET system_function_version='get_hash_value_fix,pbe_trunc_fix,empty_array_fix';"。 默认值: 安装时:get_hash_value_fix,pbe_trunc_fix,empty_array_fix 升级时:“” 表3 兼容性配置项 兼容性配置项 兼容性行为控制 get_hash_value_fix dbe_utility.get_hash_value前向兼容开关。 若不设置此配置项,对于用户输入的字符串会忽略后4个字节,导致小于4个字节的字符串的hash值一致。 若设置此配置项,修复该问题,保证hash值的正确性。 gaussdb=# SET system_function_version = ''; SET gaussdb=# SELECT dbe_utility.get_hash_value(1, 1024, 1024); get_hash_value ---------------- 1444 (1 row) gaussdb=# SELECT dbe_utility.get_hash_value(2, 1024, 1024); get_hash_value ---------------- 1444 (1 row) gaussdb=# SET system_function_version = 'get_hash_value_fix'; gaussdb=# SELECT dbe_utility.get_hash_value(1, 1024, 1024); get_hash_value ---------------- 1785 (1 row) gaussdb=# SELECT dbe_utility.get_hash_value(2, 1024, 1024); get_hash_value ---------------- 1538 (1 row) pbe_trunc_fix pbe场景时lpad/rpad/chr/round/trunc/add_months/instrb函数前向兼容开关。 若不设置此配置项,在pbe场景时上述函数的入参小数点会按照四舍五入转换整型。 若设置此配置项,在pbe场景时上述函数的入参小数点会按照整数截断转换整型,保证与ORA结果一致。 gaussdb=# SET a_format_version='10c'; SET gaussdb=# SET a_format_dev_version='s1'; SET gaussdb=# PREPARE pround1 AS SELECT round(123.456,$1); PREPARE gaussdb=# EXECUTE pround1('2.6'); round --------- 123.456 (1 row) gaussdb=# SET system_function_version = 'pbe_trunc_fix'; SET gaussdb=# PREPARE pround1 AS SELECT round(123.456,$1); PREPARE gaussdb=# EXECUTE pround1('2.6'); round --------- 123.46 (1 row) 说明: 该参数仅在数据库兼容性为ORA时有效。 empty_array_fix 控制空数组的前向兼容开关。 若不设置此配置项,类似array_positions函数等操作构建的空数组与'{}'::int[]构建的空数组不相等。 若设置此配置项,类似array_positions函数等操作构建的空数组与'{}'::int[]构建的空数组相等。 gaussdb=# SET system_function_version = 'empty_array_fix'; SET gaussdb=# SELECT array_eq(array_positions(array[1, 1, 1], 3), '{}'::int[]); array_eq ---------- t (1 row) gaussdb=# SET system_function_version = ''; SET gaussdb=# SELECT array_eq(array_positions(array[1, 1, 1], 3), '{}'::int[]); array_eq ---------- f (1 row) regex_like_m_fix 控制regex_like_m函数行为的前向兼容开关。(regexp_like函数的实现中调用了regex_like_m,所以也受影响。) 若不设置此配置项,在多行匹配且正则规则中有‘|’时,匹配结果错误。 若设置此配置项,在多行匹配且正则规则中有‘|’时,匹配结果正确。 gaussdb=# SET system_function_version = 'regex_like_m_fix'; SET gaussdb=# SELECT 'abc' FROM dual WHERE regex_like_m('111 2 222','^1+$|^2+$'); ?column? ---------- abc (1 row) gaussdb=# SET system_function_version = ''; SET gaussdb=# SELECT 'abc' FROM dual WHERE regex_like_m('111 2 222','^1+$|^2+$'); ?column? ---------- (0 row) 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。升级时默认为空,若客户需要打开设置时,建议修改GUC配置文件,保证数据库重启时不会丢失设置项。 设置建议:控制一些系统函数兼容性特性是否可用,若要更改,请在理解参数含义后谨慎操作。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • a_format_date_timestamp 参数说明:控制返回的日期时间。在ORA模式下,当事务开启时,函数current_date()、current_timestamp()、localtimestamp()返回当前SQL启动的时间戳。 参数类型:布尔型 参数单位:无 取值范围: on:返回当前SQL启动的时间戳。 off:返回事务开启的日期或日期及时间。 默认值:off 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。在开启事务需要返回系统时间时可开启该参数。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • nls_timestamp_tz_format 参数说明:设置带时区时间戳默认格式。 参数类型:字符串 参数单位:无 取值范围:字符串 默认值:"DD-Mon-YYYY HH:MI:SS.FF AM" 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。 此参数在参数a_format_version值为10c和a_format_dev_version值为s1的情况下有效。
  • enable_multiple_charset 参数说明:该参数用于控制在M-Compatibility模式下,是否可以创建表、列、schema指定字符集和当前数据库字符集不同。 参数类型:布尔型 参数单位:无 取值范围: on:可以创建表、列、schema指定字符集和当前数据库字符集不同。 off:不可以创建表、列、schema指定字符集和当前数据库字符集不同。 默认值:on。 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:根据实际业务需求设置。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • convert_string_to_digit 参数说明:设置隐式转换优先级,是否优先将字符串转为数字。 参数类型:布尔型 参数单位:无 取值范围: on:表示优先将字符串转为数字。 off:表示不优先将字符串转为数字。 默认值:on 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:调整该参数会修改内部数据类型转换规则,导致不可预期的行为,请谨慎操作。
  • lower_case_table_names 参数说明:该参数用于控制在M-Compatibility模式数据库下,查询用户表名(包括表别名)、用户视图名、Schema名(内部库名)时,以及information_schema系统视图中以上对象对应字段的值的大小写是否敏感。 参数类型:int 参数单位:无 取值范围: 0:用户表名、用户视图名、Schema名(内部库名)使用CREATE TABLE、CREATE VIEW、CREATE SCHEMA(CREATE DATABASE)语句中指定的字母大小写格式存储在系统表上。information_schema系统视图中以上对象对应字段的值名称比较区分大小写。 1:用户表名在系统表上以小写格式存储,名称比较不区分大小写;在存储和查找操作时,将所有用户表名转换为小写格式。此行为也适用于Schema名(内部库名)、表别名、用户视图名和information_schema系统视图中以上对象对应字段的值。 默认值:0 设置方式:该参数需要在数据库初始化时指定,如未指定,默认行为表示大小写敏感。可通过以下方式用于指定控制大小写行为: --gsinit-parameter='--lower_case_table_names=1';-- 大小写不敏感 --gsinit-parameter='--lower_case_table_names=0';-- 大小写敏感 设置建议:推荐使用默认值。在需要控制M-Compatibility模式数据库查询用户表名(包括表别名)、用户视图、Schema名(内部库名)、information_schema系统视图中以上对象对应字段的值大小写不敏感时,请将该参数设置为1。 以下场景可能会导致数据丢失,请谨慎操作: 禁止在两个GUC参数不同的库之间进行导入导出、逻辑解码、备份恢复。 禁止在两个GUC参数不同的主备数据库实例之间进行容灾备份。 该参数在安装数据库时指定,禁止在数据库启动后或在升级过程中对该参数进行修改,运行过程中或升级过程中修改可能会导致数据丢失,并且无法保证information_schema系统视图字段的值的大小写敏感性是否正确。 对于非M-Compatibility中的系统函数,当入参涉及用户表名(包括表别名)、用户视图名、Schema名(内部库名)时,无法保证参数开启后,大小写敏感的正确性。
  • nls_nchar_characterset 参数说明:搭配nchr(cvalue int|bigint)系统函数使用,设置国家字符集。 参数类型:字符串 参数单位:无 取值范围:“AL16UTF16”、“UTF8”,不区分大小写。 默认值:"AL16UTF16" 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。 数据库不支持国家字符集,该参数只是为了兼容ORA数据库,获取用户想使用的国家字符集。 该GUC参数仅限于nchr(cvalue int|bigint)函数的使用。
  • MY_SUBPART_KEY_COLUMNS MY_SUBPART_KEY_COLUMNS视图显示了当前用户所拥有的二级分区表或分区索引的分区键列的相关信息。该视图所有用户可访问,仅可查看当前用户所属信息。该视图同时存在于PG_CATA LOG 和SYS Schema下。分布式暂不支持二级分区表,该视图所有字段值为null。 表1 MY_SUBPART_KEY_COLUMNS字段 名称 类型 描述 name character varying(128) 暂不支持,值为NULL。 object_type character varying(128) 暂不支持,值为NULL。 column_name character varying(4000) 暂不支持,值为NULL。 column_position numeric 暂不支持,值为NULL。 collated_column_id numeric 暂不支持,值为NULL。 父主题: 分区表
  • PG_USER_MAPPINGS PG_USER_MAPPINGS视图显示用户映射的信息。所有用户均可查看。 表1 PG_USER_MAPPINGS字段 名称 类型 引用 描述 umid oid PG_USER_MAPPING.oid 用户映射的OID。 srvid oid PG_FOREIGN_SERVER.oid 包含这个映射的外部服务器的OID。 srvname name PG_FOREIGN_SERVER.srvname 外部服务器的名称。 umuser oid PG_AUTHID.oid 被映射的本地角色的OID,如果用户映射是公共的则为0。 usename name - 被映射的本地用户的名称。 umoptions text[] - 如果当前用户是外部服务器的所有者,则为用户映射指定选项, 使用“keyword=value”字符串,否则为NULL。 父主题: 用户和权限管理
  • gs_check_index(index_oid oid, partindex_oid oid, duration text, need_repair bool, mode text) 描述:校验堆表和索引的正向数据一致性。 约束:支持Astore、Ustore存储引擎,不支持MOT;支持备节点进行校验,不支持logger节点;堆表支持普通行存表、ILM压缩表、Hashbucket表的校验,不支持临时表、全局临时表、unlogged表。索引支持B-tree、UB-tree索引的校验,兼容段页式存储。 参数说明:详见表7 gs_check_index参数说明。 返回值类型:record 表7 gs_check_index参数说明 参数类型 参数名 类型 描述 输入参数 index_oid oid 索引oid: 普通索引:索引 oid。 全局索引:GPI oid。 local索引:主索引oid。 输入参数 partindex_oid oid 分区索引oid: 普通索引:0。 全局索引:0。 local索引:分区索引oid(一级/二级)。 local索引扫描全部分区:0。 输入参数 duration text 校验时长,支持设置毫秒、秒、分钟、小时、天,例如“500ms”“60s”,“10min”,“2h”,“1d”最长可设置时长为24h,可能存在毫秒级、秒级误差或分钟级误差,设置为0则默认校验完成结束。校验时长为实际执行时间和设置时间的最小值,执行超过设置时间会中止并记录当前校验位置,下次扫描支持从当前位置断点续作。 输入参数 need_repair bool 是否需要自动修复不一致,即按照堆表来增加或删除索引元组,当前仅支持设置为false。预埋参数,本版本暂不支持自动修复能力。 输入参数 mode text 校验模式预埋参数,取值范围包含{”increment”,”full”}。支持断点续做、增量(”increment”)校验,全量(”full”)校验等能力。 输出参数 error_code int 错误码。 输出参数 output_filepath text 解析后落盘相对路径。路径为gs_log/dump目录下,落盘文件名为dbverify_错误码_堆表oid_时间戳.log,例如: /$GAUSSLOG/gs_log/dump/dbverify_0_16384_123456.log 使用示例时请根据参数说明传参,使用实际存在且匹配的oid,否则将报错。 示例1: gaussdb=# select * from gs_check_index((select oid from pg_class where relname='index_t1'),0, '1h', false, 'full'); verify_code | output_filepath -------------+--------------------------------------------------------------------------------------- 0 | /$GAUSSLOG/gaussdb/single_node/gs_log/dump/dbverify_0_17302_766074761373434.log (1 row) 示例2: gaussdb=# select * from gs_check_index((select oid from pg_class where relname='index_range_2'),(select oid from pg_partition where parentid=(select oid from pg_class where relname='index_range_2')and relname='p1_a_idx'), '10s', false, 'full'); verify_code | output_filepath -------------+--------------------------------------------------------------------------------------- 0 | /$GAUSSLOG/gaussdb/single_node/gs_log/dump/dbverify_0_17306_766074834795344.log (1 row) 该接口当前支持Astore、Ustore表和B-tree、UB-tree索引的一致性校验。如果校验完成后未发现一致性问题,错误码为"0”;如出现非"0"错误码,请联系华为工程师辅助定位。 关于断点续做和增量校验: 断点续做和增量校验的相关信息不会进行持久化,数据库进程重启后之前的校验会丢失,重新校验时会从头开始进行全量校验。 校验模式为“increment”且上一次对该表和索引的校验未完成时会触发断点续做,从上次校验中断的位置开始校验。 校验模式为“increment”且上一次对该表和索引的校验已完成时会触发增量校验,校验增量修改页面。 校验模式为“full”时,从头开始进行全量校验。 关于IO流控: 默认设置io_priority为低优先级进行IO流控。 关于使用权限: 执行校验系统函数需要有初始用户、系统管理员、运维管理员或监控管理员权限,只能校验当前数据库的数据表或索引。 推荐使用场景: 校验推荐使用在业务低峰期,尽量保证校验期间大部分数据为静态数据,保证校验的完整性和准确性。 调用本系统函数属于高危风险操作,请用户谨慎使用。
  • gs_get_standby_bad_block_info() 描述:显示备机上已经检测到但是还未修复的页面。默认只有在备DN节点上,使用初始用户、具有sysadmin权限的用户以及在运维模式下具有运维管理员权限的用户、以及监控用户可以查看,其余用户需要赋权后才可以使用。返回值invalid_type列共有4种类型:NOT_PRESENT(页面不存在)、 NOT_INITIALIZED(页面初始化失败)、 LSN_CHECK_ERROR(LSN校验失败)、CRC_CHECK_ERROR(CRC校验失败)。 返回值类型:record 示例(若不存在已检测到但未修复的页面则输出0行): gaussdb=# SELECT * FROM gs_get_standby_bad_block_info(); spc_node | db_node | rel_node | bucket_node | fork_num | block_num | invalid_type | master_page_lsn ----------+---------+----------+-------------+----------+-----------+-----------------+----------------- 1663 | 16552 | 24745 | -1 | 0 | 0 | CRC_CHECK_ERROR | 0/B2009E8 (1 rows)
  • gs_urq_dump_stat(index_oid oid, partindex_oid oid) 描述:查询指定索引回收队列相关信息。 显示信息:recentGlobalDataXmin和globalFrozenXid是回收队列判断索引页面是否可以被回收时使用的两个oldestxmin,next_xid为下一个最新的事务xid,urq_blocks为回收队列总页面数以及free queue(可用队列)、empty queue(潜在队列)有效页面里的相关信息。对于PCR版本的索引,输出的recentGlobalDataXmin会被替换成影响PCR索引页面回收的globalRecycleXid。 参数说明:如表4 gs_urq_dump_stat参数说明所示。 表4 gs_urq_dump_stat参数说明 参数类型 参数名 类型 描述 输入参数 index_oid oid UBTree索引oid: 普通索引:索引oid。 全局索引:GPI oid。 local索引:主索引oid。 输入参数 partindex_oid oid UBTree分区索引oid: 普通索引:0。 全局索引:0。 local索引:分区索引oid(一级/二级)。 输出参数 result text 索引回收队列的详细统计信息。 使用示例时请根据实际情况按参数说明传参,使用实际存在的oid,否则将报错。 示例(RCR): gaussdb=# SELECT * FROM gs_urq_dump_stat(16387, 0); result --------------------------------------------------------------------------------------------------------------------------------- urq stat info: recentGlobalDataXmin = 213156, globalFrozenXid = 213156, next_xid = 214157, urq_blocks = 6, + free queue: head page blkno = 0 min_xid = 211187 max_xid = 214157, tail page blkno = 0 min_xid = 211187 max_xid = 214157,+ middle page min_xid = 1152921504606846975 max_xid = 0, valid_pages = 1, valid_items = 6, can_use_item = 3 + empty queue: head page blkno = 1 min_xid = 212160 max_xid = 213160, tail page blkno = 3 min_xid = 213162 max_xid = 214156,+ middle page min_xid = 1152921504606846975 max_xid = 0, valid_pages = 2, valid_items = 999, can_use_item = 498 + (1 row) 示例(PCR): gaussdb=# SELECT gs_urq_dump_stat(17260,0); gs_urq_dump_stat ------------------------------------------------------------------------------------------------------------------------------------------------- urq stat info: globalRecycleXid = 22113, globalFrozenXid = 22107, next_xid = 22116, urq_blocks = 6, + free queue: head page blkno = 0 min_xid = 1152921504606846975 max_xid = 0, tail page blkno = 0 min_xid = 1152921504606846975 max_xid = 0,+ middle page min_xid = 1152921504606846975 max_xid = 0, valid_pages = 1, valid_items = 0, can_use_item = 0 + empty queue: head page blkno = 1 min_xid = 1152921504606846975 max_xid = 0, tail page blkno = 1 min_xid = 1152921504606846975 max_xid = 0,+ middle page min_xid = 1152921504606846975 max_xid = 0, valid_pages = 1, valid_items = 0, can_use_item = 0 + (1 row) 该接口当前仅支持USTORE索引表。
  • gs_repair_urq(index_oid oid, partindex_oid oid) 描述:重建(有损)索引回收队列(潜在队列和可用队列)。删除当前索引的回收队列文件,重新创建一个空的回收队列文件。重建成功显示reinitial the recycle queue of index relation successfully。 参数说明:如表5 gs_repair_urq参数说明所示。 备注:当前函数仅支持在主节点进行调用。 表5 gs_repair_urq参数说明 参数类型 参数名 类型 描述 输入参数 index_oid oid UBTree索引oid: 普通索引:索引oid。 全局索引:GPI oid。 local索引:主索引oid。 输入参数 partindex_oid oid UBTree分区索引oid: 普通索引:0。 全局索引:0。 local索引:分区索引oid(一级/二级)。 输出参数 result text 重建成功显示reinitial the recycle queue of index relation successfully,否则为失败。 使用示例时请根据实际情况按参数说明传参,使用实际存在的oid,否则将报错。 示例: gaussdb=# SELECT * FROM gs_repair_urq(16387, 0); result ------------------------------------------------------------ reinitial the recycle queue of index relation successfully. (1 row) 该接口当前仅支持USTORE索引表。
  • gs_check_table(table_oi...(table_oid oid, partition_oid oid, index_oid oid, partindex_oid oid, start_blk bigint, end_blk bigint, duration text, need_repair bool, mode text) 描述:校验堆表和索引的反向数据一致性。 约束:支持Astore、Ustore存储引擎,不支持MOT;支持备节点进行校验,不支持logger节点;堆表支持普通行存表、ILM压缩表、Hashbucket表的校验,不支持临时表、全局临时表、unlogged表。索引支持B-tree、UB-tree索引的校验,兼容段页式存储。 参数说明:详见表6 gs_check_table参数说明。 返回值类型:record 表6 gs_check_table参数说明 参数类型 参数名 类型 描述 输入参数 table_oid oid 堆表oid: 普通表:堆表 oid。 分区表:主表 oid。 输入参数 partition_oid oid 分区oid: 普通表:0。 分区表:分区 oid。 分区表扫描全分区:0。 输入参数 index_oid oid 索引oid: 普通索引:索引 oid。 全局索引:GPI oid。 local索引:主索引oid。 扫描全部索引:0。 输入参数 partindex_oid oid 分区索引oid: 普通索引:0。 全局索引:0。 local索引:分区索引oid(一级/二级)。 local索引扫描全部分区:0。 输入参数 start_blk bigint 校验开始页面号。和end_blk同时取值-1的场景下默认从头开始校验。分区表扫描全分区时,仅支持从头开始校验,start_blk和end_blk需同时取值为-1。 输入参数 end_blk bigint 校验结束页面号。 输入参数 duration text 校验时长,支持设置毫秒、秒、分钟、小时、天,例如“500ms”、“60s”,“10min”,“2h”,“1d”最长可设置时长为24h,可能存在毫秒级、秒级误差或分钟级误差,设置为0则默认校验完成结束。校验时长为实际执行时间和设置时间的最小值,执行超过设置时间会中止并记录当前校验位置,下次扫描支持从当前位置断点续作。 输入参数 need_repair bool 是否需要自动修复不一致,即按照堆表来增加或删除索引元组,当前仅支持设置为false。预埋参数,本版本暂不支持自动修复能力。 输入参数 mode text 校验模式预埋参数,取值范围包含{”increment”,”full”}。支持断点续做、增量(”increment”)校验,全量(”full”)校验等能力。 输出参数 error_code int 错误码。 输出参数 output_filepath text 解析后落盘相对路径。路径为gs_log/dump目录下,落盘文件名为dbverify_错误码_堆表oid_时间戳.log,例如: /$GAUSSLOG/gs_log/dump/dbverify_0_16384_123456.log 使用示例时请根据参数说明传参,使用实际存在且匹配的oid和blocknum,否则将报错。 示例1: gaussdb=# select * from gs_check_table((select oid from pg_class where relname='t2'),0,0,0,-1,-1, '1h', false, 'full'); verify_code | output_filepath -------------+--------------------------------------------------------------------------------------- 0 | /$GAUSSLOG/gs_log/dump/dbverify_0_17279_766073191583799.log (1 row) 示例2: gaussdb=# select * from gs_check_table((select oid from pg_class where relname='t1'),0,(select oid from pg_class where relname='index_t1'),0,2,10, '2s', false, 'full'); verify_code | output_filepath -------------+--------------------------------------------------------------------------------------- 0 | /$GAUSSLOG/gs_log/dump/dbverify_0_17168_766073338594117.log (1 row) 调用本系统函数属于高危风险操作,请用户谨慎使用。 该接口当前支持Astore、Ustore表和B-tree、UB-tree索引的一致性校验。如果校验完成后未发现一致性问题,错误码为"0”;如出现非"0"错误码,请联系华为工程师辅助定位。 关于断点续做和增量校验: 断点续做和增量校验的相关信息不会进行持久化,数据库进程重启后之前的校验会丢失,重新校验时会从头开始进行全量校验。 校验模式为“increment”且上一次对该表和索引的校验未完成时会触发断点续做,从上次校验中断的位置开始校验。 校验模式为“increment”且上一次对该表和索引的校验已完成时会触发增量校验,校验增量修改页面。 校验模式为“full”时,从头开始进行全量校验。 关于IO流控: 默认设置io_priority为低优先级进行IO流控。 关于使用权限: 执行校验系统函数需要有初始用户、系统管理员、运维管理员或监控管理员权限,只能校验当前数据库的数据表或索引。 推荐使用场景: 校验推荐使用在业务低峰期,尽量保证校验期间大部分数据为静态数据,保证校验的完整性和准确性。
  • gs_repair_page_bypath(src_path text, src_blkno int64, dest_path text, dest_blkno int64, storage_type text) 描述:传入源文件路径以及页面号,将该页面覆盖写入到目标文件指定页面号上,支持通过主机修复备机页面,也支持基于备机修复主机页面,此外,该视图支持对坏块的初始化操作。分布式环境下该函数需要在DN下执行。 对目标页面进行覆盖写并同步备机,页式修改对象支持Uheap、Ubtree页面,后续支持Undo Record页面、Undo Slot页面、压缩表,以及Astore页面,段页式修改对象支持Astore页面,支持hashbucket。不支持系统表文件的修改,也不支持对数据区的修改。 功能支持将页面覆盖写到目标页面上。覆盖之前会将目标页面备份并落盘到指定目录,支持将备份页面重写回目标页面,在主机对普通表的修改会生成新的WAL日志并同步备机,在备机的修改不会记录WAL日志。 修复视图适用于主节点,或者开启备机读场景下的备节点。用户需要系统管理员或者运维模式下的运维管理员权限,所有修改均会记录数据库日志,并且,建议使用前开启系统函数的审计日志,便于记录审计信息。 在备机上调用修复视图时,仅支持从主机读取页面修复备机。 修复时源页面与目标页面的LSN必须一致,否则修复失败。 对目标页面进行校验。若目标页面为正确的页面,则不支持进行覆盖。当前校验支持Uheap、Ubtree页面。 返回值类型:text 调用本系统函数属于高危风险操作,请用户谨慎使用。 参数类型 参数名 类型 描述 输入参数 src_path text 源文件的路径。支持的路径主要包含以下几类: 数据文件以及索引文件:gs_log/dump/1663_15808_25075_0.editpage。 在主机端指定src_path为'standby',即从备机端读取页面修复主机。 在备机端可以指定src_path为'primary',即从主机端读取页面修复备机,备机上仅支持‘primary’修复,并且使用前开启备机读。 在主机端指定src_path为'init_block',允许极端场景下跳过坏块。 输入参数 src_blkno bigint 源页面的物理块号。 参数范围:0~MaxBlockNumber。 输入参数 dest_path text 目标文件的相对路径。例如:base/15808/25075。 输入参数 dest_blkno bigint 目标页面的逻辑块号。 参数范围:0~MaxBlockNumber。 输入参数 storage_type text 目标文件的存储方式,可选参数: 'page'(页式)。 'segment'(段页式)。 输出参数 output_msg text 覆盖写成功时返回目标页面备份的路径,失败时返回报错信息。落盘文件名格式为relfilepath_blocknum_timestamp.repairpage。 请按照实际情况根据上表传参并确认物理文件存在。传参有异常或修复失败时将报错。 示例1:输入指定路径下的文件,覆盖写入到目标文件中。 gaussdb=# SELECT * FROM gs_repair_page_bypath('gs_log/dump/1663_15991_16767_0.editpage', 0, 'base/15991/16767', 0, 'page'); output_msg ------------------------------------------------------------------------------------------------ /gs_log_dir/dump/1663_15991_16767_0_738039702421788.repairpage (1 row) 示例2:从备机端读取页面修复主机。 gaussdb=# SELECT * FROM gs_repair_page_bypath('standby', 0, 'base/15990/16768', 0, 'page'); output_msg ------------------------------------------------------------------------------------------------- /gs_log_dir/dump/1663_15990_16768_0_738040397197907.repairpage (1 row) 示例3:从主机端读取页面修复备机。 gaussdb=# SELECT * FROM gs_repair_page_bypath('primary', 0, 'base/15990/16768', 0, 'page'); output_msg ------------------------------------------------------------------------------------------------- /gs_log_dir/dump/1663_15990_16768_0_738040506157799.repairpage (1 row) 示例4:初始化目标页面,支持坏块跳过。 gaussdb=# SELECT * FROM gs_repair_page_bypath('init_block', 0, 'base/15990/16768', 0, 'page'); output_msg ------------------------------------------------------------------------------------------------- /gs_log_dir/dump/1663_15990_16768_0_738040768010281.repairpage (1 row)
  • gs_seg_verify_datafile(IN tablespace_name name, IN database_name name, IN file_id integer, IN bucketnode integer, IN start_block_id bigint default 0, IN end_block_id bigint default UINT32MAX) 功能 描述:校验段页式1~5文件,main fork是否存在页面损坏,将校验结果记录到local_bad_block_info()函数中。 权限:只有具有sysadmin属性的用户以及在运维模式下具有运维管理员属性的用户可以执行。 参数说明 名称 类型 描述 tablespace_name name 表空间名称。 database_name name 数据库名称。 file_id integer 文件名称,1~5。 bucketnode integer 表的bucketnode。 0~1023表示hashbucket表的bucketnode。 1024表示段页式普通表的bucketnode。 当前仅支持hashbucket表与段页式普通表。 start_block_id bigint 校验页面范围开始值,默认值:0。 end_block_id bigint 校验页面范围结束值,默认值:4294967295。 返回值:无。 示例: gaussdb=# SELECT * FROM gs_seg_verify_datafile('seg_tblspc', 'postgres', 2, 1024); WARNING: page verification failed, calculated checksum 60994 but expected 11565, the block num is 4157 gs_seg_verify_datafile ------------------------ (1 row)
  • gs_verify_urq(index_oid oid, partindex_oid oid, blocknum bigint, queue_type text) 描述:校验索引回收队列(潜在队列/可用队列/单页面)的正确性。 参数说明:如表3 gs_verify_urq参数说明所示。 返回值类型:record 表3 gs_verify_urq参数说明 参数类型 参数名 类型 描述 输入参数 index_oid oid UBTree索引oid: 普通索引:索引oid。 全局索引:GPI oid。 local索引:主索引oid。 输入参数 partindex_oid oid UBTree分区索引oid: 普通索引:0。 全局索引:0。 local索引:分区索引oid(一级/二级)。 输入参数 blocknum bigint 页面号: 队列类型为single page时,校验单个页面blocknum的所有元组正确性。取值范围为[0,队列文件大小/8192)。 队列类型为empty queue或free queue时,blocknum是一个无效值。 输入参数 queue_type text 队列类型: empty queue:潜在队列。 free queue:可用队列。 single page:队列单页面。 输出参数 error_code text 错误码。 输出参数 detail text 具体报错及其他关键信息。 使用示例时请根据参数说明传参,使用实际存在的oid和blocknum,否则将报错。 示例1: gaussdb=# SELECT * FROM gs_verify_urq(16387, 0, 1, 'free queue'); error_code | detail ------------+-------- (0 rows) 示例2: gaussdb=# SELECT * FROMgs_verify_urq(16387, 0, 1, 'empty queue'); error_code | detail -----------------------+--------------------------------------------------------------------------------------------------------------- VERIFY_URQ_PAGE_ERROR | invalid urq meta: oid 16387, blkno 1, head_blkno = 1, tail_blkno = 3, nblocks_upper = 4294967295, nblocks_lower = 1; urq_blocks = 6, index_blocks = 12 (1 row) 该接口当前仅支持USTORE索引表。如果索引回收队列校验正常,则该视图不输出错误码和报错详细信息,否则输出错误码和报错详细信息,错误码包含"VERIFY_URQ_PAGE_ERROR"、"VERIFY_URQ_LINK_ERROR"、"VERIFY_URQ_HEAD_MISSED_ERROR"和"VERIFY_URQ_TAIL_MISSED_ERROR",如出现以上错误码,请联系华为工程师辅助定位。
  • gs_repair_undo_byzone(zone_id int) 描述:传入待修复Undo Zone的zone_id,对目标Undo Zone的元信息进行修复,并返回修复结果的详细信息;如果没有进行修复则没有输出信息。 返回值类型:record 备注:当前函数仅支持在主节点进行调用,修复成功后会通过记录xlog日志同步到备机,且调用者必须是系统管理员或者运维模式下的运维管理员,建议使用前开启系统函数的审计日志,便于记录审计信息。 调用本系统函数属于高危风险操作,请用户谨慎使用。 表2 gs_repair_undo_byzone参数说明 参数类型 参数名 类型 描述 输入参数 zone_id int Undo Zone编号: -1:修复所有Undo Zone的元信息。 0~1048575:修复对应zone_id编号的Undo Zone的元信息。 输出参数 zone_id int Undo Zone编号。 输出参数 repair_detail text 对应zone_id的Undo Zone元信息的修复结果,修复成功显示"rebuild undo meta succeed.";修复失败显示"rebuild undo meta failed."及其失败原因。 示例1:输入的zone_id对应的Undo Zone元信息没有损坏时,预期没有输出。 gaussdb=# SELECT * FROM gs_repair_undo_byzone(4); zone_id | repair_detail ---------+--------------- (0 rows) 示例2:输入的zone_id对应的Undo Zone元信息修复成功时,显示修复成功的信息。 gaussdb=# SELECT * FROM gs_repair_undo_byzone(78); zone_id | repair_detail ---------+--------------- 78 | rebuild undo meta succeed. (1 row) 示例3:输入的zone_id对应的Undo Zone元信息修复失败时,显示修复失败的详细信息。 gaussdb=# SELECT * FROM gs_repair_undo_byzone(0); zone_id | repair_detail ---------+--------------- 0 | rebuild undo meta failed. try lock undo zone_id failed. (1 row) 如果待修复的 Undo Zone 已损坏且 zone_id 已经被其他活跃线程占用时,调用该修复函数会将占用 zone_id 的线程结束并强制修复已损坏的 Undo Zone 元信息。
共100000条