华为云用户手册

  • 语法格式 CREATE AGGREGATE name ( input_data_type [ , ... ] ) ( SFUNC = sfunc, STYPE = state_data_type [ , FINALFUNC = ffunc ] [ , INITCOND = initial_condition ] [ , SORTOP = sort_operator ] ) or the old syntax CREATE AGGREGATE name ( BASETYPE = base_type, SFUNC = sfunc, STYPE = state_data_type [ , FINALFUNC = ffunc ] [ , INITCOND = initial_condition ] [ , SORTOP = sort_operator ] )
  • 示例 --创建自定义函数。 openGauss=# CREATE OR REPLACE FUNCTION int_add(int,int) returns int as $BODY$ declare begin return $1 + $2; end; $BODY$ language plpgsql; --创建聚集函数。 openGauss=# CREATE AGGREGATE sum_add(int) ( sfunc = int_add, stype = int, initcond = '0' ); --创建测试表和添加数据。 openGauss=# CREATE TABLE test_sum(a int,b int,c int); openGauss=# INSERT INTO test_sum VALUES(1,2),(2,3),(3,4),(4,5); --执行聚集函数。 openGauss=# SELECT sum_add(a) FROM test_sum; sum_add ----------- 10 --删除聚集函数。 openGauss=# DROP AGGREGATE sum_add(int); --删除自定义函数。 openGauss=# DROP FUNCTION int_add(int,int); --删除测试表。 openGauss=# DROP TABLE test_sum;
  • DB_SYNONYMS DB_SYNONYMS视图显示当前用户可访问的所有同义词的信息。 表1 DB_SYNONYMS字段 名称 类型 描述 owner text 同义词的所有者。 schema_name text 同义词所属模式名。 synonym_name text 同义词的名称。 table_owner text 关联对象的所有者。尽管该列称为table_owner,但它拥有的该关联对象不一定是表,可以是任何数据库通用对象,例如视图、存储过程、同义词等。 table_name text 关联对象名。尽管该列称为table_name,但此关联对象不一定是表,可以是任何数据库通用对象,例如视图、存储过程、同义词等。 table_schema_name text 关联对象所属模式名。尽管该列称为table_schema_name,但此schema下的该关联对象不一定是表,可以是任何数据库通用对象,例如视图、存储过程、同义词等。 父主题: 系统视图
  • TRANSACTIONS_RUNNING_XA CTS 显示当前节点运行事务的信息。 表1 TRANSACTIONS_RUNNING_XACTS字段 名称 类型 描述 handle integer 事务对应的事务管理器中的槽位句柄,该值恒为-1。 gxid xid 事务id号。 state tinyint 事务状态(3:prepared或者0:starting)。 node text 节点名称。 xmin xid 节点上当前数据涉及的最小事务号xmin。 vacuum boolean 标志当前事务是否是lazy vacuum事务(lazy vacuum是一种vacuum机制,在需要时进行vacuum)。 true:表示是。 false:表示否。 timeline bigint 标志数据库重启次数。 prepare_xid xid 处于prepared状态的事务的id号,若不在prepared状态,值为0。 pid bigint 事务对应的线程id。 next_xid xid 其余节点发送给当前节点的事务id,该值恒为0。 父主题: Transaction
  • 数据库对象位置函数 pg_relation_filenode(relation regclass) 描述:指定关系的文件节点数。 返回值类型:oid 备注:pg_relation_filenode接受一个表、索引、序列的OID或者名称,并且返回当前分配给它的“filenode”数。文件节点是关系使用的文件名称的基本组件。对大多数表来说,结果和pg_class.relfilenode相同,但对确定的系统目录来说,relfilenode为0而且这个函数必须用来获取正确的值。如果传递一个没有存储的关系,比如一个视图,那么这个函数返回NULL。 pg_relation_filepath(relation regclass) 描述:指定关系的文件路径名。 返回值类型:text 备注:pg_relation_filepath类似于pg_relation_filenode,但是它返回关系的整个文件路径名(相对于数据库的数据目录PGDATA)。 pg_filenode_relation(tablespace oid, filenode oid) 描述:获取对应的tablespace和relfilenode所对应的表名。 返回类型:regclass pg_partition_filenode(partition_oid) 描述:获取到指定分区表的oid锁对应的filenode。 返回类型:oid pg_partition_filepath(partition_oid) 描述:指定分区的文件路径名 返回值类型:text
  • 数据库对象尺寸函数 数据库对象尺寸函数计算数据库对象使用的实际磁盘空间。 pg_column_size(any) 描述:存储一个指定的数值需要的字节数(可能压缩过)。 返回值类型:int 备注:pg_column_size显示用于存储某个独立数据值的空间。 1 2 3 4 5 openGauss=# SELECT pg_column_size(1); pg_column_size ---------------- 4 (1 row) pg_database_size(oid) 描述:指定OID代表的数据库使用的磁盘空间。 返回值类型:bigint pg_database_size(name) 描述:指定名称的数据库使用的磁盘空间。 返回值类型:bigint 备注:pg_database_size接受一个数据库的OID或者名称,然后返回该对象使用的全部磁盘空间。 示例: 1 2 3 4 5 openGauss=# SELECT pg_database_size('testdb'); pg_database_size ------------------ 51590112 (1 row) pg_relation_size(oid) 描述:pg_relation_size(..., 'main')的简写,指定OID代表的表或者索引所使用的磁盘空间。 返回值类型:bigint pg_relation_size(relation regclass, fork text) 描述:指定表或索引的指定分叉树('main','fsm'或'vm')使用的磁盘空间。 返回值类型:bigint pg_relation_size(relation regclass) 描述:pg_relation_size(..., 'main')的简写。 返回值类型:bigint 备注:pg_relation_size接受一个表、索引的OID或者名称,然后返回它们的字节大小。 pg_partition_size(oid,oid) 描述:指定OID代表的分区使用的磁盘空间。其中,第一个oid为表的OID,第二个oid为分区的OID。 返回值类型:bigint pg_partition_size(text, text) 描述:指定名称的分区使用的磁盘空间。其中,第一个text为表名,第二个text为分区名。 返回值类型:bigint pg_partition_indexes_size(oid,oid) 描述:指定OID代表的分区的索引使用的磁盘空间。其中,第一个oid为表的OID,第二个oid为分区的OID。 返回值类型:bigint pg_partition_indexes_size(text,text) 描述:指定名称的分区的索引使用的磁盘空间。其中,第一个text为表名,第二个text为分区名。 返回值类型:bigint pg_indexes_size(regclass) 描述:附加到指定表的索引使用的总磁盘空间。 返回值类型:bigint pg_size_pretty(bigint) 描述:将以64位整数表示的字节值转换为具有单位的易读格式。 返回值类型:text pg_size_pretty(numeric) 描述:将以数值表示的字节值转换为具有单位的易读格式。 返回值类型:text 备注:pg_size_pretty用于把其他函数的结果格式化成一种易读的格式,可以根据情况使用kB 、MB 、GB 、TB。 pg_table_size(regclass) 描述:指定的表使用的磁盘空间,不计索引(但是包含TOAST,自由空间映射和可见性映射)。 返回值类型:bigint pg_tablespace_size(oid) 描述:指定OID代表的表空间使用的磁盘空间。 返回值类型:bigint pg_tablespace_size(name) 描述:指定名称的表空间使用的磁盘空间。 返回值类型:bigint 备注:pg_tablespace_size接受一个数据库的OID或者名称,然后返回该对象使用的全部磁盘空间。 pg_total_relation_size(oid) 描述:指定OID代表的表使用的磁盘空间,包括索引数据。 返回值类型:bigint pg_total_relation_size(regclass) 描述:指定的表使用的总磁盘空间,包括所有的索引和TOAST数据。 返回值类型:bigint pg_total_relation_size(text) 描述:指定名称的表所使用的全部磁盘空间,包括索引数据。表名称可以用模式名修饰。 返回值类型:bigint 备注:pg_total_relation_size接受一个表的OID或者名称,然后返回以字节计的数据和所有相关的索引的尺寸。 datalength(any) 描述:计算一个指定的数据需要的字节数(不考虑数据的管理空间和数据压缩,数据类型转换等情况)。 返回值类型:int 备注:datalength用于计算某个独立数据值的空间。 示例: openGauss=# SELECT datalength(1); datalength ------------ 4 (1 row) 目前支持的数据类型及计算方式见下表: 数据类型 存储空间 数值类型 整数类型 TINYINT 1 SMALLINT 2 INTEGER 4 BINARY_INTEGER 4 BIGINT 8 任意精度型 DECIMAL 每4位十进制数占两个字节,小数点前后数字分别计算 NUMERIC 每4位十进制数占两个字节,小数点前后数字分别计算 NUMBER 每4位十进制数占两个字节,小数点前后数字分别计算 序列整型 SMALLSERIAL 2 SERIAL 4 BIGSERIAL 8 LARGESERIAL 每4位十进制数占两个字节,小数点前后数字分别计算 浮点类型 FLOAT4 4 DOUBLE PRECISION 8 FLOAT8 8 BINARY_DOUBLE 8 FLOAT[(p)] 每4位十进制数占两个字节,小数点前后数字分别计算 DEC[(p[,s])] 每4位十进制数占两个字节,小数点前后数字分别计算 INTEGER[(p[,s])] 每4位十进制数占两个字节,小数点前后数字分别计算 布尔类型 布尔类型 BOOLEAN 1 字符类型 字符类型 CHAR n CHAR(n) n CHARACTER(n) n NCHAR(n) n VARCHAR(n) n CHARACTER 字符实际字节数 VARYING(n) 字符实际字节数 VARCHAR2(n) 字符实际字节数 NVARCHAR(n) 字符实际字节数 NVARCHAR2(n) 字符实际字节数 TEXT 字符实际字节数 CLOB 字符实际字节数 时间类型 时间类型 DATE 8 TIME 8 TIMEZ 12 TIMESTAMP 8 TIMESTAMPZ 8 SMALLDATETIME 8 INTERVAL DAY TO SECOND 16 INTERVAL 16 RELTIME 4 ABSTIME 4 TINTERVAL 12
  • CLASS_VITAL_INFO CLASS_VITAL_INFO视图用于做WDR时校验相同的表或者索引的Oid是否一致。 表1 CLASS_VITAL_INFO字段 名称 类型 描述 relid oid 表的oid。 schemaname name schema名称。 relname name 表名。 relkind "char" 表示对象类型,取值范围如下: r:表示普通表。 t:表示toast表。 i:表示索引。 父主题: Utility
  • 示例 -- 创建表 openGauss=# CREATE TABLE uuid_test(id int, test uuid); -- 插入数据,使用示例格式插入数据 openGauss=# INSERT INTO uuid_test VALUES(1, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); openGauss=# INSERT INTO uuid_test VALUES(2, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); openGauss=# INSERT INTO uuid_test VALUES(3, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); openGauss=# INSERT INTO uuid_test VALUES(4, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); -- 查看数据,输出时以标准格式输出 openGauss=# SELECT * FROM uuid_test; id | test ----+-------------------------------------- 1 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 (4 rows)
  • ADM_HIST_SQL_PLAN ADM_HIST_SQL_PLAN视图描述当前用户通过执行EXPLAIN PLAN收集到的计划信息。默认只有系统管理员权限才可以访问此系统视图,普通用户需要授权才可以访问。 表1 ADM_HIST_SQL_PLAN字段 名称 类型 描述 sql_id character varying(30) 表示插入该条数据的会话,由服务线程启动时间戳和服务线程ID组成。受非空约束限制。 plan_hash_value bigint 查询标识。 operation character varying(30) 操作描述。 options character varying(255) 操作选项。 object_name name 操作对应的对象名,来自于用户定义。 父主题: 系统视图
  • PG_PROC PG_PROC系统表存储函数或过程的信息。 表1 PG_PROC字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 proname name 函数名称。 pronamespace oid 包含该函数名称空间的OID。 proowner oid 函数的所有者。 prolang oid 这个函数的实现语言或调用接口。 procost real 估算的执行成本。 prorows real 估算的影响行的数目。 provariadic oid 参数元素的数据类型。 protransform regproc 此函数的简化调用方式。 proisagg boolean 函数是否是聚集函数。 t(true):表示是。 f(false):表示不是。 proiswindow boolean 函数是否是窗口函数。 t(true):表示是。 f(false):表示不是。 prosecdef boolean 函数是否是一个安全定义器(也就是一个“setuid”函数)。 t(true):表示是。 f(false):表示不是。 proleakproof boolean 函数是否没有副作用。如果函数没有对参数进行防泄露处理,则会抛出错误。 t(true):表示没副作用。 f(false):表示有副作用。 proisstrict boolean t(true):使用该函数时,如果入参有空值,则函数实际上不调用直接返回空。 f(false):使用该函数时,即使入参有空值,也要调用。所以该函数必须处理空输入。 proretset boolean 函数返回值是否为一个集合(也就是说,指定数据类型的多个数值)。 true:函数返回值是一个集合。 false:函数返回值不是一个集合。 provolatile "char" 该函数的结果是否只依赖于它的输入参数,或者还会被外界因素影响。 i:“不可变的”(immutable)函数,对于相同的输入总是产生相同的结果。 s:“稳定的”(stable)函数,(对于固定输入)其结果在一次扫描里不变。 v:“易变”(volatile)函数,其结果可能在任何时候变化,也用于那些有副作用的函数,因此调用它们无法得到优化。 pronargs smallint 参数数目。 pronargdefaults smallint 有默认值的参数数目。 prorettype oid 返回值的数据类型。 proargtypes oidvector 一个存放函数参数的数据类型的数组。数组里只包括输入参数(包括INOUT参数)此代表该函数的调用签名(接口)。 proallargtypes oid[] 一个包含函数参数的数据类型的数组。数组里包括所有参数的类型(包括OUT和INOUT参数),如果所有参数都是IN参数,则这个字段就会是空。请注意数组下标是以1为起点的,而因为历史原因,proargtypes的下标起点为0。 proargmodes "char"[] 一个保存函数参数模式的数组,编码如下: i表示IN参数。 o表示OUT参数。 b表示INOUT参数。 v表示VARIADIC参数。 如果所有参数都是IN参数,则这个字段为空。请注意,下标对应的是proallargtypes的位置,而不是proargtypes。 proargnames text[] 一个保存函数参数的名称的数组。没有名称的参数在数组里设置为空字符串。如果没有一个参数有名称,这个字段将是空。请注意,此数组的下标对应proallargtypes而不是proargtypes。 proargdefaults pg_node_tree 默认值的表达式树。是PRONARGDEFAULTS元素的列表。 prosrc text 描述函数或存储过程的定义。例如,对于解释型语言来说就是函数的源程序,或者一个连接符号,一个文件名,或者函数和存储过程创建时指定的其他任何函数体内容,具体取决于语言/调用习惯的实现。 probin text 关于如何调用该函数的附加信息。同样,其含义也是和语言相关的。 proconfig text[] 函数针对运行时配置变量的本地设置。 proacl aclitem[] 访问权限。具体请参见GRANT和REVOKE。 prodefaultargpos int2vector 函数具有默认值的入参的位置。 fencedmode boolean 函数的执行模式,表示函数是在fence还是not fence模式下执行。 true:fence模式,函数的执行会在重新fork的进程中执行。 false:not fence模式。 系统内建函数,fencedmode字段均为false,即not fence模式。 proshippable boolean 表示该函数是否可以下推到数据库节点上执行,默认值是false。 对于IMMUTABLE类型的函数,函数始终可以下推到数据库节点上执行。 对于STABLE/VOLATILE类型的函数,仅当函数的属性是SHIPPABLE的时候,函数可以下推到数据库节点执行。 propackage boolean 表示该函数是否支持重载,默认值是false。 t(true):表示支持。 f(false):表示不支持。 prokind "char" 表示该对象为函数还是存储过程。 'f':该对象为函数。 'p':该对象为存储过程。 proargsrc text 描述兼容A语法定义的函数或存储过程的参数输入字符串,包括参数注释。默认值为NULL。 proisprivate boolean 描述函数是否是PACKAGE内的私有函数,默认为false。 propackageid oid 函数所属的package oid,如果不在package内,则为0。 proargtypesext oidvector_extend 当函数参数较多时,用来存放函数参数的数据类型的数组。数组里只包括输入参数(包括INOUT参数),代表该函数的调用签名(接口)。 prodefaultargposext int2vector_extend 当函数参数较多时,函数具有默认值的入参的位置。 allargtypes oidvector 用来存放存储过程参数的数据类型的数组,包含存储过程所有参数(入参、出参、INOUT参数)。 allargtypesext oidvector_extend 当函数参数较多(大于666个)时,用来存放存储过程参数的数据类型的数组,包含所有参数(包含入参、出参、INOUT参数)。 父主题: 系统表
  • GV_SESSION GV_SESSION视图显示当前会话的所有会话信息。 表1 GV_SESSION字段 名称 类型 描述 sid bigint 热点key所在database名称。 serial# integer 热点key所在schema名称。 schemaname name 热点key所在table名称。 user# oid 热点key的value。 username name 热点key在数据库中的哈希值,如果是List/Range分布表,该字段为0。 machine text 热点key被访问频次。 sql_id bigint sql的oid。 client_info text 客户端信息。 event text 语句当前排队状态。可能值是: waiting in queue:表示语句在排队中。 空:表示语句正在运行。 sql_exec_start timestamp sql执行开始时间。 program text 连接到该后台的应用名。 status text 该后台当前总体状态。可能值是: active:后台正在执行一个查询。 idle:后台正在等待一个新的客户端命令。 idle in transaction:后台在事务中,但事务中没有语句在执行。 idle in transaction (aborted):后台在事务中,但事务中有语句执行失败。 fastpath function call:后台正在执行一个fast-path函数。 disabled:如果后台禁用track_activities,则报告这个状态。 父主题: 系统视图
  • 环境类 Go环境配置 用户需要在环境变量中配置以下参数: GO111MODULE:用户使用在线导入的方式安装Go驱动时需要设置GO111MODULE为on;如果不希望进行go mod工程的改造,需将GO111MODULE设置为off,并手动下载依赖包,依赖包与驱动根目录和业务代码保持同级。 GOPROXY:用户使用在线导入时需配置包含Go驱动包的路径。 用户可以根据自己场景参数配置Go其他相关环境变量。 通过go env查看Go环境变量配置结果,并且查看Go版本是否在1.13或以上。 Go驱动安装 从发布包中获取Go驱动包到本地。包名为 GaussDB -Kernel_数据库版本号_操作系统版本号_64bit_Go.tar.gz。解压后为Go驱动源码包。 进入Go驱动代码根路径,执行go mod tidy下载相关依赖,需要在环境变量中配置GOPATH=${Go驱动依赖包存放路径}。 若依赖已下载至本地,可以在go.mod里面添加一行“通过replace将Go驱动包替换为本地Go驱动包地址”,表示代码里面所有的import Go驱动包都是走本地路径, 同时依赖也不会从代理里下载。 通过go mod tidy下载相关依赖时可能会下载为某个依赖的低版本,如果依赖的低版本存在漏洞,可以通过更改go.mod文件中对应依赖的版本号,更新依赖到漏洞修复后的版本来规避风险。
  • 规格约束 告警字符串长度上限为2048。如果告警信息超过这个长度(例如存在大量未收集统计信息的超长表名,列名等信息)则不告警,只上报warning: WARNING, "Planner issue report is truncated, the rest of planner issues will be skipped" 如果query存在limit节点(即查询语句中包含limit),则不会上报limit节点以下的Operator级别的告警。
  • 告警场景 目前支持对多列/单列统计信息未收集导致性能问题的场景上报告警。 如果存在单列统计信息未收集,则上报相关告警。调优方法可以参考更新统计信息和统计信息调优。 告警信息示例: 整表的统计信息未收集: Statistic Not Collect: schema_test.t1 单列统计信息未收集: Statistic Not Collect: schema_test.t2(c1,c2)
  • LOCAL_THREADPOOL_STATUS LOCAL_THREADPOOL_STATUS视图显示线程池下工作线程及会话的状态信息。该视图仅在线程池开启(enable_thread_pool = on)时生效。 表1 LOCAL_THREADPOOL_STATUS字段 名称 类型 描述 node_name text 节点名称。 group_id integer 线程池组ID。 bind_numa_id integer 该线程池组绑定的NUMA ID。 bind_cpu_number integer 该线程池组绑定的CPU信息。如果未绑定CPU,该值为NULL。 listener integer 该线程池组的Listener线程数量。 worker_info text 线程池中线程相关信息,包括以下信息: default:该线程池组中的初始线程数量。 new:该线程池组中新增线程的数量。 expect:该线程池组中预期线程的数量。 actual:该线程池组中实际线程的数量。 idle:该线程池组中空闲线程的数量。 pending:该线程池组中等待线程的数量。 session_info text 线程池中会话相关信息,包括以下信息: total:该线程池组中所有的会话数量。 waiting:该线程池组中等待调度的会话数量。 running:该线程池中正在执行的会话数量。 idle:该线程池组中空闲的会话数量。 stream_info text stream池相关信息,包含以下信息: total:该stream池组中所有的线程数量。 running:该stream池中正在执行的线程数量。 idle:该stream池组中空闲的线程数量。 父主题: Session/Thread
  • 基于Psycopg开发 Psycopg是一种用于执行SQL语句的PythonAPI,可以为 GaussDB数据库 提供统一访问接口,应用程序可基于它进行数据操作。Psycopg2是对libpq的封装,主要使用C语言实现,既高效又安全。它具有客户端游标和服务器端游标、异步通信和通知、支持“COPY TO/COPY FROM”功能。支持多种类型Python开箱即用,适配GaussDB数据类型;通过灵活的对象适配系统,可以扩展和定制适配。Psycopg2兼容Unicode。 GaussDB数据库提供了对Psycopg2特性的支持,并且支持psycopg2通过SSL模式连接。 表1 Psycopg支持平台 操作系统 平台 Python版本 EulerOS 2.5 ARM64位 x86_64位 3.8.5 EulerOS 2.9 ARM64位 x86_64位 3.7.4 EulerOS 2.10, Kylin v10, UnionTech20 ARM64位 x86_64位 3.7.9 EulerOS 2.11, Suse 12.5 ARM64位 x86_64位 3.9.11 psycopg2在编译过程中,会连接(link)GaussDB的openssl,GaussDB的openssl与操作系统自带的openssl可能不兼容。如果遇到不兼容现象,例如提示"version 'OPENSSL_1_1_1f' not found",请使用环境变量LD_LIBRARY_PATH进行隔离,以避免混用操作系统自带的openssl与GaussDB依赖的openssl。 例如,在执行某个调用psycopg2的应用软件client.py时,将环境变量显性赋予该应用软件: export LD_LIBRARY_PATH=/path/to/gaussdb/libs:$LD_LIBRARY_PATH python client.py 其中,/path/to/pyscopg2/lib表示GaussDB依赖的openssl库所在目录,需根据文件实际存储路径修改。 开发流程 Psycopg包 示例:常用操作 Psycopg接口参考 父主题: 应用程序开发教程
  • 背景信息 数据库安全对数据库系统来说至关重要。GaussDB将用户对数据库的所有操作写入审计日志。数据库审计管理员可以利用这些日志信息,重现导致数据库现状的一系列事件,找出非法操作的用户、时间和内容等。 关于审计功能,用户需要了解以下几点内容: 审计总开关audit_enabled支持动态加载。在数据库运行期间修改该配置项的值会立即生效,无需重启数据库。默认值为on,表示开启审计功能。 除了审计总开关,各个审计项也有对应的开关。只有开关开启,对应的审计功能才能生效。 各审计项的开关支持动态加载。在数据库运行期间修改审计开关的值,不需要重启数据库便可生效。 目前,GaussDB支持以下审计项如表1所示。 表1 配置审计 项 配置项 描述 用户登录、注销审计 参数:audit_login_logout 默认值为7,表示开启用户登录、退出的审计功能。设置为0表示关闭用户登录、退出的审计功能。不推荐设置除0和7之外的值。 数据库启动、停止、恢复和切换审计 参数:audit_database_process 默认值为1,表示开启数据库启动、停止、恢复和切换的审计功能。 用户锁定和解锁审计 参数:audit_user_locked 默认值为1,表示开启审计用户锁定和解锁功能。 用户访问越权审计 参数:audit_user_violation 默认值为0,表示关闭用户越权操作审计功能。 授权和回收权限审计 参数:audit_grant_revoke 默认值为1,表示开启审计用户权限授予和回收功能。 数据库对象的CREATE,ALTER,DROP操作审计 参数:audit_system_object 默认值为67121159,表示只对DATABASE、SCHEMA、USER、SQL Patch这四类数据库对象的CREATE、ALTER、DROP操作进行审计。 具体表的INSERT、UPDATE和DELETE操作审计 参数:audit_dml_state 默认值为0,表示关闭具体表的DML操作(SELECT除外)审计功能。 SELECT操作审计 参数:audit_dml_state_select 默认值为0,表示关闭SELECT操作审计功能。 COPY审计 参数:audit_copy_exec 默认值为1,表示开启copy操作审计功能。 存储过程和自定义函数的执行审计 参数:audit_function_exec 默认值为0,表示不记录存储过程和自定义函数的执行审计日志。 SET审计 参数:audit_set_parameter 默认值为0,表示不记录set操作审计日志 事务ID记录 参数:audit_xid_info 默认值为0,表示关闭审计日志记录事务ID功能。
  • 注意事项 为了在表上定义或修改规则,你必须是该表的拥有者。 如果在同一个表定义了多个相同类型的规则,则按规则的名称字母顺序触发它们。 在视图上用于INSERT、UPDATE、DELETE的规则中可以添加RETURNING子句基于视图的字段返回。如果规则被INSERT RETURNING、UPDATE RETURNING、DELETE RETURNING命令触发,这些子句将用来计算输出结果。如果规则被不带RETURNING的命令触发,那么规则的RETURNING子句将被忽略。目前仅允许无条件的INSTEAD规则包含RETURNING子句,而且在同一个事件内的所有规则中最多只能有一个RETURNING子句。这样就确保只有一个RETURNING子句可以用于计算结果。如果在任何有效规则中都不存在RETURNING子句,该视图上的RETURNING查询将被拒绝。 目前,ON SELECT规则必须是无条件的INSTEAD规则并且必须有一个由单独一条SELECT查询组成的动作。因此,一条ON SELECT规则实际上把表变成了一个视图,它的可见内容是由该规则的SELECT命令返回,而不是直接存在该表中的内容(如果有)。
  • 参数说明 name 创建的规则名。它必须在同一个表上的所有规则名字中唯一。 取值范围:符合标识符命名规范的字符串,且最大长度不超过63个字符。 event SELECT、INSERT、UPDATE、DELETE事件之一。 table_name 规则作用的表或者视图的名字(可以有模式修饰)。 condition 返回boolean的SQL条件表达式,决定是否实际执行规则。表达式除了引用NEW和OLD之外不能引用任何表,并且不能有聚合函数。不建议使用int等数值类型作为condition,因为int等数值类型可以隐式转换为bool值(非0值隐式转换为true,0转换为false),可能导致非预期的结果。 INSTEAD INSTEAD指示使用该命令替换初始事件。 ALSO ALSO指示该命令应该在初始事件执行之后执行。如果既没有声明ALSO也没有声明INSTEAD, 那么ALSO为缺省值。 command 组成规则动作的命令。有效的命令是SELECT、 INSERT、UPDATE、 DELETE语句之一。
  • 参数说明 user_name 要映射到外部服务器的一个现有用户的名称。 CURRENT_USER和USER匹配当前用户的名称。 当PUBLIC被指定时,一个公共映射会被创建,当没有特定用户的映射可用时将会使用它。 server_name 将为其创建用户映射的现有服务器的名称。 OPTIONS ( { option_name ' value ' } [, ...] ) 这个子句指定用户映射的选项。这些选项通常定义该映射实际的用户名和口令。选项名必须唯一。允许的选项名和值与该服务器的外部数据包装器有关。 用户的口令会加密后保存到系统表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工具说明。
  • 注意事项 当在OPTIONS中出现password选项时,需要保证GaussDB每个节点的$GAUSSHOME/bin目录下存在usermapping.key.cipher和usermapping.key.rand文件,如果不存在这两个文件,请使用gs\_guc工具生成并使用gs\_ssh工具发布到GaussDB每个节点的$GAUSSHOME/bin目录下。 OPTIONS中的敏感字段(如password)在使用多层引号时,语义和不带引号的场景是不同的,因此不会被识别为敏感字段进行脱敏。
  • 示例 -- 创建角色。 openGauss=# CREATE ROLE bob PASSWORD '********'; -- 创建外部服务器 openGauss=# CREATE SERVER my_server FOREIGN DATA WRAPPER log_fdw; -- 创建USER MAPPING。 openGauss=# CREATE USER MAPPING FOR bob SERVER my_server OPTIONS (user 'bob', password '********'); -- 修改USER MAPPING。 openGauss=# ALTER USER MAPPING FOR bob SERVER my_server OPTIONS (SET password '********'); -- 删除USER MAPPING。 openGauss=# DROP USER MAPPING FOR bob SERVER my_server; -- 删除外部服务器。 openGauss=# DROP SERVER my_server; -- 删除角色。 openGauss=# 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 35 36 37 38 39 40 41 42 BEGIN FOR ROW_TRANS IN SELECT first_name FROM hr.staffs LOOP DBE_OUTPUT.PRINT_LINE (ROW_TRANS.first_name ); END LOOP; END; / --创建表 CREATE TABLE integerTable1( A INTEGER); CREATE TABLE integerTable2( B INTEGER); INSERT INTO integerTable2 VALUES(2); --多游标共享游标属性的标量 DECLARE CURSOR C1 IS SELECT A FROM integerTable1;--声明游标 CURSOR C2 IS SELECT B FROM integerTable2; PI_A INTEGER; PI_B INTEGER; BEGIN OPEN C1;--打开游标 OPEN C2; FETCH C1 INTO PI_A; ---- C1%FOUND 和 C2%FOUND 值为 FALSE FETCH C2 INTO PI_B; ---- C1%FOUND 和 C2%FOUND 的值都为 TRUE --判断游标状态 IF C1%FOUND THEN IF C2%FOUND THEN DBE_OUTPUT.PRINT_LINE('Dual cursor share paremeter.'); END IF; END IF; CLOSE C1;--关闭游标 CLOSE C2; END; / --删除临时表 DROP TABLE integerTable1; DROP TABLE integerTable2; SET CURRENT_SCHEMA=public; DROP SCHEMA hr CASCADE;
  • 安全策略管理员 安全策略管理员是指具有POLADMIN属性的账户,具有创建资源标签,脱敏策略和统一审计策略的权限。 要创建新的安全策略管理员,请以系统管理员用户身份连接数据库,并使用带POLADMIN选项的CREATE USER语句或ALTER USER语句进行设置。 1 openGauss=# CREATE USER poladmin WITH POLADMIN password "********"; 或者 1 openGauss=# ALTER USER joe POLADMIN; ALTER USER时,要求用户已存在。
  • 运维管理员 运维管理员是指具有OPRADMIN属性的账户,具有使用Roach工具执行备份恢复的权限。 要创建新的运维管理员,请以初始用户身份连接数据库,并使用带OPRADMIN选项的CREATE USER语句或ALTER USER语句进行设置。 1 openGauss=# CREATE USER opradmin WITH OPRADMIN password "********"; 或者 1 openGauss=# ALTER USER joe OPRADMIN; ALTER USER时,要求用户已存在。
  • 初始用户 数据库安装过程中自动生成的账户称为初始用户。初始用户也是系统管理员、安全管理员、审计管理员、监控管理员、运维管理员和安全策略管理员,拥有系统的最高权限,能够执行所有的操作。如果安装时不指定初始用户名称,则该账户与进行数据库安装的操作系统用户同名。如果在安装时不指定初始用户的密码,安装完成后密码为空,在执行其他操作前需要通过gsql客户端修改初始用户的密码。如果初始用户密码为空,则除修改密码外,无法执行其他SQL操作以及升级、扩容、节点替换等操作。 初始用户会绕过所有权限检查。建议仅将此初始用户作为DBA管理用途,而非业务应用。
  • 审计管理员 审计管理员是指具有AUDITADMIN属性的账户,具有查看和删除审计日志的权限。 要创建新的审计管理员,三权分立关闭时,请以系统管理员或者安全管理员身份连接数据库。三权分立打开时,只能以初始用户身份连接数据库,并使用带AUDITADMIN选项的CREATE USER语句或ALTER USER语句进行设置。 1 openGauss=# CREATE USER auditadmin WITH AUDITADMIN password "********"; 或者 1 openGauss=# ALTER USER joe AUDITADMIN; ALTER USER时,要求用户已存在。
  • 监控管理员 监控管理员是指具有MONADMIN属性的账户,具有查看dbe_perf模式下视图和函数的权限,亦可以对dbe_perf模式的对象权限进行授予或收回。 要创建新的监控管理员,请以系统管理员身份连接数据库,并使用带MONADMIN选项的CREATE USER语句或ALTER USER语句进行设置。 1 openGauss=# CREATE USER monadmin WITH MONADMIN password "********"; 或者 1 openGauss=# ALTER USER joe MONADMIN; ALTER USER时,要求用户已存在。
  • 安全管理员 安全管理员是指具有CREATEROLE属性的账户,具有创建、修改、删除用户或角色的权限,和赋予或者撤销任何非系统管理员、内置角色、永久用户和运维管理员的权限。 要创建新的安全管理员,三权分立关闭时,请以系统管理员或者安全管理员身份连接数据库。三权分立打开时,请以安全管理员身份连接数据库,并使用带CREATEROLE选项的CREATE USER语句或ALTER USER语句进行设置。 1 openGauss=# CREATE USER createrole WITH CREATEROLE password "********"; 或者 1 openGauss=# ALTER USER joe CREATEROLE; ALTER USER时,要求用户已存在。
  • 系统管理员 系统管理员是指具有SYSADMIN属性的账户,默认安装情况下具有与对象所有者相同的权限,但不包括dbe_perf模式的对象权限和使用Roach工具执行备份恢复的权限。 要创建新的系统管理员,请以初始用户或者系统管理员用户身份连接数据库,并使用带SYSADMIN选项的CREATE USER语句或ALTER USER语句进行设置。 1 openGauss=# CREATE USER sysadmin WITH SYSADMIN password "********"; 或者 1 openGauss=# ALTER USER joe SYSADMIN; ALTER USER时,要求用户已存在。
共100000条
提示

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