华为云用户手册

  • GLOBAL_CKPT_STATUS GLOBAL_CKPT_STATUS视图用于显示数据库所有实例的检查点信息和各类日志刷页情况。 表1 GLOBAL_CKPT_STATUS字段 名称 类型 描述 node_name text 实例名称。 ckpt_redo_point text 当前实例的检查点。 ckpt_clog_flush_num bigint 从启动到当前时间clog刷盘页面数。 ckpt_csnlog_flush_num bigint 从启动到当前时间csnlog刷盘页面数。 ckpt_multixact_flush_num bigint 从启动到当前时间multixact刷盘页面数。 ckpt_predicate_flush_num bigint 从启动到当前时间predicate刷盘页面数。 ckpt_twophase_flush_num bigint 从启动到当前时间twophase刷盘页面数。 父主题: Utility
  • PG_DATABASE PG_DATABASE系统表存储关于可用数据库的信息。 表1 PG_DATABASE字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 datname name 数据库名称。 datdba oid 数据库所有人,通常为其创建者。 encoding integer 数据库的字符编码方式。 datcollate name 数据库使用的排序顺序。 datctype name 数据库使用的字符分类。 datistemplate boolean 是否允许作为模板数据库。 datallowconn boolean 如果为真,表示用户可以连接到这个数据库。如果为假,则没有用户可以连接到这个数据库。这个字段用于保护template0数据库不被更改。 datconnlimit integer 该数据库上允许的最大并发连接数,-1表示无限制。 datlastsysoid oid 数据库里最后一个系统OID 。 datfrozenxid xid32 用于跟踪该数据库是否需要为了防止事务ID重叠而进行清理。当前版本该字段已经废弃使用,为保持前向兼容,保留此字段,新增datfrozenxid64用于记录此信息。 dattablespace oid 数据库的缺省表空间。 datcompatibility name 数据库兼容模式,当前支持四种兼容模式:A、B、C、PG,分别表示兼容O、MY、TD和POSTGRES。 datacl aclitem[] 访问权限。 datfrozenxid64 xid 用于跟踪该数据库是否需要为了防止事务ID重叠而进行清理。 datminmxid xid 该数据库中所有在这个之前的多事务ID已经被一个事务ID替换。这用于跟踪该数据库是否需要为了防止事务ID重叠或者允许收缩pg_clog而进行清理。它是此数据库中所有表的PG_CLASS中relminmxid的最小值。 父主题: 系统表
  • GLOBAL_STAT_XACT_SYS_TABLES 显示各节点命名空间中系统表的事务状态信息。 表1 GLOBAL_STAT_XACT_SYS_TABLES字段 名称 类型 描述 node_name name 节点名称。 relid oid 表的OID。 schemaname name 此表的模式名。 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
  • STAT_BAD_BLOCK 获得当前节点表、索引等文件的读取失败信息。 表1 STAT_BAD_BLOCK字段 名称 类型 描述 nodename text 节点名称。 databaseid integer database的oid。 tablespaceid integer tablespace的oid。 relfilenode integer relation的file node。 bucketid smallint 一致性hash bucket ID。 forknum integer fork编号。 error_count integer error的数量。 first_time timestamp with time zone 页面损坏第一次出现的时间。 last_time timestamp with time zone 页面损坏最后出现的时间。 父主题: Object
  • 示例 示例:将系统权限授权给用户或者角色。 创建名为joe的用户,并将sysadmin权限授权给他。 openGauss=# CREATE USER joe PASSWORD '********'; openGauss=# GRANT ALL PRIVILEGES TO joe; 授权成功后,用户joe会拥有sysadmin的所有权限。 示例:将对象权限授权给用户或者角色。 撤销joe用户的sysadmin权限,然后将模式tpcds的使用权限和表tpcds.reason的所有权限授权给用户joe。 openGauss=# CREATE SCHEMA tpcds; openGauss=# CREATE TABLE tpcds.reason ( r_reason_sk INTEGER NOT NULL, r_reason_id CHAR(16) NOT NULL, r_reason_desc VARCHAR(20) ); openGauss=# REVOKE ALL PRIVILEGES FROM joe; openGauss=# GRANT USAGE ON SCHEMA tpcds TO joe; openGauss=# GRANT ALL PRIVILEGES ON tpcds.reason TO joe; 授权成功后,joe用户就拥有了tpcds.reason表的所有权限,包括增删改查等权限。 将tpcds.reason表中r_reason_sk、r_reason_id、r_reason_desc列的查询权限,r_reason_desc的更新权限授权给joe。 openGauss=# GRANT select (r_reason_sk,r_reason_id,r_reason_desc),update (r_reason_desc) ON tpcds.reason TO joe; 授权成功后,用户joe对tpcds.reason表中r_reason_sk,r_reason_id、r_reason_desc的查询权限会立即生效。如果joe用户需要拥有将这些权限授权给其他用户的权限,可以通过以下语法对joe用户进行授权。 openGauss=# GRANT select (r_reason_sk, r_reason_id) ON tpcds.reason TO joe WITH GRANT OPTION; 将数据库的连接权限授权给用户joe,并给予其在 GaussDB 中创建schema的权限,而且允许joe将此权限授权给其他用户。 openGauss=# CREATE DATABASE openGauss; openGauss=# GRANT create,connect on database openGauss TO joe WITH GRANT OPTION; 创建角色tpcds_manager,将模式tpcds的访问权限授权给角色tpcds_manager,并授予该角色在tpcds下创建对象的权限,不允许该角色中的用户将权限授权给其他人。 openGauss=# CREATE ROLE tpcds_manager PASSWORD '********'; openGauss=# GRANT USAGE,CREATE ON SCHEMA tpcds TO tpcds_manager; 将表空间tpcds_tbspc的所有权限授权给用户joe,但用户joe无法将权限继续授予其他用户。 openGauss=# CREATE TABLESPACE tpcds_tbspc RELATIVE LOCATION 'tablespace/tablespace_1'; openGauss=# GRANT ALL ON TABLESPACE tpcds_tbspc TO joe; 示例:将用户或者角色的权限授权给其他用户或角色。 创建角色manager,将joe的权限授权给manager,并允许该角色将权限授权给其他人。 openGauss=# CREATE ROLE manager PASSWORD '********'; openGauss=# GRANT joe TO manager WITH ADMIN OPTION; 创建用户senior_manager,将用户manager的权限授权给该用户。 openGauss=# CREATE ROLE senior_manager PASSWORD '********'; openGauss=# GRANT manager TO senior_manager; 撤销权限,并清理用户。 openGauss=# REVOKE joe FROM manager; openGauss=# REVOKE manager FROM senior_manager; openGauss=# DROP USER manager; 示例:撤销上述授予的权限,并清理角色和用户。 openGauss=# REVOKE ALL PRIVILEGES ON tpcds.reason FROM joe; openGauss=# REVOKE ALL PRIVILEGES ON SCHEMA tpcds FROM joe; openGauss=# REVOKE ALL ON TABLESPACE tpcds_tbspc FROM joe; openGauss=# DROP TABLESPACE tpcds_tbspc; openGauss=# REVOKE USAGE,CREATE ON SCHEMA tpcds FROM tpcds_manager; openGauss=# DROP ROLE tpcds_manager; openGauss=# DROP ROLE senior_manager; openGauss=# DROP USER joe CASCADE; openGauss=# DROP TABLE tpcds.reason; openGauss=# DROP SCHEMA tpcds CASCADE;
  • 参数说明 GRANT的权限分类如下所示。 SELECT 允许对指定的表、视图、序列执行SELECT命令,update或delete时也需要对应字段上的select权限。 INSERT 允许对指定的表执行INSERT命令。 UPDATE 允许对声明的表中任意字段执行UPDATE命令。通常,update命令也需要select权限来查询出哪些行需要更新。SELECT… FOR UPDATE和SELECT… FOR SHARE除了需要SELECT权限外,还需要UPDATE权限。 DELETE 允许执行DELETE命令删除指定表中的数据。通常,delete命令也需要select权限来查询出哪些行需要删除。 TRUNCATE 允许执行TRUNCATE语句删除指定表中的所有记录。 REFEREN CES 创建一个外键约束,必须拥有参考表和被参考表的REFERENCES权限。 CREATE 对于数据库,允许在数据库里创建新的模式。 对于模式,允许在模式中创建新的对象。如果要重命名一个对象,用户除了必须是该对象的所有者外,还必须拥有该对象所在模式的CREATE权限。 对于表空间,允许在表空间中创建表,允许在创建数据库和模式的时候把该表空间指定为缺省表空间。 CONNECT 允许用户连接到指定的数据库。 EXECUTE 允许使用指定的函数,以及利用这些函数实现的操作符。 USAGE 对于过程语言,允许用户在创建函数的时候指定过程语言。 对于模式,USAGE允许访问包含在指定模式中的对象,若没有该权限,则只能看到这些对象的名称。 对于序列,USAGE允许使用nextval函数。 ALTER 允许用户修改指定对象的属性,但不包括修改对象的所有者和修改对象所在的模式。 DROP 允许用户删除指定的对象。 COMMENT 允许用户定义或修改指定对象的注释。 INDEX 允许用户在指定表上创建索引,并管理指定表上的索引,还允许用户对指定表执行REINDEX和CLUSTER操作。 VACUUM 允许用户对指定的表执行ANALYZE和VACUUM操作。 ALL PRIVILEGES 一次性给指定用户/角色赋予所有可赋予的权限。只有系统管理员有权执行GRANT ALL PRIVILEGES。 GRANT的参数说明如下所示。 role_name 已存在用户名称。 table_name 已存在表名称。 column_name 已存在字段名称。 schema_name 已存在模式名称。 database_name 已存在数据库名称。 function_name 已存在函数名称。 procedure_name 已存在存储过程名称。 sequence_name 已存在序列名称。 domain_name 已存在域类型名称。 fdw_name 已存在外部数据包名称。 lang_name 已存在语言名称。 type_name 已存在类型名称。 argmode 参数模式。 取值范围:字符串,要符合标识符命名规范。 arg_name 参数名称。 取值范围:字符串,要符合标识符命名规范。 arg_type 参数类型。 取值范围:字符串,要符合标识符命名规范。 loid 包含本页的大对象的标识符。 取值范围:字符串,要符合标识符命名规范。 tablespace_name 表空间名称。 directory_name 目录名称。 取值范围:字符串,要符合标识符命名规范。 WITH GRANT OPTION 如果声明了WITH GRANT OPTION,则被授权的用户也可以将此权限赋予他人,否则就不能授权给他人。这个选项不能赋予PUBLIC。 非对象所有者给其他用户授予对象权限时,命令按照以下规则执行: 如果用户没有该对象上指定的权限,命令立即失败。 如果用户有该对象上的部分权限,则GRANT命令只授予他有授权选项的权限。 如果用户没有可用的授权选项,GRANT ALL PRIVILEGES形式将发出一个警告信息,其他命令形式将发出在命令中提到的且没有授权选项的相关警告信息。 数据库系统管理员可以访问所有对象,而不会受对象的权限设置影响。这个特点类似UNIX系统的root的权限。和root一样,除了必要的情况外,建议不要总是以系统管理员身份进行操作。
  • 功能描述 对角色和用户进行授权操作。 使用GRANT命令进行用户授权包括以下场景: 将系统权限授权给角色或用户 系统权限又称为用户属性,包括SYSADMIN、CREATEDB、CREATEROLE、AUDITADMIN、MONADMIN、OPRADMIN、POLADMIN、INHERIT、REPLICATION、VCADMIN和 LOG IN等。 系统权限一般通过CREATE/ALTER ROLE语法来指定。其中,SYSADMIN权限可以通过GRANT/REVOKE ALL PRIVILEGE授予或撤销。但系统权限无法通过ROLE和USER的权限被继承,也无法授予PUBLIC。 将数据库对象授权给角色或用户 将数据库对象(表、视图、指定字段、数据库、函数、模式、表空间等)的相关权限授予特定角色或用户; GRANT命令将数据库对象的特定权限授予一个或多个角色。这些权限会追加到已有的权限上。 关键字PUBLIC表示该权限要赋予所有角色,包括以后创建的用户。PUBLIC可以看做是一个隐含定义好的组,它总是包括所有角色。任何角色或用户都将拥有通过GRANT直接赋予的权限和所属的权限,再加上PUBLIC的权限。 如果声明了WITH GRANT OPTION,则被授权的用户也可以将此权限赋予他人,否则就不能授权给他人。这个选项不能赋予PUBLIC,这是GaussDB特有的属性。 GaussDB会将某些类型的对象上的权限授予PUBLIC。默认情况下,对表、表字段、序列、外部数据源、外部服务器、模式或表空间对象的权限不会授予PUBLIC,而以下这些对象的权限会授予PUBLIC:数据库的CONNECT权限和CREATE TEMP TABLE权限、函数的EXECUTE特权、语言和数据类型(包括域)的USAGE特权。对象拥有者可以撤销默认授予PUBLIC的权限并专门授予权限给其他用户。为了更安全,建议在同一个事务中创建对象并设置权限,这样其他用户就没有时间窗口使用该对象。另外可参考安全加固指南的权限控制章节,对PUBLIC用户组的权限进行限制。这些初始的默认权限可以使用ALTER DEFAULT PRIVILEGES命令修改。 对象的所有者缺省具有该对象上的所有权限,出于安全考虑所有者可以舍弃部分权限,但ALTER、DROP、COMMENT、INDEX、VACUUM以及对象的可再授予权限属于所有者固有的权限,隐式拥有。 将角色或用户的权限授权给其他角色或用户 将一个角色或用户的权限授予一个或多个其他角色或用户。在这种情况下,每个角色或用户都可视为拥有一个或多个数据库权限的集合。 当声明了WITH ADMIN OPTION,被授权的用户可以将该权限再次授予其他角色或用户,以及撤销所有由该角色或用户继承到的权限。当授权的角色或用户发生变更或被撤销时,所有继承该角色或用户权限的用户拥有的权限都会随之发生变更。 数据库系统管理员可以给任何角色或用户授予/撤销任何权限。拥有CREATEROLE权限的角色可以赋予或者撤销任何非系统管理员角色的权限。 将ANY权限授予给角色或用户 将ANY权限授予特定的角色和用户,ANY权限的取值范围参见语法格式。当声明了WITH ADMIN OPTION,被授权的用户可以将该ANY权限再次授予其他角色/用户,或从其他角色/用户处回收该ANY权限。ANY权限可以通过角色被继承,但不能赋予PUBLIC。初始用户和三权分立关闭时的系统管理员用户可以给任何角色/用户授予或撤销ANY权限。 目前支持以下ANY权限:CREATE ANY TABLE、ALTER ANY TABLE、DROP ANY TABLE、SELECT ANY TABLE、INSERT ANY TABLE、UPDATE ANY TABLE、DELETE ANY TABLE、CREATE ANY SEQUENCE、CREATE ANY INDEX、CREATE ANY FUNCTION、EXECUTE ANY FUNCTION、 CREATE ANY PACKAGE、EXECUTE ANY PACKAGE、CREATE ANY TYPE。详细的ANY权限范围描述参考表1
  • 注意事项 不允许将ANY权限授予PUBLIC,也不允许从PUBLIC回收ANY权限。 ANY权限属于数据库内的权限,只对授予该权限的数据库内的对象有效,例如SELECT ANY TABLE只允许用户查看当前数据库内的所有用户表数据,对其他数据库内的用户表无查看权限。 ANY权限与原有的权限相互无影响。 如果用户被授予CREATE ANY TABLE权限,在同名schema下创建表的属主是该schema的创建者,用户对表进行其他操作时,需要授予相应的操作权限。 需要谨慎授予用户CREATE ANY FUNCTION或CREATE ANY PACKAGE的权限,以免其他用户利用DEFINER类型的函数或PACKAGE进行权限提升。
  • 语法格式 将表或视图的访问权限赋予指定的用户或角色。 GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | ALTER | DROP | COMMENT | INDEX | VACUUM } [, ...] | ALL [ PRIVILEGES ] } ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 将表中字段的访问权限赋予指定的用户或角色。 GRANT { {{ SELECT | INSERT | UPDATE | REFERENCES | COMMENT } ( column_name [, ...] )} [, ...] | ALL [ PRIVILEGES ] ( column_name [, ...] ) } ON [ TABLE ] table_name [, ...] TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 将序列的访问权限赋予指定的用户或角色,LARGE字段属性可选,赋权语句不区分序列是否为LARGE。 GRANT { { SELECT | UPDATE | USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON { [ [ LARGE ] SEQUENCE ] sequence_name [, ...] | ALL SEQUENCES IN SCHEMA schema_name [, ...] } TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 将数据库的访问权限赋予指定的用户或角色。 GRANT { { CREATE | CONNECT | TEMPORARY | TEMP | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON DATABASE database_name [, ...] TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 将域的访问权限赋予指定的用户或角色。 GRANT { USAGE | ALL [ PRIVILEGES ] } ON DOMAIN domain_name [, ...] TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 本版本暂时不支持赋予域的访问权限。 将外部数据源的访问权限赋予给指定的用户或角色。 GRANT { USAGE | ALL [ PRIVILEGES ] } ON FOREIGN DATA WRAPPER fdw_name [, ...] TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 将外部服务器的访问权限赋予给指定的用户或角色。 GRANT { { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON FOREIGN SERVER server_name [, ...] TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 将函数的访问权限赋予给指定的用户或角色。 GRANT { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON { FUNCTION {function_name ( [ {[ argmode ] [ arg_name ] arg_type} [, ...] ] )} [, ...] | ALL FUNCTIONS IN SCHEMA schema_name [, ...] } TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 将存储过程的访问权限赋予给指定的用户或角色。 1 2 3 4 GRANT { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON { PROCEDURE {proc_name ( [ {[ argmode ] [ arg_name ] arg_type} [, ...] ] )} [, ...] TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 将过程语言的访问权限赋予给指定的用户或角色。 GRANT { USAGE | ALL [ PRIVILEGES ] } ON LANGUAGE lang_name [, ...] TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 将大对象的访问权限赋予指定的用户或角色。 GRANT { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] } ON LARGE OBJECT loid [, ...] TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 本版本暂时不支持大对象。 将模式的访问权限赋予指定的用户或角色。 GRANT { { CREATE | USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON SCHEMA schema_name [, ...] TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 将模式中的表或者视图对象授权给其他用户时,需要将表或视图所属的模式的USAGE权限同时授予该用户,若没有该权限,则只能看到这些对象的名称,并不能实际进行对象访问。 同名模式下创建表的权限无法通过此语法赋予,可以通过将角色的权限赋予其他用户或角色的语法,赋予同名模式下创建表的权限。 将表空间的访问权限赋予指定的用户或角色。 GRANT { { CREATE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON TABLESPACE tablespace_name [, ...] TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 将类型的访问权限赋予指定的用户或角色。 GRANT { { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON TYPE type_name [, ...] TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]; 本版本暂时不支持赋予类型的访问权限。 将directory对象的权限赋予指定的角色。 1 2 3 4 GRANT { { READ | WRITE | ALTER | DROP } [, ...] | ALL [PRIVILEGES] } ON DIRECTORY directory_name [, ...] TO { [GROUP] role_name | PUBLIC } [, ...] [WITH GRANT OPTION]; 将package对象的权限赋予指定的角色。 1 2 3 4 5 GRANT { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [PRIVILEGES] } ON { PACKAGE package_name [, ...] | ALL PACKAGES IN SCHEMA schema_name [, ...] } TO { [GROUP] role_name | PUBLIC } [, ...] [WITH GRANT OPTION]; 将角色的权限赋予其他用户或角色的语法。 GRANT role_name [, ...] TO role_name [, ...] [ WITH ADMIN OPTION ]; 将sysadmin权限赋予指定的角色。 GRANT ALL { PRIVILEGES | PRIVILEGE } TO role_name;
  • JDBC JDBC(Java Database Connectivity,Java数据库连接)是用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问接口。它允许Java应用程序通过SQL语句来执行数据库操作,包括查询、插入、更新和删除数据等。 以下是JDBC的一些关键特点和用法: 数据库连接管理:JDBC允许应用程序建立与数据库的连接,并管理这些连接的生命周期。 SQL执行: 使用JDBC,可以执行SQL查询、更新、删除等操作。这通过在Java代码中构建SQL语句并将其发送到数据库来实现。 事务管理:JDBC支持事务管理,可以通过JDBC API来启动、提交或回滚事务,确保数据库操作的一致性和完整性。 异常处理: JDBC定义了一组异常类来处理数据库操作期间可能发生的各种异常情况,开发人员可以使用try-catch块来捕获和处理这些异常。 批处理操作:JDBC提供了批处理功能,允许一次性执行多个SQL语句,从而提高数据库操作的效率。 元数据访问: 通过JDBC,可以获取数据库的元数据信息,如表结构、列名、数据类型等,从而动态地构建SQL查询或根据数据库结构进行操作。 总的来说,JDBC提供了一个灵活且强大的桥梁,使Java应用程序能够与各种不同的数据库进行交互,从而实现数据的持久化和管理。GaussDB库提供了对JDBC 4.0特性的支持,需要使用JDK1.8版本编译程序代码,不支持JDBC桥接ODBC方式。 基于JDBC开发详细教程请参见基于JDBC开发。
  • PG_DEPEND PG_DEPEND系统表记录数据库对象之间的依赖关系。这个信息允许DROP命令找出哪些其它对象必须由DROP CASCADE删除,或者是在DROP RESTRICT的情况下避免删除。 这个表的功能类似PG_SHDEPEND,用于记录那些在数据库之间共享的对象之间的依赖性关系。 表1 PG_DEPEND字段 名称 类型 引用 描述 classid oid PG_CLASS.oid 有依赖对象所在系统表的OID。 objid oid 任意OID属性 指定的依赖对象的OID。 objsubid integer - 对于表字段,这个是该属性的字段数(objid和classid引用表本身)。对于所有其它对象类型,目前这个字段是0。 refclassid oid PG_CLASS.oid 被引用对象所在的系统表的OID。 refobjid oid 任意OID属性 指定的被引用对象的OID。 refobjsubid integer - 对于表字段,这个是该字段的字段号(refobjid和refclassid引用表本身)。对于所有其它对象类型,目前这个字段是0。 deptype "char" - 一个定义这个依赖关系特定语义的代码。 在所有情况下,一个PG_DEPEND记录表示被引用的对象不能在有依赖的对象被删除前删除。不过,这里还有几种由deptype定义的情况: DEPENDENCY_NORMAL (n):独立创建的对象之间的一般关系。有依赖的对象可以在不影响被引用对象的情况下删除。被引用对象只有在声明了CASCADE的情况下删除,这时有依赖的对象也被删除。例子:一个表字段对其数据类型有一般依赖关系。 DEPENDENCY_AUTO (a):有依赖对象可以和被引用对象分别删除,并且如果删除了被引用对象则应该被自动删除(不管是RESTRICT或CASCADE模式)。例子:一个表上面的命名约束是在该表上的自动依赖关系,因此如果删除了表,它也会被删除。 DEPENDENCY_INTERNAL (i):有依赖的对象是作为被引用对象的一部分创建的,实际上只是它的内部实现的一部分。 DROP有依赖对象是不能直接允许的(将告诉用户发出一条删除被引用对象的DROP)。一个对被引用对象的DROP将传播到有依赖对象,不管是否声明了CASCADE。 DEPENDENCY_EXTENSION (e):依赖对象是被依赖对象extension的一个成员。依赖对象只可以通过在被依赖对象上DROP EXTENSION删除。函数上这个依赖类型和内部依赖一样动作,但是它为了清晰和简化gs_dump保持分开。 DEPENDENCY_PIN (p):没有依赖对象;这种类型的记录标志着系统本身依赖于被引用对象,因此这个对象绝不能被删除。这种类型的记录只有在initdb的时候创建。有依赖对象的字段里是零。 父主题: 系统表
  • PG_REPLICATION_ORIGIN_STATUS PG_REPLICATION_ORIGIN_STATUS视图可用来查看复制源的复制状态。 表1 PG_REPLICATION_ORIGIN_STATUS字段 名称 类型 描述 local_id oid 复制源ID。 external_id text 复制源名称。 remote_lsn text 复制源的lsn位置。 local_lsn text 本地的lsn位置。 父主题: 系统视图
  • 自动寻主场景 某客户存在一套集中式数据库实例,包含1主2备三个节点{node1,node2,node3},其中node1为主节点,node2、node3为备节点。 客户希望应用连接能建立在主DN上,并在发生主备切换时,自动选择新的主节点建连,则url可参考如下配置: jdbc:opengauss://node1,node2,node3/database?targetServerType=master
  • 高性能场景 某客户对于相同sql可能多次执行,仅是传参不同,为了提升执行效率,可开启prepareThreshold参数,避免重复生成执行计划,url可参考如下配置。 jdbc:opengauss://node1/database?prepareThreshold=5 某客户一次查询1000万数据,为避免同时返回造成内存溢出,可使用defaultRowFetchSize,url可参考如下配置。 jdbc:opengauss://node1/database?defaultRowFetchSize=50000 某客户需要批量插入1000万数据,为提升效率,可使用batchMode,url可参考如下配置。 jdbc:opengauss://node1/database?batchMode=on
  • 容灾场景 某客户有两套数据库实例,其中A数据库实例为生产数据库实例,B数据库实例为容灾数据库实例。当客户执行容灾切换时,A数据库实例将降为容灾数据库实例,B数据库实例将升为生产数据库实例。此时为了避免修改配置文件导致的应用重启或重新发版。客户可在初始配置文件时,即将A、B数据库实例写入连接串中。此时在主数据库实例不可连接时,驱动将尝试对容灾数据库实例建连。例如A数据库实例为{node1,node2,node3}。B数据库实例为{node4,node5,node6}。 则url可参考如下进行配置: jdbc:opengauss://node1,node2,node3,node4,node5,node6/database?priorityServers=3
  • ADM_TABLES ADM_TABLES视图显示数据库中所有表的信息。默认只有系统管理员权限才可以访问此系统视图,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_TABLES字段 名称 类型 描述 owner character varying(64) 表的所有者。 table_name character varying(64) 表名称。 tablespace_name character varying(64) 存储表的表空间名称。 dropped character varying 当前表是否已删除: YES:表示已删除。 NO:表示未删除。 num_rows numeric 表的估计行数。 status character varying(8) 当前表是否有效。 VALID:当前表有效。 UNUSABLE:当前表不可用。 temporary character(1) 表是否为临时表: Y:表示是临时表。 N:表示不是临时表。 父主题: 系统视图
  • PG_INHERITS PG_INHERITS系统表记录关于表继承层次的信息。数据库里每个直接的子系表都有一条记录。间接的继承可以通过追溯记录链来判断。 表1 PG_INHERITS字段 名称 类型 引用 描述 inhrelid oid PG_CLASS.oid 子表的OID。 inhparent oid PG_CLASS.oid 父表的OID。 inhseqno integer - 如果一个子表存在多个直系父表(多重继承),这个数字表明此继承字段的排列顺序。计数从1开始。 父主题: 系统表
  • 参数 表1 PQexecPrepared参数 关键字 参数说明 conn 连接句柄。 stmtName stmt名称,可以用""或者NULL来引用未命名语句,否则它必须是一个现有预备语句的名字。 nParams 参数个数。 paramValues 参数的实际值。 paramLengths 参数的实际数据长度。 paramFormats 参数的格式(文本或二进制)。 resultFormat 结果的格式(文本或二进制)。
  • 原型 PGresult* PQexecPrepared(PGconn* conn, const char* stmtName, int nParams, const char* const* paramValues, const int* paramLengths, const int* paramFormats, int resultFormat);
  • PG_TOTAL_USER_RESOURCE_INFO_OID PG_TOTAL_USER_RESOURCE_INFO_OID视图显示所有用户的资源使用情况,需要使用管理员用户进行查询。此视图在GUC参数use_workload_manager为on时才有效。 表1 PG_TOTAL_USER_RESOURCE_INFO_OID字段 名称 类型 描述 userid oid 用户ID。 used_memory integer 正在使用的内存大小,单位MB。 total_memory integer 可以使用的内存大小,单位MB。值为0表示未限制最大可用内存,其限制取决于数据库最大可用内存。 used_cpu double precision 正在使用的CPU核数。 total_cpu integer 在该机器节点上,用户关联控制组的CPU核数总和。 used_space bigint 已使用的存储空间大小,单位KB。 total_space bigint 可使用的存储空间大小,单位KB,值为-1表示未限制最大存储空间。 used_temp_space bigint 已使用的临时空间大小,单位KB total_temp_space bigint 可使用的临时空间总大小,单位KB,值为-1表示未限制。 used_spill_space bigint 已使用的下盘空间大小。单位KB。 total_spill_space bigint 可使用的下盘空间总大小,单位KB,值为-1表示未限制。 read_kbytes bigint 读磁盘数据量,单位KB。 write_kbytes bigint 写磁盘数据量,单位KB。 read_counts bigint 读磁盘次数。 write_counts bigint 写磁盘次数。 read_speed double precision 读磁盘速率,单位B/ms。 write_speed double precision 写磁盘速率,单位B/ms。 父主题: 系统视图
  • GLOBAL_STAT_SYS_INDEXES 得到各节点pg_catalog、information_schema以及pg_toast模式中所有系统表的索引状态信息。 表1 GLOBAL_STAT_SYS_INDEXES字段 名称 类型 描述 node_name name 节点名称。 relid oid 这个索引的表的OID。 indexrelid oid 索引的OID。 schemaname name 索引的模式名。 relname name 索引的表名。 indexrelname name 索引名。 idx_scan bigint 索引上开始的索引扫描数。 idx_tup_read bigint 通过索引上扫描返回的索引项数。 idx_tup_fetch bigint 通过使用索引的简单索引扫描抓取的活表行数。 父主题: Object
  • GLOBAL_SESSION_STAT 各节点上以会话线程或AutoVacuum线程为单位,统计会话状态信息。 表1 GLOBAL_SESSION_STAT字段 名称 类型 描述 node_name name 节点名称。 sessid text 线程启动时间+线程标识。 statid integer 统计编号。 statname text 统计会话名称。 statunit text 统计会话单位。 value bigint 统计会话值。 父主题: Session/Thread
  • 示例 --创建数据表all_data。 openGauss=# CREATE TABLE all_data(id int, role varchar(100), data varchar(100)); --创建行访问控制策略。 openGauss=# CREATE ROW LEVEL SECURITY POLICY all_data_rls ON all_data USING(role = CURRENT_USER); --删除行访问控制策略。 openGauss=# DROP ROW LEVEL SECURITY POLICY all_data_rls ON all_data; --删除数据表all_data。 openGauss=# DROP TABLE all_data;
  • STATEMENT 获得当前节点的执行语句(归一化SQL)的信息。查询视图必须具有sysadmin权限或者monitor admin权限。数据库主节点上可以看到此数据库主节点接收到的归一化的SQL的全量统计信息(包含数据库节点);数据库节点上仅可看到归一化的SQL的此节点执行的统计信息。 不同的savepoint_name所生成的unique_sql_id不同,大量使用savepoint_name时会导致系统中产生的unique_sql_id信息快速上涨,若unique_sql_id数量高于instr_unique_sql_count数量时,新产生的unique_sql_id信息将不被统计。 表1 STATEMENT字段 名称 类型 描述 node_name name 节点名称。 node_id integer 节点的ID。 user_name name 用户名称。 user_id oid 用户OID。 unique_sql_id bigint 归一化的SQL ID。 query text 归一化的SQL。 备注:长度受track_activity_query_size控制。 n_calls bigint 调用次数。 min_elapse_time bigint SQL在内核内的最小运行时间(单位:微秒)。 max_elapse_time bigint SQL在内核内的最大运行时间(单位:微秒)。 total_elapse_time bigint SQL在内核内的总运行时间(单位:微秒)。 n_returned_rows bigint SELECT返回的结果集行数。 n_tuples_fetched bigint 随机扫描行。 n_tuples_returned bigint 顺序扫描行。 n_tuples_inserted bigint 插入行。 n_tuples_updated bigint 更新行。 n_tuples_deleted bigint 删除行。 n_blocks_fetched bigint 逻辑读次数。 n_blocks_hit bigint 内存中命中次数。 n_soft_parse bigint 软解析次数,n_soft_parse + n_hard_parse可能大于n_calls,因为子查询未计入n_calls。 n_hard_parse bigint 硬解析次数,n_soft_parse + n_hard_parse可能大于n_calls,因为子查询未计入n_calls。 db_time bigint 有效的数据库内部时间花费,多线程将累加(单位:微秒)。 cpu_time bigint CPU时间(单位:微秒)。 execution_time bigint 执行器内执行时间(单位:微秒)。 parse_time bigint SQL解析时间(单位:微秒)。 plan_time bigint SQL生成计划时间(单位:微秒)。 rewrite_time bigint SQL重写时间(单位:微秒)。 pl_execution_time bigint plpgsql上的执行时间(单位:微秒)。 pl_compilation_time bigint plpgsql上的编译时间(单位:微秒)。 data_io_time bigint I/O上的时间花费(单位:微秒)。 net_send_info text 通过物理连接发送消息的网络状态,包含时间(微秒)、调用次数、吞吐量(字节)。单机模式下不支持该字段。 net_recv_info text 通过物理连接接收消息的网络状态,包含时间(微秒)、调用次数、吞吐量(字节)。单机模式下不支持该字段。 net_stream_send_info text 通过逻辑连接发送消息的网络状态,包含时间(微秒)、调用次数、吞吐量(字节)。单机模式下不支持该字段。 net_stream_recv_info text 通过逻辑连接接收消息的网络状态,包含时间(微秒)、调用次数、吞吐量(字节)。单机模式下不支持该字段。 sort_count bigint 排序执行的次数。 sort_time bigint 排序执行的时间(单位:微秒)。 sort_mem_used bigint 排序过程中使用的work memory大小(单位:KB)。 sort_spill_count bigint 排序过程中,若发生落盘,写文件的次数。 sort_spill_size bigint 排序过程中,若发生落盘,使用的文件大小(单位:KB)。 hash_count bigint hash执行的次数。 hash_time bigint hash执行的时间(单位:微秒)。 hash_mem_used bigint hash过程中使用的work memory大小(单位:KB)。 hash_spill_count bigint hash过程中,若发生落盘,写文件的次数。 hash_spill_size bigint hash过程中,若发生落盘,使用的文件大小(单位:KB)。 last_updated timestamp with time zone 最后一次更新该语句的时间。 父主题: Query
  • PG_AGGREGATE PG_AGGREGATE系统表存储与聚集函数有关的信息。PG_AGGREGATE里的每条记录都是一条pg_proc里面的记录的扩展。PG_PROC记录承载该聚集的名称、输入和输出数据类型,以及其它一些和普通函数类似的信息。 表1 PG_AGGREGATE字段 名称 类型 引用 描述 aggfnoid regproc PG_PROC.proname 此聚集函数的PG_PROC proname。 aggtransfn regproc PG_PROC.proname 转换函数。 aggcollectfn regproc PG_PROC.proname 收集函数。 aggfinalfn regproc PG_PROC.proname 最终处理函数(如果没有则为零)。 aggsortop oid PG_OPERATOR.oid 关联排序操作符(如果没有则为零)。 aggtranstype oid PG_TYPE.oid 此聚集函数的内部转换(状态)数据的数据类型。 可能取值及其含义见于pg_type.h中type定义,主要分为多态(isPolymorphicType)和非多态两类。 agginitval text - 转换状态的初始值。这是一个文本数据域,它包含初始值的外部字符串表现形式。如果数据域是null,则转换状态值从null开始。 agginitcollect text - 收集状态的初始值。这是一个文本数据域,它包含初始值的外部字符串表现形式。如果数据域是null,则收集状态值从null开始。 aggkind "char" - 此聚集函数类型: 'n' :表示Normal Agg 'o' :表示Ordered Set Agg aggnumdirectargs smallint - Ordered Set Agg类型聚集函数的直接参数(非聚集相关参数)数量。对Normal Agg类型聚集函数,该值为0。 父主题: 系统表
  • PG_STAT_ACTIVITY PG_STAT_ACTIVITY视图显示和当前用户查询相关的信息,字段保存的是上一次执行的信息。 表1 PG_STAT_ACTIVITY字段 名称 类型 描述 datid oid 用户会话在后台连接到的数据库OID。 datname name 用户会话在后台连接到的数据库名称。 pid bigint 后台线程ID。 sessionid bigint 会话ID。 usesysid oid 登录该后台的用户OID。 usename name 登录该后台的用户名。 application_name text 连接到该后台的应用名。 client_addr inet 连接到该后台的客户端的IP地址。 如果该字段取值是null,表明是通过服务器机器上UNIX套接字连接客户端或者这是内部进程,如autovacuum。 client_hostname text 客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。 client_port integer 客户端用于与后台通讯的TCP端口号,如果使用UNIX套接字,则为-1。 backend_start timestamp with time zone 该会话开始的时间,即当客户端连接服务器的时间。 xact_start timestamp with time zone 当前活跃事务开始的时间,如果没有事务是活跃的,则为null。如果当前查询是首个事务,则这列等同于query_start列。 query_start timestamp with time zone 当前活跃查询开始的时间,如果state的值不是active,则这个值是上一个查询的开始时间。如果是存储过程、函数、PACKAGE,则显示的是第一个查询时间,不会随着存储过程内语句运行而改变。 state_change timestamp with time zone 上次状态改变的时间。 waiting boolean 如果后台当前正等待锁则为true。 enqueue text 该字段不支持。 state text 该后台当前总体状态。可能值是: active:后台正在执行一个查询。 idle:后台正在等待一个新的客户端命令。 idle in transaction:后台在事务中,但事务中没有语句在执行。 idle in transaction (aborted):后台在事务中,但事务中有语句执行失败。 fastpath function call:后台正在执行一个fast-path函数。 disabled:如果后台禁用track_activities,则报告这个状态。 说明: 普通用户只能查看到自己账户所对应的会话状态。即其他账户的state信息为空。例如以judy用户连接数据库后,在pg_stat_activity中查看到的普通用户joe及初始用户omm的state信息为空: SELECT datname, usename, usesysid, state,pid FROM pg_stat_activity; datname | usename | usesysid | state | pid ----------+---------+----------+--------+----------------- testdb | omm | 10 | | 139968752121616 testdb | omm | 10 | | 139968903116560 db_tpcc | judy | 16398 | active | 139968391403280 testdb | omm | 10 | | 139968643069712 testdb | omm | 10 | | 139968680818448 testdb | joe | 16390 | | 139968563377936 (6 rows) resource_pool name 用户使用的资源池。 query_id bigint 查询语句的ID。 query text 该后台的最新查询。如果state状态是active(活跃的),此字段显示当前正在执行的查询。所有其他情况表示上一个查询。 connection_info text json格式字符串,记录当前连接数据库的驱动类型、驱动版本号、当前驱动的部署路径、进程属主用户等信息。 unique_sql_id bigint 语句的unique sql id。 trace_id text 驱动传入的trace id,与应用的一次请求相关联。 父主题: 系统视图
  • DBE_PLDEBUGGER.finish 执行存储过程中当前的SQL直到下一个断点触发或执行到上层栈的下一行。 表1 finish入参和返回值列表 名称 类型 描述 funcoid OUT oid 函数id funcname OUT text 函数名 lineno OUT integer 当前调试运行的下一行行号 query OUT text 当前调试的下一行函数源码 父主题: DBE_PLDEBUGGER Schema
  • STATIO_ALL_INDEXES STATIO_ALL_INDEXES视图包含数据库中的每个索引行,显示特定索引的I/O的统计。 表1 STATIO_ALL_INDEXES字段 名称 类型 描述 relid oid 索引的表的OID。 indexrelid oid 该索引的OID。 schemaname name 该索引的模式名。 relname name 该索引的表名。 indexrelname name 索引名称。 idx_blks_read bigint 从索引中读取的磁盘块数。 idx_blks_hit bigint 索引命中缓存数。 父主题: Cache/IO
  • 原型 PGresult* PQexecParams(PGconn* conn, const char* command, int nParams, const Oid* paramTypes, const char* const* paramValues, const int* paramLengths, const int* paramFormats, int resultFormat);
  • STATIO_USER_INDEXES STATIO_USER_INDEXES视图显示当前节点命名空间中所有用户关系表索引的I/O状态信息。 表1 STATIO_USER_INDEXES字段 名称 类型 描述 relid oid 索引的表的OID。 indexrelid oid 该索引的OID。 schemaname name 该索引的模式名。 relname name 该索引的表名。 indexrelname name 索引名称。 idx_blks_read bigint 从索引中读取的磁盘块数。 idx_blks_hit bigint 索引命中缓存数。 父主题: Cache/IO
共100000条
提示

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