云服务器内容精选

  • 参数说明 DEFINER 定时任务待执行语句在执行时使用的权限。默认情况下使用当前创建定时任务者的权限,当definer被指定时,使用被指定用户user的用户权限。 definer参数只有具有sysadmin权限的用户有权指定。 ON SCHEDULE 定时任务执行时刻。其中schedule子句与CREATE EVENT中schedule一致。 RENAME TO 更新定时任务名。 ON COMPLETION [NOT] PRESERVE 默认情况下,一旦事务处于完成状态,系统表中就会立刻删除该定时任务。用户可以通过设置ON COMPLETION PRESERVE来覆盖默认行为。 ENABLE | DISABLE | DISABLE ON SLAVE 创建定时任务后,定时任务默认处于ENABLE状态,即到规定时间立即执行待执行语句。用户可以使用DISABLE关键字,改变定时任务的活动状态。DISABLE ON SLAVE表现与DISABLE一致。 COMMENT 用户可以给定时任务添加注释,注释内容在GS_JOB_ATTRIBUTE表中查看。 DO 定时任务待执行语句。 interval 时间间隔。interval的取值可以使用下划线代替TO。例如,YEAR_MONTH、DAY_HOUR等。 该参数在B兼容模式下,GUC参数b_format_version = '5.7'、b_format_dev_version = 's1'时才可使用。
  • 示例 --创建并切换至测试数据库。 gaussdb=# CREATE DATABASE test_event WITH DBCOMPATIBILITY = 'b'; gaussdb=# \c test_event --创建表。 test_event=# CREATE TABLE t_ev(num int); --创建一个状态为DISABLE的定时任务,表示此定时任务不开启。 test_event=# CREATE EVENT IF NOT EXISTS event_e1 ON SCHEDULE AT sysdate + interval 5 second DISABLE DO insert into t_ev values(0); --查询定时任务,ENABLE值为'f'。 test_event=# SHOW EVENTS; job_name | schema_name | log_user | priv_user | job_status | start_date | interval | end_date | enable | failure_msg ----------+-------------+----------+-----------+------------+---------------------+----------+---------------------+--------+------------- event_e1 | public | omm | omm | s | 2023-11-28 09:10:58 | null | 3999-12-31 16:00:00 | f | (1 row) --修改定时任务状态为ENABLE,并五秒后查询表。 test_event=# ALTER EVENT event_e1 ENABLE; test_event=# SELECT * FROM t_ev; num ----- 0 (1 row) --创建一个每隔一分钟执行一次的定时任务。 test_event=# CREATE EVENT IF NOT EXISTS event_e2 ON SCHEDULE EVERY 1 minute DO insert into t_ev values(1); --每隔一分钟查询表,会看到新增一条数据。 test_event=# SELECT * FROM t_ev; num ----- 0 1 1 (3 rows) --修改定时任务中待执行语句并查询表。 test_event=# ALTER EVENT event_e2 DO insert into t_ev values(3); test_event=# SELECT * FROM t_ev; num ----- 0 1 1 3 (4 rows) --修改定时任务名称。 test_event=# ALTER EVENT event_e2 RENAME TO event_ee; --删除定时任务。 test_event=# DROP EVENT event_ee; --删除表。 test_event=# DROP TABLE t_ev; --切换回初始数据库,并删除测试数据库。请用真实的数据库名替换postgres。 test_event=# \c postgres gaussdb=# DROP DATABASE test_event;
  • 语法格式 ALTER [DEFINER = user] EVENT event_name [ON SCHEDULE schedule] [ON COMPLETION [NOT] PRESERVE] [RENAME TO new_event_name] [ENABLE | DISABLE | DISABLE ON SLAVE] [COMMENT 'string'] [DO event_body]; schedule: 1 2 3 4 5 6 { AT timestamp [+ INTERVAL interval] ... | EVERY interval [STARTS timestamp [+ INTERVAL interval] ...] [ENDS timestamp [+ INTERVAL interval] ...] } interval: quantity {YEAR | MONTH | DAY | HOUR | MINUTE | SECOND | YEAR TO MONTH | DAY TO HOUR | DAY TO MINUTE | DAY TO SECOND | HOUR TO MINUTE | HOUR TO SECOND | MINUTE TO SECOND}
  • 注意事项 定时任务相关操作只有sql_compatibility = 'B'时支持。 只有定时任务的所有者有权修改对应的定时任务,系统管理员默认拥有修改所有定时任务的权限。 可以通过SHOW EVENTS或在PG_JOB表中查看log_user列来获得job的所有者信息。 每次修改定时任务成功后,会更新被修改job的所有者为当前用户,若修改定时任务时指定了definer,则更新为被指定的definer。 definer选项场景限制与CREATE EVENT章节中对definer限制场景一致。 系统管理员修改其他用户创建的定时任务后,被修改定时任务的所有者将切换为系统管理员,待执行语句将使用系统管理员的权限执行。
  • 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 --创建目录。 gaussdb=# CREATE OR REPLACE DIRECTORY dir as '/tmp/'; --创建用户。 gaussdb=# CREATE USER jim PASSWORD '********'; --修改目录的所有者。 gaussdb=# ALTER DIRECTORY dir OWNER TO jim; --删除目录对象。 gaussdb=# DROP DIRECTORY dir; --删除用户。 gaussdb=# DROP USER jim;
  • 参数说明 column_encryption_key_name 该参数作为密钥对象名,在同一命名空间下,需满足命名唯一性约束。 取值范围:字符串,要符合标识符命名规范。 client_master_key_name 指定用于重加密该CEK的新的CMK,取值为:CMK对象名,该CMK对象由CREATE CLIENT MASTER KEY语法创建。与密钥轮转前指定的客户端主密钥不为同一密钥。 国密算法约束: 由于SM2、SM3、SM4等算法属于中国国家密码标准算法,为规避法律风险,需配套使用。如果轮转CEK前使用的CMK是国密算法,则轮转CEK指定的CMK仍必须使用国密算法。
  • 注意事项 当在OPTIONS中出现password选项时,需要保证 GaussDB 每个节点的$GAUSSHOME/bin目录下存在usermapping.key.cipher和usermapping.key.rand文件,如果不存在这两个文件,请使用gs\_guc工具生成并使用gs\_ssh工具发布到每个节点的$GAUSSHOME/bin目录下。具体操作请参考•OPTIONS中的说明。 OPTIONS中的敏感字段(如password)在使用多层引号时,语义和不带引号的场景是不同的,因此不会被识别为敏感字段进行脱敏。
  • 语法格式 ALTER USER MAPPING FOR { user_name | USER | CURRENT_USER | PUBLIC } SERVER server_name OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] ); 在OPTIONS选项里,ADD、SET和DROP指定要执行的操作,未指定时默认为ADD操作。option和value为对应操作的参数及参数值。
  • 参数说明 user_name 该映射的用户名。 CURRENT_USER和USER匹配当前用户的名称。PUBLIC被用来匹配系统中所有当前以及未来的用户名。 server_name 该用户映射的服务器名。 OPTIONS 为该用户映射更改选项。新选项会覆盖任何之前指定的选项。ADD、 SET和DROP指定要被执行的动作。如果没有显式地指定操作,将假定为ADD。选项名称必须为唯一,该服务器的外部数据包装器也会验证选项。 用户的密码会加密后保存到系统表PG_USER_MAPPING中,加密时需要使用usermapping.key.cipher和usermapping.key.rand作为加密密码文件和加密因子。首次使用前需要通过如下命令创建这两个文件,并将这两个文件放入各节点的$GAUSSHOME/bin目录,且确保具有读权限。gs_ssh工具可以协助您快速将文件放入各节点对应目录下。 gs_ssh -c "gs_guc generate -o usermapping -S default -D $GAUSSHOME/bin" 其中-S参数指定default时会随机生成密码,用户也可为-S参数指定密码,此密码用于保证生成密码文件的安全性和唯一性,用户无需保存或记忆。其他参数详见工具参考中gs_guc工具说明。
  • 示例 --创建角色。 gaussdb=# CREATE ROLE bob PASSWORD '********'; --创建外部服务器。 gaussdb=# CREATE SERVER my_server FOREIGN DATA WRAPPER log_fdw; --创建USER MAPPING。 gaussdb=# CREATE USER MAPPING FOR bob SERVER my_server OPTIONS (user 'bob', password '********'); --修改USER MAPPING。 gaussdb=# ALTER USER MAPPING FOR bob SERVER my_server OPTIONS (SET password '********'); --删除USER MAPPING。 gaussdb=# DROP USER MAPPING FOR bob SERVER my_server; --删除外部服务器。 gaussdb=# DROP SERVER my_server; --删除角色。 gaussdb=# DROP ROLE bob;
  • 示例 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 --插入内容。 gaussdb=# ALTER GLOBAL CONFIGURATION with(redis_is_ok = true); --查询。 gaussdb=# SELECT * FROM gs_global_config; name | value -----------------+------- buckets_len | 16384 undostoragetype | page redis_is_ok | true (3 rows) --修改内容。 gaussdb=# ALTER GLOBAL CONFIGURATION with(redis_is_ok = false); --查询。 gaussdb=# SELECT * FROM gs_global_config; name | value -----------------+------- buckets_len | 16384 undostoragetype | page redis_is_ok | false (3 rows) --删除内容。 gaussdb=# DROP GLOBAL CONFIGURATION redis_is_ok; --查询。 gaussdb=# SELECT * FROM gs_global_config; name | value -----------------+------- buckets_len | 16384 undostoragetype | page (2 rows)
  • 示例 修改聚合函数的名称。 --创建自定义函数。 gaussdb=# CREATE OR REPLACE FUNCTION int_add(int,int) RETURNS int AS $BODY$ DECLARE BEGIN RETURN $1 + $2; END; $BODY$ language plpgsql; --创建聚合函数。 gaussdb=# CREATE AGGREGATE myavg (int) ( sfunc = int_add, stype = int, initcond = '0' ); --把一个接受int类型参数的聚合函数myavg重命名为 my_average。 gaussdb=# ALTER AGGREGATE myavg(int) RENAME TO my_average;
  • 注意事项 UPDATE 更新这个扩展到一个新的版本。这个扩展必须满足一个适用的更新脚本(或者一系列脚本), 才能修改当前安装版本到一个要求的版本。 SET SCHEMA 移动扩展对象到另一个模式。这个扩展必须relocatable才能使命令成功。 ADD member_object 添加一个已存在对象到扩展主要适用于扩展更新脚本上。这个对象接着会被视为扩展的成员, 该对象只能通过取消扩展来取消 。 DROP member_object 从扩展上移除一个成员对象。主要适用于扩展更新脚本上,这个对象没有被取消,只是从扩展里被移除。 您必须拥有扩展来使用 ALTER EXTENSION。这个 ADD/DROP 方式要求 添加/删除对象的所有权。 要使用该功能,需要设置support_extended_features为true。
  • 语法格式 修改扩展的版本。 ALTER EXTENSION name UPDATE [ TO new_version ]; 修改扩展的模式。 ALTER EXTENSION name SET SCHEMA new_schema; 添加或删除扩展的成员对象。 ALTER EXTENSION name { ADD | DROP } member_object; 其中成员对象member_object写法为: {AGGREGATE agg_name (agg_type [, ...] ) | CAST (source_type AS target_type) | COLLATION object_name | CONVERSION object_name | DOMAIN object_name | EVENT TRIGGER object_name | FOREIGN DATA WRAPPER object_name | FOREIGN TABLE object_name | FUNCTION function_name ( [ [ argname ] [ argmode ] argtype [, ...] ] ) | MATERIALIZED VIEW object_name | OPERATOR operator_name (left_type, right_type) | OPERATOR CLASS object_name USING index_method | OPERATOR FAMILY object_name USING index_method | [ PROCEDURAL ] LANGUAGE object_name | SCHEMA object_name | SEQUENCE object_name | SERVER object_name | TABLE object_name | TEXT SEARCH CONFIGURATION object_name | TEXT SEARCH DICTIONARY object_name | TEXT SEARCH PARSER object_name | TEXT SEARCH TEMPLATE object_name | TYPE object_name | VIEW object_name}
  • 示例 更新plpgsql扩展到版本 2.0: gaussdb=# ALTER EXTENSION plpgsql UPDATE TO '2.0'; 更新plpgsql扩展的模式为utils: --创建SCHEMA。 gaussdb=# CREATE SCHEMA utils; --更新 plpgsql 扩展的模式为utils。 gaussdb=# ALTER EXTENSION plpgsql SET SCHEMA utils; --删除SCHEMA。 gaussdb=# DROP SCHEMA utils; 添加一个已存在的函数给 plpgsql 扩展: gaussdb=# ALTER EXTENSION plpgsql ADD FUNCTION populate_record(anyelement, plpgsql);