华为云用户手册

  • spm_enable_plan_history_logging_expired_time 参数说明:当SPM感知到baseline中存在的计划时,如果此计划超过一定时间窗未被执行,则认定当前感知的计划属于计划跳变,需要进行历史记录,时间窗的大小由此参数指定。 参数类型:整型 参数单位:s(秒) 取值范围:[0, 31536000] 以上取值范围中,[1, 31536000]为有效取值,代表从1秒到31536000秒(365天)。 当设置为0时,代表不进行过期时间判断,当遇到baseline中存在的计划时,直接认定其不会过期,也不会进行跳变历史记录。 默认值:900,也即15分钟 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:此值设置过小,可能会导致记录过量历史记录;过大,则会遗漏部分跳变历史记录。
  • spm_enable_plan_history_logging 参数说明:是否启用查询计划跳变历史记录功能,此参数要求必须设置spm_enable_plan_capture为STORE模式。 参数类型:布尔型 参数单位:无 取值范围: on:表示启用查询计划跳变历史记录功能。 off:表示关闭查询计划跳变历史记录功能。 默认值:on 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:使用SPM相关功能时,若设置为off则参数spm_enable_plan_history_logging_expired_time无效,不会进行跳变历史记录。
  • spm_plan_retention_days 参数说明:指定不使用的计划在磁盘上的预留时间。 参数类型:整型 参数单位:d(天) 取值范围:1 ~ 1095 默认值:365 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值,若磁盘空间不足或业务频繁变更,可以考虑将该值设置小一些。 设置不当的风险与影响:使用SPM相关功能时,过小会频繁淘汰计划导致无法管理。
  • spm_plan_history_reserved_percentage 参数说明:由于gs_spm_plan_history表中记录数存在上限,通过该GUC指定百分比,即可指定期望该表可被填充的最大百分比,此值作用的基数为spm_plan_capture_max_plannum。gs_spm_plan_history可保留的最大行数 = spm_plan_capture_max_plannum * spm_plan_history_reserved_percentage%。清理的动作由SPM后台线程每隔24小时触发一次,当关闭spm_enable_baseline_cleanup时,则不进行清理。 参数类型:整型 参数单位:无 取值范围:[1, 100] 默认值:90 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:此值设置过小,会导致频发触发清理,遗漏历史记录;设置过大,会导致占用磁盘空间增大。
  • spm_plan_capture_max_plannum 参数说明:指定单个数据库最大落盘计划的数量,分别对应PG_CATA LOG .GS_SPM_BASELINE和PG_CATALOG.GS_SPM_PLAN_HISTORY中的记录数。 参数类型:整型 参数单位:个 取值范围:1 ~ 1000000 默认值:200000 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:使用SPM相关功能时,过小会影响SPM捕获计划的数量,导致新增计划无法管理,过大会影响磁盘空间,请酌情设置。
  • spm_plan_session_cached_size 参数说明:指定SPM session plan cache的大小。该参数可在PDB级别设置。 参数类型:整型 参数单位:kB 取值范围:1 ~ 1048576 默认值:1024(即1MB)。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。例如,设置为1024,不带单位,表示1024kB;设置为1GB,带单位,表示1GB。取值如果要带单位,必须为kB、MB、GB。 设置建议:建议在压力大的场景中增加数据库节点中此参数配置。 设置不当的风险与影响:使用SPM相关功能时,过小会影响SPM功能的使用导致性能下降,过大会导致内存占用升高,请酌情设置。
  • spm_enable_plan_capture 参数说明:此参数用来控制SPM计划捕获功能的计划捕获模式。该参数可在PDB级别设置。 参数类型:枚举类型 参数单位:无 取值范围: off:表示不开启计划捕获功能。 auto:表示开启自动计划捕获功能。在这种模式下,SQL计划被捕获的前置条件是SQL被执行两次及以上。 manual:表示开启手动计划捕获功能。在这种模式下,SQL计划被捕获的前置条件不需要满足SQL被执行两次及以上。 store:基于auto选项的行为,在这种模式下,SQL计划被捕获的前置条件不需要满足SQL被执行两次及以上,所有计划的状态都捕获为UNACC状态。 默认值:off。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:不使用SPM功能时推荐使用默认值,若使用SPM则根据需求进行设置。 设置不当的风险与影响:若不使用SPM相关功能,打开该参数会导致一定的性能劣化。 在升级期间,无论该开关是否开启,都不会捕获新的计划的outline,因为升级期间可能发生升级回滚,如果存储了新产生的outline,升级回滚后,可能会存在outline版本兼容性问题。
  • spm_enable_plan_selection 参数说明:此参数用来控制是否启用SPM计划选择功能。该参数可在PDB级别设置。 参数类型:布尔型 参数单位:无 取值范围: on:表示启用计划选择功能。 off:表示关闭计划选择功能。 默认值:off。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:不使用SPM功能时推荐使用默认值,若使用SPM,需要设置为on。 设置不当的风险与影响:若不使用SPM相关功能,打开该参数会导致一定的性能劣化。
  • spm_plan_capture_filter 参数说明:此参数用来指定要捕获的数据库与Schema。该参数可在PDB级别设置。 参数类型:字符串 参数单位:无 取值范围:最多捕获10000个Schema,计数包括重复Schema。 参数的格式为:“$db1_oid:$schema1_oid, $db2_oid:$schema2_oid..”,例如符合该格式的一组参数“33245:56432,44321:12332,55432:65432”表示: 33245:56432表示捕获DB oid为33245且schema oid为56432下的SQL计划。 44321:12332表示捕获DB oid为44321且schema oid为12332下的SQL计划。 55432:65432表示捕获DB oid为55432且schema oid为65432下的SQL计划。 默认值:"",表示SPM的计划捕获和计划选择功能包含所有Schema。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。若只需收集指定schema的计划或schema的数据量超过阈值,可以指定相关schema。 设置不当的风险与影响:使用SPM相关功能时,如果设置的schema oid不准确,可能导致收集不了所有计划。
  • spm_plan_global_cached_size 参数说明:指定SPM global plan cache的大小。 参数类型:整型 参数单位:kB 取值范围:10240 ~ 20971520 默认值:1048576(即1GB) 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。例如,设置为10240,不带单位,表示10240kB;设置为1GB,带单位,表示1GB。取值如果要带单位,必须为kB、MB、GB。 设置建议:建议在压力大的场景中增加数据库节点中此参数配置。 设置不当的风险与影响:使用SPM相关功能时,过小会影响SPM功能的使用导致性能下降,过大会导致内存占用升高,请酌情设置。
  • GLOBAL_CANDIDATE_STATUS GLOBAL_CANDIDATE_STATUS视图显示整个数据库所有实例候选buffer个数和buffer淘汰信息,如表1所示。 表1 GLOBAL_GET_BGWRITER_STATUS字段 名称 类型 描述 node_name text 实例名称。 candidate_slots integer 当前Normal Buffer Pool候选buffer链中页面个数。 get_buf_from_list bigint Normal Buffer Pool,buffer淘汰从候选buffer链中获取页面的次数。 get_buf_clock_sweep bigint Normal Buffer Pool,buffer淘汰从原淘汰方案中获取页面的次数。 seg_candidate_slots integer 当前Segment Buffer Pool候选buffer链中页面个数。 seg_get_buf_from_list bigint Segment Buffer Pool,buffer淘汰从候选buffer链中获取页面的次数。 seg_get_buf_clock_sweep bigint Segment Buffer Pool,buffer淘汰从原淘汰方案中获取页面的次数。 父主题: Utility
  • DB_PART_TABLES DB_PART_TABLES视图显示当前用户所能访问的分区表的信息。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 DB_PART_TABLES字段 名称 类型 描述 table_owner character varying(64) 分区表的所有者名称。 table_name character varying(64) 分区表的名称。 partitioning_type text 分区表的分区策略。 说明: 当前分区表策略支持范围见CREATE TABLE PARTITION。 partition_count bigint 分区表的分区个数。 partitioning_key_count integer 分区表的分区键个数。 def_tablespace_name name 分区表的表空间名称。 schema character varying(64) 分区表的模式。 subpartitioning_type text 二级分区表的分区策略。如果分区表是一级分区表,则显示NONE。 说明: 当前二级分区表策略支持范围见CREATE TABLE SUBPARTITION。 def_subpartition_count integer 默认创建二级分区的个数,二级分区表为1,一级分区表为0。 subpartitioning_key_count integer 分区表二级分区键的个数。 status character varying(8) 暂不支持,值为valid。 def_pct_free numeric 添加分区时使用的PCTFREE默认值。 def_pct_used numeric 暂不支持,值为NULL。 def_ini_trans numeric 添加分区时使用的INITRANS默认值。 def_max_trans numeric 添加分区时使用的MAXTRANS默认值。 def_initial_extent character varying(40) 暂不支持,值为NULL。 def_next_extent character varying(40) 暂不支持,值为NULL。 def_min_extents character varying(40) 暂不支持,值为NULL。 def_max_extents character varying(40) 暂不支持,值为NULL。 def_max_size character varying(40) 暂不支持,值为NULL。 def_pct_increase character varying(40) 暂不支持,值为NULL。 def_freelists numeric 暂不支持,值为NULL。 def_freelist_groups numeric 暂不支持,值为NULL。 def_logging character varying(7) 暂不支持,值为NULL。 def_compression character varying(8) 添加分区时使用的默认压缩: NONE ENABLED DISABLED def_compress_for character varying(30) 添加分区时使用的默认压缩。 说明: 可用的压缩方法和压缩级别见•WITH ( { storage_parameter = value } [, ... ] )。 def_buffer_pool character varying(7) 暂不支持,值为DEFAULT。 def_flash_cache character varying(7) 暂不支持,值为NULL。 def_cell_flash_cache character varying(7) 暂不支持,值为NULL。 ref_ptn_constraint_name character varying(128) 暂不支持,值为NULL。 interval character varying(1000) 区间值字符串。 autolist text 一级列表分区是否开启自动扩展功能。 YES:表示开启自动扩展功能。 NO:表示不开启自动扩展功能。 interval_subpartition character varying(1000) 暂不支持,值为NULL。 autolist_subpartition text 二级列表分区是否开启自动扩展功能。 YES:表示开启自动扩展功能。 NO:表示不开启自动扩展功能。 is_nested character varying(3) 暂不支持,值为NO。 def_segment_creation character varying(4) 暂不支持段页式设置,当启用segment时,值为YES。 def_indexing character varying(3) 暂不支持,值为ON。 def_inmemory character varying(8) 暂不支持,值为NONE。 def_inmemory_priority character varying(8) 暂不支持,值为NULL。 def_inmemory_distribute character varying(15) 暂不支持,值为NULL。 def_inmemory_compression character varying(17) 暂不支持,值为NULL。 def_inmemory_duplicate character varying(13) 暂不支持,值为NULL。 def_read_only character varying(3) 暂不支持,值为NO。 def_cellmemory character varying(24) 暂不支持,值为NULL。 def_inmemory_service character varying(12) 暂不支持,值为NULL。 def_inmemory_service_name character varying(1000) 暂不支持,值为NULL。 父主题: 分区表
  • PG_REWRITE PG_REWRITE系统表存储表和视图定义的重写规则。 表1 PG_REWRITE字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 rulename name 规则名称。 ev_class oid 使用这条规则的表名称。 ev_attr smallint 这条规则适用的字段(目前总是为零,表示整个表)。 ev_type "char" 规则适用的事件类型。 1 :SELECT 2 :UPDATE 3 :INSERT 4 :DELETE ev_enabled "char" 用于控制复制的触发。 O :“origin”和“local”模式时触发。 D :禁用触发。 R :“replica”时触发。 A :任何模式是都会触发。 is_instead boolean 如果该规则是INSTEAD规则,则为真,否则为假。 ev_qual pg_node_tree 规则的资格条件的表达式树(以nodeToString() 形式存在)。 ev_action pg_node_tree 规则动作的查询树(以nodeToString() 形式存在)。 父主题: 其他系统表
  • GS_SPM_ID_HASH_JOIN GS_SPM_ID_HASH_JOIN系统表是用于存储unique_sql_id和sql_hash关系的系统表,具备sysadmin权限的用户可以对该系统表进行读操作,但只有初始用户才可以对该系统表进行写的操作。 表1 GS_SPM_ID_HASH_JOIN字段 名称 类型 描述 unique_sql_id bigint 数据库中SQL的唯一标识。 sql_hash bigint SPM中SQL的唯一标识。 父主题: SPM计划管理
  • SQL关键字 表1 SQL关键字 关键字 GaussDB SQL:1999 SQL-92 ABORT 非保留 - - ABS - 非保留 - ABSOLUTE 非保留 保留 保留 AC CES S 非保留 - - ACCOUNT 非保留 - - ACTION 非保留 保留 保留 ADA - 非保留 非保留 ADD 非保留 保留 保留 ADDDATE 非保留 - - ADMIN 非保留 保留 - ADVANCED 非保留 - - AFTER 非保留 保留 - AGGREGATE 非保留 保留 - ALGORITHM 非保留 - - ALIAS - 保留 - ALL 保留 保留 保留 ALLOCATE - 保留 保留 ALSO 非保留 - - ALTER 非保留 保留 保留 ALWAYS 非保留 - - ANALYSE 保留 - - ANALYZE 保留 - - AND 保留 保留 保留 ANY 保留 保留 保留 APP 非保留 - - APPEND 非保留 - - ARCHIVE 非保留 - - ARE - 保留 保留 ARRAY 保留 保留 - AS 保留 保留 保留 ASC 保留 保留 保留 ASENSITIVE - 非保留 - ASSERTION 非保留 保留 保留 ASSIGNMENT 非保留 非保留 - ASYMMETRIC 保留 非保留 - AT 非保留 保留 保留 ATOMIC - 非保留 - ATTRIBUTE 非保留 - - AUDIT 非保留 - - AUTHID 保留 - - AUTHORIZATION 保留(可以是函数或类型) 保留 保留 AUTO 非保留 - - AUTO_INCREMENT 非保留 - - AUTOEXTEND 非保留 - - AUTOMAPPED 非保留 - - AUTOMATIC 非保留 - - AVG - 非保留 保留 BACKWARD 非保留 - - BAD_PATH 非保留 - - BARRIER 非保留 - - BEFORE 非保留 保留 - BEGIN 非保留 保留 保留 BEGIN_NON_ANOYBLOCK 非保留 - - BETWEEN 非保留(不能是函数或类型) 非保留 保留 BIGINT 非保留(不能是函数或类型) - - BINARY 保留(可以是函数或类型) 保留 - BINARY_DOUBLE 非保留(不能是函数或类型) - - BINARY_INTEGER 非保留(不能是函数或类型) - - BIT 非保留(不能是函数或类型) 保留 保留 BIT_LENGTH - 非保留 保留 BITVAR - 非保留 - BLANKS 非保留 - - BLOB 非保留 保留 - BLOCKCHAIN 非保留 - - BODY 非保留 - - BOOLEAN 非保留(不能是函数或类型) 保留 - BOTH 保留 保留 保留 BREADTH - 保留 - BUCKETS 保留 - - BY 非保留 保留 保留 BYTEAWITHOUTORDER 非保留(不能是函数或类型) - - BYTEAWITHOUTORDERWITHEQUAL 非保留(不能是函数或类型) - - C - 非保留 非保留 CACHE 非保留 - - CALL 非保留 保留 - CALLED 非保留 非保留 - CANCELABLE 非保留 - - CARDINALITY - 非保留 - CASCADE 非保留 保留 保留 CASCADED 非保留 保留 保留 CASE 保留 保留 保留 CAST 保留 保留 保留 CATALOG 非保留 保留 保留 CATALOG_NAME - 非保留 非保留 CHAIN 非保留 非保留 - CHANGE 非保留 - - CHAR 非保留(不能是函数或类型) 保留 保留 CHAR_LENGTH - 非保留 保留 CHARACTER 非保留(不能是函数或类型) 保留 保留 CHARACTER_LENGTH - 非保留 保留 CHARACTER_SET_CATALOG - 非保留 非保留 CHARACTER_SET_NAME - 非保留 非保留 CHARACTER_SET_SCHEMA - 非保留 非保留 CHARACTERIS TICS 非保留 - - CHARACTERSET 非保留 - - CHARSET 非保留 - - CHECK 保留 保留 保留 CHECKED - 非保留 - CHECKPOINT 非保留 - - CLASS 非保留 保留 - CLASS_ORIGIN - 非保留 非保留 CLEAN 非保留 - - CLIENT 非保留 - - CLIENT_MASTER_KEY 非保留 - - CLIENT_MASTER_KEYS 非保留 - - CLOB 非保留 保留 - CLOSE 非保留 保留 保留 CLUSTER 非保留 - - COALESCE 非保留(不能是函数或类型) 非保留 保留 COBOL - 非保留 非保留 COLLATE 保留 保留 保留 COLLATION 保留(可以是函数或类型) 保留 保留 COLLATION_CATALOG - 非保留 非保留 COLLATION_NAME - 非保留 非保留 COLLATION_SCHEMA - 非保留 非保留 COLUMN 保留 保留 保留 COLVIEW 非保留 - - COLUMN_ENCRYPTION_KEY 非保留 - - COLUMN_ENCRYPTION_KEYS 非保留 - - COLUMN_NAME - 非保留 非保留 COLUMNS 非保留 - - COMMAND_FUNCTION - 非保留 非保留 COMMAND_FUNCTION_CODE - 非保留 - COMMENT 非保留 - - COMMENTS 非保留 - - COMMIT 非保留 保留 保留 COMMITTED 非保留 非保留 非保留 COMPACT 保留(可以是函数或类型) - - COMPATIBLE_ILLEGAL_CHARS 非保留 - - COMPILE 非保留 - - COMPLETE 非保留 - - COMPLETION 非保留 保留 - COMPRESS 非保留 - - CONCURRENTLY 保留(可以是函数或类型) - - CONDITION 非保留 - - CONDITION_NUMBER - 非保留 非保留 CONFIGURATION 非保留 - - CONNECT 非保留 保留 保留 CONNECTION 非保留 保留 保留 CONNECTION_NAME - 非保留 非保留 CONSTANT 非保留 - - CONSTRAINT 保留 保留 保留 CONSTRAINT_CATALOG - 非保留 非保留 CONSTRAINT_NAME - 非保留 非保留 CONSTRAINT_SCHEMA - 非保留 非保留 CONSTRAINTS 非保留 保留 保留 CONSTRUCTOR - 保留 - CONTAINING 非保留 - - CONTAINS - 非保留 - CONTENT 非保留 - - CONTINUE 非保留 保留 保留 CONVERSION 非保留 - - CONVERT 非保留 非保留 保留 COORDINATOR 非保留 - - COORDINATORS 非保留 - - COPY 非保留 - - CORRESPONDING - 保留 保留 COST 非保留 - - COUNT - 非保留 保留 CREATE 保留 保留 保留 CROSS 保留(可以是函数或类型) 保留 保留 CROSSBUCKET 保留 - - CS N 保留(可以是函数或类型) - - CSV 非保留 - - CUBE 非保留 保留 - CURRENT 非保留 保留 保留 CURRENT_CATALOG 保留 - - CURRENT_DATE 保留 保留 保留 CURRENT_PATH - 保留 - CURRENT_ROLE 保留 保留 - CURRENT_SCHEMA 保留(可以是函数或类型) - - CURRENT_TIME 保留 保留 保留 CURRENT_TIMESTAMP 保留 保留 保留 CURRENT_USER 保留 保留 保留 CURSOR 非保留 保留 保留 CURSOR_NAME - 非保留 非保留 CYCLE 非保留 保留 - DATA 非保留 保留 非保留 DATABASE 非保留 - - DATAFILE 非保留 - - DATAFILES 非保留 - - DATANODE 非保留 - - DATANODES 非保留 - - DATATYPE_CL 非保留 - - DATE 非保留(不能是函数或类型) 保留 保留 DATE_ADD 非保留 - - DATE_FORMAT 非保留 - - DATE_SUB 非保留 - - DATETIME 非保留 - - DATETIME_INTERVAL_CODE - 非保留 非保留 DATETIME_INTERVAL_PRECISION - 非保留 非保留 DAY 非保留 保留 保留 DAY_HOUR 非保留 - - DAY_MICROSECOND 非保留 - - DAY_MINUTE 非保留 - - DAY_SECOND 非保留 - - DAYS 非保留 - - DB4AISHOT 非保留 - - DBCOMPATIBILITY 非保留 - - DBTIMEZONE 保留 - - DEALLOCATE 非保留 保留 保留 DEC 非保留(不能是函数或类型) 保留 保留 DECIMAL 非保留(不能是函数或类型) 保留 保留 DECLARE 非保留 保留 保留 DECODE 非保留(不能是函数或类型) - - DEFAULT 保留 保留 保留 DEFAULTS 非保留 - - DEFERRABLE 保留 保留 保留 DEFERRED 非保留 保留 保留 DEFINED - 非保留 - DEFINER 非保留 非保留 - DELETE 非保留 保留 保留 DELETE_ALL 非保留 - - DELIMITER 非保留 - - DELIMITERS 非保留 - - DELTA 非保留 - - DELTAMERGE 保留(可以是函数或类型) - - DEPTH - 保留 - DEREF - 保留 - DESC 保留 保留 保留 DESCRIBE - 保留 保留 DESCRIPTOR - 保留 保留 DESTROY - 保留 - DESTRUCTOR - 保留 - DETERMINISTIC 非保留 保留 - DIAGNOSTICS - 保留 保留 DICTIONARY 非保留 保留 - DIRECT 非保留 - - DIRECTORY 非保留 - - DISABLE 非保留 - - DISABLE_ALL 非保留 - - DISCARD 非保留 - - DISCARD_PATH 非保留 - - DISCONNECT 非保留 保留 保留 DISPATCH - 非保留 - DISTINCT 保留 保留 保留 DISTRIBUTE 非保留 - - DISTRIBUTED 非保留 - - DISTRIBUTION 非保留 - - DO 保留 - - DOCUMENT 非保留 - - DOMAIN 非保留 保留 保留 DOUBLE 非保留 保留 保留 DROP 非保留 保留 保留 DUMPFILE 非保留 - - DUPLICATE 非保留 - - DYNAMIC - 保留 - DYNAMIC_FUNCTION - 非保留 非保留 DYNAMIC_FUNCTION_CODE - 非保留 - EACH 非保留 保留 - ELASTIC 非保留 - - ELSE 保留 保留 保留 ENABLE 非保留 - - ENABLE_ALL 非保留 - - ENCLOSED 非保留 - - ENCODING 非保留 - - ENCRYPTED 非保留 - - ENCRYPTED_VALUE 非保留 - - ENCRYPTION 非保留 - - ENCRYPTION_TYPE 非保留 - - END 保留 保留 保留 END-EXEC - 保留 保留 ENDS 非保留 - - ENFORCED 非保留 - - ENGINE 非保留 - - ENTITYESCAPING 非保留 - - ENUM 非保留 - - EOL 非保留 - - EQUALS - 保留 - ERROR 非保留 - - ERRORS 非保留 - - ESCAPE 非保留 保留 保留 ESCAPED 非保留 - - ESCAPING 非保留 - - EVALNAME 非保留 - - EVENT 非保留 - - EVENTS 非保留 - - EVERY 非保留 保留 - EXCEPT 保留 保留 保留 EXCEPTION - 保留 保留 EXCHANGE 非保留 - - EXCLUDE 非保留 - - EXCLUDED 保留 - - EXCLUDING 非保留 - - EXCLUSIVE 非保留 - - EXEC - 保留 保留 EXECUTE 非保留 保留 保留 EXISTING - 非保留 - EXISTS 非保留(不能是函数或类型) 非保留 保留 EXPDP 非保留 - - EXPIRED 非保留 - - EXPLAIN 非保留 - - EXTEND 非保留 - - EXTENSION 非保留 - - EXTERNAL 非保留 保留 保留 EXTRACT 非保留(不能是函数或类型) 非保留 保留 FALSE 保留 保留 保留 FAMILY 非保留 - - FAST 非保留 - - FEATURES 非保留 - - FENCED 保留 - - FETCH 保留 保留 保留 FIELDS 非保留 - - FILEHEADER 非保留 - - FILL_MISSING_FIELDS 非保留 - - FILLER 非保留 - - FILTER 非保留 - 保留 FINAL - 非保留 - FINISH 非保留 - - FIRST 非保留 保留 保留 FIXED 非保留 - 保留 FLOAT 非保留(不能是函数或类型) 保留 保留 FOLLOWING 非保留 - - FOR 保留 保留 保留 FORCE 非保留 - - FOREIGN 保留 保留 保留 FORMATTER 非保留 - - FORTRAN - 非保留 非保留 FORWARD 非保留 - - FOUND - 保留 保留 FREE - 保留 - FREEZE 保留(可以是函数或类型) - - FROM 保留 保留 保留 FULL 保留(可以是函数或类型) 保留 保留 FUNCTION 非保留 保留 - FUNCTIONS 非保留 - - G - 非保留 - GENERAL - 保留 - GENERATED 非保留 非保留 - GET - 保留 保留 GET_FORMAT 非保留 - - GLOBAL 非保留 保留 保留 GO - 保留 保留 GOTO - 保留 保留 GRANT 保留 保留 保留 GRANTED 非保留 非保留 - GREATEST 非保留(不能是函数或类型) - - GROUP 保留 保留 保留 GROUPING 非保留(不能是函数或类型) 保留 - GSIUSABLE 非保留 - - GSIVALID 非保留 - - GSIWAITALL 非保留 - - HANDLER 非保留 - - HAVING 保留 保留 保留 HDFSDIRECTORY 保留(可以是函数或类型) - - HEADER 非保留 - - HIERARCHY - 非保留 - HIGH 非保留 - - HOLD 非保留 非保留 - HOST - 保留 - HOUR 非保留 保留 保留 HOUR_MICROSECOND 非保留 - - HOUR_MINUTE 非保留 - - HOUR_SECOND 非保留 - - IDENTIFIED 非保留 - - IDENTITY 非保留 保留 保留 IF 非保留 - - IFNULL 非保留 - - IGNORE 非保留 保留 - IGNORE_EXTRA_DATA 非保留 - - ILIKE 保留(可以是函数或类型) - - ILM 非保留 - - ILM_PIDX_LIST 非保留 - - IMCVTABLE 非保留 - - IMMEDIATE 非保留 保留 保留 IMMUTABLE 非保留 - - IMPDP 非保留 - - IMPLEMENTATION - 非保留 - IMPLICIT 非保留 - - IN 保留 保留 保留 INCLUDE 非保留 - - INCLUDING 非保留 - - INCREMENT 非保留 - - INCREMENTAL 非保留 - - INDEX 非保留 - - INDEXES 非保留 - - INDICATOR - 保留 保留 INFILE 非保留 - - INFIX - 非保留 - INHERIT 非保留 - - INHERITS 非保留 - - INITIAL 非保留 - - INITIALIZE - 保留 - INITIALLY 保留 保留 保留 INITRANS 非保留 - - INLINE 非保留 - - INNER 保留(可以是函数或类型) 保留 保留 INOUT 非保留(不能是函数或类型) 保留 - INPUT 非保留 保留 保留 INSENSITIVE 非保留 非保留 保留 INSERT 非保留 保留 保留 INSTANCE - 非保留 - INSTANTIABLE - 非保留 - INSTEAD 非保留 - - INT 非保留(不能是函数或类型) 保留 保留 INTEGER 非保留(不能是函数或类型) 保留 保留 INTERNAL 非保留 - - INTERSECT 保留 保留 保留 INTERVAL 非保留(不能是函数或类型) 保留 保留 INTO 保留 保留 保留 INVISIBLE 非保留 - - INVOKER 非保留 非保留 - LOW 非保留 - - IP 非保留 - - IS 保留 保留 保留 ISNULL 非保留 - - ISOLATION 非保留 保留 保留 ITERATE - 保留 - JOIN 保留(可以是函数或类型) 保留 保留 JSON_OBJECT 非保留 - - K - 非保留 - KEY 非保留 保留 保留 KEY_MEMBER - 非保留 - KEY_PATH 非保留 - - KEY_STORE 非保留 - - KEY_TYPE - 非保留 - KILL 非保留 - - LABEL 非保留 - - LANGUAGE 非保留 保留 保留 LARGE 非保留 保留 - LAST 非保留 保留 保留 LAST_DAY 非保留 - - LATERAL - 保留 - LC_COLLATE 非保留 - - LC_CTYPE 非保留 - - LEADING 保留 保留 保留 LEAKPROOF 非保留 - - LEAST 非保留(不能是函数或类型) - - LEFT 保留(可以是函数或类型) 保留 保留 LENGTH - 非保留 非保留 LESS 保留 保留 - LEVEL 非保留 保留 保留 LIKE 保留(可以是函数或类型) 保留 保留 LIMIT 保留 保留 - LINES 非保留 - - LINK 非保留 - - LIST 非保留 - - LISTEN 非保留 - - LNNVL 非保留(不能是函数或类型) - - LOAD 非保留 - - LOAD_BAD 非保留 - - LOAD_DISCARD 非保留 - - LOAD_INTEGER_LEN 非保留 - - LOAD_SESSION_ID 非保留 - - LOAD_SMALLINT_LEN 非保留 - - LOAD_UNFIXED_LEN 非保留 - - LOAD_UNFIXED_START_POS 非保留 - - LOCAL 非保留 保留 保留 LOCALTIME 保留 保留 - LOCALTIMESTAMP 保留 保留 - LOCATION 非保留 - - LOCATOR - 保留 - LOCK 非保留 - - LOCKED 非保留 - - LOG 非保留 - - LOGGING 非保留 - - LOGIN_ANY 非保留 - - LOGIN_FAILURE 非保留 - - LOGIN_SUCCESS 非保留 - - LOGOUT 非保留 - - LOOP 非保留 - - LOWER - 非保留 保留 M - 非保留 - MANUAL 非保留 - - MAP - 保留 - MAPPING 非保留 - - MARK 非保留 - - MASKING 非保留 - - MASTER 非保留 - - MATCH 非保留 保留 保留 MATCHED 非保留 - - MATERIALIZED 非保留 - - MAX - 非保留 保留 MAXEXTENTS 非保留 - - MAXSIZE 非保留 - - MAXTRANS 非保留 - - MAXVALUE 保留 - - MEDIUMINT 非保留(不能是函数或类型) - - MERGE 非保留 - - MESSAGE_LENGTH - 非保留 非保留 MESSAGE_OCTET_LENGTH - 非保留 非保留 MESSAGE_TEXT - 非保留 非保留 METHOD - 非保留 - MICROSECOND 非保留 - - MIN - 非保留 保留 MINEXTENTS 非保留 - - MINUS 保留 - - MINUTE 非保留 保留 保留 MINUTE_MICROSECOND 非保留 - - MINUTE_SECOND 非保留 - - MINVALUE 非保留 - - MOD - 非保留 - MODE 非保留 - - MODEL 非保留 - - MODIFICATION 非保留 - - MODIFIES - 保留 - MODIFY 保留 保留 - MODULE - 保留 保留 MONTH 非保留 保留 保留 MONTHS 非保留 - - MORE - 非保留 非保留 MOVE 非保留 - - MOVEMENT 非保留 - - MUMPS - 非保留 非保留 NAME 非保留 非保留 非保留 NAMES 非保留 保留 保留 NATIONAL 非保留(不能是函数或类型) 保留 保留 NATURAL 保留(可以是函数或类型) 保留 保留 NCHAR 非保留(不能是函数或类型) 保留 保留 NCLOB - 保留 - NEW - 保留 - NEXT 非保留 保留 保留 NO 非保留 保留 保留 NOCACHE 非保留 - - NOCOMPRESS 非保留 - - NOCYCLE 保留 - - NOCOLVIEW 非保留 - - NODE 非保留 - - NOENTITYESCAPING 非保留 - - NOEXTEND 非保留 - - NOLOGGING 非保留 - - NOMAXVALUE 非保留 - - NOMINVALUE 非保留 - - NONE 非保留(不能是函数或类型) 保留 - NOSCALE 非保留 - - NOT 保留 保留 保留 NOTHING 非保留 - - NOTIFY 非保留 - - NOTNULL 保留(可以是函数或类型) - - NOW 非保留 - - NOWAIT 非保留 - - NULL 保留 保留 保留 NULLABLE - 非保留 非保留 NULLCOLS 非保留 - - NULLIF 非保留(不能是函数或类型) 非保留 保留 NULLS 非保留 - - NUMBER 非保留(不能是函数或类型) 非保留 非保留 NUMERIC 非保留(不能是函数或类型) 保留 保留 NUMSTR 非保留 - - NVARCHAR2 非保留(不能是函数或类型) - - NVL 非保留(不能是函数或类型) - - NVL2 非保留(不能是函数或类型) - - OBJECT 非保留 保留 - OCTET_LENGTH - 非保留 保留 OF 非保留 保留 保留 OFF 非保留 保留 - OFFSET 保留 - - OIDS 非保留 - - OLD - 保留 - ON 保留 保留 保留 ONLY 保留 保留 保留 OPEN 非保留 保留 保留 OPERATION - 保留 - OPERATOR 非保留 - - OPTIMIZATION 非保留 - - OPTION 非保留 保留 保留 OPTIONALLY 非保留 - - OPTIONS 非保留 非保留 - OR 保留 保留 保留 ORDER 保留 保留 保留 ORDINALITY 非保留 保留 - OUT 非保留(不能是函数或类型) 保留 - OUTER 保留(可以是函数或类型) 保留 保留 OUTFILE 非保留 - - OUTPUT - 保留 保留 OVER 非保留 - - OVERLAPS 保留(可以是函数或类型) 非保留 保留 OVERLAY 非保留(不能是函数或类型) 非保留 - OVERRIDING - 非保留 - OWNED 非保留 - - OWNER 非保留 - - PACKAGE 非保留 - - PACKAGES 非保留 - - PAD - 保留 保留 PA RAM ETER - 保留 - PARAMETER_MODE - 非保留 - PARAMETER_NAME - 非保留 - PARAMETER_ORDINAL_POSITION - 非保留 - PARAMETER_SPECIFIC_CATALOG - 非保留 - PARAMETER_SPECIFIC_NAME - 非保留 - PARAMETER_SPECIFIC_SCHEMA - 非保留 - PARAMETERS - 保留 - PARSER 非保留 - - PARTIAL 非保留 保留 保留 PARTITION 非保留 - - PARTITIONING 非保留 - - PARTITIONS 非保留 - - PASCAL - 非保留 非保留 PASSING 非保留 - - PASSWORD 非保留 - - PATH - 保留 - PCTFREE 非保留 - - PER 非保留 - - PERCENT 非保留 - - PERFORMANCE 保留 - - PERM 非保留 - - PIVOT 非保留 - - PLACING 保留 - - PLAN 非保留 - - PLANS 非保留 - - PLI - 非保留 非保留 PLUGGABLE 非保留 - - POLICY 非保留 - - POOL 非保留 - - POPULATE 非保留 - - POSITION 非保留(不能是函数或类型) 非保留 保留 POSTFIX - 保留 - PRECEDING 非保留 - - PRECISION 非保留(不能是函数或类型) 保留 保留 PREDICT 非保留 - - PREFERRED 非保留 - - PREFIX 非保留 保留 - PREORDER - 保留 - PREPARE 非保留 保留 保留 PREPARED 非保留 - - PRESERVE 非保留 保留 保留 PRIMARY 保留 保留 保留 PRIOR 非保留 保留 保留 PRIORER 保留 - - PRIORITY 非保留 - - PRIVATE 非保留 - - PRIVILEGE 非保留 - - PRIVILEGES 非保留 保留 保留 PROCEDURAL 非保留 - - PROCEDURE 保留 保留 保留 PROFILE 非保留 - - PUBLIC 非保留 保留 保留 PUBLISH 非保留 - - PURGE 非保留 - - QUARTER 非保留 - - QUERY 非保留 - - QUOTE 非保留 - - RANDOMIZED 非保留 - - RANGE 非保留 - - RATIO 非保留 - - RAW 非保留 - - READ 非保留 保留 保留 READS - 保留 - REAL 非保留(不能是函数或类型) 保留 保留 REASSIGN 非保留 - - REBUILD 非保留 - - RECHECK 非保留 - - RECOVER 非保留 - - RECURSIVE 非保留 保留 - RECYCLEBIN 保留(可以是函数或类型) - - REDISANYVALUE 非保留 - - REF 非保留 保留 - REFERENCES 保留 保留 保留 REFERENCING - 保留 - REFRESH 非保留 - - REGEXP 保留(可以是函数或类型) - - REGEXP_LIKE 非保留(不能是函数或类型) - - REINDEX 非保留 - - REJECT 保留 - - RELATIVE 非保留 保留 保留 RELEASE 非保留 - - RELOPTIONS 非保留 - - REMOTE 非保留 - - REMOVE 非保留 - - RENAME 非保留 - - REPEATABLE 非保留 非保留 非保留 REPLACE 非保留 - - REPLICA 非保留 - - RESET 非保留 - - RESIZE 非保留 - - RESOURCE 非保留 - - RESPECT 非保留 - - RESTART 非保留 - - RESTRICT 非保留 保留 保留 RESULT - 保留 - RETURN 非保留 保留 - RETURNED_LENGTH - 非保留 非保留 RETURNED_OCTET_LENGTH - 非保留 非保留 RETURNED_SQLSTATE - 非保留 非保留 RETURNING 保留 - - RETURNS 非保留 保留 - REUSE 非保留 - - REVOKE 非保留 保留 保留 RIGHT 保留(可以是函数或类型) 保留 保留 RLIKE 保留(可以是函数或类型) - - ROLE 非保留 保留 - ROLES 非保留 - - ROLLBACK 非保留 保留 保留 ROLLUP 非保留 保留 - ROTATION 非保留 - - ROUTINE - 保留 - ROUTINE_CATALOG - 非保留 - ROUTINE_NAME - 非保留 - ROUTINE_SCHEMA - 非保留 - ROW 非保留(不能是函数或类型) 保留 - ROW_COUNT - 非保留 非保留 ROWNUM 保留 - - ROWS 非保留 保留 保留 ROWTYPE 非保留 - - RULE 非保留 - - SAMPLE 非保留 - - SAVEPOINT 非保留 保留 - SCALE 非保留 非保留 非保留 SCHEDULE 非保留 - - SCHEMA 非保留 保留 保留 SCHEMA_NAME - 非保留 非保留 SCOPE - 保留 - SCROLL 非保留 保留 保留 SEARCH 非保留 保留 - SECOND 非保留 保留 保留 SECOND_MICROSECOND 非保留 - - SECTION - 保留 保留 SECURITY 非保留 非保留 - SELECT 保留 保留 保留 SELF - 非保留 - SENSITIVE - 非保留 - SEPARATOR 非保留 - - SEQUENCE 非保留 保留 - SEQUENCES 非保留 - - SERIALIZABLE 非保留 非保留 非保留 SERVER 非保留 - - SERVER_NAME - 非保留 非保留 SESSION 非保留 保留 保留 SESSION_USER 保留 保留 保留 SESSIONTIMEZONE 保留 - - SET 非保留 保留 保留 SETOF 非保留(不能是函数或类型) - - SETS 非保留 保留 - SHARE 非保留 - - SHIPPABLE 非保留 - - SHOW 非保留 - - SHRINK 保留 - - SHUTDOWN 非保留 - - SIBLINGS 非保留 - - SIGNED 非保留(不能是函数或类型) - - SIMILAR 保留(可以是函数或类型) 非保留 - SIMPLE 非保留 非保留 - SIZE 非保留 保留 保留 SKIP 非保留 - - SLAVE 非保留 - - SLICE 非保留 - - SLICEGROUP 非保留 - - SMALLDATETIME 非保留(不能是函数或类型) - - SMALLDATETIME_FORMAT 非保留 - - SMALLINT 非保留(不能是函数或类型) 保留 保留 SNAPSHOT 非保留 - - SOME 保留 保留 保留 SOURCE 非保留 非保留 - SPACE 非保留 保留 保留 SPECIFIC - 保留 - SPECIFIC_NAME - 非保留 - SPECIFICATION 非保留 - - SPECIFICTYPE - 保留 - SPILL 非保留 - - SPLIT 非保留 - - SQL - 保留 保留 SQLCODE - - 保留 SQLERROR - - 保留 SQLEXCEPTION - 保留 - SQLSTATE - 保留 保留 SQLWARNING - 保留 - STABLE 非保留 - - STANDALONE 非保留 - - START 非保留 保留 - STARTING 非保留 - - STARTS 非保留 - - STATE - 保留 - STATEMENT 非保留 保留 - STATEMENT_ID 非保留 - - STATIC - 保留 - STATISTICS 非保留 - - STDIN 非保留 - - STDOUT 非保留 - - STORAGE 非保留 - - STORE 非保留 - - STORED 非保留 - - STRATIFY 非保留 - - STRICT 非保留 - - STRIP 非保留 - - STRUCTURE - 保留 - STYLE - 非保留 - SUBCLASS_ORIGIN - 非保留 非保留 SUBDATE 非保留 - - SUBLIST - 非保留 - SUBPARTITION 非保留 - - SUBPARTITIONING 非保留 - - SUBPARTITIONS 非保留 - - SUBSTR 非保留 - - SUBSTRING 非保留(不能是函数或类型) 非保留 保留 SUM - 非保留 保留 SYMMETRIC 保留 非保留 - SYNONYM 非保留 - - SYS_REFCURSOR 非保留 - - SYSDATE 保留 - - SYSID 非保留 - - SYSTEM 非保留 非保留 - SYSTEM_USER - 保留 保留 TABLE 保留 保留 保留 TABLE_NAME - 非保留 非保留 TABLES 非保留 - - TABLESAMPLE 保留(可以是函数或类型) - - TABLESPACE 非保留 - - TARGET 非保留 - - TEMP 非保留 - - TEMPLATE 非保留 - - TEMPORARY 非保留 保留 保留 TERMINATE - 保留 - TERMINATED 非保留 - - TEXT 非保留 - - THAN 非保留 保留 - THEN 保留 保留 保留 TIME 非保留(不能是函数或类型) 保留 保留 TIME_FORMAT 非保留 - - TIMECAPSULE 保留(可以是函数或类型) - - TIMESTAMP 非保留(不能是函数或类型) 保留 保留 TIMESTAMP_FORMAT 非保留 - - TIMESTAMPADD 非保留 - - TIMESTAMPDIFF 非保留(不能是函数或类型) - - TIMEZONE_HOUR - 保留 保留 TIMEZONE_MINUTE - 保留 保留 TINYINT 非保留(不能是函数或类型) - - TO 保留 保留 保留 TRAILING 保留 保留 保留 TRANSACTION 非保留 保留 保留 TRANSACTION_ACTIVE - 非保留 - TRANSACTIONS_COMMITTED - 非保留 - TRANSACTIONS_ROLLED_BACK - 非保留 - TRANSFORM 非保留 非保留 - TRANSFO RMS - 非保留 - TRANSLATE - 非保留 保留 TRANSLATION - 保留 保留 TREAT 非保留(不能是函数或类型) 保留 - TRIGGER 非保留 保留 - TRIGGER_CATALOG - 非保留 - TRIGGER_NAME - 非保留 - TRIGGER_SCHEMA - 非保留 - TRIM 非保留(不能是函数或类型) 非保留 保留 TRUE 保留 保留 保留 TRUNCATE 非保留 - - TRUSTED 非保留 - - TSFIELD 非保留 - - TSTAG 非保留 - - TSTIME 非保留 - - TYPE 非保留 非保留 非保留 TYPES 非保留 - - UNBOUNDED 非保留 - - UNCOMMITTED 非保留 非保留 非保留 UNDER - 保留 - UNENCRYPTED 非保留 - - UNION 保留 保留 保留 UNIQUE 保留 保留 保留 UNKNOWN 非保留 保留 保留 UNLIMITED 非保留 - - UNLISTEN 非保留 - - UNLOCK 非保留 - - UNLOGGED 非保留 - - UNNAMED - 非保留 非保留 UNNEST - 保留 - UNPIVOT 非保留 - - UNSIGNED 非保留(不能是函数或类型) - - UNTIL 非保留 - - UNUSABLE 非保留 - - UPDATE 非保留 保留 保留 UPPER - 非保留 保留 USAGE - 保留 保留 USEEOF 非保留 - - USER 保留 保留 保留 USER_DEFINED_TYPE_CATALOG - 非保留 - USER_DEFINED_TYPE_NAME - 非保留 - USER_DEFINED_TYPE_SCHEMA - 非保留 - USING 保留 保留 保留 VACUUM 非保留 - - VALID 非保留 - - VALIDATE 非保留 - - VALIDATION 非保留 - - VALIDATOR 非保留 - - VALUE 非保留 保留 保留 VALUES 非保留(不能是函数或类型) 保留 保留 VARCHAR 非保留(不能是函数或类型) 保留 保留 VARCHAR2 非保留(不能是函数或类型) - - VARIABLE - 保留 - VARIABLES 非保留 - - VARIADIC 保留 - - VARYING 非保留 保留 保留 VCGROUP 非保留 - - VERBOSE 保留(可以是函数或类型) - - VERIFY 保留 - - VERSION 非保留 - - VIEW 非保留 保留 保留 VISIBLE 非保留 - - VOLATILE 非保留 - - WAIT 非保留 - - WEAK 非保留 - - WEEK 非保留 - - WELLFORMED 非保留 - - WHEN 保留 保留 保留 WHENEVER - 保留 保留 WHERE 保留 保留 保留 WHITESPACE 非保留 - - WINDOW 保留 - - WITH 保留 保留 保留 WITHIN 非保留 - - WITHOUT 非保留 保留 - WORK 非保留 保留 保留 WORKLOAD 非保留 - - WRAPPER 非保留 - - WRITE 非保留 保留 保留 XML 非保留 - - XMLATTRIBUTES 非保留(不能是函数或类型) - - XMLCONCAT 非保留(不能是函数或类型) - - XMLELEMENT 非保留(不能是函数或类型) - - XMLEXISTS 非保留(不能是函数或类型) - - XMLFOREST 非保留(不能是函数或类型) - - XMLNAMESPACES 非保留 - - XMLPARSE 非保留(不能是函数或类型) - - XMLPI 非保留(不能是函数或类型) - - XMLROOT 非保留(不能是函数或类型) - - XMLSERIALIZE 非保留(不能是函数或类型) - - XMLTABLE 非保留 - - XMLTYPE 非保留(不能是函数或类型) - - YEAR 非保留 保留 保留 YEAR_MONTH 非保留 - - YEARS 非保留 - - YES 非保留 - - ZEROFILL 非保留(不能是函数或类型) - - ZONE 非保留 保留 保留
  • 参数说明 policy_name 脱敏策略名称,需要唯一,不可重复。 取值范围:字符串,要符合标识符命名规范。 policy_comments 需要为脱敏策略添加或修改的描述信息。 masking_function 指的是预置的八种脱敏方式或者用户自定义的函数,支持模式。 maskall不是预置函数,硬编码在代码中,不支持\df展示。 预置时脱敏方式如下: { maskall | randommasking | creditcardmasking | basicemailmasking | fullemailmasking | shufflemasking | alldigitsmasking | regexpmasking } label_name 资源标签名称。 FILTER_TYPE 指定脱敏策略的过滤信息,过滤类型包括:IP、ROLES、APP。 filter_value 指具体过滤信息内容,例如具体的IP,具体的APP名称,具体的用户名。 ENABLE|DISABLE 可以打开或关闭脱敏策略。若不指定ENABLE|DISABLE,语句默认为ENABLE。
  • 示例 修改策略描述: --创建一个表tb_for_masking。 gaussdb=# CREATE TABLE tb_for_masking(idx int, col1 text, col2 text, col3 text, col4 text, col5 text, col6 text, col7 text,col8 text); --向表tb_for_masking插入数据。 gaussdb=# INSERT INTO tb_for_masking VALUES(1, '9876543210', 'usr321usr', 'abc@huawei.com', 'abc@huawei.com', '1234-4567-7890-0123', 'abcdef 123456 ui 323 jsfd321 j3k2l3', '4880-9898-4545-2525', 'this is a llt case'); --查看数据。 gaussdb=# SELECT * FROM tb_for_masking; idx | col1 | col2 | col3 | col4 | col5 | col6 | col7 | col8 -----+------------+-----------+----------------+----------------+---------------------+------------------------------- ------+---------------------+-------------------- 1 | 9876543210 | usr321usr | abc@huawei.com | abc@huawei.com | 1234-4567-7890-0123 | abcdef 123456 ui 323 jsfd321 j 3k2l3 | 4880-9898-4545-2525 | this is a llt case (1 row) --创建资源标签标记敏感列col1。 gaussdb=# CREATE RESOURCE LABEL mask_lb1 ADD COLUMN(tb_for_masking.col1); --创建一个名为maskpol1的脱敏策略。 gaussdb=# CREATE MASKING POLICY maskpol1 maskall ON LABEL(mask_lb1); --为脱敏策略maskpol1添加描述。 gaussdb=# ALTER MASKING POLICY maskpol1 COMMENTS 'masking policy for tb_for_masking.col1'; --查看脱敏策略maskpol1的描述。 gaussdb=# SELECT * FROM GS_MASKING_POLICY; polname | polcomments | modifydate | polenabled ----------+----------------------------------------+----------------------------+------------ maskpol1 | masking policy for tb_for_masking.col1 | 2023-11-07 16:38:31.607374 | t (1 row) 修改脱敏策略: --创建资源标签标记敏感列col2。 gaussdb=# CREATE RESOURCE LABEL mask_lb2 ADD COLUMN(tb_for_masking.col2); --脱敏策略maskpol1新增randommasking的脱敏方式。 gaussdb=# ALTER MASKING POLICY maskpol1 ADD randommasking ON LABEL(mask_lb2); --访问tb_for_masking表,col2列触发脱敏策略。 gaussdb=# SELECT col2 FROM tb_for_masking; col2 ------------ 27e8da66cc (1 row) --脱敏策略maskpol1移除randommasking的脱敏方式。 gaussdb=# ALTER MASKING POLICY maskpol1 REMOVE randommasking ON LABEL(mask_lb2); --访问表tb_for_masking,col2列的数据没有脱敏,说明脱敏方式randommasking失效。 gaussdb=# SELECT col2 FROM tb_for_masking; col2 ----------- usr321usr (1 row) --脱敏策略maskpol1修改为randommasking的脱敏方式。 gaussdb=# ALTER MASKING POLICY maskpol1 MODIFY randommasking ON LABEL(mask_lb1); --访问tb_for_masking表,col1列触发脱敏策略。 gaussdb=# SELECT col1 FROM tb_for_masking; col1 ------------ 5a03debac1 (1 row) 修改脱敏策略生效场景: --创建dev_mask和bob_mask用户。 gaussdb=# CREATE USER dev_mask PASSWORD '********'; gaussdb=# CREATE USER bob_mask PASSWORD '*********'; --创建资源标签标记敏感列col8。 gaussdb=# CREATE RESOURCE LABEL mask_lb8 ADD COLUMN(tb_for_masking.col8); --创建一个名为maskpol8的脱敏策略。 gaussdb=# CREATE MASKING POLICY maskpol8 randommasking ON LABEL(mask_lb8) FILTER ON ROLES(dev_mask, bob_mask), APP(gsql), IP('172.31.17.160', '127.0.0.0/24'); --修改脱敏策略maskpol8的过滤信息ROLES。 gaussdb=# ALTER MASKING POLICY maskpol1 MODIFY (FILTER ON ROLES(dev_mask)); --使用dev_mask用户查看tb_for_masking。 gaussdb=# GRANT ALL PRIVILEGES TO dev_mask; --访问tb_for_masking表,col8列触发脱敏策略。 gaussdb=# SELECT col8 FROM tb_for_masking; col8 -------------------- f134e06ef528013b46 (1 row) 移除脱敏策略生效场景,使策略对所用场景生效: gaussdb=# ALTER MASKING POLICY maskpol1 DROP FILTER; 禁用脱敏策略: --禁用脱敏策略maskpol1。 gaussdb=# ALTER MASKING POLICY maskpol1 DISABLE; --查看脱敏策略maskpol1的状态,polenabled字段的值为f,说明该脱敏策略禁用成功。 gaussdb=# SELECT * FROM GS_MASKING_POLICY; polname | polcomments | modifydate | polenabled ----------+-------------+----------------------------+------------ maskpol1 | | 2023-11-07 17:22:54.594111 | f 删除数据: --删除脱敏策略。 gaussdb=# DROP MASKING POLICY maskpol1, maskpol8; --删除资源标签。 gaussdb=# DROP RESOURCE LABEL mask_lb1, mask_lb2, mask_lb8; --删除表tb_for_masking。 gaussdb=# DROP TABLE tb_for_masking; --删除用户dev_mask和bob_mask。 gaussdb=# DROP USER dev_mask, bob_mask;
  • 语法格式 修改策略描述: 1 ALTER MASKING POLICY policy_name COMMENTS policy_comments; 修改脱敏方式: 1 ALTER MASKING POLICY policy_name { ADD | REMOVE | MODIFY } masking_actions[, ...]; 其中masking_actions: 1 masking_function ON LABEL(label_name[, ...]) 其中masking_function: 1 { maskall | randommasking | creditcardmasking | basicemailmasking | fullemailmasking | shufflemasking | alldigitsmasking | regepmasking } 修改脱敏策略生效场景: 1 ALTER MASKING POLICY policy_name MODIFY (filter_group_clause); 其中filter_group_clause: 1 FILTER ON { ( FILTER_TYPE ( filter_value [, ... ] ) ) [, ... ] } 移除脱敏策略生效场景,使策略对所用场景生效: 1 ALTER MASKING POLICY policy_name DROP FILTER; 修改脱敏策略开启/关闭: 1 ALTER MASKING POLICY policy_name {ENABLE | DISABLE};
  • 空字符串和NULL的关系是什么? 答:GaussDB中对空字符串是否为NULL和数据库的兼容模式有关。 A兼容模式中空字符串判断为NULL。 gaussdb=# CREATE DATABASE db_test1 DBCOMPATIBILITY = 'A'; gaussdb=# \c db_test1 db_test1=# SELECT '' IS NULL; ?column? ---------- t (1 row) B兼容模式中空字符串判断不为NULL。 gaussdb=# CREATE DATABASE db_test2 DBCOMPATIBILITY = 'B'; gaussdb=# \c db_test2 db_test2=# SELECT '' IS NULL; ?column? ---------- f (1 row) 父主题: FAQ
  • 变量作用域 变量的作用域表示变量在代码块中的可访问性和可用性。只有在它的作用域内,变量才有效。 变量必须在declare部分声明,即必须建立BEGIN-END块。块结构也强制变量必须先声明后使用,即变量在过程内有不同作用域、不同的生存期。 同一变量可以在不同的作用域内定义多次,内层的定义会覆盖外层的定义。 在外部块定义的变量,可以在嵌套块中使用。但外部块不能访问嵌套块中的变量。 示例 gaussdb=# DECLARE emp_id INTEGER :=7788; --定义变量并赋值 outer_var INTEGER :=6688; --定义变量并赋值 BEGIN DECLARE emp_id INTEGER :=7799; --定义变量并赋值 inner_var INTEGER :=6688; --定义变量并赋值 BEGIN dbe_output.print_line('inner emp_id ='||emp_id); --显示值为7799 dbe_output.print_line('outer_var ='||outer_var); --引用外部块的变量 END; dbe_output.print_line('outer emp_id ='||emp_id); --显示值为7788 END; / inner emp_id =7799 outer_var =6688 outer emp_id =7788 ANONYMOUS BLOCK EXECUTE
  • 变量声明 变量声明语法请参见图1。 图1 declare_variable::= 对以上语法格式的解释如下: variable_name:变量名。 type:变量类型。 value:该变量的初始值(如果不给定初始值,则初始为NULL)。value也可以是表达式。 示例 1 2 3 4 5 6 7 gaussdb=# DECLARE emp_id INTEGER := 7788; --定义变量并赋值 BEGIN emp_id := 5*7784; --变量赋值 END; / ANONYMOUS BLOCK EXECUTE
  • GS_ENCRYPTED_PROC GS_ENCRYPTED_PROC系统表提供了密态函数/存储过程函数参数、返回值的原始数据类型,加密列等信息。 表1 GS_ENCRYPTED_PROC字段 名称 类型 描述 oid oid 行标识符(隐含字段)。 func_id oid function的oid,对应系统表PG_PROC中的oid行标识符。 prorettype_orig integer 返回值的原始数据类型。 last_change timestamp without time zone 密态函数信息上次修改的时间。 proargcachedcol oidvector 函数INPUT参数对应的加密列的oid,对应系统表GS_ENCRYPTED_COLUMNS中的oid行标识符。 proallargtypes_orig oid[] 所有函数参数的原始数据类型。 父主题: 密态等值查询
  • PG_GET_SENDERS_CATCHUP_TIME PG_GET_SENDERS_CATCHUP_TIME视图显示数据库节点上当前活跃的主备发送线程的追赶信息。在多租场景下,PDB内部返回为空。 表1 PG_GET_SENDERS_CATCHUP_TIME字段 名称 类型 描述 pid bigint 当前sender的线程ID。 lwpid integer 当前sender的lwpid。 local_role text 本地的角色。 peer_role text 对端的角色。 state text 当前sender的复制状态。 Startup:启动状态。 Backup:备份状态。 Catchup:追赶状态,表示备节点正在追赶主节点。 Streaming:流复制状态,当备节点追上主节点后维持Streaming状态。 type text 当前sender的类型。 Wal:预写入日志类型。 Data:数据类型。 catchup_start timestamp with time zone catchup启动的时间。 catchup_end timestamp with time zone catchup结束的时间。 父主题: 其他系统视图
  • crosstab(source_sql text [, N int]) 描述:以source_sql的结果为源数据,产生一个数据透视表。 返回值类型:setof record 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 gaussdb=# CREATE extension tablefunc; CREATE EXTENSION gaussdb=# CREATE TABLE cross_test(group_id text, id int, var text); CREATE TABLE gaussdb=# SELECT * FROM cross_test; group_id | id | var ----------+----+----- (0 rows) gaussdb=# SELECT * FROM crosstab('SELECT group_id, var FROM cross_test order by 1, 2;') AS c(group_ text, cat1 text, cat2 text, cat3 text); group_ | cat1 | cat2 | cat3 --------+------+------+------ (0 rows) N是一个废弃参数,不影响函数结果。
  • crosstabN(source_sql text) 描述:以source_sql的结果为源数据,产生一个 "N+1" 列的数据透视表。crosstabN是一组函数,包括crosstab2、crosstab3、crosstab4。 返回值类型:setof tablefunc_crosstab_N。tablefunc_crosstab_N包括tablefunc_crosstab_2、tablefunc_crosstab_3、tablefunc_crosstab_4。 示例: 1 2 3 4 5 6 7 8 9 --crossbatN(source_sql text)中的N为2时,产生一个3列的数据透视表。 gaussdb=# CREATE extension tablefunc; CREATE EXTENSION gaussdb=# CREATE TABLE cross_test(group_id text, id int, var text); CREATE TABLE gaussdb=# SELECT * FROM crosstab2('SELECT group_id, var from cross_test ORDER BY 1, 2;'); row_name | category_1 | category_2 ----------+------------+------------ (0 rows)
  • crosstab(source_sql text, category_sql text) 描述:以source_sql的结果为源数据,根据category_sql的结果分类,产生一个数据透视表。 返回值类型:setof record 示例: 1 2 3 4 5 6 7 8 gaussdb=# CREATE extension tablefunc; CREATE EXTENSION gaussdb=# CREATE TABLE cross_test(group_id text, id int, var text); CREATE TABLE gaussdb=# SELECT * FROM crosstab('SLECT group_id, var FROM cross_test order by 1, 2;', 'SELECT generate_series(1, 4)') AS c(group_ text, cat1 text, cat2 text, cat3 text, cat4 text); group_ | cat1 | cat2 | cat3 | cat4 --------+------+------+------+------ (0 rows)
  • 类型映射 当ecpg应用程序在GaussDB服务器和C语言程序之间交换值时(例如:从服务器检索查询结果或者执行带有输入参数的SQL语句),在GaussDB数据类型和宿主语言变量类型(具体的C语言数据类型)之间需要进行值的转换。有两种数据类型可以使用:简单的GaussDB数据类型,如integer和text,可以直接被应用程序读取和写入。其他GaussDB数据类型,如timestamp和numeric,只能通过特殊库函数进行访问,请参见ecpg接口参考章节。 表1 GaussDB数据类型和C变量类型之间的映射 GaussDB数据类型 宿主变量数据类型 smallint short integer int bigint long long int boolean boolean character(n), varchar(n), text char[n+1], VARCHAR[n+1] double precision double real float smallserial short serial int bigserial long long int oid unsigned int name char[NAMEDATALEN] date date [a] timestamp timestamp [a] interval interval [a] decimal decimal [a] numeric numeric [a] [a]这种类型可以通过访问特殊数据类型访问。 当前仅支持对于C语言的基本数据类型的使用或者组合,不支持C++语言中string数据类型用作宿主变量数据类型。 当前ecpg仅对GaussDB SQL的常用数据类型做映射,具体支持项请参见表1。 父主题: 宿主变量
  • 创建和调用存储过程 此示例将演示如何基于GaussDB提供的JDBC接口开发应用程序。本示例演示如何连接数据库、创建和调用存储过程。 代码运行的前提条件:根据实际情况添加gaussdbjdbc.jar包(例如用户使用IDE执行代码,则需要在本地IDE添加gaussdbjdbc.jar包)。 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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 // 认证用的用户名和密码直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中存放(密码应密文存放,使用时解密),确保安全。 // 本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置)EXAMPLE_USERNAME_ENV和EXAMPLE_PASSWORD_ENV。 // $ip、$port、database需要用户自行修改。 import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement; import java.sql.CallableStatement; import java.sql.Types; public class DBTest { // 以非加密方式创建数据库连接。 public static Connection GetConnection(String username, String passwd) { String driver = "com.huawei.gaussdb.jdbc.Driver"; String sourceURL = "jdbc:gaussdb://$ip:$port/database"; Connection conn = null; try { // 加载数据库驱动。 Class.forName(driver); } catch (Exception e) { e.printStackTrace(); return null; } try { // 创建数据库连接。 conn = DriverManager.getConnection(sourceURL, username, passwd); System.out.println("Connection succeed!"); } catch (Exception e) { e.printStackTrace(); return null; } return conn; }; // 创建存储过程。 public static void CreateCallable(Connection conn) { Statement stmt = null; try { stmt = conn.createStatement(); // 创建存储过程,返回三个输入值的和。 stmt.execute("create or replace procedure testproc \n" + "(\n" + " psv_in1 in integer,\n" + " psv_in2 in integer,\n" + " psv_inout inout integer\n" + ")\n" + "as\n" + "begin\n" + " psv_inout := psv_in1 + psv_in2 + psv_inout;\n" + "end;\n" + "/"); } catch (SQLException e) { throw new RuntimeException(e); } finally { if (stmt != null) { try { stmt.close(); } catch (SQLException e) { throw new RuntimeException(e); } } } } // 调用存储过程。 public static void ExecCallableSQL(Connection conn) { CallableStatement cstmt = null; try { cstmt=conn.prepareCall("{? = CALL TESTPROC(?,?,?)}"); cstmt.setInt(2, 50); cstmt.setInt(1, 20); cstmt.setInt(3, 90); cstmt.registerOutParameter(4, Types.INTEGER); // 注册out类型的参数,类型为整型。 cstmt.execute(); int out = cstmt.getInt(4); // 获取out参数。 System.out.println("The CallableStatment TESTPROC returns:"+out); cstmt.close(); } catch (SQLException e) { if (cstmt != null) { try { cstmt.close(); } catch (SQLException e1) { e1.printStackTrace(); } } e.printStackTrace(); } } /** * 主程序,逐步调用各静态方法。 * @param args */ public static void main(String[] args) { // 创建数据库连接。 String userName = System.getenv("EXAMPLE_USERNAME_ENV"); String password = System.getenv("EXAMPLE_PASSWORD_ENV"); Connection conn = GetConnection(userName, password); // 创建存储过程。 CreateCallable(conn); // 调用存储过程。 ExecCallableSQL(conn); // 关闭数据库连接。 try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } 上述示例的运行结果为: Connection succeed! The CallableStatment TESTPROC returns:160 父主题: 典型应用开发示例
  • 示例:常用操作 import psycopg2 import os # 从环境变量中获取用户名和密码。 user = os.getenv('user') password = os.getenv('password') # 创建连接对象。 conn=psycopg2.connect(database="database", user=user, password=password, host="localhost", port=port) cur=conn.cursor() #创建指针对象。 # 创建连接对象(SSl连接)。 conn = psycopg2.connect(dbname="database", user=user, password=password, host="localhost", port=port, sslmode="verify-ca", sslcert="client.crt",sslkey="client.key",sslrootcert="cacert.pem") # 创建表。 cur.execute("CREATE TABLE student(id integer,name varchar,sex varchar);") # 插入数据。 cur.execute("INSERT INTO student(id,name,sex) VALUES(%s,%s,%s)",(1,'Aspirin','M')) cur.execute("INSERT INTO student(id,name,sex) VALUES(%s,%s,%s)",(2,'Taxol','F')) cur.execute("INSERT INTO student(id,name,sex) VALUES(%s,%s,%s)",(3,'Dixheral','M')) # 批量插入数据。 stus = ((4,'John','M'),(5,'Alice','F'),(6,'Peter','M')) cur.executemany("INSERT INTO student(id,name,sex) VALUES(%s,%s,%s)",stus) # 获取结果。 cur.execute('SELECT * FROM student') results=cur.fetchall() print (results) # 提交操作。 conn.commit() # 插入一条数据。 cur.execute("INSERT INTO student(id,name,sex) VALUES(%s,%s,%s)",(7,'Lucy','F')) # 回退操作。 conn.rollback() # 关闭连接。 cur.close() conn.close() psycopg2常用连接方式。 1. conn = psycopg2.connect(dbname="dbname", user=user, password=password, host="localhost", port=port) 2. conn = psycopg2.connect(f"dbname=dbname user={user} password={password} host=localhost port=port") 3. 使用日志。 import logging import psycopg2 from psycopg2.extras import LoggingConnection import os # 从环境变量中获取用户名和密码。 user = os.getenv('user') password = os.getenv('password') logging.basicConfig(level=logging.DEBUG) # 日志级别。 logger = logging.getLogger(__name__) db_setting = { "user": user, "password": password, "host": "localhost", "database": "dbname", "port": port } # LoggingConnection默认记录所有SQL,可自行实现filter过滤不需要的或敏感的SQL,下面给出了简单的过滤password相关SQL的示例。 class SelfLoggingConnection(LoggingConnection): def filter(self, msg, curs): if db_settings['password'] in msg.decode(): return b'queries containing the password will not be recorded' return msg conn = psycopg2.connect(connection_factory=SelfLoggingConnection, **db_settings) conn.initialize(logger) LoggingConnection默认记录所有SQL信息,且不会对敏感信息进行脱敏,可通过filter函数自行定义输出的SQL内容。 日志功能是psycopg2为了方便开发者显性调试全量SQL而提供的额外功能,默认情况下不需要使用。该功能会在pyscopg2执行SQL语句前打印SQL语句,但是,需要在debug日志级别下才会输出。该功能不是默认功能,只是在有特殊需要的时候才使用,没有特别需求,不建议使用。详情参考:https://www.psycopg.org/docs/extras.html?highlight=loggingconnection 父主题: 基于Psycopg开发
  • PGXC_CLASS PGXC_CLASS系统表存储每张表的复制或分布信息。PGXC_CLASS系统表在集中式场景下只能查询表定义。 表1 PGXC_CLASS字段 名称 类型 描述 pcrelid oid 表的OID。 pclocatortype "char" 定位器类型。 H:hash G:Range L:List M:Modulo N:Round Robin R:Replication pchashalgorithm smallint 使用哈希算法分布元组。 1:默认的哈希算法。 2:MURMURHASH算法。 pchashbuckets smallint 哈希容器的值。 pgroup name 节点群的名称。 redistributed "char" 表已经完成重分布。 redis_order integer 重分布的顺序。该值等于0的表在本轮重分布过程中不进行重分布。 pcattnum int2vector 用作分布键的列标号。 nodeoids oidvector_extend 表分布的节点OID列表。 options text 系统内部保留字段,存储扩展状态信息。 diskey text 暂不支持,值为NULL。 diskeyexprs pg_node_tree 暂不支持,值为NULL。 父主题: 其他系统表
共100000条
提示

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