华为云用户手册

  • PG_AVAILABLE_EXTENSION_VERSIONS PG_AVAILABLE_EXTENSION_VERSIONS视图显示数据库中某些特性的扩展版本信息。该视图为内部使用,不建议用户使用。 表1 PG_AVAILABLE_EXTENSION_VERSIONS字段 名称 类型 描述 name name 扩展名。 version text 版本名。 installed boolean 如果这个扩展的版本是当前已经安装了的则为真。 superuser boolean 如果只允许系统管理员安装这个扩展则为真。 relocatable boolean 如果扩展可以重新加载到另一个模式则为真。 schema name 扩展必须安装到的模式名,如果部分或全部可重新定位则为NULL。 requires name[] 先决条件扩展的名称,如果没有则为NULL。 comment text 扩展的控制文件中的评论。 父主题: 其他系统视图
  • alarm_component 参数说明:在告警上报时,会进行告警抑制,即同一个实例的同一个告警项在alarm_report_interval(默认值为10s)内不做重复上报。在这种情况下设置用于处理告警内容的告警组件的位置,仅sysadmin用户可以访问。 参数类型:字符串 参数单位:无 取值范围:合法文件名称。 若前置脚本gs_preinstall中的--alarm-type参数设置为5时,表示未对接第三方组件,告警写入system_alarm日志,此时GUC参数alarm_component的取值为:/opt/huawei/snas/bin/snas_cm_cmd。 若前置脚本gs_preinstall中的--alarm-type参数设置为1时,表示对接第三方组件,此时GUC参数alarm_component的值为第三方组件的可执行程序的绝对路径。 默认值:"/opt/huawei/snas/bin/snas_cm_cmd" 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • table_skewness_warning_threshold 参数说明:设置用于表倾斜告警的阈值。该参数可在PDB级别设置。 参数类型:浮点型 参数单位:无 取值范围:0 ~ 1 默认值:1。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值,并根据业务场景对表倾斜的敏感度适时调整。 设置不当的风险与影响:设置较小时,可能对表倾斜更敏感,无显著风险。
  • connection_alarm_rate 参数说明:设置允许和数据库连接的最大并发连接数的比率限制。数据库连接的最大并发连接数为max_connections* connection_alarm_rate。当并发连接数超过max_connections* connection_alarm_rate时,后台会打印连接信息的日志connection_log,日志中可以查看pg_stat_activity视图和线程池视图LOCAL_THREADPOOL_STATUS(查看pg_stat_activity视图需要开启追踪功能,查看线程池视图LOCAL_THREADPOOL_STATUS需要开启线程池功能)。 参数类型:浮点型 参数单位:无 取值范围:0 ~ 1 默认值:0.9 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • alarm_report_interval 参数说明:指定告警上报的时间间隔。 参数类型:整型 参数单位:s(秒) 取值范围:0 ~ 2147483647 默认值:10 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。设置时取值不能带单位。 设置建议:推荐使用默认值。 设置不当的风险与影响: 该值设置过大时,若指定告警上报时间间隔内检测出多次相同告警,会丢失关键告警。 该值设置过小时,若指定告警上报时间间隔内持续检测出同一告警,告警会频繁上报。
  • table_skewness_warning_rows 参数说明:设置用于表倾斜告警的行数。该参数可在PDB级别设置。 参数类型:整型 参数单位:无 取值范围:0 ~ 2147483647 默认值:100000。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值,并根据业务场景对表倾斜的敏感度适时调整。 设置不当的风险与影响:设置较小时,可能对表倾斜更敏感,无显著风险。
  • enable_alarm 参数说明:设置是否打开告警上报线程,上报数据库中可能的故障场景。 参数类型:布尔型 参数单位:无 取值范围: on:表示打开告警上报线程。 off:表示关闭告警上报线程。 默认值:on 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:关闭该参数会导致用户无法感知数据库中的某些故障场景。 该参数生效范围仅为DN节点。
  • 注意事项 只有拥有表INSERT权限的用户,才可以向表中插入数据。用户被授予INSERT ANY TABLE权限,即用户对除系统模式之外的任何模式具有USAGE权限,并且拥有这些模式下表的INSERT权限。 如果使用QUERY子句插入来自查询里的数据行,用户还需要拥有在查询里使用的表的SELECT权限。 生成列不能被直接写入。在INSERT命令中不能为生成列指定值,但可以指定关键字DEFAULT。 仅支持在A兼容模式下执行该语法。
  • 参数说明 plan_hint子句 以/*+ */的形式在INSERT关键字后,目前仅适配了语法格式,并未实现具体功能。 ALL | FIRST 如果不带条件子句(WHEN condition THEN),此关键字不可省略,且只能为ALL。如果含有条件子句,此关键字可以省略,默认为ALL,此时ALL和FIRST的含义分别为: ALL:遍历所有匹配条件的分支,只要满足条件就会将数据插入对应的表。 FIRST:找到第一个满足条件的分支后,将数据插入该分支对应的表,不会再继续检查剩余分支的。 WHEN condition THEN 插入表时的条件判断,只有满足条件才会进行插入操作,condition中可以引用子查询(SUBQUERY)中的列。 table_name 要插入数据的目标表名。 取值范围:已存在的表名。 alias_name INSERT语句不包含AS alias语法时的表别名。 INTO子句不包含AS alias语法时的表别名不能为关键字(如SELECT、VALUE)或者表达式,表别名要求符合标识符命名规范。 INTO子句不包含AS alias语法时的表别名不支持INTO table_name alias_name(alias_name.col1,...,alias_name.coln) VALUES(xxx);的语法格式。 INTO子句的分区表不包含AS alias语法时的表别名不支持指定分区插入操作。 partition_clause 指定分区插入操作。 PARTITION { ( partition_name ) | FOR ( partition_value [, ...] ) } | SUBPARTITION { ( subpartition_name ) | FOR ( subpartition_value [, ...] ) } 关键字具体信息请参见SELECT。 如果VALUE子句的值和指定分区不一致,结果会提示异常。 示例请参见CREATE TABLE SUBPARTITION。 column_name 目标表中的字段名称。 字段名可以由子字段名或者数组下标修饰。 没有在字段列表中出现的每个字段,将由系统默认值或者声明时的默认值填充,若无默认值或未声明时则使用NULL填充。例如,向一个复合类型中的某些字段插入数据的话,其他字段使用NULL填充。 目标字段(column_name)按顺序排列。如果没有列出任何字段,则默认全部字段,且顺序为表声明时的顺序。 如果VALUE子句和QUERY中只提供了N个字段,则目标字段为前N个字段。 VALUE子句和QUERY提供的值在表中从左到右关联到对应列。 取值范围:已存在的字段名。 VALUES 不可跟多行。 expression 赋予对应column的一个有效表达式或值。 向表中字段插入单引号(')时需要使用单引号对自身进行转义。 如果插入行的表达式不是正确的数据类型,系统将自动进行类型转换,若转换失败,则插入数据失败,系统返回错误信息。 不支持聚集函数。 不支持子查询。 DEFAULT 对应字段名的缺省值。如果没有缺省值,则为NULL。 subquery 一个查询语句(SELECT语句),将查询结果作为插入的数据,不可省略,如果没有子查询可以使用SELECT * FROM DUAL。 如果子查询带表别名,不可在CONDITION子句和INTO子句中引用该别名。
  • 语法格式 INSERT [/*+ plan_hint */] [ ALL | FIRST ] { [ WHEN condition THEN ] { INTO table_name [ { [alias_name] [ ( column_name [, ...] ) ] } | { [partition_clause] [ AS alias ] [ ( column_name [, ...] ) ] } ] [ VALUES {( { expression | DEFAULT } [, ...] ) } ] }[, ...] }[, ...] { subquery };
  • SUMMARY_STATIO_ALL_SEQUEN CES SUMMARY_STATIO_ALL_SEQUENCES视图包含数据库内汇聚的数据库中每个序列的每一行,显示特定序列关于I/O的统计,如表1所示。 表1 SUMMARY_STATIO_ALL_SEQUENCES字段 名称 类型 描述 schemaname name 序列中模式名。 relname name 序列名。 blks_read numeric 从序列中读取的磁盘块数。 blks_hit numeric 序列中缓存命中数。 父主题: Cache/IO
  • 处理步骤 显式游标处理需六个PL/SQL步骤: 定义静态游标:就是定义一个游标名,以及与其相对应的SELECT语句。 定义静态游标的语法图,请参见图1。 图1 static_cursor_define::= 或 图2 static_cursor_define::= 参数说明: cursor_name:定义的游标名。 parameter:游标参数,只能为输入参数,参数支持定义默认值,以:=、=、default定义。其格式为: select_statement:查询语句。 根据执行计划的不同,系统会自动判断该游标是否可以用于以倒序的方式检索数据行。 语法上支持parameter为输出参数,但其行为与输入参数保持一致。 在exception内部会自动关闭。 定义动态游标:指ref游标,可以通过一组静态的SQL语句动态的打开游标。首先定义ref游标类型,然后定义该游标类型的游标变量,在打开游标时通过OPEN FOR动态绑定SELECT语句。 定义动态游标的语法图,请参见图3和图4。 图3 cursor_typename::= 图4 dynamic_cursor_define::= 打开静态游标:就是执行游标所对应的SELECT语句,将其查询结果放入工作区,并且指针指向工作区的首部,标识游标结果集合。如果游标查询语句中带有FOR UPDATE选项,OPEN语句还将锁定数据库表中游标结果集合对应的数据行。 打开静态游标的语法图,请参见图5。 图5 open_static_cursor::= 打开动态游标:可以通过OPEN FOR语句打开动态游标,动态绑定SQL语句。 打开动态游标的语法图,请参见图6。 图6 open_dynamic_cursor::= PL/SQL程序不能用OPEN语句重复打开一个游标。 提取游标数据:检索结果集合中的数据行,放入指定的输出变量中。 提取游标数据的语法图,请参见图7。 图7 fetch_cursor::= 对该记录进行处理。 继续处理,直到活动集合中没有记录。 关闭游标:当提取和处理完游标结果集合数据后,应及时关闭游标,以释放该游标所占用的系统资源,并使该游标的工作区变成无效,不能再使用FETCH语句获取其中数据。关闭后的游标可以使用OPEN语句重新打开。 关闭游标的语法图,请参见图8。 图8 close_cursor::=
  • 属性 游标的属性用于控制程序流程或者了解程序的状态。当运行DML语句时,PL/SQL打开一个内建游标并处理结果,游标是维护查询结果的内存中的一个区域,游标在运行DML语句时打开,完成后关闭。显式游标的属性为: %FOUND布尔型属性:当最近一次读记录时成功返回,则值为TRUE。 %NOTFOUND布尔型属性:当最近一次读记录时失败返回,则值为TRUE。 %ISOPEN布尔型属性:当游标已打开时返回TRUE。 %ROWCOUNT数值型属性:返回已从游标中读取的记录数。
  • PG_AMOP PG_AMOP系统表存储有关和访问方法操作符族关联的信息。如果一个操作符是一个操作符族中的成员,则在这个表中会占据一行。一个族成员是一个search操作符或一个ordering操作符。一个操作符可以在多个族中出现,但是不能在一个族中的多个搜索位置或多个排序位置中出现。 表1 PG_AMOP字段 名称 类型 引用 描述 oid oid - 行标识符(隐含属性,必须明确选择)。 amopfamily oid PG_OPFAMILY.oid 这个项的操作符族。 amoplefttype oid PG_TYPE.oid 操作符的左输入类型。可能取值及其描述见于7.3 数据类型。 amoprighttype oid PG_TYPE.oid 操作符的右输入类型。可能取值及其描述见于7.3 数据类型。 amopstrategy smallint - 操作符策略数。 amoppurpose "char" - 操作符目的。 s:表示搜索。 o:表示排序。 amopopr oid PG_OPERATOR.oid 该操作符的OID。 amopmethod oid PG_AM.oid 索引访问方式操作符族。 amopsortfamily oid PG_OPFAMILY.oid 如果是一个排序操作符,则为这个项排序所依据的btree操作符族;如果是一个搜索操作符,则为0。 search操作符表明这个操作符族的一个索引可以被搜索,找到所有满足WHERE indexed_column operator constant的行。显然,这样的操作符必须返回布尔值,并且它的左输入类型必须匹配索引的字段数据类型。 ordering操作符表明这个操作符族的一个索引可以被扫描,返回以ORDER BY indexed_column operator constant顺序表示的行。这样的操作符可以返回任意可排序的数据类型,它的左输入类型也必须匹配索引的字段数据类型。 ORDER BY的确切的语义是由amopsortfamily字段指定的,该字段必须为操作符的返回类型引用一个btree操作符族。 父主题: 其他系统表
  • GLOBAL_USER_TRANSACTION GLOBAL_USER_TRANSACTION用来统计全局用户执行的事务信息,如表1所示。多租场景下,non-PDB访问该视图时返回全部信息,PDB访问该视图时仅返回该PDB相关信息。 表1 GLOBAL_USER_TRANSACTION字段 名称 类型 描述 node_name name 节点名称。 username name 用户的名称。 commit_counter bigint 用户事务commit数量。 rollback_counter bigint 用户事务rollback数量。 resp_min bigint 用户事务最小响应时间(单位:微秒)。 resp_max bigint 用户事务最大响应时间(单位:微秒)。 resp_avg bigint 用户事务平均响应时间(单位:微秒)。 resp_total bigint 用户事务总响应时间(单位:微秒)。 bg_commit_counter bigint 后台事务commit数量。 bg_rollback_counter bigint 后台事务rollback数量。 bg_resp_min bigint 后台事务最小响应时间(单位:微秒)。 bg_resp_max bigint 后台事务最大响应时间(单位:微秒)。 bg_resp_avg bigint 后台事务平均响应时间(单位:微秒)。 bg_resp_total bigint 后台事务总响应时间(单位:微秒)。 dbid oid 数据库标识。 父主题: Workload
  • ADM_SCHEDULER_RUNNING_JOBS ADM_SCHEDULER_RUNNING_JOBS视图显示数据库中所有正在执行的DBE_SCHEDULER定时任务的信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATA LOG 和SYS Schema下。 表1 ADM_SCHEDULER_RUNNING_JOBS字段 名称 类型 描述 owner character varying(128) 定时任务所有者。 job_name character varying(128) 定时任务名。 job_subname character varying(128) 暂不支持,值为NULL。 job_style character varying(17) 定时任务行为模式,创建时指定,仅支持指定为“REGULAR”,不指定时为NULL。 detached character varying(5) 暂不支持,值为NULL。 session_id numeric 执行该定时任务的会话ID。 slave_process_id numeric 暂不支持,值为NULL。 slave_os_process_id character varying(12) 执行该任务的进程号。 running_instance numeric 暂不支持,值为NULL。 resource_consumer_group character varying(32) 暂不支持,值为NULL。 elapsed_time interval day to second(2) 定时任务本次已执行的时长。 cpu_used interval day to second(2) 暂不支持,值为NULL。 destination_owner character varying(261) 暂不支持,值为NULL。 destination character varying(261) 定时任务目标名称。 credential_owner character varying(128) 暂不支持,值为NULL。 credential_name character varying(128) 定时任务证书名称。 log_id numeric 暂不支持,值为NULL。 父主题: 其他系统视图
  • 注意事项 SET类型的表字段值必须是SET类型定义的集合的子集。如: gaussdb=# CREATE TABLE employee ( name text, site SET('beijing','shanghai','nanjing','wuhan') ); site字段的值必须是上述集合定义中的子集,可以是空集合,如果提供的值在SET定义中的成员中不存在,会报错。如: gaussdb=# INSERT INTO employee values('zhangsan', 'nanjing,beijing'); INSERT 0 1 gaussdb=# INSERT INTO employee VALUES ('zhangsan', 'hangzhou'); ERROR: invalid input value for set employee_site_set: 'hangzhou' INSERT时无论用户提供的成员值顺序是怎样的,INSERT成功后,查询到的SET类型的值,其成员都是按照定义时的顺序输出的。 gaussdb=# SELECT * FROM employee; name | site ----------+----------------- zhangsan | beijing,nanjing (1 rows) SET类型是以bitmap的方式存储的。SET类型的成员按照定义时的顺序,赋予不同的值。如:SET('beijing','shanghai','nanjing','wuhan') 的类型,对应的值如下: 表1 SET成员与其对应的数值 SET成员 成员值 二进制值 'beijing' 1 0001 'shanghai' 2 0010 'nanjing' 4 0100 'wuhan' 8 1000 因此,如果给SET类型的字段赋值为数值时,会转换为对应的子集。如:9对应的二进制值为 1001, 对应的子集是 'beijing,wuhan'。 gaussdb=# INSERT INTO employee values('lisi', 9); INSERT 0 1 gaussdb=# SELECT * FROM employee; name | site ----------+----------------- zhangsan | beijing,nanjing lisi | beijing,wuhan (2 rows) gaussdb=# DROP TABLE employee;
  • GLOBAL_STAT_XACT_SYS_TABLES 显示数据库各节点Schema中系统表的事务状态信息(不同节点下表的事务状态信息不进行汇总求和),如表1所示。 表1 GLOBAL_STAT_XACT_SYS_TABLES字段 名称 类型 描述 node_name name 节点名称。 relid oid 表的OID。 schemaname name 此表所在的Schema名。 relname name 表名。 seq_scan bigint 此表发起的顺序扫描数。 seq_tup_read bigint 顺序扫描抓取的活跃行数。 idx_scan bigint 此表发起的索引扫描数。 idx_tup_fetch bigint 索引扫描抓取的活跃行数。 n_tup_ins bigint 插入行数。 n_tup_upd bigint 更新行数。 n_tup_del bigint 删除行数。 n_tup_hot_upd bigint HOT更新行数(即没有更新索引列的行数)。 父主题: Object
  • DBE_PLDEVELOPER.gs_errors 用于记录PL/SQL对象(存储过程、函数、包、包体)编译过程中遇到的报错信息,如表1所示。 打开plsql_show_all_error参数后,如果编译过程中存在报错,则会跳过报错继续编译并把报错信息记录在gs_errors中,如果关闭plsql_show_all_error参数,且behavior_compat_options参数不为skip_insert_gs_source,则会直接将报错信息插入此表中。 该表的owner是创建的用户,修改存储过程或者package的owner不会修改该表信息。 创建包头时的开头(as/is之前)和结尾(end之后),如果出现错误,不会记录在gs_errors表格里面,会直接在客户端返回错误的行号和该行具体内容,返回的行号不一定准确。个别is本身和end本身错误场景也不会记录在gs_errors表格里面。 创建包体时的开头(as/is之前)和结尾(end之后),如果出现错误,不会记录在gs_errors表格里面,会直接在客户端返回错误的行号和该行具体内容,返回的行号不一定准确。个别is本身和end本身错误场景也不会记录在gs_errors表格里面。 创建包体时,函数或者存储过程的结尾(end之后),如果出现错误,不会记录在gs_errors表格里面,会直接在客户端返回错误的行号和该行具体内容,行号不一定准确。 创建包体时,函数或者存储过程的开头(as/is 以及 as/is之前),如果出现错误,报错行数不准确。 创建包头时,变量声明少分号,会记录在gs_errors表格里面,记录的报错行号不准确。开启参数不会记录。 包体内存储过程或函数内部,自治事务标识符PRAGMA AUTONOMOUS_TRANSACTION声明错误时,不能确保是否能记录在gs_errors表里。 客户端直接报错,但是gs_errors表格未记录的情况,如果客户端报错行号不对,本需求不纠正已报错的行号。 对于类似if ....then、for....loop、when .... then语句中间的错误或EXCEPTION本身错误,报错行号在本行,而不是下一个分号所在行。 包内存储过程或函数内部begin本身错误的场景,报错行数不准。 gs_errors权限与pg_catalog下的系统表保持一致(系统管理员与普通用户不允许drop、alter、delete、update、insert,允许select),利用allow_system_table_mods这个guc控制前向兼容(允许drop、alter、delete、update、insert以及select),此guc参数默认为off,修改此guc参数生效需要重启数据库。 表1 DBE_PLDEVELOPER.gs_errors字段 名称 类型 描述 id oid 对象id。 owner bigint 对象创建用户id。 nspid oid 对象的模式id。 name name 对象名。 type text 对象类型(procedure/function/package/package body)。 line integer 行号。 src text 报错信息。 父主题: DBE_PLDEVELOPER
  • 参数说明 target_role 已有角色的名称。如果省略FOR ROLE/USER,则缺省值为当前角色/用户。 取值范围:已有角色的名称。 schema_name 现有模式的名称。 target_role必须有schema_name的CREATE权限。 取值范围:现有模式的名称。 role_name 被授予或者取消权限角色的名称。 取值范围:已存在的角色名称。 如果想删除一个被赋予了默认权限的角色,有必要恢复改变的缺省权限或者使用DROP OWNED BY来为角色脱离缺省的权限记录。
  • 示例 --创建SCHEMA。 gaussdb=# CREATE SCHEMA tpcds; --将创建在模式tpcds里的所有表(和视图)的SELECT权限授予每一个用户。 gaussdb=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds GRANT SELECT ON TABLES TO PUBLIC; --创建用户普通用户jack。 gaussdb=# CREATE USER jack PASSWORD '********'; --将tpcds下的所有表的插入权限授予用户jack。 gaussdb=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds GRANT INSERT ON TABLES TO jack; --将tpcds下由jack创建的所有表的插入权限授予给其他用户jake(假设数据库中已存在该用户)。 gaussdb=# GRANT USAGE,CREATE ON SCHEMA tpcds TO jack; gaussdb=# ALTER DEFAULT PRIVILEGES FOR ROLE jack IN SCHEMA tpcds GRANT INSERT ON TABLES TO jake; --撤销上述权限。 gaussdb=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds REVOKE SELECT ON TABLES FROM PUBLIC; gaussdb=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds REVOKE INSERT ON TABLES FROM jack; --删除用户jack。 gaussdb=# DROP USER jack CASCADE; --删除SCHEMA。 gaussdb=# DROP SCHEMA tpcds;
  • 语法格式 ALTER DEFAULT PRIVILEGES [ FOR { ROLE | USER } target_role [, ...] ] [ IN SCHEMA schema_name [, ...] ] abbreviated_grant_or_revoke; 其中abbreviated_grant_or_revoke子句用于指定对哪些对象进行授权或回收权限。 grant_on_tables_clause | grant_on_sequences_clause | grant_on_functions_clause | grant_on_types_clause | grant_on_client_master_keys_clause | grant_on_column_encryption_keys_clause | revoke_on_tables_clause | revoke_on_sequences_clause | revoke_on_functions_clause | revoke_on_types_clause | revoke_on_client_master_keys_clause | revoke_on_column_encryption_keys_clause 其中grant_on_tables_clause子句用于对表授权。 GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | ALTER | DROP | COMMENT | INDEX | VACUUM } [, ...] | ALL [ PRIVILEGES ] } ON TABLES TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ] 其中grant_on_sequences_clause子句用于对序列授权。 1 2 3 4 5 GRANT { { SELECT | UPDATE | USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON SEQUENCES TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ] 其中grant_on_functions_clause子句用于对函数授权。 GRANT { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON FUNCTIONS TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ] 其中grant_on_types_clause子句用于对类型授权。 GRANT { { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON TYPES TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ] 其中grant_on_client_master_keys_clause子句用于对客户端主密钥授权。 GRANT { { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] } ON CLIENT_MASTER_KEYS TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ] 其中grant_on_column_encryption_keys_clause子句用于对列加密密钥授权。 GRANT { { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] } ON COLUMN_ENCRYPTION_KEYS TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ] 其中revoke_on_tables_clause子句用于回收表对象的权限。 REVOKE [ GRANT OPTION FOR ] { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | ALTER | DROP | COMMENT | INDEX | VACUUM } [, ...] | ALL [ PRIVILEGES ] } ON TABLES FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ] 其中revoke_on_sequences_clause子句用于回收序列的权限。 1 2 3 4 5 6 REVOKE [ GRANT OPTION FOR ] { { SELECT | UPDATE | USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON SEQUENCES FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ] 其中revoke_on_functions_clause子句用于回收函数的权限。 REVOKE [ GRANT OPTION FOR ] { {EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON FUNCTIONS FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ] 其中revoke_on_types_clause子句用于回收类型的权限。 REVOKE [ GRANT OPTION FOR ] { { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON TYPES FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ]
  • PG_COMM_RECV_STREAM PG_COMM_RECV_STREAM视图展示单个DN上所有的通信库接收流状态。 表1 PG_COMM_RECV_STREAM字段 名称 类型 描述 node_name text 节点名称。 local_tid bigint 使用此通信流的线程ID。 remote_name text 连接对端节点名称。 remote_tid bigint 连接对端线程ID。 idx integer 通信对端DN在本DN内的标识编号。 sid integer 通信流在物理连接中的标识编号。 tcp_sock integer 通信流所使用的tcp通信socket。 state text 通信流当前的状态。 UNKNOWN:表示当前逻辑连接状态未知。 READY:表示逻辑连接已就绪。 RUN:表示逻辑连接发送报文正常。 HOLD:表示逻辑连接发送报文等待中。 CLOSED:表示关闭逻辑连接。 TO_CLOSED:表示将会关闭逻辑连接。 query_id bigint 通信流对应的debug_query_id编号。 pn_id integer 通信流所执行查询的plan_node_id编号。 send_smp integer 通信流所执行查询send端的smpid编号。 recv_smp integer 通信流所执行查询recv端的smpid编号。 recv_bytes bigint 通信流接收的数据总量,单位Byte。 time bigint 通信流当前生命周期使用时长,单位ms。 speed bigint 通信流的平均接收速率,单位Byte/s。 quota bigint 通信流当前的通信配额值,单位Byte。 buff_usize bigint 通信流当前缓存的数据大小,单位Byte。 父主题: 通信
  • 注意事项 只有SERVER的所有者或者被授予了SERVER的ALTER权限的用户才可以执行ALTER SERVER命令,系统管理员默认拥有该权限。但要修改SERVER的所有者,当前用户必须是该SERVER的所有者或者系统管理员,且该用户是新所有者角色的成员。 OPTIONS中的敏感字段(如password、secret_access_key)在使用多层引号时,语义和不带引号的场景是不同的,因此不会被识别为敏感字段进行脱敏。
  • 语法格式 修改外部服务的参数。 ALTER SERVER server_name [ VERSION 'new_version' ] [ OPTIONS ( {[ ADD | SET | DROP ] option ['value']} [, ... ] ) ]; 在OPTIONS选项里,ADD、SET和DROP指定要执行的操作,未指定时默认为ADD操作。option和value为对应操作的参数。 修改外部服务的所有者。 1 2 ALTER SERVER server_name OWNER TO new_owner; 修改外部服务的名称。 ALTER SERVER server_name RENAME TO new_name;
  • 示例 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 --创建my_server。 gaussdb=# CREATE SERVER my_server FOREIGN DATA WRAPPER log_fdw; --修改外部服务器的名称。 gaussdb=# ALTER SERVER my_server RENAME TO my_server_1; --创建用户。 gaussdb=# CREATE USER jack PASSWORD '********'; --修改外部服务器的所有者。 gaussdb=# ALTER SERVER my_server_1 OWNER TO jack; --增加外部服务器中dbname、dbuser信息。 gaussdb=# ALTER SERVER my_server_1 OPTIONS(ADD dbname 'test',dbuser' test_user'); --查询外部服务器信息。 gaussdb=# SELECT * FROM pg_foreign_server WHERE srvname='my_server_1'; srvname | srvowner | srvfdw | srvtype | srvversion | srvacl | srvoptions -------------+----------+--------+---------+------------+--------+----------------------------------- my_server_1 | 25158 | 16065 | | | | {dbname=test,"dbuser= test_user"} (1 row) --修改外部服务器中dbname名称为‘db_test’。 gaussdb=# ALTER SERVER my_server_1 OPTIONS (SET dbname 'db_test'); --查询外部服务器信息。 gaussdb=# SELECT srvname,srvoptions FROM pg_foreign_server WHERE srvname='my_server_1'; srvname | srvoptions -------------+-------------------------------------- my_server_1 | {dbname=db_test,"dbuser= test_user"} (1 row) --删除外部服务器中dbname信息。 gaussdb=# ALTER SERVER my_server_1 OPTIONS (DROP dbname); --查询外部服务器信息。 gaussdb=# SELECT srvname,srvoptions FROM pg_foreign_server WHERE srvname='my_server_1'; srvname | srvoptions -------------+----------------------- my_server_1 | {"dbuser= test_user"} (1 row) --删除my_server_1。 gaussdb=# DROP SERVER my_server_1; --删除用户。 gaussdb=# DROP USER jack;
  • 参数说明 server_name 所修改的server的名称。 new_version 修改后server的新版本名称。 OPTIONS 更改该服务器的选项。ADD、SET和 DROP指定要执行的动作。如果没有显式地指定操作, 将会假定为ADD。选项名称必须唯一,名称和值也会使用该服务器的外部数据封装器库进行验证。 除了libpq支持的连接参数外,还额外提供以下参数: fdw_startup_cost 执行一个外表扫描时的启动耗时估算。这个值通常包含建立连接、远端对请求的分析和生成计划的耗时。默认值为100。取值范围为大于0的实数。 fdw_tuple_cost 在远端服务器上对每一个元组进行扫描时的额外消耗。这个值通常表示数据在server间传输的额外消耗。默认值为0.01。取值范围为大于0的实数。 new_owner server的所有者。 new_name 修改后server的新名称。
  • SUMMARY_WORKLOAD_SQL_ELAPSE_TIME SUMMARY_WORKLOAD_SQL_ELAPSE_TIME用来统计数据库主节点上workload(业务)负载的SUID(查询/更新/插入/删除)信息,如表1所示。多租场景下,non-PDB访问该视图时返回全部信息,PDB访问该视图时仅返回该PDB相关信息。 表1 SUMMARY_WORKLOAD_SQL_ELAPSE_TIME字段 名称 类型 描述 node_name name 节点名称。 workload name workload(业务负载)名称。 total_select_elapse bigint 总select的时间花费(单位:微秒)。 max_select_elapse bigint 最大select的时间花费(单位:微秒)。 min_select_elapse bigint 最小select的时间花费(单位:微秒)。 avg_select_elapse bigint 平均select的时间花费(单位:微秒)。 total_update_elapse bigint 总update的时间花费(单位:微秒)。 max_update_elapse bigint 最大update的时间花费(单位:微秒)。 min_update_elapse bigint 最小update的时间花费(单位:微秒)。 avg_update_elapse bigint 平均update的时间花费(单位:微秒)。 total_insert_elapse bigint 总insert的时间花费(单位:微秒)。 max_insert_elapse bigint 最大insert的时间花费(单位:微秒)。 min_insert_elapse bigint 最小insert的时间花费(单位:微秒)。 avg_insert_elapse bigint 平均insert的时间花费(单位:微秒)。 total_delete_elapse bigint 总delete的时间花费(单位:微秒)。 max_delete_elapse bigint 最大delete的时间花费(单位:微秒)。 min_delete_elapse bigint 最小delete的时间花费(单位:微秒)。 avg_delete_elapse bigint 平均delete的时间花费(单位:微秒)。 dbid oid 统计信息所属的数据库id。 父主题: Workload
  • GLOBAL_DOUBLE_WRITE_STATUS GLOBAL_DOUBLE_WRITE_STATUS视图显示数据库所有实例的双写文件的情况,如表1所示。多租场景下,non-PDB访问该视图时返回全部信息,PDB访问该视图时返回空列表。 表1 GLOBAL_DOUBLE_WRITE_STATUS字段 名称 类型 描述 node_name text 实例名称。 curr_dwn bigint 当前双写文件的序列号。 curr_start_page bigint 当前双写文件恢复起始页面。 file_trunc_num bigint 当前双写文件复用的次数。 file_reset_num bigint 当前双写文件写满后发生重置的次数。 total_writes bigint 当前双写文件总的I/O次数。 low_threshold_writes bigint 低效率写双写文件的I/O次数。 high_threshold_writes bigint 高效率写双写文件的I/O次数。 total_pages bigint 当前刷页到双写文件区的总的页面个数。 low_threshold_pages bigint 低效率刷页的页面个数。 high_threshold_pages bigint 高效率刷页的页面个数。 file_id bigint 当前双写文件的id号。 父主题: Utility
  • 示例 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 DECLARE v_raw RAW; v_int INTEGER; v_length INTEGER; v_str VARCHAR2; v_double BINARY_DOUBLE; v_float FLOAT4; v_numeric NUMERIC; v_nvarchar2 NVARCHAR2; BEGIN -- INTEGER类型值转RAW类型 SELECT DBE_RAW.CAST_FROM_BINARY_INTEGER_TO_RAW(170,1) INTO v_raw; -- 000000AA SELECT DBE_RAW.CAST_FROM_BINARY_INTEGER_TO_RAW(170,2) INTO v_raw; -- AA000000 SELECT DBE_RAW.CAST_FROM_BINARY_INTEGER_TO_RAW(170,3) INTO v_raw; -- AA000000 -- RAW类型值转INTEGER类型 SELECT DBE_RAW.CAST_FROM_RAW_TO_BINARY_INTEGER(DBE_RAW.CAST_FROM_BINARY_INTEGER_TO_RAW(170,1),1) INTO v_int; -- 170 SELECT DBE_RAW.CAST_FROM_RAW_TO_BINARY_INTEGER(DBE_RAW.CAST_FROM_BINARY_INTEGER_TO_RAW(170,2),2) INTO v_int; -- 170 SELECT DBE_RAW.CAST_FROM_RAW_TO_BINARY_INTEGER(DBE_RAW.CAST_FROM_BINARY_INTEGER_TO_RAW(170,3),3) INTO v_int; -- 170 -- 求RAW类型值长度 SELECT DBE_RAW.GET_LENGTH(DBE_RAW.CAST_FROM_BINARY_INTEGER_TO_RAW(170,1)) INTO v_length; -- 4 -- VARCHAR2类型值转RAW类型 SELECT DBE_RAW.CAST_FROM_VARCHAR2_TO_RAW('AA') INTO v_raw; -- 4141 -- RAW类型值转VARCHAR2类型 SELECT DBE_RAW.CAST_TO_VARCHAR2('4141') INTO v_str; -- AA -- RAW类型按位或 SELECT DBE_RAW.BIT_OR('0000', '1111') INTO v_raw; -- 1111 -- RAW类型取字串 SELECT DBE_RAW.SUBSTR('ABCD', 1, 2) INTO v_raw; -- ABCD -- RAW类型按位与 SELECT DBE_RAW.BIT_AND('AFF', 'FF0B') INTO v_raw; -- 0A0B -- RAW类型按位取反 SELECT DBE_RAW.BIT_COMPLEMENT('0AFF') INTO v_raw; -- F500 -- RAW类型按位异或 SELECT DBE_RAW.BIT_XOR('AFF', 'FF0B') INTO v_raw; -- F5F4 -- BINARY_DOUBLE类型值转RAW类型 SELECT DBE_RAW.CAST_FROM_BINARY_DOUBLE_TO_RAW(1.0001,1) INTO v_raw; -- 3FF00068DB8BAC71 -- RAW类型值转BINARY_DOUBLE类型 SELECT DBE_RAW.CAST_FROM_RAW_TO_BINARY_DOUBLE('3FF00068DB8BAC7',1) INTO v_double; -- 1.0001 -- RAW类型转FLOAT4类型 SELECT DBE_RAW.CAST_FROM_RAW_TO_BINARY_FLOAT('40200000',1) INTO v_float; -- 2.5 -- FLOAT4类型转RAW类型 SELECT DBE_RAW.CAST_FROM_BINARY_FLOAT_TO_RAW('2.5',1) INTO v_raw; -- 40200000 -- RAW类型转NUMERIC类型 SELECT DBE_RAW.CAST_FROM_RAW_TO_NUMBER('808002008813') INTO v_numeric; -- 2.5 -- NUMERIC类型转RAW类型 SELECT DBE_RAW.CAST_FROM_NUMBER_TO_RAW('2.5') INTO v_raw; -- 808002008813 -- RAW类型转NVARCHAR2类型 SELECT DBE_RAW.CAST_FROM_RAW_TO_NVARCHAR2('12345678') INTO v_nvarchar2; -- \x124Vx -- RAW类型COMPARE SELECT DBE_RAW.COMPARE('ABCD','AB') INTO v_numeric; -- 2 -- RAW类型CONCAT SELECT DBE_RAW.CONCAT('ABCD','AB') INTO v_raw; -- ABCDAB -- RAW类型CONVERT SELECT DBE_RAW.CONVERT('E695B0', 'GBK','UTF8') INTO v_raw; -- CAFD -- RAW类型COPIES SELECT DBE_RAW.COPIES('ABCD',2) INTO v_raw; -- ABCDABCD -- RAW类型指定位置和长度进行覆盖 SELECT DBE_RAW.OVERLAY('abcef', '12345678123456', 2, 5, '9966') INTO v_raw; -- 120ABCEF999956 -- RAW类型按字节翻转 SELECT DBE_RAW.REVERSE('12345678') INTO v_raw; -- 78563412 -- RAW类型字节转换(无填充码) SELECT DBE_RAW.TRANSLATE('1122112233', '1133','55') INTO v_raw; -- 55225522 -- RAW类型字节转换(有填充码) SELECT DBE_RAW.TRANSLITERATE('1122112233', '55','1133','FFEE') INTO v_raw; -- 55225522FF -- RAW类型两个字节间的所有字节 SELECT DBE_RAW.XRANGE('00','03') INTO v_raw; -- 00010203 END; / ANONYMOUS BLOCK EXECUTE
共100000条