华为云用户手册

  • PG_OBJECT PG_OBJECT系统表存储限定类型对象(普通表,索引,序列,视图,存储过程和函数)的创建用户、创建时间和最后修改时间。 表1 PG_OBJECT字段 名称 类型 描述 object_oid oid 对象标识符。 object_type "char" 对象类型: r 表示普通表 i 表示索引 s 表示序列 v 表示视图 p 表示存储过程和函数 creator oid 创建用户的标识符。 ctime timestamp with time zone 对象的创建时间。 mtime timestamp with time zone 对象的最后修改时间,修改行为包括ALTER操作和GRANT、REVOKE操作。 createcsn bigint 对象创建时的CSN。 changecsn bigint 对表或索引执行DDL操作时的CSN。 无法记录初始化数据库(initdb)过程中所创建或修改的对象,即PG_OBJECT无法查询到该对象记录。 对于升级前创建的对象,再次修改时会记录其修改时间(mtime),对表或索引执行DDL操作时会记录其所属事务的事务提交序列号(changecsn)。由于无法得知该对象创建时间,因此ctime和createcsn为空。 ctime和mtime所记录的时间为用户当次操作所属事务的起始时间。 由扩容引起的对象修改时间也会被记录。 createcsn和changecsn记录的是用户当次操作所属事务的事务提交序列号。 enable_gtt_concurrent_truncate开启时,truncate全局临时表不会刷新mtime字段。 父主题: 系统表
  • PG_LARGEOBJECT_METADATA PG_LARGEOBJECT_METADATA系统表存储与大数据相关的元数据。实际的大对象数据存储在PG_LARGEOBJECT里。 表1 PG_LARGEOBJECT_METADATA字段 名称 类型 引用 描述 oid oid - 行标识符(隐含属性,必须明确选择)。 lomowner oid PG_AUTHID.oid 大对象的所有者。 lomacl aclitem[] - 访问权限。 父主题: 系统表
  • PG_NAMESPACE PG_NAMESPACE系统表存储名称空间,即存储schema相关的信息。 表1 PG_NAMESPACE字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 nspname name 名称空间的名称。 nspowner oid 名称空间的所有者。 nsptimeline bigint 在数据库节点上创建此命名空间时的时间线。此字段为内部使用,仅在数据库节点上有效。 nspacl aclitem[] 访问权限。 in_redistribution "char" 是否处于重发布状态。 nspblockchain boolean 如果为真,则该模式为防篡改模式。 如果为假,则此模式为非防篡改模式。 父主题: 系统表
  • PG_INDEX PG_INDEX系统表存储索引的一部分信息,其他的信息大多数在PG_CLASS中。 表1 PG_INDEX字段 名称 类型 描述 indexrelid oid 这个索引在pg_class里的记录的OID。 indrelid oid 使用这个索引的表在pg_class里的记录的OID。 indnatts smallint 索引中的字段数目。 indisunique boolean 如果为真,这是个唯一索引。 如果为假,这不是唯一索引。 indisprimary boolean 如果为真,该索引代表该表的主键。这个字段为真的时候indisunique总是为真。 如果为假,该索引不是该表的主键。 indisexclusion boolean 如果为真,该索引支持排他约束。 如果为假,该索引不支持排他约束。 indimmediate boolean 如果为真,在插入数据时会立即进行唯一性检查。 如果为假,在插入数据时不会进行唯一性检查。 indisclustered boolean 如果为真,则该表最后在这个索引上建了簇。 如果为假,则该表没有再这个索引上建簇 indisusable boolean 如果为真,该索引对insert/select可用。 如果为假,该索引对insert/select不可用。 indisvalid boolean 如果为真,则该索引可以用于查询。如果为假,则该索引可能不完整,仍然必须在INSERT/UPDATE操作时进行更新,不过不能安全的用于查询。如果是唯一索引,则唯一属性也将不为真。 indcheckxmin boolean 如果为true,查询不能使用索引,直到pg_index此行的xmin低于其快照的TransactionXmin,因为该表可能包含它们能看到的不兼容行断开的HOT链。 如果为false,查询可以用于索引。 indisready boolean 如果为真,表示此索引对插入数据是可用的,否则,在插入或修改数据时忽略此索引。 indkey int2vector 这是一个包含indnatts值的数组,这些数组值表示这个索引所建立的表字段。比如一个值为1 3的意思是第一个字段和第三个字段组成这个索引键字。这个数组里的零表明对应的索引属性是在这个表字段上的一个表达式,而不是一个简单的字段引用。 indcollation oidvector 索引用到的各列的ID。 indclass oidvector 对于索引键字里面的每个字段,这个字段都包含一个指向所使用的操作符类的OID,参阅pg_opclass获取细节。 indoption int2vector 存储列前标识位,该标识位是由索引的访问方法定义。 indexprs pg_node_tree 表达式树(以nodeToString()形式表现)用于那些非简单字段引用的索引属性。它是一个列表,个数与INDKEY中的零值个数相同。如果所有索引属性都是简单的引用,则为空。 indpred pg_node_tree 部分索引断言的表达式树(以nodeToString()的形式表现)。如果不是部分索引,则是空字符串。 indisreplident boolean 如果为真,则此索引的列成为逻辑解码的解码列。 如果为假,则此索引的列不是逻辑解码的解码列。 indnkeyatts smallint 索引中的总字段数,超出indnatts的部分不参与索引查询。 父主题: 系统表
  • PG_CLASS PG_CLASS系统表存储数据库对象信息及其之间的关系。 表1 PG_CLASS字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 relname name 表、索引、视图等对象的名称。 relnamespace oid 包含这个关系的名称空间的OID。 reltype oid 对应这个表的行类型的数据类型(索引为零,因为索引没有pg_type记录)。 reloftype oid 复合类型的OID,0表示其他类型。 relowner oid 关系所有者。 relam oid 如果行是索引,则就是所用的访问模式(B-tree,hash等)。 relfilenode oid 这个关系在磁盘上的文件的名称,如果没有则为0。 reltablespace oid 这个关系存储所在的表空间。如果为零,则意味着使用该数据库的缺省表空间。如果关系在磁盘上没有文件,则这个字段没有什么意义。 relpages double precision 以页(大小为BLCKSZ)为单位的此表在磁盘上的大小,它只是优化器用的一个近似值。 reltuples double precision 表中行的数目,只是优化器使用的一个估计值。 relallvisible integer 被标识为全可见的表中的页的数量。此字段是优化器用来做SQL执行优化使用的。VACUUM、ANALYZE和一些DDL语句(例如,CREATE INDEX)会引起此字段更新。 reltoastrelid oid 与此表关联的TOAST表的OID ,如果没有则为0。 TOAST表在一个从属表里“离线”存储大字段。 reltoastidxid oid 对于TOAST表是它的索引的OID,如果不是TOAST表则为0。 reldeltarelid oid Delta表的OID。 Delta表附属于列存表。用于存储数据导入过程中的甩尾数据。 reldeltaidx oid Delta表的索引表OID。 relcudescrelid oid CU描述表的OID。 CU描述表(Desc表)附属于列存表。用于控制表目录中存储数据的可见性。 relcudescidx oid CU描述表的索引表OID。 relhasindex boolean 如果它是一个表而且至少有(或者最近有过)一个索引,则为真。 它是由CREATE INDEX设置的,但DROP INDEX不会立即将它清除。如果VACUUM进程检测一个表没有索引,将会把它将清理relhasindex字段,将值设置为假。 relisshared boolean 如果该表在数据库中由所有数据库共享则为真。只有某些系统表(比如pg_database)是共享的。 relpersistence "char" p:表示永久表。 u:表示非日志表。 g:表示临时表。 relkind "char" r:表示普通表。 i:表示索引。 I:表示分区表GLOBAL索引。 S:表示序列。 L:表示长序列。 v:表示视图。 c:表示复合类型。 t:表示TOAST表。 f:表示外表。 m:表示物化视图。 relnatts smallint 关系中用户字段数目(除了系统字段以外)。在pg_attribute里肯定有相同数目对应行。 relchecks smallint 表里的检查约束的数目;参阅pg_constraint表。 relhasoids boolean 如果为关系中每行都生成一个OID则为真。 relhaspkey boolean 如果这个表有一个(或者曾经有一个)主键,则为真。 relhasrules boolean 如表有规则就为真。是否有规则可参考系统表PG_REWRITE。 relhastriggers boolean True表示表中有触发器,或者曾经有过触发器。系统表pg_trigger中记录了表和视图的触发器。 relhassubclass boolean 如果有(或者曾经有)任何继承的子表,为真。 relcmprs tinyint 表示是否启用表的启用压缩特性。需要特别注意,当且仅当批量插入才会触发压缩,普通的CRUD并不能够触发压缩。 0表示其他不支持压缩的表(主要是指系统表,不支持压缩属性的修改操作)。 1表示表数据的压缩特性为NOCOMPRESS或者无指定关键字。 2表示表数据的压缩特性为COMPRESS。 relhasclusterkey boolean 是否有局部聚簇存储。 relrowmovement boolean 针对分区表进行update操作时,是否允许行迁移。 true:表示允许行迁移。 false:表示不允许行迁移。 parttype "char" 表或者索引是否具有分区表的性质。 p:表示带有分区表性质。 n:表示没有分区表特性。 v:表示该表为HDFS的Value分区表。 s:表示该表为二级分区表。 relfrozenxid xid32 该表中所有在这个之前的事务ID已经被一个固定的("frozen")事务ID替换。该字段用于跟踪此表是否需要为了防止事务ID重叠(或者允许收缩pg_clog)而进行清理。如果该关系不是表则为零(InvalidTransactionId)。 为保持前向兼容,保留此字段,新增relfrozenxid64用于记录此信息。 relacl aclitem[] 访问权限。 查询的回显结果为以下形式: 1 rolename=xxxx/yyyy --赋予一个角色的权限 1 =xxxx/yyyy --赋予public的权限 xxxx表示赋予的权限,yyyy表示授予这个权限的角色。权限的参数说明请参见表2。 reloptions text[] 表或索引的访问方法,使用"keyword=value"格式的字符串。 relreplident "char" 逻辑解码中解码列的标识: d = 默认 (主键,如果存在)。 n = 无。 f = 所有列。 i = 索引的indisreplident被设置或者为默认。 relfrozenxid64 xid 该表中所有在这个之前的事务ID已经被一个固定的("frozen")事务ID替换。该字段用于跟踪此表是否需要为了防止事务ID重叠(或者允许收缩pg_clog)而进行清理。如果该关系不是表则为零(InvalidTransactionId)。 对于全局临时表,该字段无实际意义。各会话的全局临时表的relfrozenxid64可pg_catalog.pg_gtt_relstats视图中查看。 relbucket oid pg_hashbucket中的桶信息。 relbucketkey int2vector 哈希分区列号。 relminmxid xid 该表中所有在这个之前的多事务ID已经被一个事务ID替换。该字段用于跟踪该表是否需要为了防止多事务ID重叠或者允许收缩pg_clog而进行清理。如果该关系不是表则为零(InvalidTransactionId)。 表2 权限的参数说明 参数 参数说明 r SELECT(读) w UPDATE(写) a INSERT(插入) d DELETE D TRUNCATE x REFERENCES t TRIGGER X EXECUTE U USAGE C CREATE c CONNECT T TEMPORARY A ALTER P DROP m COMMENT i INDEX v VACUUM * 给前面权限的授权选项 父主题: 系统表
  • PG_LARGEOBJECT PG_LARGEOBJECT系统表保存那些标记着“大对象”的数据。一个大对象是使用其创建时分配的OID标识的。每个大对象都分解成足够小的小段或者“页面”以便以行的形式存储在PG_LARGEOBJECT里。每页的数据定义为LOBLKSIZE。 需要有系统管理员权限才可以访问此系统表。 表1 PG_LARGEOBJECT字段 名称 类型 引用 描述 loid oid PG_LARGEOBJECT_METADATA.oid 包含本页的大对象的标识符。 pageno integer - 本页在其大对象数据中的页码从零开始计算。 data bytea - 存储在大对象中的实际数据。这些数据绝不会超过LOBLKSIZE字节,而且可能更少。 PG_LARGEOBJECT的每一行保存一个大对象的一个页面,从该对象内部的字节偏移(pageno * LOBLKSIZE)开始。这种实现允许松散的存储:页面可以丢失,而且可以比LOBLKSIZE字节少(即使它们不是对象的最后一页)。大对象内丢失的部分读做零。 父主题: 系统表
  • PG_LANGUAGE PG_LANGUAGE系统表登记编程语言,用户可以用这些语言或接口写函数或者存储过程。 表1 PG_LANGUAGE字段 名称 类型 引用 描述 oid oid - 行标识符(隐含属性;必须明确选择)。 lanname name - 语言的名称。 lanowner oid PG_AUTHID.oid 语言的所有者。 lanispl boolean - 对于内部语言而言是假(比如SQL),对于用户定义的语言则是真。目前,gs_dump仍然使用该字段判断哪种语言需要转储,但是这些可能在将来被其它机制取代。 lanpltrusted boolean - 如果这是可信语言则为真,意味着系统相信它不会被授予任何正常SQL执行环境之外的权限。只有初始用户可以用不可信的语言创建函数。 lanplcallfoid oid PG_PROC.oid 对于非内部语言,这是指向该语言处理器的引用,语言处理器是一个特殊函数, 负责执行以某种语言写的所有函数。 laninline oid PG_PROC.oid 这个字段引用一个负责执行“inline”匿名代码块的函数(DO块)。如果不支持内联块则为零。 lanvalidator oid PG_PROC.oid 这个字段引用一个语言校验器函数,它负责检查新创建的函数的语法和有效性。如果没有提供校验器,则为零。 lanacl aclitem[] - 访问权限。 父主题: 系统表
  • PG_INHERITS PG_INHERITS系统表记录关于表继承层次的信息。数据库里每个直接的子系表都有一条记录。间接的继承可以通过追溯记录链来判断。 表1 PG_INHERITS字段 名称 类型 引用 描述 inhrelid oid PG_CLASS.oid 子表的OID。 inhparent oid PG_CLASS.oid 父表的OID。 inhseqno integer - 如果一个子表存在多个直系父表(多重继承),这个数字表明此继承字段的排列顺序。计数从1开始。 父主题: 系统表
  • PG_HASHBUCKET PG_HASHBUCKET系统表存储hash bucket信息。 表1 PG_HASHBUCKET字段 名称 类型 描述 oid oid 行标识符(隐含字段,必须明确选择)。 bucketid oid 对bucketvector计算的hash值,通过hash值可以加速对bucketvector的查找。 bucketcnt integer 包含分片的个数。 bucketmapsize integer 所有DN上包含的分片总数。 bucketref integer 预留字段,默认值为1。 bucketvector oidvector_extend 记录此行bucket信息包含的所有bucket的id,在此列上建立唯一索引,具有相同bucketid信息的表共享同一行pg_hashbucket数据。 父主题: 系统表
  • PG_JOB_PROC PG_JOB_PROC系统表对应PG_JOB表中每个任务的作业内容(包括:PL/SQL代码块、匿名块)。将存储过程信息独立出来,如果放到PG_JOB中,被加载到共享内存的时候,会占用不必要的空间,所以在使用的时候再进行查询获取。 表1 PG_JOB_PROC字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 job_id integer 外键,关联pg_job表中的job_id。 what text 作业内容,DBE_SCHEDULER定时任务中的程序内容。 job_name text DBE_SCHEDULER定时任务专用,定时任务或程序名称。 父主题: 系统表
  • PG_FOREIGN_DATA_WRAPPER PG_FOREIGN_DATA_WRAPPER系统表存储外部数据封装器定义。一个外部数据封装器是在外部服务器上驻留外部数据的机制,是可以访问的。 表1 PG_FOREIGN_DATA_WRAPPER字段 名称 类型 引用 描述 oid oid - 行标识符(隐含属性,必须明确选择)。 fdwname name - 外部数据封装器名。 fdwowner oid PG_AUTHID.oid 外部数据封装器的所有者。 fdwhandler oid PG_PROC.oid 引用一个负责为外部数据封装器提供扩展例程的处理函数。如果没有提供处理函数则为零。 fdwvalidator oid PG_PROC.oid 引用一个验证器函数,这个验证器函数负责验证给予外部数据封装器的选项、 外部服务器选项和使用外部数据封装器的用户映射的有效性。 如果没有提供验证器函数则为零。 fdwacl aclitem[] - 访问权限。 fdwoptions text[] - 外部数据封装器指定选项,使用“keyword=value”格式的字符串。 父主题: 系统表
  • PG_FOREIGN_SERVER PG_FOREIGN_SERVER系统表存储外部服务器定义。一个外部服务器描述了一个外部数据源,例如一个远程服务器。外部服务器通过外部数据封装器访问。 表1 PG_FOREIGN_SERVER字段 名称 类型 引用 描述 oid oid - 行标识符(隐含属性,必须明确选择)。 srvname name - 外部服务器名。 srvowner oid PG_AUTHID.oid 外部服务器的所有者。 srvfdw oid PG_FOREIGN_DATA_WRAPPER.oid 这个外部服务器的外部数据封装器的OID。 srvtype text - 服务器的类型(可选)。 srvversion text - 服务器的版本(可选)。 srvacl aclitem[] - 访问权限。 srvoptions text[] - 外部服务器指定选项,使用“keyword=value”格式的字符串。 父主题: 系统表
  • PG_EXTENSION_DATA_SOURCE PG_EXTENSION_DATA_SOURCE系统表存储外部数据源对象的信息。一个外部数据源对象(Data Source)包含了外部数据库的一些口令编码等信息,主要配合Extension Connector使用。当前特性是实验室特性,使用时请联系华为工程师提供技术支持。 表1 PG_EXTENSION_DATA_SOURCE字段 名称 类型 引用 描述 oid oid - 行标识符(隐含属性,必须明确选择)。 srcname name - 外部数据源对象的名称。 srcowner oid PG_AUTHID.oid 外部数据源对象的所有者。 srctype text - 外部数据源对象的类型,缺省为空。 srcversion text - 外部数据源对象的版本,缺省为空。 srcacl aclitem[] - 访问权限。 srcoptions text[] - 外部数据源对象的指定选项,使用“keyword=value”格式的字符串。 父主题: 系统表
  • PG_CONSTRAINT PG_CONSTRAINT系统表存储表上的检查约束、主键和唯一约束。 表1 PG_CONSTRAINT字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 conname name 约束名称(不一定是唯一的)。 connamespace oid 包含这个约束的名称空间的OID。 contype "char" c = 检查约束 p = 主键约束 u = 唯一约束 t = 触发器约束 x = 互斥约束 f = 外键约束 s = 聚簇约束 i = 无效约束 condeferrable boolean 这个约束是否可以推迟。 condeferred boolean 缺省时这个约束是否可以推迟。 convalidated boolean 约束是否有效。目前,只有外键和CHECK约束可将其设置为FALSE。 conrelid oid 这个约束所在的表;如果不是表约束则为0。 contypid oid 这个约束所在的域;如果不是一个域约束则为0。 conindid oid 与约束关联的索引ID。 confrelid oid 如果是外键,则为参考的表;否则为0。 confupdtype "char" 外键更新动作代码。 a = 没动作 r = 限制 c = 级联 n =设置为null d =设置为缺省 confdeltype "char" 外键删除动作代码。 a = 没动作 r = 限制 c = 级联 n =设置为null d =设置为缺省 confmatchtype "char" 外键匹配类型。 f = 全部 p = 部分 u = 未指定(在f的基础上允许匹配NULL值) conislocal boolean 是否是为关系创建的本地约束。 coninhcount integer 约束直接继承父表的数目。继承父表数非零时,不能删除或重命名该约束。 connoinherit boolean 是否可以被继承。 consoft boolean 是否为信息约束(Informational Constraint)。 conopt boolean 是否使用信息约束优化执行计划。 conkey smallint[] 如果是表约束,则是约束控制的字段列表。 confkey smallint[] 如果是一个外键,是参考的字段的列表。 conpfeqop oid[] 如果是一个外键,是做PK=FK比较的相等操作符ID的列表。 conppeqop oid[] 如果是一个外键,是做PK=PK比较的相等操作符ID的列表。 conffeqop oid[] 如果是一个外键,是做FK=FK比较的相等操作符ID的列表。由于当前不支持外键,所以值为空。 conexclop oid[] 如果是一个排他约束,是列的排他操作符ID列表。 conbin pg_node_tree 如果是检查约束,那就是其表达式的内部形式。 consrc text 如果是检查约束,则是表达式的人类可读形式。 conincluding smallint[] 不用做约束,但是会包含在INDEX中的属性列。 consrc在被引用的对象改变之后不会被更新,它不会跟踪字段的名称修改。与其依赖这个字段,最好还是使用pg_get_constraintdef()来抽取一个检查约束的定义。 pg_class.relchecks需要和在此表上为给定关系找到的检查约束的数目一致。 父主题: 系统表
  • PG_FOREIGN_TABLE PG_FOREIGN_TABLE系统表存储外部表的辅助信息。 表1 PG_FOREIGN_TABLE字段 名称 类型 描述 ftrelid oid 外部表的ID。 ftserver oid 外部表的所在服务器。 ftwriteonly boolean 外部表是否可写。取值如下: t(true):表示可写 f(false):表示不可写 ftoptions text[] 外部表的可选项,具体参考CREATE FOREIGN TABLE语法说明。 父主题: 系统表
  • PG_EXTENSION PG_EXTENSION系统表存储关于所安装扩展的信息。GaussDB默认扩展是PLPGSQL。 表1 PG_EXTENSION 名称 类型 描述 oid oid 数据库对象id。 extname name 扩展名。 extowner oid 扩展的所有者。 extnamespace oid 扩展导出对象的名称空间。 extrelocatable boolean 标识此扩展是否可迁移到其他名称空间,true表示允许。 extversion text 扩展的版本号。 extconfig oid[] 扩展的配置信息。 extcondition text[] 扩展配置信息的过滤条件。 父主题: 系统表
  • 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的一个成员(请参见PG_EXTENSION)。依赖对象只可以通过在被依赖对象上DROP EXTENSION删除。函数上这个依赖类型和内部依赖一样动作,但是它为了清晰和简化gs_dump保持分开。 DEPENDENCY_PIN (p):没有依赖对象;这种类型的记录标志着系统本身依赖于被引用对象,因此这个对象决不能被删除。这种类型的记录只有在initdb的时候创建。有依赖对象的字段里是零。 父主题: 系统表
  • PG_ENUM PG_ENUM系统表包含显示每个枚举类型值和标签的记录。给定枚举类型的内部表示实际上是PG_ENUM里面相关行的OID。 表1 PG_ENUM字段 名称 类型 引用 描述 oid oid - 行标识符(隐含属性,必须明确选择)。 enumtypid oid PG_TYPE.oid 拥有这个枚举值的pg_type记录的OID。 enumsortorder real - 这个枚举值在它的枚举类型中的排序位置。 enumlabel name - 这个枚举值的文本标签。 PG_ENUM行的OID跟着一个特殊规则:偶数的OID保证用和它们的枚举类型一样的排序顺序排序。也就是,如果两个偶数OID属于相同的枚举类型,那么较小的OID必须有较小enumsortorder值。奇数OID需要毫无关系的排序顺序。这个规则允许枚举比较例程在许多常见情况下避开目录查找。创建和修改枚举类型的例程只要可能就尝试分配偶数OID给枚举值。 当创建了一个枚举类型时,它的成员赋予了排序顺序位置1到n。但是随后添加的成员可能会分配enumsortorder的负值或分数值。对这些值的唯一要求是它们要正确的排序和在每个枚举类型中唯一。 父主题: 系统表
  • 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中的最小值。 父主题: 系统表
  • PG_DIRECTORY PG_DIRECTORY系统表用于保存用户添加的directory对象可以通过CREATE DIRECTORY语句向该表中添加记录,目前只有系统管理员用户可以向该表中添加记录。 表1 PG_DIRECTORY字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 dirname name 目录对象的名称。 owner oid 目录对象的所有者。 dirpath text 目录路径。 diracl aclitem[] 访问权限。 父主题: 系统表
  • 系统管理员 系统管理员是指具有SYSADMIN属性的帐户,默认安装情况下具有与对象所有者相同的权限,但不包括dbe_perf模式的对象权限和使用Roach工具执行备份恢复的权限。 要创建新的系统管理员,请以初始用户或者系统管理员用户身份连接数据库,并使用带SYSADMIN选项的CREATE USER语句或ALTER USER语句进行设置。 1 openGauss=# CREATE USER sysadmin WITH SYSADMIN password "xxxxxxxxx"; 或者 1 openGauss=# ALTER USER joe SYSADMIN; ALTER USER时,要求用户已存在。
  • 安全策略管理员 安全策略管理员是指具有POLADMIN属性的帐户,具有创建资源标签,脱敏策略和统一审计策略的权限。 要创建新的安全策略管理员,请以系统管理员用户身份连接数据库,并使用带POLADMIN选项的CREATE USER语句或ALTER USER语句进行设置。 1 openGauss=# CREATE USER poladmin WITH POLADMIN password "xxxxxxxxx"; 或者 1 openGauss=# ALTER USER joe POLADMIN; ALTER USER时,要求用户已存在。
  • 运维管理员 运维管理员是指具有OPRADMIN属性的帐户,具有使用Roach工具执行备份恢复的权限。 要创建新的运维管理员,请以初始用户身份连接数据库,并使用带OPRADMIN选项的CREATE USER语句或ALTER USER语句进行设置。 1 openGauss=# CREATE USER opradmin WITH OPRADMIN password "xxxxxxxxx"; 或者 1 openGauss=# ALTER USER joe OPRADMIN; ALTER USER时,要求用户已存在。
  • 初始用户 数据库安装过程中自动生成的帐户称为初始用户。初始用户也是系统管理员、监控管理员、运维管理员和安全策略管理员,拥有系统的最高权限,能够执行所有的操作。如果安装时不指定初始用户名称则该帐户与进行数据库安装的操作系统用户同名。如果在安装时不指定初始用户的密码,安装完成后密码为空,在执行其他操作前需要通过gsql客户端修改初始用户的密码。如果初始用户密码为空,则除修改密码外无法执行其他SQL操作以及升级、扩容、节点替换等操作。 初始用户会绕过所有权限检查。建议仅将此初始用户作为DBA管理用途,而非业务应用。
  • 监控管理员 监控管理员是指具有MONADMIN属性的帐户,具有查看dbe_perf模式下视图和函数的权限,亦可以对dbe_perf模式的对象权限进行授予或收回。 要创建新的监控管理员,请以系统管理员身份连接数据库,并使用带MONADMIN选项的CREATE USER语句或ALTER USER语句进行设置。 1 openGauss=# CREATE USER monadmin WITH MONADMIN password "xxxxxxxxx"; 或者 1 openGauss=# ALTER USER joe MONADMIN; ALTER USER时,要求用户已存在。
  • 参数 表1 数据库链接参数 参数名称 参数说明 host 主机IP地址,也可通过环境变量${PGHOST}来指定。 port 主机服务器的端口号,也可通过环境变量${PGPORT}来指定。 dbname 数据库名,也可通过环境变量${PGDATABASE}来指定。 user 要链接的用户名,也可通过环境变量${PGUSER}来指定。 password 要链接用户对应的链接密码。 connect_timeout 用于连接服务器操作的超时值,也可通过环境变量${PGCONNECT_TIMEOUT}来指定。 sslmode 启用SSL加密的方式,也可通过环境变量${PGSSLMODE}来指定。 参数取值范围: disable:不使用ssl安全连接。 allow:如果数据库服务器要求使用,则可以使用SSL安全加密连接,但不验证数据库服务器的真实性。 prefer:如果数据库支持,那么首选使用SSL安全加密连接,但不验证数据库服务器的真实性。 require:必须使用SSL安全连接,但是只做了数据加密,而并不验证数据库服务器的真实性。 verify-ca:必须使用SSL安全连接,并验证服务器是否具有由可信任的证书机构签发的证书。 verify-full:必须使用SSL安全连接,并且验证服务器是否具有由可信任的证书机构签发的证书,以及验证服务器主机名是否与证书中的一致 sslkey 指定用于客户端证书的密钥位置,如果需要走SSL连接,并且该参数未指定,可通过设置环境变量${PGSSLKEY}来指定。 sslcert 指定客户端SSL证书的文件名,或者通过设置环境变量${PGSSLCERT}来指定。 sslrootcert 指定一个包含SSL证书机构(CA)证书的文件名称,或者通过设置环境变量${PGSSLROOTCERT}来指定。 sslcrl 指定ssl证书撤销列表(CRL)的文件名。列在这个文件中的证书如果存在,在尝试认证该服务器证书时会被拒绝,从而连接失败。也可通过环境变量${PGSSLCRL}来指定。 sslpassword 指定对秘钥解密成明文的密码短语,当指定该参数的时候表示sslkey是一个加密存储的文件,当前sslkey支持des/aes加密方式。 说明: DES加密算法安全性低,存在安全风险,建议使用更安全的加密算法。 disable_prepared_binary_result 字符串类型,若设置为yes,表示此连接在从预准备语句接收查询结果时不应使用二进制格式。该参数仅用于调试。 取值范围:yes/no。 binary_parameters 字符串类型,该参数表示是否始终以二进制形式发送[]byte。取值范围:yes/no。若该参数设置为yes,建议绑定参数按照[]byte绑定,可以减少内部类型转换。 target_session_attrs 指定数据库的连接类型,该参数用于识别主备节点,也可通过环境变量${PGTARGETSESSIONATTRS}来指定。默认值为“any”,共有六种:any、master、slave、preferSlave、read-write、read-only。 any:尝试连接URL连接串中的任何一个数据节点。 master:尝试连接到URL连接串中的主节点,如果找不到就抛出异常。 slave:尝试连接到URL连接串中的备节点,如果找不到就抛出异常。 preferSlave:尝试连接到URL连接串中的备数据节点(如果有可用的话),否则连接到主数据节点。 read-write:读写模式,表示只能连接主节点。 read-only:只读模式,表示只能连接备节点。 loggerLevel 日志级别,打印相关调试信息,也可通过环境变量${PGLOGGERLEVEL}来指定。 支持trace/debug/info/warn/error/none,级别从高到低。 application_name 设置正在使用连接的GO驱动的名称。缺省值为go-driver,该参数不建议用户配置。 RuntimeParams 要在连接上设置为会话默认值的运行时参数。例如参数名search_path,application_name,timezone等。各参数的详细介绍参见客户端连接缺省设置,可通过show语法查看参数是否设置成功。
  • 连接数据库(SSL方式) 用户通过psycopy2连接GaussDB服务器时,可以通过开启SSL加密客户端和服务器之间的通讯。在使用SSL时,默认用户已经获取了服务端和客户端所需要的证书和私钥文件,关于证书等文件的获取请参考Openssl相关文档和命令。 使用*.ini文件(python的configparser包可以解析这种类型的配置文件)保存数据库连接的配置信息。 在连接选项中添加SSL连接相关参数:sslmode,sslcert,sslkey,sslrootcert。 sslmode:可选项见表1。 sslcert:客户端证书路径。 sslkey:客户端密钥路径。 sslrootcert:根证书路径。 使用psycopg2.connect函数获得connection对象。 使用connection对象创建cursor对象。 表1 sslmode的可选项及其描述 sslmode 是否会启用SSL加密 描述 disable 否 不适用SSL安全连接。 allow 可能 如果数据库服务器要求使用,则可以使用SSL安全加密连接,但不验证数据库服务器的真实性。 prefer 可能 如果数据库支持,那么首选使用SSL连接,但不验证数据库服务器的真实性。 require 是 必须使用SSL安全连接,但是只做了数据加密,而并不验证数据库服务器的真实性。 verify-ca 是 必须使用SSL安全连接。 verify-full 是 必须使用SSL安全连接,目前GaussDB暂不支持。 父主题: 基于Psycopg开发
  • 默认权限机制 数据库对象创建后,进行对象创建的用户就是该对象的所有者。数据库安装后的默认情况下,未开启三权分立,数据库系统管理员具有与对象所有者相同的权限。也就是说对象创建后,默认只有对象所有者或者系统管理员可以查询、修改和销毁对象,以及通过GRANT将对象的权限授予其他用户。 为使其他用户能够使用对象,必须向用户或包含该用户的角色授予必要的权限。 GaussDB支持以下的权限:SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES、CREATE、CONNECT、EXECUTE、USAGE、ALTER、DROP、COMMENT、INDEX和VACUUM。不同的权限与不同的对象类型关联。有关各权限的详细信息,请参见GRANT。 要撤消已经授予的权限,可以使用REVOKE。对象所有者的权限(例如ALTER、DROP、COMMENT、INDEX、VACUUM、GRANT和REVOKE)是隐式拥有的,即只要拥有对象就可以执行对象所有者的这些隐式权限。对象所有者可以撤消自己的普通权限,例如,使表对自己以及其他人只读,系统管理员用户除外。 系统表和系统视图要么只对系统管理员可见,要么对所有用户可见。标识了需要系统管理员权限的系统表和视图只有系统管理员可以查询。有关信息,请参考系统表和系统视图。 数据库提供对象隔离的特性,对象隔离特性开启时,用户只能查看有权限访问的对象(表、视图、字段、函数),系统管理员不受影响。有关信息,请参考ALTER DATABASE。 不建议用户修改系统表和系统视图的权限。 父主题: 管理用户及权限
  • 示例:常用操作 import psycopg2#创建连接对象conn=psycopg2.connect(database="postgres",user="user",password="password",host="localhost",port=port)cur=conn.cursor() #创建指针对象#创建连接对象(SSl连接)conn = psycopg2.connect(dbname="postgres", user="user", password="password", host="localhost", port=port, sslmode="verify-ca", sslcert="client.crt",sslkey="client.key",sslrootcert="cacert.pem")注意: 如果sslcert, sslkey,sslrootcert没有填写,默认取当前用户.postgresql目录下对应的client.crt, client.key, root.crt# 创建表cur.execute("CREATE TABLE student(id integer,name varchar,sex varchar);")#插入数据cur.execute("INSERT INTO student(id,name,sex) VALUES(%s,%s,%s)",(1,'Aspirin','M'))cur.execute("INSERT INTO student(id,name,sex) VALUES(%s,%s,%s)",(2,'Taxol','F'))cur.execute("INSERT INTO student(id,name,sex) VALUES(%s,%s,%s)",(3,'Dixheral','M'))# 获取结果cur.execute('SELECT * FROM student')results=cur.fetchall()print (results)# 关闭连接conn.commit()cur.close()conn.close()psycopg2常用链接方式1. conn = psycopg2.connect(dbname="postgres", user="user", password="password", host="localhost", port=port)2. conn = psycopg2.connect("dbname=postgres user=user password=password host=localhost port=port")3. 使用日志import loggingimport psycopg2from psycopg2.extras import LoggingConnectionlogging.basicConfig(level=logging.DEBUG) # 日志级别logger = logging.getLogger(__name__)db_settings = { "user": "user", "password": "password", "host": "localhost", "database": "postgres", "port": port}conn = psycopg2.connect(connection_factory=LoggingConnection, **db_settings)conn.initialize(logger) 父主题: 基于Psycopg开发
  • 加载驱动 在使用驱动之前,需要做如下操作: 先解压版本对应驱动包,使用root用户将psycopg2拷贝到python安装目录下的site-packages文件夹下。 修改psycopg2目录权限为755。 将psycopg2目录添加到环境变量$PYTHONPATH,并使之生效。 对于非数据库用户,需要将解压后的lib目录,配置在LD_LIBRARY_PATH中。 在创建数据库连接之前,需要先加载如下数据库驱动程序: import psycopg2 父主题: 基于Psycopg开发
共100000条