华为云用户手册

  • 语法格式 重建普通索引。 REINDEX { INDEX | [INTERNAL] TABLE | DATABASE | SYSTEM } [ CONCURRENTLY ] name [ FORCE ]; 重建索引并进行类型转换。 1 REINDEX [ ( option [, ...] ) ] { INDEX } [ CONCURRENTLY ] name [ FORCE ]; 重建索引分区。 REINDEX { INDEX | [INTERNAL] TABLE } name PARTITION partition_name [ FORCE ];
  • PG_PREPARED_STATEMENTS PG_PREPARED_STATEMENTS视图显示当前会话所有可用的预备语句的信息。 表1 PG_PREPARED_STATEMENTS字段 名称 类型 描述 name text 预备语句的标识符。 statement text 创建该预备语句的查询字符串。对于从SQL创建的预备语句而言是客户端提交的PREPARE语句;对于通过前/后端协议创建的预备语句而言是预备语句自身的文本。 prepare_time timestamp with time zone 创建该预备语句的时间戳。 parameter_types regtype[] 该预备语句期望的参数类型,以regtype类型的数组格式出现。与该数组元素相对应的OID可以通过把regtype转换为OID值得到。 from_sql boolean 如果该预备语句是通过PREPARE语句创建的则为true。 如果是通过前/后端协议创建的则为false。 父主题: 其他系统视图
  • 背景信息 序列Sequence是用来产生唯一整数的数据库对象。序列的值是按照一定规则自增的整数。因为自增所以不重复,因此Sequence具有唯一标识性。这也是Sequence常被用作主键的原因。 通过序列使某字段成为唯一标识符的方法有两种: 一种是声明字段的类型为序列整型,由数据库在后台自动创建一个对应的Sequence。 另一种是使用CREATE SEQUENCE自定义一个新的Sequence,然后将nextval('sequence_name')函数读取的序列值,指定为某一字段的默认值,这样该字段就可以作为唯一标识符。
  • 操作步骤 方法一: 声明字段类型为序列整型来定义标识符字段。例如: 1 2 3 4 5 gaussdb=# CREATE TABLE T1 ( id serial, name text ); 当结果显示为如下信息,则表示创建成功。 1 CREATE TABLE 方法二: 创建序列,并通过nextval('sequence_name')函数指定为某一字段的默认值。 创建序列,具体操作请参见CREATE SEQUENCE。 1 gaussdb=# CREATE SEQUENCE seq1 cache 100; 当结果显示为如下信息,则表示创建成功。 1 CREATE SEQUENCE 指定为某一字段的默认值,使该字段具有唯一标识属性。 1 2 3 4 5 gaussdb=# CREATE TABLE T2 ( id int not null default nextval('seq1'), name text ); 当结果显示为如下信息,则表示默认值指定成功。 1 CREATE TABLE 指定序列与列的归属关系。 将序列和一个表的指定字段进行关联。这样,在删除该字段或其所在表的时候会自动删除已关联的序列。 1 gaussdb=# ALTER SEQUENCE seq1 OWNED BY T2.id; 当结果显示为如下信息,则表示指定成功。 1 ALTER SEQUENCE 除了为序列指定cache,方法二所实现的功能基本与方法一类似。但是一旦定义cache,序列将会产生空洞(序列值为不连贯的数值,如:1.4.5),并且不能保序。另外为某序列指定从属列后,该列删除,对应的sequence也会被删除。 虽然数据库并不限制序列只能为一列产生默认值,但建议不要多列共用同一个序列。 当前版本只支持在定义表的时候指定自增列,或者指定某列的默认值为nextval('seqname'), 不支持在已有表中增加自增列或者增加默认值为nextval('seqname')的列。
  • aclitem类型 aclitem数据类型用于存储对象权限信息。其内部实现是int类型,支持的格式为‘user1=privs/user2’。 aclitem[]数据类型为aclitem组成的数组,支持的格式为‘{user1=privs1/user3,user2=privs2/user3}’。 其中user1、user2和user3为数据库中已存在的用户/角色名,privs为数据库中支持的权限(具体请参见表2)。 示例: --创建相应用户。 gaussdb=# CREATE USER user1 WITH PASSWORD '***********'; gaussdb=# CREATE USER user2 WITH PASSWORD '***********'; gaussdb=# CREATE USER omm WITH PASSWORD '***********'; --新建一张数据表table_acl,有三个字段,类型分别为int、aclitem、aclitem[]。 gaussdb=# CREATE TABLE table_acl (id int,priv aclitem,privs aclitem[]); --向数据表table_acl插入一条内容为(1,'user1=arw/omm','{omm=d/user2,omm=w/omm}')的数据。 gaussdb=# INSERT INTO table_acl VALUES (1,'user1=arw/omm','{omm=d/user2,omm=w/omm}'); --向数据表table_acl再插入一条内容为(2,'user1=aw/omm','{omm=d/user2}')的数据。 gaussdb=# INSERT INTO table_acl VALUES (2,'user1=aw/omm','{omm=d/user2}'); gaussdb=# SELECT * FROM table_acl; id | priv | privs ----+---------------+------------------------- 1 | user1=arw/omm | {omm=d/user2,omm=w/omm} 2 | user1=aw/omm | {omm=d/user2} (2 rows) --删除表和用户。 gaussdb=# DROP USER user1; gaussdb=# DROP USER user2; gaussdb=# DROP USER omm; gaussdb=# DROP TABLE table_acl; 父主题: 数据类型
  • ADM_SYNONYMS ADM_SYNONYMS视图显示数据库中所有同义词的信息。默认只有系统管理员权限才可以访问。该视图同时存在于PG_CATA LOG 和SYS Schema下。 表1 ADM_SYNONYMS字段 名称 类型 描述 owner text 同义词的所有者。PUBLIC同义词的所有者为PUBLIC。 schema_name text 同义词所属模式名。PUBLIC同义词的所属模式名为NULL。 synonym_name text 同义词的名称。 table_owner text 关联对象的所有者。尽管该列称为table_owner,但它拥有的该关联对象不一定是表,可以是任何数据库通用对象,例如视图、存储过程、同义词等。 table_name text 关联对象名。尽管该列称为table_name,但此关联对象不一定是表,可以是任何数据库通用对象,例如视图、存储过程、同义词等。 table_schema_name text 关联对象所属模式名。尽管该列称为table_schema_name,但此Schema下的该关联对象不一定是表,可以是任何数据库通用对象,例如视图、存储过程、同义词等。 父主题: 其他系统视图
  • Retry管理 Retry是数据库在SQL或存储过程(包含匿名块)执行失败时,在数据库内部进行重新执行的过程,以提高执行成功率和用户体验。同时也是数据库内部通过检查发生错误时的错误码及Retry相关配置,决定是否进行重试。 失败时回滚之前执行的语句,并重新执行存储过程进行Retry。 示例: 1 2 3 4 5 6 7 8 9 gaussdb=# CREATE OR REPLACE PROCEDURE retry_basic ( IN x INT) AS BEGIN INSERT INTO t1 (a) VALUES (x); INSERT INTO t1 (a) VALUES (x+1); END; / gaussdb=# CALL retry_basic(1); 父主题: 存储过程
  • MY_SUBPART_COL_STATIS TICS MY_SUBPART_COL_STATISTI CS 视图显示了当前用户拥有的分区对象的子分区的列统计信息和直方图信息。所有用户都可以访问该视图。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 MY_SUBPART_COL_STATISTICS字段 名称 类型 描述 table_name character varying(128) 表名。 subpartition_name character varying(128) 子分区名称。 column_name character varying(4000) 列名。 num_distinct numeric 暂不支持,值为NULL。 low_value raw 暂不支持,值为NULL。 high_value raw 暂不支持,值为NULL。 density numeric 暂不支持,值为NULL。 num_nulls numeric 暂不支持,值为NULL。 num_buckets numeric 暂不支持,值为NULL。 sample_size numeric 暂不支持,值为NULL。 last_analyzed timestamp(0) without time zone 暂不支持,值为NULL。 global_stats character varying(3) 暂不支持,值为NULL。 user_stats character varying(3) 暂不支持,值为NULL。 notes character varying(41) 暂不支持,值为NULL。 avg_col_len numeric 暂不支持,值为NULL。 histogram character varying(15) 暂不支持,值为NULL。 schema character varying(64) 列所属的名称空间的名称。 父主题: 分区表
  • V$DBLINK V$DBLINK系统视图显示DATABASE LINK对象的相关信息,用户可以查看属于自己和PUBLIC级别的DATABASE LINK信息。默认只有管理员用户可以查看该视图。 本视图数据取自于GS_DB_LINKS,但只记录在本次session中曾被使用过或正在使用的链路信息,DATABASE LINK介绍及使用请参考DATABASE LINK。 表1 V$DBLINK字段 名称 类型 描述 db_link character varying(128) 当前DATABASE LINK对象的名称。 owner_id numeric 当前DATABASE LINK对象拥有者的ID。DATABASE LINK对象的拥有者是PUBLIC时,owner_id为0。 logged_on character varying(3) 暂不支持,值为NULL。 heterogeneous character varying(3) 暂不支持,值为NULL。 protocol character varying(6) 暂不支持,值为NULL。 open_cursors numeric 暂不支持,值为NULL。 in_transaction character varying(3) 当前DATABASE LINK对象是否在事务中。 YES:表示在事务中。 NO:表示不在事务中。 update_sent character varying(3) 当前DATABASE LINK对象是否使用了更新数据的语句。 YES:表示使用了更新数据的语句。 NO:表示没有使用更新数据的语句。 commit_point_strength numeric 暂不支持,值为NULL。 con_id numeric 暂不支持,值为NULL。 父主题: DATABASE LINK
  • GS_MY_ILMDATAMOVEMENTPOLICIES GS_MY_ILMDATAMOVEMENTPOLICIES视图反映ILM策略的数据移动概要信息,包含策略名称、动作类型、条件等。 表1 GS_MY_ILMDATAMOVEMENTPOLICIES字段 名称 类型 描述 policy_name character varying(128) ADO策略名称,系统自动生成,规则为:p+策略ID。 action_type character varying(11) 动作类型,当前版本仅支持压缩。 scope character varying(7) 作用域,当前版本仅支持行。 compression_level character varying(30) 压缩级别,动作类型为压缩时存在。 tier_tablespace character varying(128) 目标空间,动作类型为迁移时存在。当前版本值为null。 tier_status character varying(9) 迁移目标空间是否是只读。当前版本值为null。 condition_type character varying(22) 条件类型,当前版本仅支持最后修改时间。 condition_days numeric 条件天数。 custom_function character varying(128) 自定义函数名称。当前版本值为null。 policy_subtype character varying(10) 策略子类型。当前版本值为null。 action_clause clob 策略执行时可以自动执行的文本。当前版本值为null。 tier_to character varying(10) 迁移动作的目的地类型。当前版本值为null。 node_name name 数据来源节点的名称。 父主题: OLTP表压缩
  • 示例 创建一个名为seq1的递增序列,从101开始,步长为10。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 gaussdb=# CREATE SEQUENCE seq1 START 101 INCREMENT 10; --从序列中选出下一个数字: gaussdb=# SELECT nextval('seq1'); nextval --------- 101 (1 row) gaussdb=# SELECT nextval('seq1'); nextval --------- 111 --删除序列。 gaussdb=# DROP SEQUENCE seq1; 表自增列的一种实现。 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 --创建表。 gaussdb=# CREATE TABLE test1(id int PRIMARY KEY, name varchar(20)); --创建与表关联的序列。 gaussdb=# CREATE SEQUENCE test_seq2 START 1 NO CYCLE OWNED BY test1.id; --设置字段的默认值。 gaussdb=# ALTER TABLE test1 ALTER COLUMN id SET DEFAULT nextval('test_seq2'::regclass); -- 插入数据。 gaussdb=# INSERT INTO test1 (name) values ('Joe'),('Scott'),('Ben'); --查询表的数据。 gaussdb=# SELECT * FROM test1; id | name ----+------- 1 | Joe 2 | Scott 3 | Ben (3 rows) --删除序列和表。 gaussdb=# DROP SEQUENCE test_seq2 CASCADE; gaussdb=# DROP TABLE test1; 序列的循环。 --创建一个递增序列seq_test1,最大值为3,且可以循环。 gaussdb=# CREATE SEQUENCE seq_test1 START 1 MAXVALUE 3 CYCLE; --建表,并插数据。 gaussdb=# CREATE TABLE tbl_test1( c1 int DEFAULT nextval('seq_test1'), c2 varchar ); gaussdb=# INSERT INTO tbl_test1 (c2) values ('test'); gaussdb=# INSERT INTO tbl_test1 (c2) values ('test'); gaussdb=# INSERT INTO tbl_test1 (c2) values ('test'); gaussdb=# INSERT INTO tbl_test1 (c2) values ('test'); gaussdb=# INSERT INTO tbl_test1 (c2) values ('test'); --查询表数据,当递增序列seq_test的值达到最大值后会重新从最小值开始。 gaussdb=# SELECT * FROM tbl_test1; c1 | c2 ----+------ 1 | test 2 | test 3 | test 1 | test 2 | test (5 rows) --删除表和序列。 gaussdb=# DROP TABLE tbl_test1; gaussdb=# DROP SEQUENCE seq_test1;
  • 注意事项 SEQUENCE是一个存放等差数列的特殊表。这个表没有实际意义,通常用于为行或者表生成唯一的标识符。 如果给出一个模式名,则该序列就在给定的模式中创建,否则会在当前模式中创建。序列名必须和同一个模式中的其他序列、表、索引、视图或外表的名称不同。 创建序列后,在表中使用序列的nextval()函数和generate_series(1,N)函数对表插入数据,请保证nextval的可调用次数大于等于N+1次,否则会因为generate_series()函数会调用N+1次而导致报错。 SEQUENCE默认最大值为2^63-1,如果使用了Large标识则最大值可以支持到2^127-1。 被授予CREATE ANY SEQUENCE权限的用户,可以在public模式和用户模式下创建序列。
  • 语法格式 CREATE [ LARGE | TEMPORARY | TEMP ] SEQUENCE [ IF NOT EXISTS ] name [ INCREMENT [ BY ] increment ] [ MINVALUE minvalue | NO MINVALUE | NOMINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE | NOMAXVALUE] [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE | NOCYCLE ] [ OWNED BY { table_name.column_name | NONE } ];
  • 参数说明 LARGE | TEMPORARY | TEMP 临时序列关键字。 创建临时序列需要数据库启用PG兼容。 临时序列的生命周期是会话级的,临时序列对象是会话隔离的。序列在会话退出后会自动删除清理。 临时序列存在于一个特殊的模式中,每个会话有且仅有一个临时模式,若提前创建了临时模式,则在创建临时序列时可给出模式名,若未提前创建,则在创建临时序列时不能给出模式名,并且每个会话只能访问自己的临时模式中的对象,无法访问其他会话的临时模式中的对象。如果访问的临时模式不属于本会话,会报告错误。 当临时序列存在时,已有的同名永久序列(在这个会话中) 会变得不可见,不过可以用模式限定的名称来引用同名永久序列。 IF NOT EXISTS 如果指定IF NOT EXISTS关键字,创建序列前会在当前SCHEMA中查找是否已有名字相同的relation。若已有同名relation存在,则不会新建,返回NOTICE提示。未指定IF NOT EXISTS关键字时,若SCHEMA中存在同名relation,返回ERROR告警。 name 将要创建的序列名称。 取值范围: 仅可以使用小写字母(a~z)、 大写字母(A~Z)、数字和特殊字符“#” 、“_”、“$”的组合。 increment 可选。指定序列的步长。一个正数将生成一个递增的序列,一个负数将生成一个递减的序列。 缺省值为1。 在B兼容模式下,步长为浮点数时会自动转为整型。其他模式下,该参数不支持输入浮点数。 MINVALUE minvalue | NO MINVALUE| NOMINVALUE 可选。执行序列的最小值。如果没有声明minvalue或者声明了NO MINVALUE,则递增序列的缺省值为1,递减序列的缺省值为-263-1。NOMINVALUE等价于NO MINVALUE。 MAXVALUE maxvalue | NO MAXVALUE| NOMAXVALUE 可选。执行序列的最大值。如果没有声明maxvalue或者声明了NO MAXVALUE,则递增序列的缺省值为263-1,递减序列的缺省值为-1。NOMAXVALUE等价于NO MAXVALUE。 start 可选。指定序列的起始值。缺省值:对于递增序列为minvalue,递减序列为maxvalue。 cache 可选。为了快速访问,而在内存中预先存储序列号的个数。 缺省值为1,表示一次只能生成一个值,也就是没有缓存。 不建议同时定义cache和maxvalue或minvalue。因为定义cache后不能保证序列的连续性,可能会产生空洞,造成序列号段浪费。 [ NO ] CYCLE | NOCYCLE 可选。用于使序列达到maxvalue或者minvalue后可循环并继续下去。 如果声明了NO CYCLE,则在序列达到其最大值后任何对nextval的调用都会返回一个错误。 NOCYCLE的作用等价于NO CYCLE。缺省值为NO CYCLE。 若定义序列为CYCLE,则不能保证序列的唯一性。 OWNED BY 可选。将序列和一个表的指定字段进行关联。这样,在删除该字段或其所在表的时候会自动删除已关联的序列。关联的表和序列的所有者必须是同一个用户,并且在同一个模式中。需要注意的是,通过指定OWNED BY,仅仅是建立了表的对应列和SEQUENCE之间关联关系,并不会在插入数据时在该列上产生自增序列。 缺省值为OWNED BY NONE,表示不存在这样的关联。 通过OWNED BY创建的SEQUENCE不建议用于其他表,如果希望多个表共享SEQUENCE,该SEQUENCE不应该从属于特定表。
  • LOCAL_REL_IOSTAT 获取当前节点中数据文件I/O状态的累计值,显示为所有数据文件I/O状态的总和,如表1所示。 表1 LOCAL_REL_IOSTAT字段 名称 类型 描述 phyrds bigint 读物理文件的数目。 phywrts bigint 写物理文件的数目。 phyblkrd bigint 读物理文件的块的数目。 phyblkwrt bigint 写物理文件的块的数目。 dbid oid 在 分布式数据库 中,当前该值始终为0。 父主题: File
  • GS_AUDITING GS_AUDITING视图显示对数据库相关操作的所有审计信息。需要有系统管理员或安全策略管理员权限才可以访问此视图。 表1 GS_AUDITING字段 名称 类型 描述 polname name 策略名称,需要唯一,不可重复。 pol_type text 审计策略类型。取值范围: access:审计DML操作。 privilege:审计DDL操作。 polenabled boolean 用来表示策略启动开关。 t(true):启动。 f(false):不启动。 access_type name DML数据库操作相关类型,例如SELECT、INSERT、DELETE等;或是DDL数据库操作相关类型,例如CREATE、ALTER、DROP等。 label_name name 资源标签名称。对应系统表gs_auditing_policy中的polname字段。 priv_object text 数据库资产的路径。 filter_name text 过滤条件的逻辑字符串。 父主题: 审计
  • 搜索路径 搜索路径定义在GUC参数search_path中,参数取值形式为采用逗号分隔的Schema名称列表。如果创建对象时未指定目标Schema,则该对象将会被添加到搜索路径中列出的第一个Schema中。当不同Schema中存在同名的对象时,查询对象未指定Schema的情况下,将从搜索路径中包含该对象的第一个Schema中返回对象。 要查看当前搜索路径,请使用SHOW。 1 2 3 4 5 gaussdb=# SHOW SEARCH_PATH; search_path ---------------- "$user",public (1 row) search_path参数的默认值为:"$user",public。$user表示与当前会话用户名同名的Schema名,如果这样的模式不存在,$user将被忽略。所以默认情况下,用户连接数据库后,如果数据库下存在同名Schema,则对象会添加到同名Schema下,否则对象被添加到Public Schema下。 更改当前会话的默认Schema,请使用SET命令。 执行如下命令将搜索路径设置为myschema, public,首先搜索myschema,然后搜索public。 1 2 gaussdb=# SET SEARCH_PATH TO myschema, public; SET
  • 创建、修改和删除Schema 创建Schema,请参见CREATE SCHEMA。默认初始用户和系统管理员可以创建Schema,其他用户需要具备数据库的CREATE权限才可以在该数据库中创建Schema,赋权方式请参见GRANT中将数据库的访问权限赋予指定的用户或角色中的语法。 更改Schema名称或者所有者,请参见ALTER SCHEMA。Schema所有者可以更改Schema。 删除Schema及其对象,请参见DROP SCHEMA。Schema所有者可以删除Schema。 在Schema内创建表,请以schema_name.table_name格式创建表。不指定schema_name时,对象默认创建到搜索路径中的第一个Schema内。 查看Schema所有者,请对系统表PG_NAMESPACE和系统视图GS_USER执行如下关联查询。语句中的schema_name请替换为实际要查找的Schema名称。 1 gaussdb=# SELECT s.nspname,u.usename AS nspowner FROM pg_namespace s, gs_user u WHERE nspname='schema_name' AND s.nspowner = u.usesysid; 查看所有Schema的列表,请查询PG_NAMESPACE系统表。 1 gaussdb=# SELECT * FROM pg_namespace; 查看属于某Schema下的表列表,请查询系统视图PG_TABLES。例如,以下查询会返回Schema PG_CATALOG中的表列表。 1 gaussdb=# SELECT distinct(tablename),schemaname from pg_tables where schemaname = 'pg_catalog';
  • SUMMARY_USER_LOGIN SUMMARY_USER_LOGIN用来记录数据库主节点上用户登录和退出次数的相关信息,如表1所示。多租场景下,non-PDB访问该视图时返回全部信息,PDB访问该视图时仅返回该PDB相关信息。 表1 SUMMARY_USER_LOGIN字段 名称 类型 描述 node_name text 节点名称。 user_name text 用户名称。 user_id integer 用户oid(同pg_authid中的oid字段)。 login_counter bigint 登录次数。 logout_counter bigint 退出次数。 dbid oid 用户登录的数据库id。 父主题: Utility
  • 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 --开始。 gaussdb=# BEGIN; --准备标识符为的trans_test的事务。 gaussdb=# PREPARE TRANSACTION 'trans_test'; --创建表。 gaussdb=# CREATE TABLE item1(id int); --提交标识符为的trans_test的事务。 gaussdb=# COMMIT PREPARED 'trans_test'; --删除表。 gaussdb=# DROP TABLE item1;
  • GLOBAL_ADIO_COMPLETER_STATUS GLOBAL_ADIO_COMPLETER_STATUS视图显示集群所有实例中AIO Completer线程的相关统计信息,如表1所示。该视图需在CN上查询,在DN上查询报错。 表1 GLOBAL_ADIO_COMPLETER_STATUS字段 参数 类型 描述 node_name text 实例名称。 tid bigint AIO Completer线程id。 thread_type text AIO Completer线程类型(读/写)。 aio_submitted_num bigint AIO Completer线程已提交的异步I/O请求数量。 aio_completed_num bigint AIO Completer线程已完成的异步I/O请求数量。 aio_incompleted_num bigint AIO Completer线程未完成的异步I/O请求数量。 slot_count_left bigint 空闲slot数量。 父主题: Utility
  • 示例 EXEC SQL SET DESCRIPTOR indesc COUNT = 1; EXEC SQL SET DESCRIPTOR indesc VALUE 1 DATA = 2; EXEC SQL SET DESCRIPTOR indesc VALUE 1 DATA = :val1; EXEC SQL SET DESCRIPTOR indesc VALUE 2 INDICATOR = :val1, DATA = 'some string'; EXEC SQL SET DESCRIPTOR indesc VALUE 2 INDICATOR = :val2null, DATA = :val2;
  • MY_CONS_COLUMNS MY_CONS_COLUMNS视图显示当前用户下表中主键约束列的信息。该视图同时存在于PG_CATALOG和SYS Schema下。具体字段信息如表1所示。 表1 MY_CONS_COLUMNS字段 名称 类型 描述 table_name character varying(64) 约束相关的表名。 column_name character varying(64) 约束相关的列名。 constraint_name character varying(64) 约束名。 owner character varying(64) 约束创建者。 position smallint 表中列的位置。 父主题: 其他系统视图
  • GS_SESSION_MEMORY GS_SESSION_MEMORY视图显示Session级别的内存使用情况,包含执行作业在数据节点上gaussdb线程和Stream线程分配的所有内存。当GUC参数enable_memory_limit的值为off时,本视图不可用。多租场景下,non-PDB访问该视图时返回全部信息,PDB访问该视图时返回空列表。 表1 GS_SESSION_MEMORY字段 名称 类型 描述 sessid text 线程启动时间+线程标识。 init_mem integer 当前正在执行作业进入执行器前已分配的内存,单位MB。 used_mem integer 当前正在执行作业已分配的内存,单位MB。 peak_mem integer 当前正在执行作业已分配的内存峰值,单位MB。 父主题: 其他系统视图
  • PG_OPFAMILY PG_OPFAMILY系统表定义操作符族。 每个操作符族是一个操作符和相关支持例程的集合,其中的例程实现为一个特定的索引访问方式指定的语义。另外,族中的操作符都是“兼容的”,通过由访问方式指定的方法。操作符族的概念允许交叉数据类型操作符和索引一起使用,并且合理的使用访问方式的语义知识。 表1 PG_OPFAMILY字段 名称 类型 引用 描述 oid oid - 行标识符(隐含字段,必须明确选择)。 opfmethod oid PG_AM.oid 操作符族使用的索引方法。 opfname name - 这个操作符族的名称。 opfnamespace oid PG_NAMESPACE.oid 这个操作符的名称空间。 opfowner oid PG_AUTHID.oid 操作符族的所有者。 定义一个操作符族的大多数信息不在它的PG_OPFAMILY行里面,而是在相关的行PG_AMOP,PG_AMPROC和PG_OPCLASS里。 父主题: 其他系统表
  • 示例 --创建用户jim,登录密码为********。 gaussdb=# CREATE USER jim PASSWORD '********'; --创建用户kim,登录密码为********。 gaussdb=# CREATE USER kim IDENTIFIED BY '********'; --创建用户tom,登录密码为********。 gaussdb=# CREATE USER TOM PASSWORD '**********'; --创建用户TOM,登录密码为********。 gaussdb=# CREATE USER "TOM" PASSWORD '**********'; --如果需要创建具有“创建数据库”权限的用户,则需要加CREATEDB关键字。 gaussdb=# CREATE USER dim CREATEDB PASSWORD '********'; --查看用户dim的权限。 gaussdb=# \du dim List of roles Role name | Attributes | Member of -----------+------------+----------- dim | Create DB | {} (可以看到用户dim具有CREATEDB的权限) --修改用户jim的登录密码。 gaussdb=# ALTER USER jim IDENTIFIED BY '**********' REPLACE '********'; --为用户jim追加CREATEROLE权限。 gaussdb=# ALTER USER jim CREATEROLE; --查看用户jim追加的CREATEROLE权限。 gaussdb=# \du jim List of roles Role name | Attributes | Member of -----------+-------------+----------- jim | Create role | {} --将enable_seqscan的值设置为on, 设置成功后,在下一会话中生效。 gaussdb=# ALTER USER jim SET enable_seqscan TO on; --重置jim的enable_seqscan参数。 gaussdb=# ALTER USER jim RESET enable_seqscan; --锁定jim账户。 gaussdb=# ALTER USER jim ACCOUNT LOCK; --解锁jim账户。 gaussdb=# ALTER USER jim ACCOUNT UNLOCK; --修改用户密码。 gaussdb=# ALTER USER dim WITH PASSWORD '********'; --修改用户名。 gaussdb=# ALTER USER dim RENAME TO lisa; --创建具有OPRADMIN权限的用户user1和具有SYSADMIN权限的用户user2。 gaussdb=# CREATE USER user1 WITH OPRADMIN PASSWORD '********'; gaussdb=# CREATE USER user2 WITH SYSADMIN PASSWORD '********'; --查看权限。 gaussdb=# \du user1 List of roles Role name | Attributes | Member of -----------+-----------------------------+----------- user1 | Operatoradmin | {} gaussdb=# \du user2 List of roles Role name | Attributes | Member of -----------+------------------------+----------- user2 | Sysadmin | {} --创建具有CREATEDB权限的角色user3。 gaussdb=# CREATE USER user3 CREATEDB PASSWORD '********'; CREATE ROLE --查看权限。 gaussdb=# \du user3 List of roles Role name | Attributes | Member of -----------+-------------------------+----------- user3 | Create DB | {} --使用ADMIN子句创建新角色user4。 gaussdb=# CREATE USER user4 WITH CREATEDB ADMIN user3 PASSWORD '********'; CREATE ROLE --查看权限。 gaussdb=# \du user3 List of roles Role name | Attributes | Member of -----------+-------------------------+----------- user3 | Create DB | {user4} gaussdb=# \du user4 List of roles Role name | Attributes | Member of -----------+-------------------------+----------- user4 | Create DB | {} --删除角色。 gaussdb=# DROP USER user1; gaussdb=# DROP USER user2; gaussdb=# DROP USER user3; gaussdb=# DROP USER user4; --三权分立配置:设置参数enableSeparationOfDuty为on,则会开启三权分立配置,限制系统管理员的权限。不允许系统管理员创建或更改用户配置,这样可以有效控制系统管理员访问用户私有数据。 --查看三权分立是否打开。 gaussdb=# SHOW enableSeparationOfDuty; enableSeparationOfDuty ------------------------ off (1 row) --执行以下语句修改参数。 gs_guc set -Z coordinator -Z datanode -N all -I all -c "enableSeparationOfDuty = on" --设置成功后,重启数据库生效。 gs_om -t stop gs_om -t start --再次查看三权分立。 gaussdb=# SHOW enableSeparationOfDuty; enableSeparationOfDuty ------------------------ on (1 row) --删除用户。 gaussdb=# DROP USER kim CASCADE; gaussdb=# DROP USER jim CASCADE; gaussdb=# DROP USER lisa CASCADE; gaussdb=# DROP USER TOM CASCADE; gaussdb=# DROP USER "TOM" CASCADE;
  • 语法格式 CREATE USER user_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { PASSWORD | IDENTIFIED BY } { 'password' [EXPIRED] | DISABLE }; 其中option子句用于设置权限及属性等信息。 {SYSADMIN | NOSYSADMIN} | {MONADMIN | NOMONADMIN} | {OPRADMIN | NOOPRADMIN} | {POLADMIN | NOPOLADMIN} | {AUDITADMIN | NOAUDITADMIN} | {CREATEDB | NOCREATEDB} | {USEFT | NOUSEFT} | {CREATEROLE | NOCREATEROLE} | {INHERIT | NOINHERIT} | {LOGIN | NOLOGIN} | {REPLICATION | NOREPLICATION} | {PERSISTENCE | NOPERSISTENCE} | CONNECTION LIMIT connlimit | VALID BEGIN 'timestamp' | VALID UNTIL 'timestamp' | RESOURCE POOL 'respool' | USER GROUP 'groupuser' | PERM SPACE 'spacelimit' | TEMP SPACE 'tmpspacelimit' | SPILL SPACE 'spillspacelimit' | NODE GROUP logic_cluster_name | IN ROLE role_name [, ...] | IN GROUP role_name [, ...] | ROLE role_name [, ...] | ADMIN role_name [, ...] | USER role_name [, ...] | SYSID uid | DEFAULT TABLESPACE tablespace_name | PROFILE DEFAULT | PROFILE profile_name | PGUSER
  • PG_TIMEZONE_ABBREVS PG_TIMEZONE_ABBREVS视图显示所有可用时区的信息。具体字段信息如表1所示。 表1 PG_TIMEZONE_ABBREVS字段 名称 类型 描述 abbrev text 时区名缩写。 utc_offset interval 相对于UTC的偏移量。 is_dst boolean 如果当前正实行夏令时则为TRUE,否则为FALSE。 父主题: 其他系统视图
  • macaddr函数 函数trunc(macaddr)返回一个MAC地址,该地址的最后三个字节设置为零。 trunc(macaddr) 描述:把后三个字节置为零。 返回类型:macaddr 示例: 1 2 3 4 5 gaussdb=# SELECT trunc(macaddr '12:34:56:78:90:ab') AS RESULT; result ------------------- 12:34:56:00:00:00 (1 row)
  • cidr和inet函数 函数abbrev,host,text主要是为了提供可选的显示格式。 abbrev(inet) 描述:缩写显示格式文本。 返回类型:text 示例: 1 2 3 4 5 gaussdb=# SELECT abbrev(inet '10.1.0.0/16') AS RESULT; result ------------- 10.1.0.0/16 (1 row) abbrev(cidr) 描述:缩写显示格式文本。 返回类型:text 示例: 1 2 3 4 5 gaussdb=# SELECT abbrev(cidr '10.1.0.0/16') AS RESULT; result --------- 10.1/16 (1 row) broadcast(inet) 描述:网络广播地址。 返回类型:inet 示例: 1 2 3 4 5 gaussdb=# SELECT broadcast('192.168.1.5/24') AS RESULT; result ------------------ 192.168.1.255/24 (1 row) family(inet) 描述:抽取地址族,4为IPv4,6为IPv6。 返回类型:int 示例: 1 2 3 4 5 gaussdb=# SELECT family('127.0.0.1') AS RESULT; result -------- 4 (1 row) host(inet) 描述:将主机地址类型抽出为文本。 返回类型:text 示例: 1 2 3 4 5 gaussdb=# SELECT host('192.168.1.5/24') AS RESULT; result ------------- 192.168.1.5 (1 row) hostmask(inet) 描述:为网络构造主机掩码。 返回类型:inet 示例: 1 2 3 4 5 gaussdb=# SELECT hostmask('192.168.23.20/30') AS RESULT; result --------- 0.0.0.3 (1 row) masklen(inet) 描述:抽取子网掩码长度。 返回类型:int 示例: 1 2 3 4 5 gaussdb=# SELECT masklen('192.168.1.5/24') AS RESULT; result -------- 24 (1 row) netmask(inet) 描述:为网络构造子网掩码。 返回类型:inet 示例: 1 2 3 4 5 gaussdb=# SELECT netmask('192.168.1.5/24') AS RESULT; result --------------- 255.255.255.0 (1 row) network(inet) 描述:抽取地址的网络部分。 返回类型:cidr 示例: 1 2 3 4 5 gaussdb=# SELECT network('192.168.1.5/24') AS RESULT; result ---------------- 192.168.1.0/24 (1 row) set_masklen(inet, int) 描述:为inet数值设置子网掩码长度。 返回类型:inet 示例: 1 2 3 4 5 gaussdb=# SELECT set_masklen('192.168.1.5/24', 16) AS RESULT; result ---------------- 192.168.1.5/16 (1 row) set_masklen(cidr, int) 描述:为cidr数值设置子网掩码长度。 返回类型:cidr 示例: 1 2 3 4 5 gaussdb=# SELECT set_masklen('192.168.1.0/24'::cidr, 16) AS RESULT; result ---------------- 192.168.0.0/16 (1 row) text(inet) 描述:把IP地址和掩码长度抽取为文本。 返回类型:text 示例: 1 2 3 4 5 gaussdb=# SELECT text(inet '192.168.1.5') AS RESULT; result ---------------- 192.168.1.5/32 (1 row)
共100000条