系统结构
1.系统目录
系统目录是关系型数据库管理系统存储模式元数据的地方,例如有关表和列的信息以及内部簿记信息。 UXsinoDB的系统目录是常规表。您可以删除和重新创建表,添加列,插入和更新值,并以这种方式严重破坏系统。通常,不应手动更改系统目录,通常有SQL 命令来执行此操作。(例如,CREATE DATABASE 将一行插入到 ux_database 目录中 -并实际上在磁盘上创建数据库。)对于特别奇特的操作有一些例外情况,但其中许多已经随着时间的推移作为 SQL命令提供,因此直接操作系统目录的需求越来越少。
概述
系统目录列出了系统目录。下面是每个目录的详细文档。
大多数系统目录在数据库创建期间从模板数据库复制,并且此后是特定于数据库的。少数目录在整个集群中的所有数据库中共享;这些在各个目录的描述中有所说明。
系统目录
| 目录名称 | 目的 |
|---|---|
| ux_aggregate | 聚合函数 |
| ux_am | 关系访问方法 |
| ux_amop | 访问方法操作符 |
| ux_amproc | 访问方法支持函数 |
| ux_attrdef | 列默认值 |
| ux_attribute | 表列(“属性”) |
| ux_authid | 授权标识符(角色) |
| ux_auth_members | 授权标识符成员关系 |
| ux_cast | 转换(数据类型转换) |
| ux_class | 表、索引、序列、视图(“关系”) |
| ux_collation | 排序规则(区域设置信息) |
| ux_constraint | 检查约束、唯一约束、主键约束、外键约束 |
| ux_conversion | 编码转换信息 |
| ux_database | 此数据库群集中的数据库 |
| ux_db_role_setting | 每个角色和每个数据库的设置 |
| ux_default_acl | 对象类型的默认权限 |
| ux_depend | 数据库对象之间的依赖关系 |
| ux_description | 数据库对象的描述或注释 |
| ux_enum | 枚举标签和值定义 |
| ux_event_trigger | 事件触发器 |
| ux_extension | 已安装的扩展 |
| ux_foreign_data_wrapper | 外部数据包装器定义 |
| ux_foreign_server | 外部服务器定义 |
| ux_foreign_table | 附加的外部表信息 |
| ux_index | 附加的索引信息 |
| ux_inherits | 表继承层次结构 |
| ux_init_privs | 对象初始权限 |
| ux_job | 存储DBMS_JOB定时任务的相关信息 |
| ux_job_proc | 对应ux_job表中每个任务的作业内容 |
| ux_language | 用于编写函数的语言 |
| ux_largeobject | 大对象的数据页 |
| ux_largeobject_metadata | 大对象的元数据 |
| ux_namespace | 模式 |
| ux_opclass | 访问方法操作符类 |
| ux_operator | 操作符 |
| ux_opfamily | 访问方法操作符族 |
| ux_parameter_acl | 已授予权限的配置参数 |
| ux_partitioned_table | 关于表的分区键的信息 |
| ux_policy | 行安全策略 |
| ux_proc | 函数和过程 |
| ux_publication | 逻辑复制的发布 |
| ux_publication_namespace | 模式到发布的映射 |
| ux_publication_rel | 关系到发布的映射 |
| ux_queue | 关于范围类型的信息 |
| ux_queue_table | 关于范围类型的信息 |
| ux_range | 关于范围类型的信息 |
| ux_replication_origin | 已注册的复制源 |
| ux_rewrite | 查询重写规则 |
| ux_seclabel | 数据库对象的安全标签 |
| ux_sequence | 关于序列的信息 |
| ux_shdepend | 共享对象的依赖关系 |
| ux_shdescription | 共享对象的注释 |
| ux_shseclabel | 共享数据库对象的安全标签 |
| ux_statistic | 规划器统计信息 |
| ux_statistic_ext | 扩展规划器统计信息(定义) |
| ux_statistic_ext_data | 扩展规划器统计信息(数据) |
| 结构名称 | 描述 |
| ux_statistic_ext_data | 扩展查询统计信息(构建统计信息) |
| ux_subscription | 逻辑复制订阅 |
| ux_subscription_rel | 订阅的关系状态 |
| ux_tablespace | 此数据库集群中的表空间 |
| ux_transform | 转换(数据类型到过程语言的转换) |
| ux_trigger | 触发器 |
| ux_ts_config | 文本搜索配置 |
| ux_ts_config_map | 文本搜索配置的标记映射 |
| ux_ts_dict | 文本搜索词典 |
| ux_ts_parser | 文本搜索解析器 |
| ux_ts_template | 文本搜索模板 |
| ux_type | 数据类型 |
| ux_user_mapping | 用户到外部服务器的映射 |
### ux_aggregate
目录ux_aggregate存储有关聚合函数的信息。聚合函数是一种函数,它对一组值(通常是匹配查询条件的每行的一个列)进行操作,并从所有这些值计算出单个值。典型的聚合函数包括sum、count和max。在ux_aggregate中的每个条目都是ux_proc条目的扩展。ux_proc条目携带聚合的名称、输入和输出数据类型以及其他类似于普通函数的信息。
ux_aggregate列
| 列类型 描述 |
|---|
| aggfnoid regproc (引用 ux_proc . oid ) 聚合函数的 ux_proc OID |
| aggkind char 聚合类型:n表示“普通”聚合,o表示“有序集”聚合,或h表示“假设集”聚合 |
| aggnumdirectargs int2 有序集或假设集聚合的直接(非聚合)参数数量,将可变数组视为一个参数。如果等于 pronargs ,则聚合必须是可变参数的,可变数组描述了聚合参数以及最终的直接参数。对于普通聚合,始终为零 |
| aggtransfn regproc (引用 ux_proc . oid ) 转换函数 |
| aggfinalfn regproc (引用 ux_proc . oid ) 最终函数(如果没有则为零) |
| aggcombinefn regproc (引用 ux_proc . oid ) 组合函数(如果没有则为零) |
| aggserialfn regproc (引用 ux_proc . oid ) 序列化函数(如果没有则为零) |
| aggdeserialfn regproc (引用 ux_proc . oid ) 反序列化函数(如果没有则为零) |
| aggmtransfn regproc (引用 ux_proc . oid ) 用于移动聚合模式的前向转换函数(如果没有则为零) |
| aggminvtransfn regproc (引用 ux_proc . oid ) 用于移动聚合模式的反向转换函数(如果没有则为零) |
| aggmfinalfn regproc (引用 ux_proc . oid ) 用于移动聚合模式的最终函数(如果没有则为零) |
| aggfinalextra bool 为 aggfinalfn 传递额外的虚拟参数则为True |
| aggmfinalextra bool 为 aggmfinalfn 传递额外的虚拟参数则为True |
| aggfinalmodify char aggfinalfn 是否修改转换状态值:r表示只读,s表示在 aggfinalfn 之后无法应用 aggtransfn ,w表示写入 |
| aggmfinalmodify char 与 aggfinalmodify 类似,但用于 aggmfinalfn |
| aggsortop oid (引用 ux_operator . oid ) 相关联的排序操作符(如果没有则为零) |
| aggtranstype oid (引用 ux_type . oid ) 聚合函数内部转换(状态)数据的数据类型 |
| aggtransspace int4 转换状态数据的近似平均大小(以字节为单位),如果为零,则使用默认估计值 |
| aggmtranstype oid (引用 ux_type . oid ) 移动聚合模式下聚合函数内部转换(状态)数据的数据类型(如果没有则为零) |
| aggmtransspace int4 移动聚合模式下转换状态数据的近似平均大小(以字节为单位),如果为零,则使用默认估计值 |
| agginitval text 转换状态的初始值。这是一个文本字段,包含其外部字符串表示中的初始值。如果此字段为 null ,则转换状态值起始为 null |
| aggminitval text 移动聚合模式下转换状态的初始值。这是一个文本字段,包含其外部字符串表示中的初始值。如果此字段为 null ,则转换状态值起始为 null |
使用CREATE AGGREGATE命令注册新的聚合函数。
### ux_am
目录ux_am存储有关关系访问方法的信息。系统支持的每种访问方法都有一行。目前,只有表和索引有访问方法。
ux_am列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| amname name 访问方法的名称 |
| amhandler regproc (引用 ux_proc . oid ) 负责提供有关访问方法信息的处理程序函数的OID |
| amtype char t = 表(包括物化视图),i = 索引 |
注意
已添加函数以允许 SQL 查询检查索引访问方法属性。
### ux_amop
目录ux_amop存储与访问方法操作符族相关的操作符信息。每个操作符族的成员都有一行。成员可以是搜索操作符或排序操作符。操作符可以出现在多个族中,但不能在一个族中出现在多个搜索位置或排序位置。(虽然不太可能,但允许一个操作符同时用于搜索和排序目的。)
ux_amop列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| amopfamily oid (引用 ux_opfamily . oid ) 此条目所属的操作符族 |
| amoplefttype oid (引用 ux_type . oid ) 操作符的左输入数据类型 |
| amoprighttype oid (引用 ux_type . oid ) 操作符的右输入数据类型 |
| amopstrategy int2 操作符策略编号 |
| amoppurpose char 操作符用途,s表示搜索,o表示排序 |
| amopopr oid (引用 ux_operator . oid ) 操作符的 OID |
| amopmethod oid (引用 ux_am . oid ) 索引访问方法操作符族所属的 OID |
| amopsortfamily oid (引用 ux_opfamily . oid ) 如果是排序操作符,则此条目按照 B-tree 操作符族进行排序;如果是搜索操作符,则为零 |
“搜索”操作符条目表示可以搜索此操作符族的索引以查找满足 WHERE indexed_column operator constant 的所有行。显然,这样的操作符必须返回boolean,其左侧输入类型必须与索引的列数据类型匹配。
“排序”操作符条目表示可以扫描此操作符族的索引以按照 ORDER BY indexed_column operator constant 所表示的顺序返回行。这样的操作符可以返回任何可排序的数据类型,但是其左侧输入类型必须与索引的列数据类型匹配。amopsortfamily 列指定了 ORDER BY 的确切语义,必须引用操作符结果类型的 B-tree 操作符族。
注意
目前,假定排序操作符的排序顺序是引用操作符族的默认顺序,即 ASC NULLS LAST。将来可能通过添加其他列来明确指定排序选项来放宽此限制。
条目的 amopmethod 必须与其包含的操作符族的 opfmethod 匹配(包括在此处使用 amopmethod是为了性能原因而进行的意向性去规范化目录结构)。此外,amoplefttype 和amoprighttype 必须与引用的ux_operator 条目的oprleft 和 oprright 字段匹配。
ux_amproc
目录ux_amproc存储与访问方法操作符族相关的支持函数信息。每个操作符族的支持函数都有一行。
ux_amproc列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| amprocfamily oid (引用 ux_opfamily . oid ) 此条目所属的操作符族 |
| amproclefttype oid (引用 ux_type . oid ) 相关操作符的左侧输入数据类型 |
| amprocrighttype oid (引用 ux_type . oid ) 相关操作符的右侧输入数据类型 |
| amprocnum int2 支持函数编号 |
| amproc regproc (引用 ux_proc . oid ) 函数的OID |
amproclefttype和amprocrighttype字段的通常解释是它们标识特定支持函数支持的运算符的左侧和右侧输入类型。对于某些访问方法,它们与支持函数本身的输入数据类型匹配,而对于其他访问方法则不匹配。对于索引,有一个“默认”支持函数的概念,它们的amproclefttype和amprocrighttype都等于索引运算符类的opcintype。
ux_attrdef
目录ux_attrdef存储列的默认值。列的主要信息存储在ux_attribute中。只有明确设置了默认值的列才会在此处有条目。
ux_attrdef列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| adrelid oid (引用 ux_class . oid ) 该列所属的表 |
| adnum int2 (引用 ux_attribute . attnum ) 列的编号 |
| adbin ux_node_tree 列的默认值,以 nodeToString() 表示。使用 ux_get_expr(adbin, adrelid) 将其转换为SQL表达式 |
ux_attribute
目录ux_attribute存储有关表列的信息。在数据库中,每个表中的每个列都将恰好有一行ux_attribute。(索引也将有属性条目,事实上所有具有ux_class条目的对象。)
属性一词相当于列,并出于历史原因而使用。
ux_attribute列
| 列类型 描述 |
|---|
| attrelid oid (引用 ux_class . oid ) 该列所属的表 |
| attname name 列名 |
| atttypid oid (引用 ux_type . oid ) 此列的数据类型(删除的列为零) |
| attstattarget int4 attstattarget 通过 ANALYZE 控制此列的统计信息的详细程度。零值表示不应收集任何统计信息。负值表示使用系统默认统计目标。正值的确切含义取决于数据类型。对于标量数据类型, attstattarget 既是要收集的“最常见值”的目标数量,也是要创建的直方图bin的目标数量 |
| attlen int2 该列类型的 ux_type.typlen 的副本 |
| attnum int2 列的编号。普通列从1开始编号。系统列(如 ctid )有(任意的)负数 |
| attndims int4 如果该列是数组类型,则为其维数;否则为0。(目前,数组的维数没有被强制执行,因此任何非零值实际上意味着“它是一个数组”。) |
| attcacheoff int4 在存储中始终为-1,但在加载到内存中的行描述符中时,可能会更新为缓存属性在行内的偏移量 |
| atttypmod int4 atttypmod 记录在表创建时提供的特定于类型的数据(例如, varchar 列的最大长度)。它被传递给特定于类型的输入函数和长度强制函数。对于不需要 atttypmod 的类型,该值通常为-1 |
| attbyval bool 该列类型的 ux_type.typbyval 的副本 |
| attalign char 该列类型的 ux_type.typalign 的副本 |
| attstorage char 通常是该列类型的 ux_type.typstorage 的副本。对于可TOAST的数据类型,可以在列创建后更改此设置以控制存储策略 |
| attcompression char 该列的当前压缩方法。通常这是 '\0' ,以指定使用当前默认设置。否则, 'p' 选择uxlz压缩,而 'l' 选择 LZ4 压缩。但是,当 attstorage 不允许压缩时,将忽略此字段 |
| attnotnull bool 这表示非空约束 |
| atthasdef bool 该列具有默认表达式或生成表达式,此时将在 ux_attrdef 中有相应的条目。 ux_attrdef 目录实际上定义了表达式。(检查 attgenerated 来确定这是默认值还是生成表达式。) |
| atthasmissing bool 当行中完全缺少该列时(例如在行创建后添加具有非易失性的 DEFAULT 值的列时),此列具有一个值,该值将被使用。实际使用的值存储在 attmissingval 列中 |
| attidentity char 如果是零字节( '' ),则不是标识列。否则,a = 总是生成,d = 默认生成 |
| attgenerated char 如果是零字节( '' ),则不是生成的列。否则,s = 存储。(将来可能会添加其他值。) |
| attisdropped bool 此列已被删除并且不再有效。删除的列仍然在表中物理存在,但被解析器忽略,因此无法通过 SQL 访问 |
| attislocal bool 此列在关系中本地定义。请注意,列可以同时本地定义和继承 |
| attinhcount int4 该列的直接祖先数。具有非零祖先数的列无法删除或重命名 |
| attcollation oid (引用 ux_collation . oid ) 该列的定义排序规则,如果该列不是可排序数据类型,则为零 |
| attacl aclitem[] 如果已经在此列上明确授予了列级访问权限,则为该列级访问权限 |
| attoptions text[] 属性级选项,作为“ keyword=value ”字符串 |
| attfdwoptions text[] 属性级外部数据包装器选项,作为“ keyword=value ”字符串 |
| attmissingval anyarray 此列具有一个包含一个元素的数组,该元素是在行中完全缺少该列时使用的值,例如在行创建后添加具有非易失性的 DEFAULT 值的列时。只有在使用 DEFAULT 值添加列后,才使用该值。 atthasmissing 为 true。如果没有值,则该列为 null |
在已删除的列的 ux_attribute 条目中,atttypid 被重置为零,但是从ux_type 复制的 attlen和其他字段仍然有效。这种安排是必要的,以应对删除列的数据类型后来被删除的情况,因此不再有 ux_type行。可以使用 attlen 和其他字段来解释表中一行的内容。
ux_authid
目录ux_authid包含有关数据库授权标识符(角色)的信息。一个角色包含了“用户”和“组”的概念。用户本质上只是一个设置了rolcanlogin标志的角色。任何角色(有或没有rolcanlogin)都可以有其他角色作为成员,请参见ux_auth_members。
由于此目录包含密码,因此不得公开读取。ux_roles是对ux_authid的公开可读视图,其中密码字段被清空。
由于用户身份是整个集群范围内的,因此ux_authid在集群的所有数据库之间共享:每个集群只有一个ux_authid副本,而不是每个数据库一个。
表 ux_authid列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| rolname name 角色名称 |
| rolsuper bool 角色具有超级用户特权 |
| rolinherit bool 角色自动继承其成员角色的权限 |
| rolcreaterole bool 角色可以创建更多的角色 |
| rolcreatedb bool 角色可以创建数据库 |
| rolcanlogin bool 角色可以登录。也就是说,该角色可以作为初始会话授权标识符 |
| rolreplication bool 角色是复制角色。复制角色可以启动复制连接并创建和删除复制插槽 |
| rolbypassrls bool 角色绕过每个行级安全策略 |
| rolconnlimit int4 对于可以登录的角色,这将设置该角色可以进行的并发连接的最大数量。-1表示没有限制 |
| rolpassword text 密码(可能已加密);如果没有则为null。格式取决于所使用的加密形式 |
| rolvaliduntil timestamptz 密码过期时间(仅用于密码身份验证);如果没有过期,则为null |
对于MD5加密的密码,rolpassword列将以字符串md5开头,后跟32个十六进制MD5哈希值。MD5哈希值将是用户密码连接到其用户名的结果。例如,如果用户joe的密码为xyzzy,UXsinoDB将存储xyzzyjoe的md5哈希值。
如果使用SCRAM-SHA-256加密密码,则其格式为:
SCRAM-SHA-256$<iteration count>:<salt>$<StoredKey>:<ServerKey>
其中 salt , StoredKey 和 ServerKey 以Base64编码格式表示。此格式与RFC 5803指定的格式相同。
不遵循这两种格式的密码被认为是未加密的。
ux_auth_members
目录ux_auth_member显示角色之间的成员关系。允许任何非循环关系集。
因为用户标识是集群范围的,所以ux_auth_member在集群的所有数据库之间共享:每个集群只有一个ux_auth_member副本,而不是每个数据库一个。
| 列类型 描述 |
|---|
| roleid oid (引用 ux_authid . oid ) 拥有成员的角色的ID |
| member oid (引用 ux_authid . oid ) roleid 的成员角色的ID |
| grantor oid (引用 ux_authid . oid ) 授权此成员关系的角色的ID |
| admin_option bool 如果 member 能把 roleid 的成员关系授予他人,则为真 |
ux_cast
目录ux_cast存储数据类型转换路径,包括内置和用户定义的。
需要注意的是,ux_cast并不代表系统知道如何执行的每种类型转换;只有那些不能从某些通用规则推导出来的类型转换。例如,在ux_cast中没有明确表示在域和其基本类型之间进行转换。另一个重要的例外是,使用数据类型自己的I/O函数执行的“自动I/O转换转换”,以将其转换为或从text或其他字符串类型,不在ux_cast中明确表示。
ux_cast列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| castsource oid (引用 ux_type . oid ) 源数据类型的OID |
| casttarget oid (引用 ux_type . oid ) 目标数据类型的OID |
| castfunc oid (引用 ux_proc . oid ) 执行此转换所使用的函数的 OID。如果转换方法不需要函数,则存储零 |
| castcontext char 指示可以在哪些上下文中调用转换。e表示仅作为显式转换(使用 CAST 或 :: 语法)。a表示隐式赋值 到目标列,以及显式赋值。i表示在表达式中隐式使用,以及其他情况 |
| castmethod char 指示如何执行转换。f表示使用 castfunc 字段中指定的函数。i表示使用输入/输出函数。b表示类型是二进制可强制转换的,因此不需要转换 |
在 ux_cast 中列出的转换函数必须 始终将转换源类型作为其第一个参数类型,并将将转换目标类型作为其结果类型返回。转换函数最多可以有三个参数。如果存在第二个参数,则必须是类型 integer;它接收类型与目标类型关联的类型修饰符,或-1 如果没有。如果存在第三个参数,则必须是类型boolean;它接收 true 如果转换是显式转换,则为 false。
如果相关联的函数需要多个参数,则创建 ux_cast 条目 其中源类型和目标类型相同是合法的。 这样的条目表示“长度强制转换函数”,将类型的值强制转换为 对于特定类型修饰符值合法。
当 ux_cast 条目具有不同的源和 目标类型和需要多个参数的函数时,它表示从一种类型转换到另一种类型并应用长度在单个步骤中进行强制转换。如果没有这样的条目,则强制转换到使用类型修饰符的类型涉及两个步骤,一个用于在数据类型之间进行转换,第二个用于应用修饰符。
ux_class
目录ux_class记录了表和大多数其他具有列或类似表的对象。这包括索引(但请参见ux_index)、序列(但请参见ux_sequence)、视图、物化视图、复合类型和TOAST表。下面,当我们指的是所有这些类型的对象时,我们称之为“关系”。并非所有列对于所有关系类型都有意义。
ux_class列
| 名称 | 类型 | 引用 | 描述 |
|---|---|---|---|
| oid | oid | 行标识符 | |
| relname | name | 表、索引、视图等的名字 | |
| relnamespace | oid | ux_namespace .oid | 包含该关系的名字空间的OID |
| reltype | oid | ux_type .oid | 可能存在的表行类型所对应数据类型的OID(对索引为0,索引没有 ux_type 项) |
| reloftype | oid | ux_type .oid | 对于有类型的表,为底层组合类型的OID,对于其他所有关系为0 |
| relowner | oid | ux_authid .oid | 关系的拥有者 |
| relam | oid | ux_am .oid | 如果这是一个表或者索引,表示索引使用的访问方法(堆、B树、哈希等) |
| relfilenode | oid | 该关系的磁盘文件的名字,0表示这是一个 “ 映射 ” 关系,其磁盘文件名取决于低层状态 | |
| reltablespace | oid | ux_tablespace .oid | 该关系所存储的表空间。如果为0,使用数据库的默认表空间。(如果关系无磁盘文件时无意义) |
| relpages | int4 | 该表磁盘表示的尺寸,以页面计(页面尺寸为 BLCKSZ )。这只是一个由规划器使用的估计值。它被 VACUUM 、 ANALYZE 以及一些DDL命令(如 CREATE INDEX )所更新。 | |
| reltuples | float4 | 表中的存活行数。这只是一个由规划器使用的估计值。它被 VACUUM 、 ANALYZE 以及一些DDL命令(如 CREATE INDEX )所更新。 | |
| relallvisible | int4 | 在表的可见性映射表中被标记为全可见的页数。这只是一个由规划器使用的估计值。它被 VACUUM 、 ANALYZE 以及一些DDL命令(如 CREATE INDEX )所更新。 | |
| reltoastrelid | oid | ux_class .oid | 与该表相关联的TOAST表的OID,如果没有则为0。TOAST表将大属性 “ 线外 ” 存储在一个二级表中。 |
| relhasindex | bool | 如果这是一个表并且其上建有(或最近建有)索引则为真 | |
| relisshared | bool | 如果该表在集簇中的所有数据库间共享则为真。只有某些系统目录(如 ux_database )是共享的。 | |
| relpersistence | char | p = 永久表,u = 无日志表, t = 临时表 | |
| relkind | char | r = 普通表, i = 索引, S = 序列, t = TOAST表, v = 视图, m = 物化视图, c = 组合类型, f = 外部表, p = 分区表, I = 分区索引 | |
| relnatts | int2 | 关系中用户列的数目(系统列不计算在内)。在 ux_attribute 中必须有这么多对应的项。另请参阅 ux_attribute.attnum 。 | |
| relchecks | int2 | 表上 CHECK 约束的数目 | |
| relhasrules | bool | 如果表有(或曾有)规则则为真 | |
| relhastriggers | bool | 如果表有(或曾有)触发器则为真 | |
| relhassubclass | bool | 如果表或者索引有(或曾有)任何继承子女则为真 | |
| relrowsecurity | bool | 如果表上启用了行级安全性则为真 | |
| relforcerowsecurity | bool | 如果行级安全性(启用时)也适用于表拥有者则为真 | |
| relispopulated | bool | 如果表已被填充则为真(对于所有关系该列都为真,但对于某些物化视图却不是) | |
| relreplident | char | 用来为行形成 “ replica identity ” 的列: d = 默认 (主键,如果存在), n = 无, f = 所有列 i = 索引的 indisreplident 被设置或者为默认 | |
| relispartition | bool | 如果表或索引是一个分区,则为真 | |
| relrewrite | oid | ux_class .oid | 对于在要求表重写的DDL操作期间被写入的新关系,这个域包含原始关系的OID,否则为0。那种状态仅在内部可见,对于一个用户可见的关系这个域应该从不包含不是0的值。 |
| relfrozenxid | xid | 在此之前的所有事务ID在表中已经被替换为一个永久的( “ 冻结的 ” ) 事务ID。这用于跟踪表是否需要被清理,以便阻止事务ID回卷或者允许 ux_xact 被收缩。如果该关系不是一个表则为0( InvalidTransactionId )。 | |
| relminmxid | xid | 在此之前的多事务ID在表中已经被替换为一个事务ID。这被用于跟踪表是否需要被清理,以阻止 多事务ID回卷或者允许 ux_multixact 被收缩。如果关系不是一个表则 为0( InvalidMultiXactId )。 | |
| relacl | aclitem[] | 访问权限 | |
| reloptions | text[] | 访问方法相关的选项,以 “ keyword=value ” 字符串形式 | |
| relpartbound | ux_node_tree | 如果表示一个分区(见 relispartition ),分区边界的内部表达 |
ux_class中的几个布尔标志是惰性维护的: 如果这是正确的状态,则保证为true,但是当条件不再为真时可能不会立即重置为false。例如,relhasindex由CREATE INDEX设置, 但是它永远不会被DROP INDEX清除。相反,VACUUM会清除relhasindex,如果它发现表没有索引。这种安排避免了竞争条件并提高了并发性。
ux_collation
目录ux_collation描述了可用的排序规则,它们本质上是从SQL名称到操作系统区域设置类别的映射。
ux_collation列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| collname name 排序规则名称(每个命名空间和编码唯一) |
| collnamespace oid (引用 ux_namespace . oid ) 包含此排序规则的命名空间的OID |
| collowner oid (引用 ux_authid . oid ) 排序规则的所有者 |
| collprovider char 排序规则的提供者:d = 数据库默认值,c = libc,i = icu |
| collisdeterministic bool 排序规则是否确定性的 |
| collencoding int4 排序规则适用的编码,如果适用于任何编码,则为-1 |
| collcollate text 此排序规则对象的 LC_COLLATE |
| collctype text 此排序规则对象的 LC_CTYPE |
| colliculocale text 此排序规则对象的ICU语言环境ID |
| collversion text 排序规则的提供者特定版本。在创建排序规则时记录此版本,然后在使用时检查它,以检测可能导致数据损坏的排序规则定义的更改 |
请注意,此目录的唯一键是(collname,collencoding,collnamespace),而不仅仅是(collname,collnamespace)。UXsinoDB通常忽略所有排序规则,除非collencoding等于当前数据库的编码或-1,并且禁止创建与collencoding=-1的条目具有相同名称的新条目。因此,使用限定的SQL名称(schema.name)足以标识排序规则,即使根据目录定义,这不是唯一的。定义目录的原因是initdb在集群初始化时使用所有可用于系统的语言环境填充它,因此它必须能够保存可能在集群中使用的所有编码的条目。
在template0数据库中,创建编码与数据库编码不匹配的排序规则可能很有用,因为它们可以与稍后从template0克隆的数据库的编码匹配。目前必须手动完成此操作。
ux_constraint
目录ux_constraint存储表上的检查、主键、唯一、外键和排除约束条件。(列约束条件不会被特殊处理。每个列约束条件都等同于某个表约束条件。)非空约束条件在ux_attribute目录中表示,而不是在这里。
用户定义的约束条件触发器(使用CREATE CONSTRAINT TRIGGER创建)也会在此表中生成一个条目。
此处还存储域上的检查约束条件。
ux_constraint列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| conname name 约束名称(不一定唯一!) |
| connamespace oid ( ux_namespace . oid ) 包含此约束的名称空间的 |
| contype char c=检查约束,f=外键约束,p=主键约束,u=唯一约束,t=约束触发器,x=排除约束 |
| condeferrable bool 约束是否可以延期 |
| condeferred bool 约束是否默认延迟 |
| convalidated bool 该约束是否得到验证?目前,只能对外键和检查约束进行错误处理 |
| conrelid oid (引用 ux_class . oid ) 此约束在表上;如果不是表约束,则为零 |
| contypid oid (引用 ux_type . oid ) 该约束的域;如果不是域约束,则为0 |
| conindid oid (引用 ux_class oid ) 支持此约束的索引,如果它是唯一的、主键、外键或排除约束; |
| conparentid oid (引用 ux_constraint . oid ) 父分区表的相应约束,如果这是对分区的约束;否则为0 |
| confrelid oid (引用 ux_class . oid ) 如果是外键,则引用表;否则为0 |
| confupdtype char 外键更新动作代码: a = 无动作, r = 限制, c = 级联, n = 置空, d = 置为默认值 |
| confdeltype char 外键删除动作代码: a = 无动作, r = 限制, c = 级联, n = 置空, d = 置为默认值 |
| confmatchtype char 外键匹配类型: f = 完全, p = 部分, s = 简单 |
| conislocal bool 这个约束是为关系在本地定义的。请注意,可以同时在本地定义和继承约束 |
| coninhcount int4 这个约束有直接遗传祖先的数量。具有非零祖先数的约束不能删除或重新命名 |
| connoinherit bool 这个约束是为关系在本地定义的。它是一种不可遗传的约束 |
| conkey int2[] (引用 ux_attribute . attnum ) 如果表约束(包括外键,但不包括约束触发器),则受约束列列表 |
| confkey int2[] (引用 ux_attribute . attnum ) 如果是外键,则引用列的列表 |
| conpfeqop oid[] (引用 ux_operator . oid ) 如果是外键,则用于PK=FK比较的相等操作符列表 |
| conppeqop oid[] (引用 ux_operator . oid ) 如果是外键,则用于PK=PK比较的相等操作符列表 |
| conffeqop oid[] (引用 ux_operator . oid ) 如果是外键,则FK=FK的相等操作符列表 |
| confdelsetcols int2[] (引用 ux_attribute . attnum ) 如果一个外键 SET NULL 或 SET DEFAULT 删除将更新的列“行动”。如果是空,则所有引用列都将被更新 |
| conexclop oid[] (引用 ux_operator . oid ) 如果有排除约束,则每个列排除操作符的列表 |
| conbin ux_node_tree 如果检查约束,则表达式的内部表示形式。(建议使用 ux_get_constraintdef() 提取检查约束的定义。) |
在排除约束的情况下,conkey 仅对简单列引用的约束元素有用。对于其他情况,conkey中会出现零,并且必须查询相关索引以发现受到约束的表达式。(因此,conkey 具有与索引ux_index.indkey 相同的内容。)
注意
ux_class.relchecks 需要与此表中找到的每个关系的检查约束条目数量相匹配。
ux_conversion
目录ux_conversion描述了编码转换函数。
ux_conversion列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| conname name 转换名称(在命名空间内唯一) |
| connamespace oid (引用 ux_namespace . oid ) 包含此转换的命名空间的OID |
| conowner oid (引用 ux_authid . oid ) 转换的所有者 |
| conforencoding int4 源编码ID( ux_encoding_to_char() 可以将此数字转换为编码名称) |
| contoencoding int4 目标编码 ID( ux_encoding_to_char() 可以将此数字转换为编码名称) |
| conproc regproc (引用 ux_proc . oid ) 转换函数 |
| condefault bool 如果这是默认转换,则为 True |
ux_database
目录ux_database存储有关可用数据库的信息。使用CREATE DATABASE命令创建数据库。
与大多数系统目录不同,ux_database在整个集群的所有数据库之间共享:每个集群只有一个ux_database副本,而不是每个数据库一个。
ux_database列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| datname name 数据库名称 |
| datdba oid (引用 ux_authid . oid ) 数据库所有者,通常是创建它的用户 |
| encoding int4 此数据库的字符编码 ( ux_encoding_to_char() 可以将此数字转换为编码名称) |
| datlocprovider char 该数据库的区域设置提供程序:c = libc,i = icu |
| datistemplate bool 如果为true,则任何具有 CREATEDB 特权的用户都可以克隆此数据库;如果为false,则只有超级用户或数据库所有者可以克隆它 |
| datallowconn bool 如果为false,则没有人可以连接到此数据库。这用于保护 template0 数据库免受更改 |
| datconnlimit int4 设置可以同时连接到此数据库的最大并发连接数。-1表示没有限制 |
| datfrozenxid xid 在此之前的所有事务ID都已在此数据库中替换为永久( “ 冻结 ” )事务ID。这用于跟踪数据库是否需要进行清理,以防止事务ID环绕或允许 ux_xact 缩小。它是每个表的 ux_class . relfrozenxid 值的最小值 |
| datminmxid xid 在此之前的所有多重事务ID都已在此数据库中替换为事务ID。这用于跟踪数据库是否需要进行清理,以防止多重事务ID环绕或允许 ux_multixact 缩小。它是每个表的 ux_class . relminmxid 值的最小值 |
| dattablespace oid (引用 ux_tablespace . oid ) 该数据库的默认表空间。在此数据库中,所有 ux_class . reltablespace 为零的表都将存储在此表空间中;特别是,所有非共享系统目录都将在那里 |
| datcollate text 此数据库的LC_COLLATE |
| datctype text 此数据库的LC_CTYPE |
| daticulocale text 此数据库的ICU区域设置ID |
| datcollversion text 排序规则的提供程序特定版本。在创建数据库时记录此版本,然后在使用时检查它,以检测排序规则定义中的更改,这可能导致数据损坏 |
| datacl aclitem[] 访问权限 |
ux_db_role_setting
目录ux_db_role_setting记录了每个角色和数据库组合的运行时配置变量的默认值。
与大多数系统目录不同,ux_db_role_setting在整个集群的所有数据库之间共享:每个集群只有一个ux_db_role_setting副本,而不是每个数据库一个。
ux_db_role_setting列
| 列类型 描述 |
|---|
| setdatabase oid (引用 ux_database . oid ) 适用于设置的数据库的OID,如果不是特定于数据库,则为零 |
| setrole oid (引用 ux_authid . oid ) 适用于设置的角色的OID,如果不是特定于角色,则为零 |
| setconfig text[] 运行时配置变量的默认值 |
ux_default_acl
目录ux_default_acl存储要分配给新创建对象的初始权限。
ux_default_acl列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| defaclrole oid (引用 ux_authid . oid ) 与此条目相关联的角色的 OID |
| defaclnamespace oid (引用 ux_namespace . oid ) 与此条目相关联的命名空间的 OID,如果没有则为零 |
| defaclobjtype char 此条目所属对象的类型:r = 关系(表、视图),S = 序列,f = 函数,T = 类型,n = 模式 |
| defaclacl aclitem[] 此类型对象在创建时应具有的访问权限 |
ux_default_acl条目显示要分配给指定用户的对象的初始权限。有目前有两种类型的条目:“全局” 条目,其defaclnamespace = 0,以及引用特定模式的 “每个模式” 条目。如果存在全局条目,则它会 覆盖对象类型的正常硬编码默认权限。如果存在每个模式条目,则表示要 添加到全局或硬编码默认权限的权限。
请注意,当另一个目录中的 ACL 条目为空时,它被视为其对象的硬编码默认权限,而不是当前在 ux_default_acl中的内容。只有在对象创建期间才会查询 ux_default_acl。
ux_depend
目录ux_depend记录了数据库对象之间的依赖关系。这些信息允许DROP命令查找必须通过DROP CASCADE删除的其他对象或在DROP RESTRICT情况下防止删除。
另请参见ux_shdepend,它执行与涉及跨数据库集群共享的对象相关的依赖关系的类似功能。
ux_depend列
| 列类型 描述 |
|---|
| classid oid (引用 ux_class . oid ) 依赖对象所在的系统目录的OID |
| objid oid (引用任何OID列) 特定依赖对象的OID |
| objsubid int4 对于表列,这是列号( objid 和 classid 指的是表本身)。对于所有其他对象类型,此列为零 |
| refclassid oid (引用 ux_class . oid ) 引用对象所在的系统目录的OID |
| refobjid oid (引用任何 OID 列) 特定被引用对象的 OID |
| refobjsubid int4 对于表列,这是列号( refobjid 和 refclassid 引用表本身)。对于所有其他对象类型,此列为零 |
| deptype char 定义此依赖关系的具体语义的代码 |
在所有情况下,ux_depend 条目表示不能删除引用对象而不删除依赖对象。但是,有几个子类型由 deptype 标识:
-
DEPENDENCY_NORMAL(n)
分别创建的对象之间的正常关系。可以删除依赖对象而不影响引用对象。只能通过指定CASCADE删除引用对象,此时也会删除依赖对象。例如:表列对其数据类型具有正常依赖关系。 -
DEPENDENCY_AUTO(a)
依赖对象可以与引用对象分别删除,并且应自动删除(无论是RESTRICT还是CASCADE模式),如果删除引用对象。例如:表上的命名约束在表上自动依赖,因此如果删除表,则它将消失。 -
DEPENDENCY_INTERNAL(i)
依赖对象是作为引用对象的创建的一部分创建的,实际上只是其内部实现的一部分。直接删除依赖对象将被直接禁止(我们会告诉用户改为对引用对象发出DROP)。如果删除引用对象,则会自动删除依赖对象,无论是否指定了CASCADE。如果由于删除某个其他对象的依赖关系而必须删除依赖对象,则其删除将转换为删除引用对象,因此依赖对象的NORMAL和AUTO依赖关系的行为就像它们是引用对象的依赖关系一样。例如:视图的ON SELECT规则在视图上内部依赖,防止在视图保留的同时删除它。规则的依赖关系(例如它引用的表)的行为就像它们是视图的依赖关系一样。 -
DEPENDENCY_PARTITION_PRI(P)
DEPENDENCY_PARTITION_SEC(S)
依赖对象是作为引用对象的创建的一部分创建的,实际上只是其内部实现的一部分;但是,与INTERNAL不同,有多个这样的引用对象。除非这些引用对象中至少有一个,否则不能删除依赖对象。如果任何一个对象被删除,依赖对象应该被删除,无论是否指定了CASCADE。此外,与INTERNAL不同的是,依赖对象依赖的其他对象被删除时不会自动删除任何分区引用对象。因此,如果删除操作没有通过其他路径级联到至少一个这些对象中的任何一个,将被拒绝。(在大多数情况下,依赖对象与至少一个分区引用对象共享所有非分区依赖项,因此此限制不会导致阻止任何级联删除。)主分区依赖和次分区依赖的行为相同,只是主依赖项更适合用于错误消息;因此,分区依赖对象应该有一个主分区依赖项和一个或多个次分区依赖项。请注意,分区依赖关系是在对象通常具有的任何依赖关系之外建立的。这简化了ATTACH/DETACH PARTITION操作:只需要添加或删除分区依赖关系。例如:子分区索引在其所在的分区表和父分区索引上都建立了分区依赖关系,因此如果其中任何一个被删除,它也会被删除,否则不会被删除。对父索引的依赖关系是主要的,因此如果用户尝试删除子分区索引,则错误消息将建议删除父索引而不是表。 -
DEPENDENCY_EXTENSION(e)
依赖对象是引用对象(参见ux_extension)的扩展成员。只能通过引用对象上的DROP EXTENSION删除依赖对象。从功能上讲,此依赖关系类型与INTERNAL依赖关系相同,但为了清晰和简化ux_dump,它们被保持分开。 -
DEPENDENCY_AUTO_EXTENSION(x)
依赖对象不是引用对象的扩展成员(因此不应该被 ux_dump忽略),但是如果没有扩展,它将无法正常工作,并且应该自动删除。依赖对象也可以单独删除。从功能上讲,此依赖关系类型与AUTO依赖关系相同,但为了清晰和简化 ux_dump,它们被保持分开。
未来可能需要其他依赖关系类型。
请注意,两个对象很可能通过多个 ux_depend条目链接。例如,子分区索引将在其关联的分区表上具有分区类型依赖关系,并且在其索引的每个列上都具有自动依赖关系。这种情况表达了多个依赖关系语义的并集。如果任何一个依赖关系满足其自动删除的条件,则可以在不使用CASCADE 的情况下删除依赖对象。相反,必须满足所有依赖关系的限制,以便一起删除这些对象。
在 initdb过程中创建的大多数对象都被认为是“固定的”,这意味着系统本身依赖于它们。因此,它们永远不允许被删除。此外,知道固定对象不会被删除,依赖关系的限制可以更严格地实施。例如,如果一个对象依赖于一个固定对象,那么它也被认为是固定的,即使它本身没有被标记为固定的。机制不会费心制作ux_depend条目来显示对它们的依赖关系。因此,例如,类型为numeric的表列在概念上对numeric数据类型具有NORMAL依赖关系,但实际上在ux_depend中没有这样的条目。
ux_description
目录ux_description存储每个数据库对象的可选描述(注释)。可以使用COMMENT命令来操作描述,并使用uxsql的\d命令查看。许多内置系统对象的描述在ux_description的初始内容中提供。
另请参见ux_shdescription,它为涉及跨数据库集群共享的对象的描述执行类似的功能。
ux_description列
| 列类型 描述 |
|---|
| objoid oid (引用任何OID列) 此描述所涉及的对象的OID |
| classoid oid (引用 ux_class . oid ) 此对象出现在的系统目录的OID |
| objsubid int4 对于表列的注释,这是列号( objoid 和 classoid 指的是表本身)。对于所有其他对象类型,此列为零 |
| description text 作为此对象描述的任意文本 |
ux_enum
ux_enum 目录包含每个枚举类型的值和标签条目。给定枚举值的内部表示实际上是其在 ux_enum 中关联行的 OID。
ux_enum 列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| enumtypid oid (引用 ux_type . oid ) 拥有此枚举值的 ux_type 条目的 OID |
| enumsortorder float4 此枚举值在其枚举类型中的排序位置 |
| enumlabel name 此枚举值的文本标签 |
ux_enum 行的 OID 遵循特殊规则:偶数 OID 保证按其枚举类型的排序顺序排序。也就是说,如果两个偶数 OID属于同一枚举类型,则较小的 OID 必须具有较小的 enumsortorder 值。奇数 OID值不需要与排序顺序有任何关系。此规则允许枚举比较例程在许多常见情况下避免目录查找。创建和更改枚举类型的例程尝试分配偶数 OID。尽可能将OID转换为枚举值。
创建枚举类型时,其成员被分配排序位置 1..n 。但是,稍后添加的成员可能会被赋予负值或分数值enumsortorder。这些值的唯一要求是它们在每个枚举类型中正确排序且唯一。
ux_event_trigger
目录ux_event_trigger存储事件触发器。
ux_event_trigger列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| evtname name 触发器名称(必须唯一) |
| evtevent name 标识此触发器触发的事件 |
| evtowner oid (引用 ux_authid . oid ) 事件触发器的所有者 |
| evtfoid oid (引用 ux_proc . oid ) 要调用的函数 |
| evtenabled char 控制事件触发器在哪些session_replication_role模式下触发。0 = 触发器在 “ origin ” 和 “ local ” 模式下触发,D = 触发器已禁用,R = 触发器以 “ 副本 ” 模式触发,A = 触发器总是触发 |
| evttags text[] 此触发器将触发的命令标记。如果为NULL,则不基于命令标记限制触发此触发器 |
ux_extension
目录ux_extension存储有关已安装扩展的信息。
ux_extension列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| extname name 扩展的名称 |
| extowner oid (引用 ux_authid . oid ) 扩展的所有者 |
| extnamespace oid (引用 ux_namespace . oid ) 包含扩展导出对象的模式 |
| extrelocatable bool 如果扩展可以重新定位到另一个模式,则为True |
| extversion text 扩展的版本名称 |
| extconfig oid[] (引用 ux_class . oid ) 扩展配置表的 regclass OID数组,如果没有则为 NULL |
| extcondition text[] 扩展配置表的 WHERE 子句过滤条件数组,如果没有则为 NULL |
请注意,与大多数带有“命名空间”列的目录不同, extnamespace并不意味着扩展属于该模式。扩展名从不带有模式限定符。相反,extnamespace表示包含大多数或所有扩展对象的模式。如果extrelocatable为true,则该模式必须实际上包含属于扩展的所有模式限定符对象。
ux_foreign_data_wrapper
目录ux_foreign_data_wrapper存储外部数据包装器定义。外部数据包装器是访问驻留在外部服务器上的外部数据的机制。
表 ux_foreign_data_wrapper 列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| fdwname name 外部数据包装器的名称 |
| fdwowner oid (引用 ux_authid . oid ) 外部数据包装器的所有者 |
| fdwhandler oid (引用 ux_proc . oid ) 引用负责提供外部数据包装器执行例程的处理程序函数。 如果没有提供处理程序,则为零 |
| fdwvalidator oid (引用 ux_proc . oid ) 引用负责检查给定给外部数据包装器的选项以及外部服务器和用户的选项的有效性的验证器函数。使用外部数据包装器的映射。如果没有提供验证器,则为零 |
| fdwacl aclitem[] 访问权限 |
| fdwoptions text[] 特定于外部数据包装器的选项,作为“keyword=value”字符串 |
ux_foreign_server
目录ux_foreign_server存储外部服务器定义。外部服务器描述外部数据源,例如远程服务器。外部服务器通过外部数据包装器访问。
ux_foreign_server列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| srvname name 外部服务器名称 |
| srvowner oid (引用 ux_authid . oid ) 外部服务器所有者 |
| srvfdw oid (引用 ux_foreign_data_wrapper . oid ) 此外部服务器的外部数据包装器OID |
| srvtype text 服务器类型(可选) |
| srvversion text 服务器版本(可选) |
| srvacl aclitem[] 访问权限 |
| srvoptions text[] 外部服务器特定选项,作为 “ keyword=value ” 字符串 |
ux_foreign_table
目录ux_foreign_table包含有关外部表的辅助信息。外部表主要由ux_class条目表示,就像普通表一样。它的ux_foreign_table条目包含仅与外部表相关的信息,而不包含任何其他类型的关系。
表 ux_foreign_table列
| 列类型 描述 |
|---|
| ftrelid oid (引用 ux_class . oid ) 此外部表的 ux_class 条目的OID |
| ftserver oid (引用 ux_foreign_server . oid ) 此外部表的外部服务器的OID |
| ftoptions text[] 外部表选项,作为“ keyword=value ”字符串 |
ux_index
目录ux_index包含有关索引的部分信息。其余信息主要在ux_class中。
ux_index列
| 列类型 描述 |
|---|
| indexrelid oid (引用 ux_class . oid ) 此索引的 ux_class 条目的OID |
| indrelid oid (引用 ux_class . oid ) 此索引所属表的 ux_class 条目的OID |
| indnatts int2 索引中的列总数(重复 ux_class.relnatts );此数字包括键和包含的属性 |
| indnkeyatts int2 索引中的 键列 数,不包括任何 包含列 ,后者仅存储而不参与索引语义 |
| indisunique bool 如果为真,则为唯一索引 |
| indnullsnotdistinct bool 此值仅用于唯一索引。如果为假,则此唯一索引将认为 null 值不同(因此索引可以包含列中的多个 null 值,这是默认的 UXsinoDB 行为)。如果为真,则将 null 值视为相等(因此索引只能包含一种 null 值) |
| indisprimary bool 如果为真,则此索引表示表的主键(当此值为真时, indisunique 应始终为真) |
| indisexclusion bool 如果为真,则此索引支持排除约束 |
| indimmediate bool 如果为真,则唯一性检查将在插入时立即执行(如果 indisunique 不为真,则无关紧要) |
| indisclustered bool 如果为真,则表上次聚集在此索引上 |
| indisvalid bool 如果为真,则索引当前对查询有效。false 表示索引可能不完整:它仍必须通过 INSERT UPDATE 操作进行修改,但不能安全地用于查询。如果它是唯一的,则唯一性属性也不能保证为真 |
| indcheckxmin bool 如果为真,则查询在此 ux_index 行的 低于它们的 TransactionXmin 事件视界之前不能使用索引,因为表可能包含具有不兼容行的损坏的 HOT 链 |
| indisready bool 如果为真,则索引当前已准备好进行插入。false 表示必须忽略索引的 INSERT UPDATE 操作 |
| indislive bool 如果为假,则索引正在被删除过程中,应忽略它以所有目的(包括 HOT 安全决策) |
| indisreplident bool 如果为真,则使用 ALTER TABLE ... REPLICA IDENTITY USING INDEX ... 选择此索引作为“副本标识” |
| indkey int2vector (引用 ux_attribute . attnum ) 这是一个包含 indnatts 个值的数组,指示此索引索引的哪些表列。例如,值 1 3 表示第一个和第三个表列组成索引条目。关键列在非关键(包含)列之前。此数组中的零表示相应的索引属性是表列上的表达式,而不是简单的列引用 |
| indcollation oidvector (引用 ux_collation . oid ) 对于索引键中的每个列( indnkeyatts 个值),这包含要用于索引的排序规则的OID,如果列不是可排序的数据类型,则为零 |
| indclass oidvector (引用 ux_opclass . oid ) 对于索引键中的每个列( indnkeyatts 个值),这包含要使用的操作符类的OID |
| indoption int2vector 这是一个包含 indnkeyatts 个值的数组,存储每列的标志位。位的含义由索引的访问方法定义 |
| indexprs ux_node_tree 索引属性的表达式树(以 nodeToString() 表示)。这是一个列表,每个零条目都有一个元素。如果所有索引属性都是简单引用,则为空 |
| indpred ux_node_tree 部分索引谓词的表达式树(以 nodeToString() 表示)。如果不是部分索引,则为空 |
ux_inherits
目录ux_inherits记录了关于表和索引继承层次结构的信息。对于数据库中每个直接的父子表或索引关系,都有一个条目。(可以通过跟随条目链来确定间接继承。)
ux_inherits列
| 列类型 描述 |
|---|
| inhrelid oid (引用 ux_class . oid ) 子表或索引的OID |
| inhparent oid (引用 ux_class . oid ) 父表或索引的OID |
| inhseqno int4 如果一个子表有多个直接父表(多重继承),则该数字告诉继承列的排列顺序。计数从1开始 索引不能有多重继承,因为它们只能在使用声明性分区时继承 |
| inhdetachpending bool 对于正在分离的分区,值为 true ;否则为 false |
ux_init_privs
目录ux_init_privs记录系统中对象的初始权限信息。对于每个具有非默认(非NULL)初始权限集的数据库对象,都有一个条目。
对象可以通过在系统初始化(由initdb)时设置这些权限或在通过CREATE EXTENSION创建对象时使用GRANT系统设置初始权限。请注意,系统将自动处理扩展脚本期间的权限记录,扩展作者只需在其脚本中使用GRANT和REVOKE语句即可记录权限。privtype列指示初始权限是由initdb还是通过CREATE EXTENSION命令设置的。
通过initdb设置初始权限的对象将具有privtype为'i'的条目,而通过CREATE EXTENSION设置初始权限的对象将具有privtype为'e'的条目。
ux_init_privs列
| 列类型 描述 |
|---|
| objoid oid (引用任何OID列) 特定对象的OID |
| classoid oid (引用 ux_class . oid ) 对象所在系统目录的 OID |
| objsubid int4 对于表列,这是列号( objoid 和 classoid 指的是表本身)。对于所有其他对象类型,此列为零 |
| privtype char 定义此对象初始权限类型的代码;请参阅文本 |
| initprivs aclitem[] 初始访问权限 |
ux_job
ux_job主要用来存储DBMS_JOB定时任务的相关信息。
表 ux_job列
| 名称 | 类型 | NULL | 描述 |
|---|---|---|---|
| job_id | integer | not null | 作业id,是唯一的(有唯一索引) |
| log_user | name | not null | 创建作业者的用户名 |
| dbname | name | not null | 标识作业要在哪个数据库执行的数据库名称 |
| node_name | name | not null | 标识当前作业是在哪个数据库主节点上创建和执行 |
| node_port | integer | not null | 节点端口号 |
| job_status | "char" | not null | 当前任务的执行状态,有四种可能取值'r', 's', 'f', 'd',默认为's',取值含义:r=running,s=success,f= failed,d=disable |
| start_date | timestamp without time zone | not null | 作业创建的时间 |
| next_run_date | timestamp without time zone | not null | 下次执行的时间 |
| failure_count | smallint | not null | 失败次数 |
| enable | boolean | not null | 作业是否能够运行 |
| interval | text | 作业执行的时间间隔 | |
| last_start_date | timestamp without time zone | 上次开始运行的时间 | |
| last_end_date | timestamp without time zone | 上次结束运行的时间 | |
| last_suc_date | timestamp without time zone | 上次成功运行的时间 | |
| this_run_date | timestamp without time zone | 这次运行时间 | |
| job_name | text | 作业名称 |
### ux_job_proc
ux_job_proc对应ux_job表中每个任务的作业内容。
表 ux_job_proc列
| 名称 | 类型 | NULL | 描述 |
|---|---|---|---|
| job_id | integer | not null | 作业id,是唯一的(有唯一索引) |
| what | text | 作业运行的内容 | |
| job_name | text | 作业名称 |
ux_language
目录ux_language注册了可以编写函数或存储过程的语言。
ux_language列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| lanname name 语言名称 |
| lanowner oid (引用 ux_authid . oid ) 语言所有者 |
| lanispl bool 这对于内部语言(如SQL)是错误的,对于用户定义的语言是正确的。目前, ux_dump 仍然使用此项来确定需要转储哪些语言,但这可能会在未来被替换为不同的机制 |
| lanpltrusted bool 如果这是一个受信任的语言,则为True,这意味着它被认为不会授予对正常SQL执行环境之外的任何内容的访问权限。只有超级用户才能在不受信任的语言中创建函数 |
| lanplcallfoid oid (引用 ux_proc . oid ) 对于非内部语言,这引用语言处理程序,它是一个特殊的函数,负责执行所有用特定语言编写的函数。对于内部语言,为零 |
| laninline oid (引用 ux_proc . oid ) 这引用一个函数,负责执行 “ inline ” 匿名代码块( DO 块)。如果不支持内联块,则为零 |
| lanvalidator oid (引用 ux_proc . oid ) 这引用一个语言验证器函数,负责在创建新函数时检查语法和有效性。如果没有提供验证器,则为零 |
| lanacl aclitem[] 访问权限 |
| lanincludeout bool 为真表示语言创建的函数兼容Oracle的OUT和INOUT参数 |
ux_largeobject
目录ux_largeobject保存了组成“大对象”的数据。大对象由创建时分配的OID标识。每个大对象被分成小段或“页”,方便地存储为ux_largeobject中的行。每页的数据量定义为LOBLKSIZE(目前为BLCKSZ/4,通常为2kB)。
使用ux_largeobject_metadata获取大对象OID列表。
ux_largeobject列
| 列类型 描述 |
|---|
| loid oid (引用 ux_largeobject_metadata . oid ) 包含此页的大对象的标识符 |
| pageno int4 此页在其大对象中的页号(从零开始计数) |
| data bytea 大对象中存储的实际数据。 这永远不会超过 LOBLKSIZE 字节,可能会更少 |
ux_largeobject 的每一行都保存一个大对象页面的数据,从对象内的字节偏移量 (pageno * LOBLKSIZE)开始。实现允许稀疏存储:页面可能丢失,即使它们不是对象的最后一页,它们也可能短于 LOBLKSIZE字节。大对象内的缺失区域读取为零。
ux_largeobject_metadata
目录ux_largeobject_metadata保存与大对象相关的元数据。实际的大对象数据存储在ux_largeobject中。
ux_largeobject_metadata列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| lomowner oid (引用 ux_authid . oid ) 大对象的所有者 |
| lomacl aclitem[] 访问权限 |
ux_namespace
目录ux_namespace存储命名空间。 命名空间是支持SQL模式的结构:每个命名空间可以有不同的关系、类型等集合,避免名称冲突。
ux_namespace列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| nspname name 命名空间名称 |
| nspowner oid (引用 ux_authid . oid ) 命名空间所有者 |
| nspacl aclitem[] 访问权限 |
ux_opclass
目录ux_opclass定义了索引访问方法操作符类。每个操作符类定义了特定数据类型和特定索引访问方法的索引列的语义。操作符类基本上指定了特定操作符族适用于特定可索引列数据类型。实际可用于索引列的操作符集是接受列数据类型作为其左侧输入的那些操作符。
ux_opclass列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| opcmethod oid (引用 ux_am . oid ) 索引访问方法操作符类是为了 |
| opcname name 此操作符类的名称 |
| opcnamespace oid (引用 ux_namespace . oid ) 此操作符类的名称空间 |
| opcowner oid (引用 ux_authid . oid ) 运算符类的所有者 |
| opcfamily oid (引用 ux_opfamily . oid ) 包含运算符类的运算符族 |
| opcintype oid (引用 ux_type . oid ) 运算符类索引的数据类型 |
| opcdefault bool 如果此运算符类是 opcintype 的默认值,则为True |
| opckeytype oid (引用 ux_type . oid ) 存储在索引中的数据类型,如果与 opcintype 相同,则为零 |
运算符类的opcmethod必须匹配其包含运算符族的opfmethod。此外,在任何给定的opcmethod和opcintype组合中,opcdefault为真的ux_opclass行不能超过一个。
ux_operator
目录ux_operator存储有关运算符的信息。
ux_operator列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| oprname name 运算符名称 |
| oprnamespace oid (引用 ux_namespace . oid ) 包含此运算符的命名空间的OID |
| oprowner oid (引用 ux_authid . oid ) 运算符的所有者 |
| oprkind char b = 中缀运算符(“both”), 或l = 前缀运算符(“left”) |
| oprcanmerge bool 此操作符支持合并连接 |
| oprcanhash bool 此操作符支持哈希连接 |
| oprleft oid (引用 ux_type . oid ) 左操作数的类型(前缀操作符为零) |
| oprright oid (引用 ux_type . oid ) 右操作数的类型 |
| oprresult oid (引用 ux_type . oid ) 结果的类型(尚未定义的“shell”操作符为零) |
| oprcom oid (引用 ux_operator . oid ) 此操作符的交换操作符(如果没有则为零) |
| oprnegate oid (引用 ux_operator . oid ) 此操作符的否定操作符(如果没有则为零) |
| oprcode regproc (引用 ux_proc . oid ) 实现此操作符的函数(尚未定义的“shell”操作符为零) |
| oprrest regproc (引用 ux_proc . oid ) 此操作符的限制选择性估计函数(如果没有则为零) |
| oprjoin regproc (引用 ux_proc . oid ) 此操作符的连接选择性估计函数(如果没有则为零) |
ux_opfamily
目录ux_opfamily定义了操作符族。每个操作符族都是一组操作符和相关的支持例程,用于实现特定索引访问方法指定的语义。此外,操作符族中的操作符都是“兼容”的,这是由访问方法指定的方式。操作符族的概念允许跨数据类型的操作符用于索引,并使用访问方法语义的知识进行推理。
ux_opfamily列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| opfmethod oid (引用 ux_am . oid ) 索引访问方法操作符族 |
| opfname name 此操作符族的名称 |
| opfnamespace oid (引用 ux_namespace . oid ) 此操作符族的命名空间 |
| opfowner oid (引用 ux_authid . oid ) 操作符族的所有者 |
定义操作符族的大部分信息不在其ux_opfamily行中,而在相关的行中ux_amop,ux_amproc和ux_opclass。
ux_parameter_acl
目录ux_parameter_acl记录了已授予一个或多个角色权限的配置参数。对于具有默认权限的参数不会进行记录。
与大多数系统目录不同,ux_parameter_acl在整个集群的所有数据库之间共享:每个数据库不是有一个ux_parameter_acl的副本,而是整个集群只有一个。
ux_parameter_acl列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| parname text 授予权限的配置参数名称 |
| paracl aclitem[] 访问权限 |
ux_partitioned_table
目录ux_partitioned_table存储有关表如何分区的信息。
ux_partitioned_table列
| 列类型 描述 |
|---|
| partrelid oid (引用 ux_class . oid ) 此分区表的 ux_class 条目的OID |
| partstrat char 分区策略;h = 哈希分区表,l = 列表分区表,r = 范围分区表 |
| partnatts int2 分区键中的列数 |
| partdefid oid (引用 ux_class . oid ) 此分区表的默认分区的 ux_class 条目的OID, 如果此分区表没有默认分区,则为零 |
| partattrs int2vector (引用 ux_attribute . attnum ) 这是一个 partnatts 值的数组,指示哪些表列是分区键的一部分。例如,值 1 3 表示第一个和第三个表列组成分区键。此数组中的零表示相应的分区键列是表达式,而不是简单的列引用 |
| partclass oidvector (引用 ux_opclass . oid ) 对于分区键中的每个列,它包含要使用的运算符类的OID |
| partcollation oidvector (引用 ux_collation . oid ) 对于分区键中的每个列,它包含用于分区的排序规则的OID,如果列不是可排序数据类型,则为零 |
| partexprs ux_node_tree 分区键列的表达式树(以 nodeToString() 表示)。这是一个列表,每个零条目在 partattrs 中有一个元素。如果所有分区键列都是简单引用,则为空 |
ux_policy
目录ux_policy存储表的行级安全策略。策略包括适用于哪种命令(可能是所有命令),适用于哪些角色,要添加为查询的安全障碍限定符的表达式,以及要添加为尝试向表中添加新记录的查询的WITH CHECK选项的表达式。
ux_policy列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| polname name 策略的名称 |
| polrelid oid (引用 ux_class . oid ) 策略适用的表 |
| polcmd char 策略适用的命令类型:r表示 SELECT ,a表示 INSERT ,w表示 UPDATE ,d表示 DELETE ,或*表示所有 |
| polpermissive bool 策略是允许还是限制? |
| polroles oid[] (引用 ux_authid . oid ) 策略适用的角色;零表示 PUBLIC (通常单独出现在数组中) |
| polqual ux_node_tree 要添加到使用表的安全屏障限制的表达式树 |
| polwithcheck ux_node_tree 要添加到尝试向表中添加行的 WITH CHECK 限制的表达式树 |
注意
存储在 ux_policy 中的策略仅在其表的ux_class.relrowsecurity设置时应用。
ux_proc
目录ux_proc存储有关函数、过程、聚合函数和窗口函数(统称为例程)的信息。
如果prokind指示条目是聚合函数的,则在ux_aggregate中应该有一个匹配的行。
ux_proc列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| proname name 函数名称 |
| pronamespace oid (引用 ux_namespace . oid ) 包含此函数的命名空间的OID |
| proowner oid (引用 ux_authid . oid ) 函数的所有者 |
| prolang oid (引用 ux_language . oid ) 此函数的实现语言或调用接口 |
| procost float4 估计的执行成本(以cpu_operator_cost为单位);如果 proretset ,则每行返回的成本 |
| prorows float4 估计的结果行数(如果不是 proretset ,则为零) |
| provariadic oid (引用 ux_type . oid ) 可变数组参数元素的数据类型,如果函数没有可变参数,则为零 |
| prosupport regproc (引用 ux_proc . oid ) 此函数的计划程序支持函数,如果没有,则为零 |
| prokind char f表示普通函数,p表示过程,a表示聚合函数,w表示窗口函数 |
| prosecdef bool 函数是安全定义者(即 “ setuid ” 函数) |
| proleakproof bool 该函数没有副作用。除了通过返回值传递的信息外,不传递任何关于参数的信息。任何可能根据其参数的值抛出错误的函数都不是泄漏证明的 |
| proisstrict bool 如果任何调用参数为空,则函数返回null。在这种情况下,实际上不会调用函数。不是 “ strict ” 的函数必须准备处理空输入 |
| proretset bool 函数返回一个集合(即指定数据类型的多个值) |
| provolatile char provolatile 指示函数的结果是否仅取决于其输入参数,或受外部因素影响。 它是 “ 不变的 ” 函数的i,对于相同的输入始终提供相同的结果。对于结果(对于固定输入)在扫描中不会改变的“稳定”函数,它是s。对于结果可能随时更改的“易变”函数,它是v。(对于具有副作用的函数也使用v,以便对它们的调用不能被优化掉。) |
| proparallel char 表示函数是否可以安全地在并行模式下运行。对于可以在并行模式下无限制运行的函数,它是s。对于可以在并行模式下运行,但其执行受限于并行组的领导者的函数,它是r;并行工作进程不能调用这些函数。对于在并行模式下不安全的函数,它是u;这样的函数的存在会强制执行串行执行计划 |
| pronargs int2 签名参数的个数 |
| proargtypes oidvector (引用 ux_type . oid ) 一个函数参数的数据类型的数组,反映了函数的调用签名。这包括IN、INOUT和VARIADIC参数;如果是用兼容Oracle的语言实现的函数,还包括OUT参数 |
| proallargtypes oid[] (引用 ux_type . oid ) 是函数参数的数据类型数组。这包括所有参数(包括 OUT 和 INOUT 参数);但是,如果所有参数都是 IN 参数,则此字段将为null。请注意,下标从1开始,而由于历史原因, proargtypes 从0开始下标 |
| proargmodes char[] 是函数参数的模式数组,编码为i表示 IN 参数,o表示 OUT 参数,b表示 INOUT 参数,v表示 VARIADIC 参数,t表示 TABLE 参数。如果所有参数都是 IN 参数,则此字段将为null。请注意,下标对应于参数在函数参数列表中的位置。 proallargtypes 而不是 proargtypes |
| proargnames text[] 函数参数的名称数组。 没有名称的参数在数组中设置为空字符串。 如果没有参数有名称,则此字段将为 null。 请注意,下标对应于 proallargtypes 而不是 proargtypes 的位置 |
| proargdefaults ux_node_tree 默认值的表达式树(以 nodeToString() 表示)。 这是一个列表,有 pronargdefaults 个元素,对应于最后N个 输入 参数(即最后 N 个 proargtypes 位置)。 如果没有参数有默认值,则此字段将为 null |
| protrftypes oid[] (引用 ux_type . oid ) 要应用转换的参数/结果数据类型的数组(从函数的 TRANSFORM 子句)。 如果没有,则为 null |
| prosrc text 这告诉函数处理程序如何调用函数。 它可能是解释语言的实际源代码,链接符号,文件名或几乎任何其他内容,具体取决于实现语言/调用约定 |
| probin text 有关如何调用函数的其他信息。 再次强调,解释是特定于语言的 |
| prosqlbody ux_node_tree 预解析的 SQL 函数体。 当以 SQL 标准表示法而不是作为字符串文字给出函数体时,这用于 SQL 语言函数。 在其他情况下,它为 null |
| proconfig text[] 函数的运行时配置变量的本地设置 |
| proacl aclitem[] 访问权限 |
对于编译的函数,包括内置函数和动态加载函数, prosrc 包含函数的 C 语言 名称(链接符号)。 对于 SQL语言函数,如果将函数体指定为字符串文字,则 prosrc 包含函数的源文本;但是,如果函数体以 SQL 标准样式指定, 则 prosrc未使用(通常为空 字符串),而 prosqlbody 包含 预解析的定义。 对于所有其他当前已知的语言类型,prosrc 包含函数的源 文本。除非是 SQL 语言函数,否则 probin 为null。它提供了包含函数的共享库文件的名称,用于动态加载的C 函数。
ux_publication
目录ux_publication包含数据库中创建的所有发布。
ux_publication列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| pubname name 发布名称 |
| pubowner oid (引用 ux_authid . oid ) 发布所有者 |
| puballtables bool 如果为true,则此发布自动包括数据库中的所有表,包括将来创建的任何表 |
| pubinsert bool 如果为true,则表中的 INSERT 操作将被复制 |
| pubupdate bool 如果为true,则表中的 UPDATE 操作将被复制 |
| pubdelete bool 如果为 true,则在发布中的表上复制 DELETE 操作 |
| pubtruncate bool 如果为 true,则在发布中的表上复制 TRUNCATE 操作 |
| pubviaroot bool 如果为 true,则使用发布中提到的最上层分区祖先的标识和模式来复制叶分区上的操作,而不是使用叶分区自己的标识和模式 |
ux_publication_namespace
目录ux_publication_namespace包含数据库中模式和发布之间的映射。这是一个多对多的映射关系。
ux_publication_namespace 列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| pnpubid oid (引用 ux_publication . oid ) 发布的引用 |
| pnnspid oid (引用 ux_namespace . oid ) 模式的引用 |
ux_publication_rel
目录ux_publication_rel包含数据库中关系和发布之间的映射。这是一个多对多的映射。
ux_publication_rel列
| 列型 描述 |
|---|
| oid oid 行标识符 |
| prpubid oid (引用 ux_publication . oid ) 参考出版物 |
| prrelid oid (引用 ux_class . oid ) 参照关系 |
| prqual ux_node_tree 表达树(含) nodeToString() (代表)关系的出版资格条件。如果没有发布限定条件,则为空 |
| prattrs int2vector (引用 ux_attribute . attnum ) 这是一个值数组,它指示哪些表列是发布的一部分。例如, 1 3 这意味着第一和第三个表格列已经发布。空值表示所有列都已发布 |
ux_queue
ux_queue包含数据库中关于队列与队列表间的关系。
表 ux_queue列
| 名称 | 类型 | 引用 | 描述 |
|---|---|---|---|
| oid | oid | 行标识符 | |
| qname | name | 队列的名称 | |
| qnamespace | oid | ux_namespace.oid | 队列所属的名字空间 |
| qrelid | oid | ux_class.Oid | 队列所在队列表的oid |
| qtype | int | 队列的类型 | |
| qenqenable | bool | 队列是否运行入队 | |
| qdeqenable | bool | 队列是否运行出队 | |
| qmaxretries | int | 暂无意义 | |
| qretrydelay | double | 暂无意义 | |
| qretention | double | 暂无意义 |
ux_queue_table
ux_queue_table包含数据库中关于队列表与队列间的关系。
表 ux_queue_table列
| 名称 | 类型 | 引用 | 描述 |
|---|---|---|---|
| oid | oid | 行标识符 | |
| qtname | name | 队列表的名称 | |
| qtnamespace | oid | ux_namespace.oid | 队列表所属的名字空间 |
| qtrelid | oid | ux_class.Oid | 队列表对应的oid |
| qtpayload | oid | ux_type.Oid | 队列表消息负载的类型 |
| qtsort | char | 暂无意义 | |
| qtmultiple_consumers | bool | 暂无意义 | |
| qtmessage_grouping | smallint | 暂无意义 |
ux_range
目录ux_range存储有关范围类型的信息。这是除了类型在ux_type中的条目之外的信息。
ux_range列
| 列类型 描述 |
|---|
| rngtypid oid (引用 ux_type . oid ) 范围类型的OID |
| rngsubtype oid (引用 ux_type . oid ) 此范围类型的元素类型(子类型)的OID |
| rngmultitypid oid (引用 ux_type . oid ) 此范围类型的多范围类型的OID |
| rngcollation oid (引用 ux_collation . oid ) 用于范围比较的排序规则的OID,如果没有则为零 |
| rngsubopc oid (引用 ux_opclass . oid ) 子类型用于范围比较的操作符类的OID |
| rngcanonical regproc (引用 ux_proc . oid ) 将范围值转换为规范形式的函数的OID,如果没有则为零 |
| rngsubdiff regproc (引用 ux_proc . oid ) 返回两个元素值之间的差异作为 double precision 的函数的OID,如果没有则为零 |
rngsubopc(如果元素类型是可排序的,则加上rngcollation)确定范围类型使用的排序顺序。rngcanonical用于离散元素类型。rngsubdiff是可选的,但应提供以提高范围类型上GiST索引的性能。
ux_replication_origin
ux_replication_origin目录包含所有创建的复制源。
与大多数系统目录不同,ux_replication_origin 在整个集群的所有数据库之间共享:每个集群只有一个ux_replication_origin 副本,而不是每个数据库一个。
ux_replication_origin 列
| 列类型 描述 |
|---|
| roident oid 复制源的唯一集群标识符。不应离开系统 |
| roname text 复制源的外部用户定义名称 |
ux_rewrite
目录ux_rewrite存储表和视图的重写规则。
ux_rewrite列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| rulename name 规则名称 |
| ev_class oid (参考 ux_class . oid ) 此规则所适用的表 |
| ev_type char 规则适用的事件类型:1 = SELECT ,2 = UPDATE ,3 = INSERT ,4 = DELETE |
| ev_enabled char 控制规则在哪些session_replication_role模式下触发。O = 规则在 “ origin ” 和 “ local ” 模式下触发,D = 规则已禁用,R = 规则以“ replica ”模式触发,A = 规则总是触发 |
| is_instead bool 如果规则是 INSTEAD 规则,则为True |
| ev_qual ux_node_tree 规则的限定条件的表达式树(以 nodeToString() 表示形式) |
| ev_action ux_node_tree 规则的操作的查询树(以 nodeToString() 表示形式) |
注意
如果表中有任何规则,则ux_class.relhasrules必须为true。
ux_seclabel
目录ux_seclabel存储数据库对象的安全标签。可以使用SECURITY LABEL命令来操作安全标签。
另请参见ux_shseclabel,它为在数据库集群中共享的数据库对象的安全标签执行类似的功能。
ux_seclabel列
| 列类型 描述 |
|---|
| objoid oid (引用任何OID列) 此安全标签所属对象的OID |
| classoid oid (引用 ux_class . oid ) 此对象出现在的系统目录的OID |
| objsubid int4 对于表列上的安全标签,这是列号( objoid 和 classoid 是指表本身)。对于所有其他对象类型,此列为零 |
| provider text 与此标签关联的标签提供程序 |
| label text 应用于此对象的安全标签 |
ux_sequence
目录ux_sequence包含有关序列的信息。有关序列的某些信息,例如名称和模式,位于ux_class中。
ux_sequence列
| 列类型 描述 |
|---|
| seqrelid oid (引用 ux_class . oid ) 此序列的 ux_class 条目的OID |
| seqtypid oid (引用 ux_type . oid ) 序列的数据类型 |
| seqstart int8 序列的起始值 |
| seqincrement int8 序列的增量值 |
| seqmax int8 序列的最大值 |
| seqmin int8 序列的最小值 |
| seqcache int8 序列的缓存大小 |
| seqcycle bool 序列是否循环 |
ux_shdepend
目录ux_shdepend记录了数据库对象和共享对象(如角色)之间的依赖关系。这些信息允许UXsinoDB在尝试删除这些对象之前确保它们没有被引用。
另请参见ux_depend,它执行类似于涉及单个数据库中对象的依赖关系的功能。
与大多数系统目录不同,ux_shdepend在整个集群的所有数据库之间共享:每个集群只有一个ux_shdepend副本,而不是每个数据库一个。
ux_shdepend列
| 列类型 描述 |
|---|
| dbid oid (引用 ux_database . oid ) 依赖对象所在的数据库的OID,对于共享对象为零 |
| classid oid (引用 ux_class . oid ) 依赖对象所在的系统目录的OID |
| objid oid (引用任何OID列) 特定依赖对象的OID |
| objsubid int4 对于表列,这是列号(与系统目录 ux_attribute 中的 attnum 相同),对于其他对象为零 |
| refclassid oid (引用 ux_class . oid ) 被依赖对象所在的系统目录的OID (引用任何OID列) |
| refobjid oid (引用任何OID列) 特定被依赖对象的OID |
| deptype char 定义此依赖关系的具体语义的代码。依赖类型:一般是n(普通依赖项)或a(强制依赖项) |
在所有情况下,ux_shdepend条目表示不能删除被引用对象而不删除依赖对象。但是,有几个子类型由deptype标识:
-
SHARED_DEPENDENCY_OWNER(o)
被引用对象(必须是角色)是依赖对象的所有者。 -
SHARED_DEPENDENCY_ACL(a)
被引用对象(必须是角色)在依赖对象的ACL(访问控制列表,即权限列表)中被提及。(不为对象的所有者创建SHARED_DEPENDENCY_ACL条目,因为所有者将拥有SHARED_DEPENDENCY_OWNER条目。) -
SHARED_DEPENDENCY_POLICY(r)
被引用对象(必须是角色)被提及为依赖策略对象的目标。 -
SHARED_DEPENDENCY_TABLESPACE(t)
被引用对象(必须是表空间)被提及为没有存储的关系的表空间。
将来可能需要其他依赖关系类型。特别要注意的是,当前的定义仅支持角色和表空间作为被引用对象。
与ux_depend目录中一样,在initdb期间创建的大多数对象都被认为是“固定的”。在ux_shdepend中不会创建任何条目,这些条目将具有固定对象作为被引用对象或依赖对象。
示例
假设我们有一个名为myrole的角色,它依赖于一个名为mytable的表。我们可以使用以下查询来查找这些依赖关系:
SELECT classid::regclass, objid, refclassid::regclass, refobjid, deptype
FROM ux_shdepend
WHERE refclassid = 'ux_class'::regclass AND refobjid = 'mytable'::regclass::oid;
这将返回以下结果:
classid | objid | refclassid | refobjid | deptype
-----------+-------+------------+----------+---------
ux_class | 16384 | ux_class | 16402 | n
ux_class | 16402 | ux_class | 16403 | n
ux_class | 16402 | ux_class | 16404 | n
ux_class | 16402 | ux_class | 16405 | n
ux_class | 16402 | ux_class | 16406 | n
ux_class | 16402 | ux_class | 16407 | n
ux_class | 16402 | ux_class | 16408 | n
ux_class | 16402 | ux_class | 16409 | n
ux_class | 16402 | ux_class | 16410 | n
ux_class | 16402 | ux_class | 16411 | n
ux_class | 16402 | ux_class | 16412 | n
ux_class | 16402 | ux_class | 16413 | n
ux_class | 16402 | ux_class | 16414 | n
ux_class | 16402 | ux_class | 16415 | n
ux_class | 16402 | ux_class | 16416 | n
ux_class | 16402 | ux_class | 16417 | n
ux_class | 16402 | ux_class | 16418 | n
ux_class | 16402 | ux_class | 16419 | n
ux_class | 16402 | ux_class | 16420 | n
ux_class | 16402 | ux_class | 16421 | n
ux_class | 16402 | ux_class | 16422 | n
ux_class | 16402 | ux_class | 16423 | n
ux_class | 16402 | ux_class | 16424 | n
ux_class | 16402 | ux_class | 16425 | n
ux_class | 16402 | ux_class | 16426 | n
ux_class | 16402 | ux_class | 16427 | n
ux_class | 16402 | ux_class | 16428 | n
ux_class | 16402 | ux_class | 16429 | n
ux_class | 16402 | ux_class | 16430 | n
ux_class | 16402 | ux_class | 16431 | n
ux_class | 16402 | ux_class | 16432 | n
ux_class | 16402 | ux_class | 16433 | n
ux_class | 16402 | ux_class | 16434 | n
ux_class | 16402 | ux_class | 16435 | n
ux_class | 16402 | ux_class | 16436 | n
ux_class | 16402 | ux_class | 16437 | n
ux_class | 16402 | ux_class | 16438 | n
ux_class | 16402 | ux_class | 16439 | n
ux_class | 16402 | ux_class | 16440 | n
ux_class | 16402 | ux_class | 16441 | n
ux_class | 16402 | ux_class | 16442 | n
ux_class | 16402 | ux_class | 16443 | n
ux_class | 16402 | ux_class | 16444 | n
ux_class | 16402 | ux_class | 16445 | n
ux_class | 16402 | ux_class | 16446 | n
ux_class | 16402 | ux_class | 16447 | n
ux_class | 16402 | ux_class | 16448 | n
ux_class | 16402 | ux_class | 16449 | n
ux_class | 16402 | ux_class | 16450 | n
ux_class | 16402 | ux_class | 16451 | n
ux_class | 16402 | ux_class | 16452 | n
ux_class | 16402 | ux_class | 16453 | n
ux_class | 16402 | ux_class | 16454objid和classid指的是表本身。对于所有其他对象类型,此列为零。
ux_shdescription
目录ux_shdescription存储共享数据库对象的可选描述(注释)。可以使用COMMENT命令操作描述,并使用uxsql的\d命令查看。
另请参见ux_description,它为涉及单个数据库内对象的描述执行类似的功能。
与大多数系统目录不同,ux_shdescription在整个集群的所有数据库之间共享:每个集群只有一个ux_shdescription副本,而不是每个数据库一个。
ux_shdescription列
| 列类型 描述 |
|---|
| objoid oid (引用任何OID列) 此描述所涉及的对象的OID |
| classoid oid (引用 ux_class . oid ) 此对象出现在的系统目录的OID |
| description text 作为此对象描述的任意文本 |
ux_shseclabel
目录ux_shseclabel存储共享数据库对象的安全标签。可以使用SECURITY LABEL命令来操作安全标签。要查看安全标签的更简单的方法,请参见ux_seclabels。
另请参见ux_seclabel,它为涉及单个数据库内对象的安全标签执行类似的功能。
与大多数系统目录不同,ux_shseclabel在整个集群的所有数据库之间共享:每个集群只有一个ux_shseclabel副本,而不是每个数据库一个。
ux_shseclabel列
| 列类型 描述 |
|---|
| objoid oid (引用任何OID列) 此安全标签所涉及的对象的OID |
| classoid oid (引用 ux_class . oid ) 此对象出现在的系统目录的OID |
| provider text 与此标签关联的标签提供程序 |
| label text 应用于此对象的安全标签 |
ux_statistic
目录ux_statistic存储有关数据库内容的统计数据。条目是由ANALYZE创建的,随后由查询规划器使用。请注意,所有统计数据本质上都是近似的,即使假设它是最新的。
通常,对于已分析的每个表列,都有一个条目,其中stainherit=false。如果表具有继承子项或分区,则还会创建第二个条目,其中stainherit=true。此行表示继承树上的列统计信息,即您将使用SELECT column FROM table* 看到的数据的统计信息,而stainherit=false行表示SELECT column FROM ONLY table 的结果。
ux_statistic还存储有关索引表达式值的统计数据。这些被描述为实际数据列;特别地,starelid引用索引。但是,对于普通的非表达式索引列,不会创建条目,因为它与基础表列的条目重复。目前,索引表达式的条目始终具有stainherit=false。
由于不同类型的数据可能需要不同类型的统计信息,因此ux_statistic的设计不会假设它存储了什么样的统计信息。只有极其一般的统计信息(例如空值)在ux_statistic中具有专用列。其他所有内容都存储在“槽”中,这些槽是相关列的组,其内容由槽中的一个列中的代码号标识。有关详细信息,请参见src/include/catalog/ux_statistic.h。
ux_statistic 不应该被公开读取,因为关于表内容的统计信息甚至可能被视为敏感信息。 (例如:薪资列的最小值和最大值可能非常有趣。)ux_stats是一个公开可读的视图,它只公开那些当前用户可以读取的表的信息。
ux_statistic列
| 列类型 描述 |
|---|
| starelid oid (引用 ux_class . oid ) 所描述的列所属的表或索引 |
| staattnum int2 (引用 ux_attribute . attnum ) 所描述的列的编号 |
| stainherit bool 如果为 true,则统计信息包括子表中的值,而不仅仅是指定关系中的值 |
| stanullfrac float4 该列条目中为 null 的比例 |
| stawidth int4 非 null 条目的平均存储宽度(以字节为单位) |
| stadistinct float4 该列中不同的非 null 数据值的数量。 大于零的值是实际的不同值的数量。 小于零的值是表中行数的负数乘数的结果;例如,一个大约 80% 的值为非 null 值,每个非 null 值平均出现两次的列可以由 stadistinct = -0.4 表示。 零值表示不知道不同值的数量 |
| stakindN int2 一个代码数字,指示存储在 ux_statistic 行的第N个“槽”中的统计信息的类型 |
| staopN oid (引用 ux_operator . oid ) 用于导出存储在第N个“槽”中的统计信息的运算符。例如,一个直方图插槽将显示定义数据排序顺序的 < 运算符。如果统计类型不需要运算符,则为零 |
| stacollN oid (引用 ux_collation . oid ) 用于派生存储在第N个 “ 插槽 ” 中的统计信息的排序规则。例如,可排序列的直方图插槽将显示定义数据排序顺序的排序规则。对于不可排序的数据,为零 |
| stanumbersN float4[] 适用于第N个 “ 插槽 ” 的相应类型的数字统计信息,如果插槽类型不涉及数字值,则为null |
| stavaluesN anyarray 适用于第N个 “ 插槽 ” 的相应类型的列数据值,如果插槽类型不存储任何数据值,则为null。每个数组的元素值实际上是特定列的数据类型或相关类型,例如数组的元素类型,因此无法比 anyarray 更具体地定义这些列的类型 |
注意
在uxdb安全模式下禁止所有用户查看该系统表。
ux_statistic_ext
目录ux_statistic_ext保存了扩展查询计划统计信息的定义。该目录中的每一行对应于使用CREATE STATISTICS创建的一个统计对象。
ux_statistic_ext列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| stxrelid oid (引用 ux_class . oid ) 包含此对象描述的列的表 |
| stxname name 统计对象的名称 |
| stxnamespace oid (引用 ux_namespace . oid ) 包含此统计对象的命名空间的OID |
| stxowner oid (引用 ux_authid . oid ) 统计对象的所有者 |
| stxstattarget int4 stxstattarget 控制由 ANALYZE 为此统计对象累积的统计信息的详细程度。 零值表示不应收集任何统计信息。 负值表示使用引用列的统计目标的最大值(如果设置),否则使用系统默认的统计目标。 stxstattarget 的正值确定要收集的“最常见值”的目标数量 |
| stxkeys int2vector (引用 ux_attribute 的 attnum ) 属性编号数组,指示此统计对象涵盖哪些表列; 例如,值 1 3 表示涵盖第一列和第三列 |
| stxkind char[] 包含启用的统计种类代码的数组;有效值为:d表示n-distinct统计信息,f表示函数依赖性统计信息, m表示最常见值(MCV)列表统计信息,以及e表示表达式统计信息 |
| stxexprs ux_node_tree 统计对象属性的表达式树(以 nodeToString() 表示)不是简单的列引用。这是一个每个表达式一个元素的列表。 如果所有统计对象属性都是简单引用,则为Null |
ux_statistic_ext条目在CREATE STATISTICS期间完全填充,但实际统计值在那时不会计算。随后的ANALYZE命令计算所需的值,并填充ux_statistic_ext_data目录中的条目。
注意
在uxdb安全模式下禁止所有用户查看该系统表。
ux_statistic_ext_data
目录ux_statistic_ext_data保存了在ux_statistic_ext中定义的扩展查询计划统计数据。该目录中的每一行对应于使用CREATE STATISTICS创建的一个统计对象。
通常情况下,对于每个已分析的统计对象,都会有一个条目,其中stxdinherit = false。如果表具有继承子项或分区,则还会创建一个stxdinherit = true的第二个条目。该行表示继承树上的统计对象,即您将在SELECT * FROM table* 中看到的数据的统计信息,而stxdinherit = false的行表示SELECT * FROM ONLY table的结果。
与ux_statistic一样,ux_statistic_ext_data不应该对公众可读,因为其内容可能被视为敏感信息。(例如:列中最常见的值的组合可能非常有趣。)ux_stats_ext是一个公开可读的视图,它连接了ux_statistic_ext,仅公开那些当前用户可读的表和列的信息。
ux_statistic_ext_data 列
| 列类型 描述 |
|---|
| stxoid oid (引用 ux_statistic_ext . oid ) 包含此数据定义的扩展统计对象 |
| stxdinherit bool 如果为 true,则统计信息包括子表中的值,而不仅仅是指定关系中的值 |
| stxdndistinct ux_ndistinct N-distinct 计数,序列化为 ux_ndistinct 类型 |
| stxddependencies ux_dependencies 功能依赖统计信息,序列化为 ux_dependencies 类型 |
| stxdmcv ux_mcv_list MCV(最常见值)列表统计信息,序列化为 ux_mcv_list 类型 |
| stxdexpr ux_statistic[] 每个表达式的统计信息,序列化为 ux_statistic 类型的数组 |
ux_subscription
目录ux_subscription包含所有现有的逻辑复制订阅。
与大多数系统目录不同,ux_subscription在整个集群的所有数据库之间共享:每个数据库不是一个副本,而是整个集群只有一个ux_subscription。
普通用户被撤销访问subconninfo列的权限,因为它可能包含明文密码。
ux_subscription列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| subdbid oid (引用 ux_database . oid ) 订阅所在的数据库的OID |
| subskiplsn ux_lsn 要跳过其更改的事务的完成LSN,如果是有效的LSN,则为 0/0 |
| subname name 订阅名称 |
| subowner oid (引用 ux_authid . oid ) 订阅所有者 |
| subenabled bool 如果为真,则启用订阅并应进行复制 |
| subbinary bool 如果为真,则订阅将请求发布者以二进制格式发送数据 |
| substream bool 如果为真,则订阅将允许流式传输正在进行的事务 |
| subtwophasestate char 两阶段模式的状态代码:d = 禁用,p = 待启用,e = 已启用 |
| subdisableonerr bool 如果为真,则订阅将在其工作进程之一检测到错误时被禁用 |
| subconninfo text 与上游数据库的连接字符串 |
| subslotname name 上游数据库中复制插槽的名称(也用于本地复制源名称); null表示 NONE |
| subsynccommit text 订阅的工作进程使用的 synchronous_commit 设置 |
| subpublications text[] 订阅的发布名称数组。这些引用在上游数据库中定义的发布 |
ux_subscription_rel
目录ux_subscription_rel包含每个订阅中每个复制关系的状态。这是多对多映射。
此目录仅包含在运行CREATE SUBSCRIPTION或ALTER SUBSCRIPTION ... REFRESH PUBLICATION之后订阅已知的表。
ux_subscription_rel列
| 列类型 描述 |
|---|
| srsubid oid (引用 ux_subscription . oid ) 订阅参考资料 |
| srrelid oid (引用 ux_class . oid ) 参照关系 |
| srsubstate char 状态代码:i=初始化,d=数据正在被拷贝,f=填好的表格副本,s=已同步,r=就绪(普通复制) |
| srsublsn ux_lsn 用于同步协调的状态更改的远程lsn s或r国家,否则无效 |
ux_tablespace
目录ux_tablespace存储有关可用表空间的信息。可以将表放置在特定的表空间中,以帮助管理磁盘布局。
与大多数系统目录不同,ux_tablespace在整个集群的所有数据库之间共享:每个集群只有一个ux_tablespace副本,而不是每个数据库一个。
ux_tablespace列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| spcname name 表空间名称 |
| spcowner oid (引用 ux_authid . oid ) 表空间的所有者,通常是创建它的用户 |
| spcacl aclitem[] 访问权限 |
| spcoptions text[] 表空间级别选项,作为 “ keyword=value ” 字符串 |
ux_transform
目录ux_transform存储有关转换的信息,转换是一种将数据类型适应过程性语言的机制。
ux_transform 列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| trftype oid (引用 ux_type . oid ) 此转换所用的数据类型的OID |
| trflang oid (引用 ux_language . oid ) 此转换所用的语言的OID |
| trffromsql regproc (引用 ux_proc . oid ) 在将数据类型转换为过程性语言(例如函数参数)的输入时使用的函数的OID。如果应使用默认行为,则存储零 |
| trftosql regproc (引用 ux_proc . oid ) 在将过程语言的输出(例如返回值)转换为数据类型时使用的函数的OID。如果应使用默认行为,则存储零 |
ux_trigger
目录ux_trigger存储表和视图上的触发器。
ux_trigger列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| tgrelid oid (引用 ux_class . oid ) 此触发器所在的表 |
| tgparentid oid (引用 ux_trigger . oid ) 此触发器从中克隆的父触发器(当创建或附加到分区表时会发生这种情况);如果不是克隆,则为零 |
| tgname name 触发器名称(在同一表的触发器中必须唯一) |
| tgfoid oid (引用 ux_proc . oid ) 要调用的函数 |
| tgtype int2 触发器类型(例如,行级触发器、语句级触发器等) |
| tgenabled char 控制触发器在哪些 session_replication_role 模式下触发。O = 触发器在“origin”和“local”模式下触发, D = 触发器已禁用, R = 触发器在“replica”模式下触发,A = 触发器始终触发 |
| tgisinternal bool 如果触发器是内部生成的(通常是为了强制执行由 tgconstraint 标识的约束),则为True |
| tgconstrrelid oid (引用 ux_class . oid ) 引用完整性约束的表(如果触发器不是用于引用完整性约束,则为零) |
| tgconstrindid oid (引用 ux_class . oid ) 支持唯一性、主键、引用完整性或排除约束的索引(如果触发器不是用于这些类型的约束,则为零) |
| tgconstraint bool (引用 ux_constraint . oid ) 与触发器相关联的 ux_constraint 条目(如果触发器不是用于约束,则为零) |
| tggenerated char 触发器是否为生成的触发器 |
| tgdeferrable bool 如果约束触发器是可延迟的,则为True |
| tginitdeferred bool 如果约束触发器最初是延迟的,则为True |
| tgnargs int2 传递给触发器函数的参数字符串数 |
| tgattr int2vector 如果触发器是特定于列的,则为列号;否则为空数组 |
| tgargs bytea 传递给触发器的参数字符串,每个字符串以NULL结尾 |
| tgqual ux_node_tree 表达式树(在 nodeToString() 中) |
| tgconfig text[] 触发器的配置选项 |
| tgoldtable name OLD TABLE 的 REFERENCING 子句名称,如果有的话,则为其名称;否则为 null |
| tgnewtable name NEW TABLE 的 REFERENCING 子句名称,如果有的话,则为其名称;否则为 null |
目前,仅支持针对UPDATE事件的特定列触发,因此tgattr仅适用于该事件类型。
tgtype可能也包含其他事件类型的位,但这些被认为是表范围的,无论tgattr中包含什么。
注意
当tgconstraint非零时,tgconstrrelid、tgconstrindid、tgdeferrable和tginitdeferred与引用的ux_constraint条目大多是冗余的。但是,非可延迟触发器可能与可延迟约束关联:外键约束可以有一些可延迟和一些不可延迟的触发器。
注意
如果一个关系在此目录中具有任何触发器,则ux_class.relhastriggers必须为true。
示例
下面的示例演示检索表上所有触发器的查询:
SELECT tgname, tgtype, proname
FROM ux_trigger
JOIN ux_proc ON (tgfoid = ux_proc.oid)
WHERE tgrelid = 'mytable'::regclass;
ux_ts_config
ux_ts_config 目录包含代表文本搜索配置的条目。配置指定特定的文本搜索解析器和用于解析器输出令牌类型的每个字典的列表。解析器显示在ux_ts_config 条目中,但令牌到字典的映射由ux_ts_config_map
中的子条目定义。
ux_ts_config 列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| cfgname name 文本搜索配置名称 |
| cfgnamespace oid (引用 ux_namespace . oid ) 包含此配置的命名空间的 OID |
| cfgowner oid (引用 ux_authid . oid ) 配置的所有者 |
| cfgparser oid (引用 ux_ts_parser 的 oid ) 此配置的文本搜索解析器的OID |
ux_ts_config_map
ux_ts_config_map 目录包含条目,显示每个文本搜索配置的解析器的每个输出令牌类型应查询哪些文本搜索词典以及查询顺序。
ux_ts_config_map 列
| 列类型 描述 |
|---|
| mapcfg oid (引用 ux_ts_config . oid ) 拥有此映射条目的 ux_ts_config 条目的 OID |
| maptokentype int4 配置解析器发出的令牌类型 |
| mapseqno int4 查询此条目的顺序(首先查询较低的 mapseqno ) |
| mapdict oid (引用 ux_ts_dict . oid ) 要查询的文本搜索词典的 OID |
ux_ts_dict
ux_ts_dict目录包含定义文本搜索字典的条目。字典依赖于文本搜索模板,该模板指定了所有需要的实现函数;字典本身为模板支持的用户可设置参数提供值。这种分工允许非特权用户创建字典。参数由文本字符串dictinitoption 指定,其格式和含义因模板而异。
ux_ts_dict 列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| dictname name 文本搜索字典名称 |
| dictnamespace oid (引用 ux_namespace . oid ) 包含此字典的命名空间的 OID |
| dictowner oid (引用 ux_authid . oid ) 字典的所有者 |
| dicttemplate oid (引用 ux_ts_template 的 oid ) 该字典的文本搜索模板的OID |
| dictinitoption text 模板的初始化选项字符串 |
ux_ts_parser
ux_ts_parser 目录包含定义文本搜索解析器的条目。解析器负责将输入文本分割成词元,并为每个词元分配一个标记类型。由于解析器必须由C语言级别的函数实现,因此创建新解析器的权限仅限于数据库超级用户。
ux_ts_parser 列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| prsname name 文本搜索解析器名称 |
| prsnamespace oid (引用 ux_namespace . oid ) 包含此解析器的命名空间的 OID |
| prsstart regproc (引用 ux_proc . oid ) 解析器启动函数的 OID |
| prstoken regproc (引用 ux_proc . oid ) 解析器下一个标记函数的OID |
| prsend regproc (引用 ux_proc . oid ) 解析器关闭函数的OID |
| prsheadline regproc (引用 ux_proc . oid ) 解析器标题函数的OID(如果没有则为零) |
| prslextype regproc (引用 ux_proc . oid ) 解析器的词法类型函数的OID |
ux_ts_template
ux_ts_template 目录包含定义文本搜索模板的条目。模板是一类文本搜索字典的实现框架。由于模板必须由C语言级别的函数实现,因此创建新模板的权限仅限于数据库超级用户。
ux_ts_template 列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| tmplname name 文本搜索模板名称 |
| tmplnamespace oid (引用 ux_namespace . oid ) 包含此模板的名称空间的样例 |
| tmplinit regproc (引用 ux_proc . oid ) 模板初始化功能的功能(如果没有,则为零) |
| tmpllexize regproc (引用 ux_proc . oid ) 模板的词汇化功能 |
ux_type
目录ux_type存储有关数据类型的信息。基本类型和枚举类型(标量类型)是使用CREATE TYPE创建的,域使用CREATE DOMAIN创建。对于数据库中的每个表,都会自动创建一个复合类型,以表示表的行结构。还可以使用CREATE TYPE AS创建复合类型。
ux_type 列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| typname name 数据类型名称 |
| typnamespace oid (引用 ux_namespace . oid ) 包含此类型的命名空间的OID |
| typowner oid (引用 ux_authid . oid ) 类型的所有者 |
| typlen int2 对于固定大小的类型, typlen 是类型内部表示中的字节数。但对于可变长度的类型, typlen 为-1 |
| typbyval bool 如果类型是按值传递的,则为真;如果类型是按引用传递的,则为假 |
| typtype char typtype可以是: b表示一个基类, c表示一个组合类型(例如一个表的行类型), d表示一个域, e表示一个枚举类型, p表示一个伪类型,r表示一个范围类型, 或 o表示一个集合类型 |
| typcategory char 类型的类别:A(数组)、B(布尔)、C(复合类型)、D(日期/时间)、E(枚举类型)、G(几何)、I(网络地址)、N(数字)、P(伪类型)、S(字符串)、T(文本)、U(未知类型)、V(void) |
| typispreferred bool 如果此类型是首选类型,则为真 |
| typdelim char 用于分隔数组元素的字符 |
| typrelid oid (引用 ux_class . oid ) 如果此类型是表的行类型,则为表的OID;否则为0 |
| typelem oid (引用 ux_type . oid ) 如果此类型是数组,则为数组元素类型的OID;否则为0 |
| typarray oid (引用 ux_type . oid ) 如果此类型是数组,则为数组类型的OID;否则为0 |
| typinput regproc (引用 ux_proc . oid ) 用于将外部表示转换为内部表示的输入函数的OID |
| typoutput regproc (引用 ux_proc . oid ) 用于将内部表示转换为外部表示的输出函数的OID |
| typreceive regproc (引用 ux_proc . oid ) 用于接收二进制输入的函数的OID |
| typsend regproc (引用 ux_proc . oid ) 用于发送二进制输出的函数的OID |
| typmodin regproc (引用 ux_proc . oid ) 用于将文本表示形式的类型修饰符转换为内部表示的函数的OID |
| typmodout regproc (引用 ux_proc . oid ) 用于将内部表示的类型修饰符转换为文本表示形式的函数的OID |
| typanalyze regproc (引用 ux_proc . oid ) 用于分析类型的函数的OID |
| typalign char 类型的对齐方式:c(无对齐)、s(短对齐)、i(整数对齐)、d(双精度对齐)、t(时间戳对齐)、n(名称对齐) |
| typstorage char 类型的存储:p(普通)、e(外部)、x(扩展) |
| typnotnull typlen 可变长度类型,为负数。 -1 表示“ varlena ”类型(具有长度字), -2 表示以空字符结尾的 C 字符串 |
| typbyval bool typbyval 确定内部例程是按值还是按引用传递此类型的值。 如果 typlen 不是 1、2 或 4(或在数据类型为 8 字节的机器上为 8),则 typbyval 最好为 false。 可变长度类型始终按引用传递。请注意,即使长度允许按值传递, typbyval 也可能为 false |
| typcategory char typcategory 是数据类型的任意分类,用于解析器确定应该“首选”哪些隐式转换 |
| typispreferred bool 如果该类型是其 typcategory 中的首选转换目标,则为 True |
| typisdefined bool 如果该类型已定义,则为 True;如果这是尚未定义的类型的占位符条目,则为 false。 当 typisdefined 为 false 时,除了类型名称、命名空间和 OID 之外,不能依赖于任何内容 |
| typdelim char 解析数组输入时分隔两个此类型的值的字符。请注意,分隔符与数组元素数据类型相关联,而不是数组数据类型 |
| typrelid oid (引用 ux_class . oid ) 如果这是复合类型,则此列指向定义相应表的 ux_class 条目。 (对于独立的复合类型, ux_class 条目实际上并不表示表,但仍然需要该类型的 ux_attribute 条目链接。) 非复合类型为零 |
| typsubscript regproc (引用 ux_proc . oid ) 下标处理函数的OID,如果此类型不支持下标,则为零。真正的数组类型具有 typsubscript = array_subscript_handler ,但其他类型可能具有其他处理程序函数以实现专门的下标行为 |
| typelem oid (引用 ux_type . oid ) 如果 typelem 不为零,则它标识 ux_type 中的另一行,定义下标引用产生的类型。如果 typsubscript 为零,则应将其设置为零。但是,如果处理程序不需要 typelem 来确定下标结果类型,则可以将其设置为零。请注意, typelem 依赖关系被认为意味着元素类型在此类型中的物理包含;因此,DDL更改可能会受到此类型的存在的限制 |
| typarray oid (引用 ux_type . oid ) 如果 typarray 不为零,则它标识 ux_type 中的另一行,该行是具有此类型为元素的真实数组类型 |
| typinput regproc (引用 ux_proc . oid ) 输入转换函数(文本格式) |
| typoutput regproc (引用 ux_proc . oid ) 输出转换函数(文本格式) |
| typreceive regproc (引用 ux_proc . oid ) 输入转换函数(二进制格式),如果没有则为零 |
| typsend regproc (引用 ux_proc . oid ) 输出转换函数(二进制格式),如果没有则为零 |
| typmodin regproc (引用 ux_proc . oid ) 类型修改器输入函数,如果类型不支持修改器,则为零 |
| typmodout regproc (引用 ux_proc . oid ) 类型修改器输出函数,如果要使用标准格式,则为零 |
| typanalyze regproc (引用 ux_proc . oid ) 自定义 ANALYZE 函数,如果要使用标准函数,则为零 |
| typalign char typalign 是存储此类型的值所需的对齐方式。它适用于磁盘上的存储以及 UXsinoDB 中值的大多数表示形式。当连续存储多个值时,例如在磁盘上表示完整行时,在此类型的数据之前插入填充,以便它从指定的边界开始。对齐参考是序列中第一个数据的开头。可能的值为: c = char 对齐,即不需要对齐 s = short 对齐(在大多数机器上为2个字节) i = int 对齐(在大多数机器上为4个字节) d = double 对齐(在许多机器上为8个字节,但绝不是全部) |
| typstorage char typstorage 告诉varlena类型(那些具有 typlen = -1的类型)是否准备好进行压缩,并且此类型的属性的默认策略是什么。可能的值为: p(plain):值必须始终以纯文本形式存储(非varlena类型始终使用此值) e(external):值可以存储在辅助 “ TOAST ” 关系中 m(main):值可以压缩并存储在内联中 x(扩展):值可以压缩和/或移动到辅助关系中 toastable类型的通常选择是x。请注意,m值也可以移动到辅助存储中,但只能作为最后的手段(e和x值首先移动) |
| typnotnull bool typnotnull 表示类型上的非空约束。仅用于域 |
| typbasetype oid (引用 ux_type . oid ) 如果这是一个域,那么 typbasetype 标识了此类型所基于的类型。如果此类型不是域,则为零 |
| typtypmod int4 域使用 typtypmod 记录要应用于其基本类型的 typmod (如果基本类型不使用 typmod ,则为 -1)。如果此类型不是域,则为 -1 |
| typndims int4 typndims 是域上数组的数组维数(即, typbasetype 是数组类型)。 对于不是域上的其他类型,它为零 |
| typcollation oid (引用 ux_collation . oid ) typcollation 指定类型的排序规则。如果类型不支持排序规则,则为零。支持排序规则的基本类型将在此处具有非零值,通常为 DEFAULT_COLLATION_OID 。对于可排序类型的域,其排序规则 OID 可以与其基本类型的排序规则 OID 不同,如果为域指定了排序规则,则如此 |
| typdefaultbin ux_node_tree 如果 typdefaultbin 不为 null,则它是类型的默认表达式的 nodeToString() 表示形式。仅用于域 |
| typdefault text 如果类型没有关联的默认值,则 typdefault 为 null。如果 typdefaultbin 不为 null,则 typdefault 必须包含由 typdefaultbin 表示的默认表达式的人类可读版本。如果 typdefaultbin 为 null 而 typdefault 不为 null,则 typdefault 是类型默认值的外部表示形式,可以将其提供给类型的输入转换器以生成常量 |
| typacl aclitem[] 访问权限 |
注意
对于用于系统表中的固定宽度类型,ux_type中定义的大小和对齐方式必须与编译器在表示表行的结构中布置列的方式相一致。
表 typcategory代码列出了 typcategory 的系统定义值。任何将来添加到此列表中的内容也将是大写 ASCII 字母。所有其他ASCII字符都保留给用户定义的类别。
typcategory代码
| 代码 | 类别 |
|---|---|
| A | 数组类型 |
| B | 布尔类型 |
| C | 复合类型 |
| D | 日期/时间类型 |
| E | 枚举类型 |
| G | 几何类型 |
| I | 网络地址类型 |
| N | 数字类型 |
| P | 伪类型 |
| R | 范围类型 |
| S | 字符串类型 |
| T | 时间跨度类型 |
| U | 用户定义类型 |
| V | 位串类型 |
| X | 未知类型 |
| Z | 内部使用类型 |
| Y | 可变数组类型 |
| L | 嵌套表类型 |
ux_user_mapping
目录ux_user_mapping存储本地用户到远程用户的映射。普通用户无法访问此目录,请使用视图ux_user_mappings代替。
ux_user_mapping列
| 列类型 描述 |
|---|
| oid oid 行标识符 |
| umuser oid (引用 ux_authid . oid ) 被映射的本地角色的OID,如果用户映射是公共的,则为零 |
| umserver oid (引用 ux_foreign_server . oid ) 包含此映射的外部服务器的OID |
| umoptions text[] 用户映射特定选项,作为“keyword=value”字符串 |
2.系统视图
除了系统目录之外,UXsinoDB还提供了许多内置视图。一些系统视图提供了方便的访问系统目录上一些常用查询的方式。其他视图提供了访问内部服务器状态的方式。
信息模式提供了一组重叠系统视图功能的替代视图。由于信息模式是SQL 标准,而这里描述的视图是特定于 UXsinoDB 的,如果信息模式提供了所需的所有信息,通常最好使用信息模式。
系统视图 列出了这里描述的系统视图。每个视图的更详细文档如下。
概述
系统视图 列出了系统视图。下面是每个目录的更详细的文档。除非另有说明,否则这里描述的所有视图都是只读的。
系统视图
| 视图名称 | 目的 |
|---|---|
| ux_available_extensions | 可用扩展 |
| ux_available_extension_versions | 扩展的可用版本 |
| ux_backend_memory_contexts | 后端内存上下文 |
| ux_config | 编译时配置参数 |
| ux_cursors | 打开的游标 |
| ux_file_settings | 配置文件内容的摘要 |
| ux_group | 数据库用户组 |
| ux_hba_file_rules | 客户端身份验证配置文件内容的摘要 |
| ux_ident_file_mappings | 客户端用户名映射配置文件内容的摘要 |
| ux_indexes | 索引 |
| ux_locks | 当前持有或等待的锁 |
| ux_matviews | 物化视图 |
| ux_policies | 策略 |
| ux_prepared_statements | 预处理语句 |
| ux_prepared_xacts | 预处理事务 |
| ux_publication_tables | 发布及其关联表的信息 |
| ux_replication_origin_status | 复制源的信息,包括复制进度 |
| ux_replication_slots | 复制槽信息 |
| ux_roles | 数据库角色 |
| ux_rules | 规则 |
| ux_seclabels | 安全标签 |
| ux_sequences | 序列 |
| ux_settings | 参数设置 |
| ux_shadow | 数据库用户 |
| ux_shmem_allocations | 共享内存分配 |
| ux_stats | 规划器统计信息 |
| ux_stats_ext | 扩展规划器统计信息 |
| ux_stats_ext_exprs | 表达式的扩展规划器统计信息 |
| ux_tables | 表 |
| ux_timezone_abbrevs | 时区缩写 |
| ux_timezone_names | 时区名称 |
| ux_user | 数据库用户 |
| ux_views | 视图 |
ux_available_extensions
ux_available_extensions 视图列出了可供安装的扩展。 另请参见ux_extension目录,其中显示了当前安装的扩展。
ux_available_extensions 列
| 列类型 描述 |
|---|
| name name 扩展名 |
| default_version text 默认版本的名称,如果没有指定则为 NULL |
| installed_version text 扩展当前安装的版本,如果未安装则为 NULL |
| comment text 扩展控制文件中的注释字符串 |
ux_available_extensions 视图是只读的。
ux_available_extension_versions
ux_available_extension_versions 视图列出了可供安装的特定扩展版本。 另请参见ux_extension目录,其中显示了当前安装的扩展。
ux_available_extension_versions 列
| 列类型 描述 |
|---|
| name name 扩展名 |
| version text 版本名称 |
| installed bool 如果当前安装了此扩展的此版本,则为 True |
| superuser bool 如果只有超级用户可以安装此扩展,则为 True |
| trusted bool 如果非超级用户具有适当的权限,则可以安装扩展,则为 True |
| relocatable bool 如果扩展可以重定位到另一个模式,则为 True |
| schema name 必须安装扩展的模式名称,如果部分或完全可重定位,则为 NULL |
| requires name [] 先决条件扩展的名称,如果没有则为 NULL |
| comment text 扩展控制文件中的注释字符串 |
ux_available_extension_versions视图是只读的。
ux_backend_memory_contexts
视图ux_backend_memory_contexts显示与当前会话相关的服务器进程的所有内存上下文。
ux_backend_memory_contexts对应每个内存上下文一行。
ux_backend_memory_contexts列
| 列类型 描述 |
|---|
| name text 内存上下文的名称 |
| ident text 内存上下文的标识信息。该字段被截断为1024字节 |
| parent text 该内存上下文的父级名称 |
| level int4 该上下文在上下文树中距离TopMemoryContext的距离 |
| total_bytes int8 为该内存上下文分配的总字节数 |
| total_nblocks int8 为该内存上下文分配的总块数 |
| free_bytes int8 以字节为单位的可用空间 |
| free_chunks int8 空闲块的总数 |
| used_bytes int8 以字节为单位的已使用空间 |
默认情况下,ux_backend_memory_contexts 视图只能由超级用户或具有 ux_read_all_stats角色权限的角色进行读取。
ux_config
视图ux_config描述了当前安装的UXsinoDB版本的编译时配置参数。例如,它可用于希望与UXsinoDB进行接口的软件包,以便找到所需的头文件和库。它提供与ux_config UXsinoDB客户端应用程序相同的基本信息。
默认情况下,只有超级用户才能读取ux_config视图。
ux_config列
| 列类型 描述 |
|---|
| name text 参数名称 |
| setting text 参数值 |
ux_cursors
ux_cursors 视图列出了当前可用的游标。游标可以通过以下几种方式定义:
-
通过 SQL 中的
DECLARE语句 -
通过前端/后端协议中的 Bind 消息
-
通过服务器编程接口(SPI)定义
ux_cursors 视图显示由任何这些方式创建的游标。游标仅在定义它们的事务期间存在,除非它们已声明为 WITH HOLD。因此,非可保留游标仅在其创建事务结束之前存在于视图中。
注意
游标在内部用于实现 UXsinoDB 的某些组件,例如过程语言。因此,ux_cursors 视图可能包括未由用户显式创建的游标。
ux_cursors 列
| 列类型 描述 |
|---|
| name text 游标的名称 |
| statement text 提交以声明此游标的逐字查询字符串 |
| is_holdable bool 如果光标是可保持的(即在声明光标的事务提交后可以访问),则为 true ;否则为 false |
| is_binary bool 如果光标是以 BINARY 方式声明的,则为 true ;否则为 false |
| is_scrollable bool 如果光标是可滚动的(即允许以非顺序方式检索行),则为 true ;否则为 false |
| creation_time timestamptz 声明光标的时间 |
ux_cursors视图是只读的。
ux_file_settings
视图ux_file_settings提供了服务器配置文件的摘要。每个文件中出现的“name =value”条目都会在此视图中显示一行,注明该值是否能够成功应用。可能会出现额外的行,用于显示与“name=value”条目无关的问题,例如文件中的语法错误。
此视图有助于检查计划中的配置文件更改是否有效,或诊断以前的故障。请注意,此视图报告文件的当前内容,而不是服务器上次应用的内容。(ux_settings视图通常足以确定。)
默认情况下,只有超级用户才能读取ux_file_settings视图。
表 ux_file_settings列
| 列类型 描述 |
|---|
| sourcefile text 配置文件的完整路径名 |
| sourceline int4 条目出现在配置文件中的行号 |
| seqno int4 处理条目的顺序(1..n) |
| name text 配置参数名称 |
| setting text 要分配给参数的值 |
| applied bool 如果该值可以成功应用,则为True |
| error text 如果不为空,则为指示为什么无法应用此条目的错误消息 |
如果配置文件包含语法错误或无效的参数名称,则服务器将不会尝试从中应用任何设置,因此所有applied字段都将读取为false。在这种情况下,将有一个或多个具有非空error字段的行,指示问题。 否则,如果可能,将应用单个设置。如果无法应用单个设置(例如,无效值或在服务器启动后无法更改设置),则error字段中将有适当的消息。另一种条目可能具有applied =false的方式是被同一参数名称的后续条目覆盖;这种情况不被视为错误,因此error字段中没有任何内容。
ux_group
视图ux_group它显示了所有标记为不具有rolcanlogin权限的角色的名称和成员,这是一组被用作组的角色的近似集合。
表 ux_group列
| 列类型 描述 |
|---|
| groname name (引用 ux_authid . rolname ) 组的名称 |
| grosysid oid (引用 ux_authid . oid ) 此组的ID |
| grolist oid[] (引用 ux_authid . oid ) 包含此组中角色的ID的数组 |
ux_hba_file_rules
视图ux_hba_file_rules提供了客户端身份验证配置文件ux_hba.conf的内容摘要。每个非空、非注释行在此视图中都有一行,其中包含指示规则是否能够成功应用的注释。
此视图可用于检查计划中的身份验证配置文件更改是否有效,或诊断以前的故障。请注意,此视图报告的是文件的当前内容,而不是服务器上最后加载的内容。
默认情况下,只有超级用户才能读取ux_hba_file_rules视图。
ux_hba_file_rules列
| 列类型 描述 |
|---|
| line_number int4 此规则在 ux_hba.conf 中的行号 |
| type text 连接类型 |
| database text[] 适用于此规则的数据库名称列表 |
| user_name text[] 适用于此规则的用户和组名称列表 |
| address text 主机名或IP地址,或其中之一: all 、 samehost 、 samenet 、 md5 、 password 、 peer 、 radius 、 cert 、 pam 、 ldap 、 gss 、 sspi 或 krb5 ,对于本地连接为空 |
| netmask text 网络掩码,仅适用于 samenet 地址,如果不适用则为空 |
| auth_method text 身份验证方法,例如 md5 、 password 、 peer 、 radius 、 cert 、 pam 、 ldap 、 gss 、 sspi 或 krb5 |
| auth_option text[] 身份验证选项,例如 map 、 noinherit 或 notrust |
| comments text ux_hba.conf 中此规则的注释 |
| options text[] 认证方法指定的选项,如果有的话 |
| error text 如果不为 null,则表示为什么无法处理此行的错误消息 |
通常,反映不正确条目的行只会有 line_number 和 error 字段的值。
此视图的输出与ux_hba.conf文件的内容相同,但是,此视图不包括ux_hba.conf文件中的注释行和空行。
示例
SELECT * FROM ux_hba_file_rules;
line_number | type | database | user_name | address | netmask | auth_method | auth_option | comments
-------------+-------+----------+-----------+---------+---------+-------------+-------------+---------
1 | local | | | | | trust | |
2 | host | all | all | 0.0.0.0 | 0.0.0.0 | md5 | |
3 | host | all | all | ::/0 | | md5 | |
4 | host | all | all | 127.0.0.1/32| | md5 | |
5 | host | all | all | ::1/128 | | md5 | |
(5 rows)
ux_ident_file_mappings
视图ux_ident_file_mappings提供了客户端用户名映射配置文件ux_ident.conf的内容摘要。对于文件中的每个非空、非注释行,此视图中都会出现一行,其中包含是否能够成功应用映射的注释。
此视图可用于检查计划中的身份验证配置文件更改是否有效,或诊断以前的故障。请注意,此视图报告的是文件的当前内容,而不是服务器上最后加载的内容。
默认情况下,只有超级用户才能读取ux_ident_file_mappings视图。
ux_ident_file_mappings列
| 列类型 描述 |
|---|
| line_number int4 ux_ident.conf 文件中此映射的行号 |
| map_name text 映射的名称 |
| sys_name text 客户端检测到的用户名 |
| ux_username text 请求的UXsinoDB用户名 |
| error text 如果不是 NULL ,则表示无法处理此行的错误消息 |
通常,反映不正确输入的行只会有 line_number 和 error 字段的值。
ux_indexes
视图ux_indexes提供了有关数据库中每个索引的有用信息。
ux_indexes列
| 列类型 描述 |
|---|
| schemaname name (引用 ux_namespace . nspname ) 包含表和索引的模式名称 |
| tablename name (引用 ux_class . relname ) 索引所属的表的名称 |
| indexname name (引用 ux_class . relname ) 索引的名称 |
| tablespace name (引用 ux_tablespace . spcname ) 包含索引的表空间的名称(如果是数据库的默认值,则为null) |
| indexdef text 索引定义(重建的 CREATE INDEX 命令) |
ux_locks
视图ux_locks提供了访问数据库服务器中活动进程持有的锁的信息。
ux_locks每个活动锁定对象、请求的锁定模式和相关进程包含一行。因此,如果多个进程持有或等待锁定同一锁定对象,则该锁定对象可能会出现多次。但是,当前没有锁定的对象将不会出现。
有几种不同类型的锁定对象:整个关系(例如,表)、关系的单个页面、关系的单个元组、事务ID(虚拟和永久ID)和一般数据库对象(通过类OID和对象OID标识,与ux_description或ux_depend中的方式相同)。此外,扩展关系的权利表示为单独的锁定对象,更新ux_database.datfrozenxid的权利也是如此。此外,可以对具有用户定义含义的数字进行“咨询”锁定。
ux_locks列
| 列类型 描述 |
|---|
| locktype text 锁定对象的类型: relation 、 extend 、 frozenid 、 page 、 tuple 、 transactionid 、 virtualxid 、 spectoken 、 object 、 userlock ,或者 advisory |
| database oid (引用 ux_database . oid ) 锁目标所在的数据库的OID,如果目标是共享对象,则为零,如果目标是事务ID,则为null |
| relation oid (引用 ux_class . oid ) 锁定的关系的OID,如果目标不是关系或关系的一部分,则为null |
| page int4 关系中锁定的页面号,如果目标不是关系页面或元组,则为null |
| tuple int2 页面中锁定的元组号,如果目标不是元组,则为null |
| virtualxid text 锁定的虚拟事务ID,如果目标不是虚拟事务ID,则为null |
| transactionid xid 锁定的事务ID,如果目标不是事务ID,则为null |
| classid oid (引用 ux_class . oid ) 包含锁定目标的系统目录的OID,如果目标不是一般数据库对象,则为null |
| objid oid (引用任何OID列) 系统目录中锁定目标的OID,如果目标不是一般数据库对象,则为null |
| objsubid int2 锁定的列号( classid 和 objid 指的是表本身), 如果目标是其他一般数据库对象,则为零,如果目标不是一般数据库对象,则为null |
| virtualtransaction text 持有或等待此锁的事务的虚拟ID |
| pid int4 持有或等待此锁的服务器进程的进程ID,如果锁由准备好的事务持有,则为null |
| mode text 此进程持有或期望的锁模式的名称 |
| granted bool 如果持有锁,则为True,如果等待锁,则为False |
| fastpath bool 如果通过快速路径获取锁,则为True,如果通过主锁表获取,则为False |
| waitstart timestamptz 服务器进程开始等待此锁的时间,如果持有锁,则为null。请注意,即使等待开始后很短的时间,此值也可能为null,尽管 granted 为 false |
granted为true表示该进程持有锁。False表示该进程当前正在等待获取此锁,这意味着至少有一个其他进程正在持有或等待同一锁定对象上的冲突锁模式。等待进程将休眠,直到其他锁定被释放(或检测到死锁情况)。单个进程最多可以等待获取一个锁。
在运行事务期间,服务器进程在事务的虚拟事务ID上持有独占锁。如果为事务分配了永久ID(通常仅在事务更改数据库状态时发生),则它还将在事务的永久事务ID上持有独占锁,直到事务结束。当进程发现有必要等待另一个事务结束时,它会尝试在另一个事务的ID上获取共享锁(根据情况是虚拟ID或永久ID)。只有当另一个事务终止并释放其锁时,才会成功获取共享锁。
虽然元组是一种可锁定的对象类型,但关于行级锁的信息存储在磁盘上,而不是在内存中,因此行级锁通常不会出现在此视图中。如果进程正在等待行级锁,则通常会在视图中显示为等待当前持有者的永久事务ID。
可以在由单个bigint值或两个整数值组成的键上获取咨询锁。bigint键在classid列中显示其高阶半部分,在objid列中显示其低阶半部分,并且objsubid等于1。可以使用表达式(classid::bigint << 32) | objid::bigint重新组装原始的bigint值。整数键在classid列中显示第一个键,在objid列中显示第二个键,并且objsubid等于2。键的实际含义由用户决定。咨询锁仅对每个数据库有效,因此database列对于咨询锁是有意义的。
ux_locks提供了数据库群集中所有锁的全局视图,而不仅仅是与当前数据库相关的锁。虽然可以将其relation列与ux_class和ux_namespace表联接起来,但请注意,这些表中的行可能已被锁定,因此可能无法访问它们。
针对ux_class的oid进行锁定,只能正确地用于当前数据库中的关系(即database列为当前数据库的OID或零的关系)。
可以将pid列与ux_stat_activity视图的pid列连接起来,以获取有关持有或等待每个锁的会话的更多信息,例如:
SELECT * FROM ux_locks pl LEFT JOIN ux_stat_activity psa ON pl.pid = psa.pid;
此外,如果使用了预处理事务,则可以将virtualtransaction列连接到ux_prepared_xacts视图的transaction列,以获取有关持有锁的预处理事务的更多信息。(预处理事务永远不会等待锁,但它继续持有运行时获取的锁。)例如:
SELECT * FROM ux_locks pl LEFT JOIN ux_prepared_xacts ppx ON pl.virtualtransaction = '-1/' || ppx.transaction;
虽然可以通过将ux_locks与自身连接来获取有关哪些进程阻止其他进程的信息,但这在细节上非常难以正确实现。这样的查询将不得不编码有关哪些锁模式与哪些其他锁模式冲突的知识。更糟糕的是,ux_locks视图不公开关于哪些进程在锁等待队列中领先于哪些其他进程以及哪些进程是代表哪些其他客户端会话运行的并行工作者的信息。最好使用ux_blocking_pids()函数来确定等待进程被阻止在哪个进程后面。
ux_locks视图显示来自常规锁管理器和谓词锁管理器的数据,这些是独立的系统;此外,常规锁管理器将其锁分为常规锁和快速路径锁。这些数据不能保证完全一致。查询视图时,快速路径锁(fastpath=true)的数据从每个后端逐个收集,而不冻结整个锁管理器的状态,因此在收集信息时可能会获取或释放锁。但是请注意,这些锁已知不与当前放置的任何其他锁冲突。在查询所有后端的快速路径锁之后,剩余的常规锁管理器作为一个单元被锁定,并收集所有剩余锁的一致快照作为原子操作。解锁常规锁管理器后,谓词锁管理器类似地被锁定,并收集所有谓词锁作为原子操作。因此,除了快速路径锁之外,每个锁管理器都将提供一组一致的结果,但由于我们不同时锁定两个锁管理器,因此在查询常规锁管理器之后并在查询谓词锁管理器之前,锁可能会被获取或释放。
如果非常频繁地访问此视图,则锁定常规和/或谓词锁管理器可能会对数据库性能产生一些影响。锁仅保持必要的最短时间。获取锁管理器的数据,但这并不能完全消除性能影响的可能性。
ux_matviews
视图ux_matviews提供了有关数据库中每个物化视图的有用信息。
ux_matviews列
| 列类型 描述 |
|---|
| schemaname name (引用 ux_namespace . nspname ) 包含物化视图的模式名称 |
| matviewname name (引用 ux_class . relname ) 物化视图的名称 |
| matviewowner name (引用 ux_authid . rolname ) 物化视图所有者的名称 |
| tablespace name (引用 ux_tablespace . spcname ) 包含物化视图的表空间名称(如果为数据库的默认值,则为null) |
| hasindexes bool 如果物化视图具有(或最近具有)任何索引,则为True |
| ispopulated bool 如果物化视图当前已填充,则为True |
| definition text 物化视图定义(重构的 SELECT 查询) |
ux_policies
视图ux_policies提供了有关数据库中每个行级安全策略的有用信息。
ux_policies列
| 列类型 描述 |
|---|
| schemaname name (引用 ux_namespace . nspname ) 包含表策略的模式名称 |
| tablename name (引用 ux_class . relname ) 策略所在的表名称 |
| policyname name (引用 ux_policy . polname ) 策略名称 |
| permissive text 策略是宽容的还是限制性的? |
| roles name[] 适用于此策略的角色 |
| cmd text 策略应用的命令类型 |
| qual text 将添加到安全屏障资格的表达式,用于适用于此策略的查询 |
| with_check text 将添加到 WITH CHECK 资格的表达式,用于尝试向此表添加行的查询 |
ux_prepared_statements
ux_prepared_statements 视图显示当前会话中所有可用的预处理语句。
ux_prepared_statements 包含每个预处理语句的一行。当创建新的预处理语句时,会向视图添加行;当释放预处理语句时(例如通过DEALLOCATE命令),会将行删除。
ux_prepared_statements 列
| 列类型 描述 |
|---|
| name text 预处理语句的标识符 |
| statement text 客户端提交以创建此预处理语句的查询字符串。对于通过 SQL 创建的预处理语句,这是客户端提交的 PREPARE 语句。对于通过前端/后端协议创建的预处理语句,这是预处理语句本身的文本 |
| prepare_time timestamptz 创建预处理语句的时间 |
| parameter_types regtype[] 预处理语句的预期参数类型,以 regtype 数组的形式表示。可以通过将数组的元素转换为 OID 来获取相应的 OID。将 regtype 值转换为 oid |
| result_types regtype[] 以 regtype 数组的形式返回准备语句返回的列的类型。可以通过将 regtype 值转换为 oid 来获取与此数组元素对应的OID。如果准备语句不提供结果(例如DML语句),则此字段将为null |
| from_sql bool 如果准备语句是通过 PREPARE SQL命令创建的,则为 true ;如果语句是通过前端/后端协议准备的,则为 false |
| generic_plans int8 通用计划被选择的次数 |
| custom_plans int8 自定义计划被选择的次数 |
ux_prepared_statements视图是只读的。
ux_prepared_xacts
视图ux_prepared_xacts显示当前准备进行两阶段提交的事务信息。
ux_prepared_xacts每个准备事务包含一行。当事务提交或回滚时,该条目将被删除。
ux_prepared_xacts列
| 列类型 描述 |
|---|
| transaction xid 准备事务的数字事务标识符 |
| gid text 分配给事务的全局事务标识符 |
| prepared timestamptz 事务准备提交的时间 |
| owner name (引用 ux_authid . rolname ) 执行事务的用户名称 |
| database name (引用 ux_database . datname ) 事务执行所在的数据库名称。访问ux_prepared_xacts视图时,内部事务管理器数据结构会被短暂锁定,并为视图制作一份副本以供显示。这确保了视图生成一组一致的结果,同时不会阻塞正常操作的时间。然而,如果频繁访问此视图,可能会对数据库性能产生一定影响 |
ux_publication_tables
视图ux_publication_tables提供了关于发布和包含表信息的映射的信息。与底层目录ux_publication_rel不同,此视图扩展了定义为FOR ALL TABLES和FOR TABLES IN SCHEMA的发布,因此对于这样的发布,每个符合条件的表都会有一行。
ux_publication_tables列
| 列类型 描述 |
|---|
| pubname name (引用 ux_publication . pubname ) 发布名称 |
| schemaname name (引用 ux_namespace . nspname ) 包含表的模式名称 |
| tablename name (引用 ux_class . relname ) 表名称 |
| attnames name[] (引用 ux_attribute . attname ) 发布中包含的表列的名称。当用户没有为表指定列列表时,这包含表的所有列 |
| rowfilter text 表的发布限定条件表达式 |
ux_replication_origin_status
ux_replication_origin_status视图包含关于某个源的重放进度的信息。
表 ux_replication_origin_status 列
| 列类型 描述 |
|---|
| local_id oid (引用 ux_replication_origin . roident ) 内部的节点标识符 |
| external_id text (引用 ux_replication_origin . roname ) 外部的节点标识符 |
| remote_lsn ux_lsn 源节点的LSN,到这个位置的数据都已经被复制 |
| local_lsn ux_lsn 这个节点的LSN, remote_lsn 已经被复制到这里。使用异步提交时,在将数据持久化到磁盘前用它来刷入提交记录 |
ux_replication_slots
ux_replication_slots视图提供了当前数据库集群中所有复制槽的列表,以及它们的当前状态。
ux_replication_slots列
| 列类型 描述 |
|---|
| slot_name name 复制槽的唯一集群标识符 |
| plugin name 包含此逻辑复制槽使用的输出插件的共享对象的基本名称,对于物理复制槽为null |
| slot_type text 槽类型: physical 或 logical |
| datoid oid (引用 ux_database . oid ) 此槽关联的数据库的OID或null。只有逻辑复制槽有关联的数据库 |
| database name (引用 ux_database . datname ) 与此槽相关联的数据库名称或null。只有逻辑槽与数据库相关联 |
| temporary bool 如果这是一个临时复制槽,则为True。临时槽不会保存到磁盘上,并且会在错误或会话结束时自动删除 |
| active bool 如果此槽当前正在被使用,则为True |
| active_pid int4 如果此槽当前正在被使用,则为使用此槽的会话的进程ID。如果不活动,则为 NULL |
| xmin xid 此槽需要数据库保留的最旧事务。 VACUUM 无法删除任何后续事务删除的元组 |
| catalog_xmin xid 此槽需要数据库保留的影响系统目录的最旧事务。 VACUUM 无法删除任何后续事务删除的目录元组 |
| restart_lsn ux_lsn 此槽的使用者可能仍需要的最旧WAL的地址( LSN ),因此除非此LSN落后于当前LSN超过max_slot_wal_keep_size,否则在检查点期间不会自动删除。如果此槽的 LSN 从未被保留,则为 NULL |
| confirmed_flush_lsn ux_lsn 逻辑槽的使用者已确认接收数据的地址( LSN )上限。比此更旧的数据不再可用。物理槽为 NULL |
| wal_status text 此槽声明的WAL文件的可用性。可能的值为: reserved 表示声明的文件在 max_wal_size 内 extended 表示超出了 max_wal_size ,但文件仍由复制槽或 wal_keep_size 保留 unreserved 表示槽不再保留所需的WAL文件,并且其中一些文件将在下一个检查点时被删除。此状态可以返回到 reserved 或 extended lost 表示某些必需的WAL文件已被删除,此槽不再可用 只有在复制槽处于活动状态且使用者正在使用时,才会看到最后两个状态。max_slot_wal_keep_size 是非负的。如果 restart_lsn 为空,则此字段为空 |
| safe_wal_size int8 可以写入 WAL 的字节数,以使此插槽不会处于“丢失”状态。对于丢失的插槽以及如果 max_slot_wal_keep_size 为 -1 ,则为 NULL |
| two_phase bool 如果插槽已启用以解码准备事务,则为 True。对于物理插槽始终为 false |
ux_roles
视图ux_roles提供了有关数据库角色的信息。这只是一个公开可读的视图ux_authid ,其中密码字段被清空。
ux_roles列
| 列类型 描述 |
|---|
| rolname name 角色名称 |
| rolsuper bool 角色具有超级用户特权 |
| rolinherit bool 角色自动继承其成员角色的特权 |
| rolcreaterole bool 角色可以创建更多的角色 |
| rolcreatedb bool 角色可以创建数据库 |
| rolcanlogin bool 角色可以登录。也就是说,该角色可以作为初始会话授权标识符 |
| rolreplication bool 角色是复制角色。复制角色可以启动复制连接并创建和删除复制插槽 |
| rolconnlimit int4 对于可以登录的角色,这设置了该角色可以进行的最大并发连接数。-1表示没有限制 |
| rolpassword text 不是密码(始终显示为 ******** ) |
| rolvaliduntil timestamptz 密码过期时间(仅用于密码身份验证);如果没有过期,则为null |
| rolbypassrls bool 角色绕过每个行级安全策略 |
| rolconfig text[] 运行时配置变量的角色特定默认值 |
| oid oid (引用 ux_authid . oid ) 角色的ID |
ux_rules
视图ux_rules提供了有关查询重写规则的有用信息。
ux_rules列
| 列类型 描述 |
|---|
| schemaname name (引用 ux_namespace . nspname ) 包含表的模式名称 |
| tablename name (引用 ux_class . relname ) 规则所属的表名称 |
| rulename name (引用 ux_rewrite . rulename ) 规则名称 |
| definition text 规则定义(重建的创建命令) |
ux_rules视图不包括视图和材料化视图的ON SELECT规则;这些可以在ux_views和ux_matviews中查看。
ux_seclabels
视图ux_seclabels提供有关安全标签的信息。它是ux_seclabel目录的更易于查询的版本。
ux_seclabels列
| 列类型 描述 |
|---|
| objoid oid (引用任何OID列) 此安全标签所属对象的OID |
| classoid oid (引用 ux_class . oid ) 此对象出现在的系统目录的OID |
| objsubid int4 对于表列上的安全标签,这是列号( objoid 和 classoid 是指表本身)。对于所有其他对象类型,此列为零 |
| objtype text 此标签适用的对象类型,以文本形式表示 |
| objnamespace oid (引用 ux_namespace . oid ) 此对象的命名空间的OID(如果适用);否则为NULL |
| objname text 此标签适用的对象名称,以文本形式表示 |
| provider text (引用自 ux_seclabel . provider ) 与此标签相关联的标签提供程序 |
| label text (引用自 ux_seclabel . label ) 应用于此对象的安全标签 |
ux_sequences
视图ux_sequences提供了有关数据库中每个序列的有用信息。
ux_sequences列
| 列类型 描述 |
|---|
| schemaname name (引用 ux_namespace . nspname ) 包含序列的模式名称 |
| sequencename name (引用 ux_class . relname ) 序列名称 |
| sequenceowner name (引用 ux_authid . rolname ) 序列所有者名称 |
| data_type regtype (引用 ux_type . oid ) 序列的数据类型 |
| start_value int8 序列的起始值 |
| min_value int8 序列的最小值 |
| max_value int8 序列的最大值 |
| increment_by int8 序列的增量值 |
| cycle bool 序列是否循环 |
| cache_size int8 序列的缓存大小 |
| last_value int8 最后一个写入磁盘的序列值。如果使用缓存,则此值可以大于从序列中获取的最后一个值。如果序列尚未被读取,则为null。此外,如果当前用户没有对序列的 USAGE 或 SELECT 权限,则该值为null |
ux_settings
视图ux_settings提供了对服务器运行时参数的访问。它本质上是SHOW和SET命令的另一种接口。它还提供了一些关于每个参数的事实,这些事实不能直接从SHOW中获得,例如最小值和最大值。
ux_settings列
| 列类型 描述 |
|---|
| name text 运行时配置参数名称 |
| setting text 参数的当前值 |
| unit text 参数的隐含单位 |
| category text 参数的逻辑组 |
| short_desc text 参数的简要描述 |
| extra_desc text 参数的附加、更详细的描述 |
| context text 设置参数值所需的上下文(见下文) |
| vartype text 参数类型( bool 、 enum 、 integer 、 real 或 string ) |
| source text 当前参数值的来源 |
| min_val text 参数的最小允许值(非数字值为 null) |
| max_val text 参数的最大允许值(非数字值为 null) |
| enumvals text[] 枚举参数的允许值(非枚举值为 null) |
| boot_val text 如果未设置参数,则在服务器启动时假定的参数值 |
| reset_val text RESET 将当前会话中的参数重置为的值 |
| sourcefile text 设置当前值的配置文件(对于从配置文件以外的来源设置的值或由既不是超级用户也没有 ux_read_all_settings 权限的用户检查时为 null);在配置文件中使用 include 指令时有用 |
| sourceline int4 设置当前值的配置文件中的行号(对于从配置文件以外的来源设置的值或由既不是超级用户也没有 ux_read_all_settings 权限的用户检查时为 null) |
| pending_restart bool 如果在配置文件中更改了值但需要重新启动,则为 true ;否则为 false |
context 有几个可能的值。按照更改设置的难度递减的顺序,它们是:
-
internal
这些设置不能直接更改;它们反映了内部确定的值。其中一些可以通过使用不同的配置选项重新构建服务器或更改传递给initdb的选项来进行调整。 -
uxmaster
这些设置只能在服务器启动时应用,因此任何更改都需要重新启动服务器。这些设置的值通常存储在uxsinodb.conf文件中,或在启动服务器时通过命令行传递。当然,任何具有任何其他值的设置都可以在运行时更改。 -
sighup
这些设置可以通过向服务器发送 SIGHUP 信号来重新加载。这些设置的值通常存储在uxsinodb.conf文件中,或在运行时通过SET命令更改。这些设置的更改不需要重新启动服务器,但可能会影响正在运行的会话。 -
superuser
这些设置可以通过任何超级用户更改,但更改可能会影响正在运行的会话。这些设置的值通常存储在uxsinodb.conf文件中,或在运行时通过SET命令更改。 -
user
这些设置可以由任何用户更改,但更改可能会影响正在运行的会话。这些设置的值通常通过SET命令在运行时更改。
此视图无法插入或删除,但可以更新。应用于ux_settings行的UPDATE等效于在该命名参数上执行SET命令。更改仅影响当前会话使用的值。如果在稍后中止的事务中发出UPDATE,则UPDATE命令的影响将被回滚。当事务回滚时,对视图的更改将消失。一旦周围的事务提交,其影响将持续到会话结束,除非被另一个UPDATE或SET覆盖。
该视图不会显示自定义选项,除非定义它们的扩展模块已被后端进程加载执行查询(例如,通过在shared_preload_libraries中提及,调用扩展中的C函数或LOAD命令)。例如,由于归档模块通常仅由归档进程而不是常规会话加载,因此该视图将不会显示由这些模块定义的任何自定义选项,除非采取特殊措施将它们加载到执行查询的后端进程中。
ux_shadow
视图ux_shadow存在于向后兼容性中。它显示了所有标记为rolcanlogin的角色的属性,这些角色在ux_authid中。
名称源于该表不应该被公开读取,因为它包含密码。ux_user是一个公开可读的视图,它将密码字段清空。
ux_shadow列
| 列类型 描述 |
|---|
| usename name (引用 ux_authid . rolname ) 用户名 |
| usesysid oid (引用 ux_authid . oid ) 此用户的ID |
| usecreatedb bool 用户可以创建数据库 |
| usesuper bool 用户是超级用户 |
| userepl bool 用户可以启动流复制并将系统置于备份模式中和退出备份模式 |
| usebypassrls bool 用户可以绕过每个行级安全策略 |
| passwd text 密码(可能已加密);如果没有则为null |
| valuntil timestamptz 密码过期时间(仅用于密码身份验证) |
| useconfig text[] 运行时配置变量的会话默认值 |
ux_shmem_allocations
ux_shmem_allocations 视图显示从服务器的主共享内存段中分配的内存。这包括由 UXsinoDB自身分配的内存以及使用机制分配的扩展内存。
请注意,此视图不包括使用动态共享内存基础架构分配的内存。
ux_shmem_allocations 列
| 列类型 描述 |
|---|
| name text 共享内存分配的名称。未使用的内存为 NULL,匿名分配为 |
| off int8 分配开始的偏移量。对于匿名分配,由于与它们相关的详细信息未知,因此为 NULL |
| size int8 分配的大小 |
| allocated_size int8 包括填充在内的分配大小。对于匿名分配,没有关于填充的信息可用,因此 size 和 allocated_size 列始终相等。对于空闲内存,填充没有意义,因此在这种情况下,这两列也将相等 |
匿名分配是直接使用ShmemAlloc()进行的分配,而不是通过共享内存基础架构进行的分配。ShmemInitStruct() 或ShmemInitHash() 函数用于共享内存的初始化。
默认情况下,ux_shmem_allocations 视图只能被超级用户或拥有 ux_read_all_stats 角色权限的角色读取。
ux_stats
视图ux_stats提供了访问存储在ux_statistic目录中信息的途径。该视图只允许访问用户有读取权限的ux_statistic表的行,因此可以安全地允许公共读取该视图。
ux_stats还设计为以比底层目录更易读的格式呈现信息,但代价是必须在定义ux_statistic的新槽类型时扩展其模式。
ux_stats列
| 列类型 描述 |
|---|
| schemaname name (引用 ux_namespace . nspname ) 包含表的模式名称 |
| tablename name (引用 ux_class . relname ) 表名称 |
| attname name (引用 ux_attribute . attname ) 由此行描述的列名称 |
| inherited bool 如果为true,则此行包括来自子表的值,而不仅仅是指定表中的值 |
| null_frac float4 列条目中为 null 的分数 |
| avg_width int4 列条目的平均宽度(以字节为单位) |
| n_distinct float4 如果大于零,则为列中估计的不同值的数量。如果小于零,则为不同值的数量除以行数的负数。(当分析认为不同值的数量随着表的增长而增加时,使用取反形式;当列似乎具有固定数量的可能值时,使用正形式。)例如,-1表示唯一的列,其中不同值的数量与行数相同 |
| most_common_vals anyarray 列中最常见的值列表。(如果没有任何值似乎比其他值更常见,则为 null。) |
| most_common_freqs float4[] 最常见值的频率列表,即每个值的出现次数除以总行数。(当 most_common_vals 存在时为 null。) |
| histogram_bounds anyarray 将列值分成大致相等的人口群体的值列表。如果存在 most_common_vals 中的值,则在此直方图计算中省略这些值。(如果列数据类型没有'<'运算符或者most_common_vals列表占据了整个人口,则此列为 null。) |
| correlation float4 物理行排序和列值的逻辑排序之间的统计相关性。这个值的范围是 -1 到 +1。当值接近 -1 或 +1时,对列进行索引扫描的估计成本将比接近零时更便宜,因为减少了对磁盘的随机访问。(如果列数据类型没有'<'运算符,则此列为 null。) |
| most_common_elems anyarray 在列值中最常出现的非空元素值列表。(对于标量类型为 null。) |
| most_common_elem_freqs float4[] 最常见元素值的频率列表,即包含给定值的行的分数。每个元素频率后面跟随两个或三个附加值;这些是前面的每个元素频率的最小值和最大值,以及可选的空元素频率。(当most_common_elems存在时为 null。) |
| elem_count_histogram float4[] 列值中不同非空元素值的计数直方图,后跟不同非空元素的平均数量。(标量类型为 null。) |
可以使用ALTER TABLE SET STATISTICS命令按列控制数组字段中的最大条目数,或通过设置default_statistics_target运行时参数来全局控制。
注意
uxdb安全模式下只有在用户有select权限和列加密权限,且钱包打开的情况下,才可以查看。
ux_stats_ext
视图ux_stats_ext提供了访问数据库中每个扩展统计对象的信息,结合存储在ux_statistic_ext和ux_statistic_ext_data目录中的信息。该视图仅允许访问用户有读取权限的表对应的ux_statistic_ext和ux_statistic_ext_data的行,因此可以安全地允许公共读取该视图。
ux_stats_ext还设计为以比底层目录更易读的格式呈现信息,但代价是必须在ux_statistic_ext中添加新类型的扩展统计时扩展其模式。
ux_stats_ext列
| 列类型 描述 |
|---|
| schemaname name (引用 ux_namespace . nspname ) 包含表的模式名称 |
| tablename name (引用 ux_class . relname ) 表的名称 |
| statistics_schemaname name (引用 ux_namespace . nspname ) 包含扩展统计对象的模式的名称 |
| statistics_name name (引用 ux_statistic_ext . stxname ) 扩展统计对象的名称 |
| statistics_owner name (引用 ux_authid . rolname ) 扩展统计对象的所有者 |
| attnames name[] (引用 ux_attribute . attname ) 包含在扩展统计对象中的列的名称 |
| exprs text[] 包含在扩展统计对象中的表达式 |
| kinds char[] 启用此记录的扩展统计对象的类型 |
| inherited bool (引用 ux_statistic_ext_data . stxdinherit ) 如果为 true,则统计信息包括子表中的值,而不仅仅是指定关系中的值 |
| n_distinct ux_ndistinct 列值组合的 N-distinct 计数。如果大于零,则为组合中的估计不同值数。如果小于零,则为不同值数的负数除以行数。(当 ANALYZE 认为随着表的增长,不同值的数量可能会增加时,使用负数形式;当列似乎具有固定数量的可能值时,使用正数形式。)例如,-1 表示列的唯一组合,其中不同组合的数量与行数相同 |
| dependencies ux_dependencies 功能依赖关系统计信息 |
| most_common_vals text[] 列中最常见值的组合列表。(如果没有组合似乎比其他任何组合更常见,则为空。) |
| most_common_val_nulls bool[] 最常见值的 NULL 标志列表。 (当 most_common_vals 为 NULL 时也为 NULL。) |
| most_common_freqs float8[] 最常见组合的频率列表,即每个组合的出现次数除以总行数。 (当 most_common_vals 为 NULL 时也为 NULL。) |
| most_common_base_freqs float8[] 最常见组合的基础频率列表,即每个值的频率的乘积。 (当 most_common_vals 为 NULL 时也为 NULL。) |
可以使用ALTER TABLE SET STATISTICS命令按列控制数组字段中的最大条目数,或通过设置default_statistics_target运行时参数在全局范围内控制。
注意
uxdb安全模式下只有在用户有select权限和列加密权限,且钱包打开的情况下,才可以查看。
ux_stats_ext_exprs
视图ux_stats_ext_exprs提供了关于所有扩展统计对象中包含的表达式的信息,结合了存储在ux_statistic_ext和ux_statistic_ext_data目录中的信息。该视图仅允许访问用户有读取权限的表对应的ux_statistic_ext和ux_statistic_ext_data的行,因此可以安全地允许公共读取访问该视图。
ux_stats_ext_exprs还设计为以比底层目录更易读的格式呈现信息,但代价是必须在ux_statistic_ext中的统计结构更改时扩展其模式。
ux_stats_ext_exprs列
| 列类型 描述 |
|---|
| schemaname name (引用 ux_namespace . nspname ) 包含表的模式名称 |
| tablename name (引用 ux_class . relname ) 定义统计对象的表名 |
| statistics_schemanam name (引用 ux_namespace . nspname ) 包含扩展统计对象的模式名称 |
| statistics_name name (引用 ux_statistic_ext . stxname ) 扩展统计对象的名称 |
| statistics_owner name (引用 ux_authid . rolname ) 扩展统计对象的所有者 |
| expr text 包含在扩展统计对象中的表达式 |
| inherited bool (引用 ux_statistic_ext_data . stxdinherit ) 如果为 true,则统计信息包括子表中的值,而不仅仅是指定关系中的值 |
| null_frac float4 表达式条目中为 null 的比例 |
| avg_width int4 表达式条目的平均宽度(以字节为单位) |
| n_distinct float4 如果大于零,则是表达式中不同值的估计数量。如果小于零,则是不同值的负数除以行数。(当分析认为不同值的数量随着表的增长而增加时,使用负数形式;当表达式似乎具有固定数量的可能值时,使用正数形式。)例如,-1表示唯一的表达式,其中不同值的数量与行数相同 |
| most_common_vals anyarray 表达式中最常见的值列表。(如果没有值比其他值更常见,则为空。) |
| most_common_freqs float4[] 最常见值的频率列表,即每个出现次数除以总行数。(当 most_common_vals 存在时为空。) |
| histogram_bounds anyarray 将表达式的值分成大致相等的人口群体的值列表。如果存在,则省略 most_common_vals中的值。直方图计算。(如果表达式数据类型没有'<'运算符或 most_common_vals列表涵盖了整个人口,则此表达式为空。) |
| correlation float4 物理行排序和表达式值的逻辑排序之间的统计相关性。这个值的范围是-1到+1。当值接近-1或+1时,由于减少了对磁盘的随机访问,估计表达式的索引扫描将比接近零时更便宜。(如果表达式的数据类型没有'<'运算符,则此表达式为空。) |
| most_common_elems anyarray 在表达式的值中最常出现的非空元素值的列表。(标量类型为空。) |
| most_common_elem_freqs float4[] 最常见元素值的频率列表,即包含给定值至少一个实例的行的分数。每个元素频率后面跟随两个或三个附加值;这些是前面的每个元素频率的最小值和最大值,以及可选的空元素频率。(当most_common_elems为空时为Null。) |
| elem_count_histogram float4[] 表达式值中不同的非空元素值的计数直方图,后跟平均不同的非空元素数。 (标量类型为空。) |
可以使用ALTER TABLE SET STATISTICS命令按列控制数组字段中的最大条目数,或通过设置default_statistics_target运行时参数来全局控制。
ux_tables
视图ux_tables提供了有关数据库中每个表的有用信息。
ux_tables列
| 列类型 描述 |
|---|
| schemaname name (引用 ux_namespace . nspname ) 包含表的模式名称 |
| tablename name (引用 ux_class . relname ) 表的名称 |
| tableowner name (引用 ux_authid . rolname ) 表的所有者名称 |
| tablespace name (引用 ux_tablespace . spcname ) 包含表的表空间名称(如果是数据库的默认值,则为空) |
| hasindexes bool (引用 ux_class . relhasindex ) 如果表具有(或最近具有)任何索引,则为真。如果表具有(或曾经具有)规则,则为真。如果表启用了行安全性,则为真。如果表具有(或曾经具有)触发器,则为真 |
ux_timezone_abbrevs
视图ux_timezone_abbrevs提供了当前被日期时间输入例程识别的时区缩写列表。当运行时参数timezone_abbreviations被修改时,此视图的内容会发生变化。
ux_timezone_abbrevs列
| 列类型 描述 |
|---|
| abbrev text 时区缩写 |
| utc_offset interval 与UTC的偏移量(正数表示东经格林威治) |
| is_dst bool 如果这是夏令时缩写,则为True |
虽然大多数时区缩写表示与UTC的固定偏移量,但有些历史上的时区缩写的值是变化的。在这种情况下,此视图呈现它们当前的含义。
ux_timezone_names
视图ux_timezone_names提供了SET TIMEZONE识别的时区名称列表,以及它们的相关缩写、UTC偏移和夏令时状态。(从技术上讲,UXsinoDB不使用UTC,因为不处理闰秒。)与ux_timezone_abbrevs中显示的缩写不同,这些名称中的许多都暗示了一组夏令时转换日期规则。因此,相关信息会随着本地夏令时边界的变化而变化。显示的信息是基于当前CURRENT_TIMESTAMP的值计算的。
ux_timezone_names列
| 列类型 描述 |
|---|
| name text 时区名称 |
| abbrev text 时区缩写 |
| utc_offset interval 与UTC的偏移量(正数表示东经格林威治) |
| is_dst bool 如果当前观察夏令时,则为True |
ux_user
视图ux_user提供了关于数据库用户的信息。这只是ux_shadow的一个公开可读视图,其中密码字段被清空。
ux_user列
| 列类型 描述 |
|---|
| usename name 用户名 |
| usesysid oid 此用户的ID |
| usecreatedb bool 用户可以创建数据库 |
| usesuper bool 用户是超级用户 |
| userepl bool 用户可以启动流复制并将系统置于备份模式中和退出备份模式 |
| usebypassrls bool 用户绕过每个行级安全策略 |
| passwd text 不是密码(始终读作 ******** ) |
| valuntil timestamptz 密码过期时间(仅用于密码身份验证) |
| useconfig text[] 运行时配置变量的会话默认值 |
ux_user_mappings
视图ux_user_mappings提供了有关用户映射的信息。这本质上是ux_user_mapping的一个公开可读视图,如果用户没有使用它的权限,则省略选项字段。
ux_user_mappings列
| 列类型 描述 |
|---|
| umid oid (引用 ux_user_mapping . oid ) 用户映射的OID |
| srvid oid (引用 ux_foreign_server . oid ) 包含此映射的外部服务器的OID |
| srvname name (引用 ux_foreign_server . srvname ) 外部服务器的名称 |
| umuser oid (引用 ux_authid . oid ) 被映射的本地角色的OID,如果用户映射是公共的,则为零 |
| usename name 要映射的本地用户的名称 |
| umoptions text[] 用户映射特定选项,作为“keyword=value”字符串 |
为了保护存储为用户映射选项的密码信息, 除非满足以下条件之一,否则umoptions列将读取为null:
-
当前用户是被映射的用户,并拥有服务器或 在其上拥有
USAGE特权 -
当前用户是服务器所有者,映射是为
PUBLIC的 -
当前用户是超级用户
ux_views
视图ux_views提供了有关数据库中每个视图的有用信息。
ux_views列
| 列类型 描述 |
|---|
| schemaname name (引用 ux_namespace . nspname ) 包含视图的模式名称 |
| viewname name (引用 ux_class . relname ) 视图名称 |
| viewowner name (引用 ux_authid . rolname ) 视图所有者的名称 |
| definition text 视图定义(重构的 SELECT 查询) |
3.兼容Oracle视图
### 概述
表 兼容oracle视图
| 视图名字 | 用途 |
|---|---|
| all_arguments | 当前用户可以访问的函数和过程的参数 |
| all_col_comments | 当前用户可访问的所有序列 |
| all_col_privs | 当前用户下可以查看的所有列级权限 |
| all_cons_columns | 当前用户可访问的所有约束的列 |
| all_constraints | 当前用户可以访问的表上的约束定义 |
| all_ind_columns | 当前用户所能获取到的表上建有索引的列信息 |
| all_indexes | 当前用户所能获取到的表上的索引信息 |
| all_objects | 当前用户下可以查看的所有对象 |
| all_queues | 当前用户下可以查看的所有队列 |
| all_queue_tables | 当前用户下可以查看的所有队列表 |
| all_sequences | 当前用户可访问的所有序列 |
| all_source | 当前用户可访问的存储对象的文本源 |
| all_synonyms | 当前用户所能查看的同义词信息。包括: 当前用户的私有同义词 所有的public同义词 本地同义词(DB_LINK列为空)所指向,或者嵌套指向的对象,当前用户有权限查看 |
| all_tab_cols | 当前用户可以访问的表,视图的列 |
| all_tab_columns | 当前用户可以访问的表,视图的非隐藏列 |
| all_tab_comments | 在当前用户可以访问的表和视图上显示注释 |
| all_tab_privs | 描述当前用户,该用户可以是对象的所有者、授予者或者被授予者 |
| all_tables | 当前用户可访问的表 |
| all_trigger_cols | 当前用户可访问的所有触发器的列 |
| all_triggers | 当前用户可访问的所有触发器 |
| all_users | 列出当前用户可见的数据库的所有用户 |
| all_views | 当前用户所能查看的所有的视图信息 |
| db_files | 数据库中所有表空间、表空间使用的存储容量及表空间所在存储设备的容量信息 |
| dba_arguments | 列出数据库中可用的过程和函数的参数 |
| dba_col_comments | 在数据库中所有表和视图的列上显示注释 |
| dba_col_privs | 所有列级权限 |
| dba_cons_columns | 约束中指定的数据库中的所有列 |
| dba_constraints | 当前用户所拥有的表的所有约束定义 |
| dba_ind_columns | 数据库中所有建有索引的列的信息 |
| dba_indexes | 数据库中所有索引的信息 |
| dba_objects | 当前用户下可以查看的所有对象 |
| dba_queues | 当前用户下可以查看的所有队列 |
| dba_queue_tables | 当前用户下可以查看的所有队列表 |
| dba_role_privs | 授予所有用户的角色以及数据库中的角色 |
| dba_roles | 列出数据库中存在的所有角色 |
| dba_sequences | 数据库中所有的序列 |
| dba_source | 描述数据库中所有存储对象的文本源 |
| dba_synonyms | 数据库中所有同义词的信息 |
| dba_tab_cols | 当前所在数据库中,所有的表、视图的列信息 |
| dba_tab_columns | 当前所在数据库中,所有的表、视图的非隐藏列信息 |
| dba_tab_comments | 显示数据库中所有表和视图的注释 |
| dba_tab_privs | 描述数据库中的所有对象授予 |
| dba_tables | 数据库中的所有表 |
| dba_tablespace | 数据库中的表空间 |
| dba_tablespaces | 数据库中的所有表空间 |
| dba_trigger_cols | 数据库中所有触发器的列 |
| dba_triggers | 数据库中所有的触发器 |
| dba_users | 数据库中所有用户的信息 |
| dba_views | 当前用户的所有视图的信息 |
| user_arguments | 描述当前用户拥有的过程和函数的参数 |
| user_col_comments | 在当前用户拥有的表和视图的列上注释 |
| user_col_privs | 当前用户下的列级权限表 |
| user_cons_columns | 描述当前用户拥有并在约束中指定的列 |
| user_constraints | 当前用户所拥有的表的所有约束定义 |
| user_ind_columns | 数据库中所有建有索引的列的信息 |
| user_indexes | 当前用户拥有的所有索引信息 |
| user_objects | 当前用户拥有的所有对象 |
| user_queues | 当前用户拥有的队列 |
| user_queue_tables | 当前用户拥有的队列表 |
| user_role_privs | 授予当前用户的角色 |
| user_sequences | 当前用户的所有序列的信息 |
| user_source | 当前用户的所有程序源的信息 |
| user_synonyms | 数据库中用户所有同义词的信息 |
| user_tab_cols | 当前用户可以访问的表,视图的列 |
| user_tab_columns | 数据库中所有表列的信息 |
| user_tab_comments | 当前用户拥有的表和视图上的注释 |
| user_tab_privs | 当前用户的对象权限,该用户可以是对象的所有者、授予者或者被授予者 |
| user_tables | 当前用户的所有表的信息 |
| user_tablespace | 描述当前用户可访问的表空间 |
| user_tablespaces | 当前用户可访问的表空间 |
| user_trigger_cols | 当前用户用的所有触发器的列信息 |
| user_triggers | 当前用户的所有触发器的信息 |
| user_users | 当前用户 |
| user_views | 当前用户的所有视图的信息 |
| V$DATABASE | 当前数据库信息 |
| V$INSTANCE | 当前实例信息 |
| V$LOCK | 列出数据库当前持有的锁以及对锁的未完成请求 |
| V$LOCKED_OBJECT | 当前被锁定的对象 |
| V$PARAMETER | 列出影响当前会话的初始化参数信息 |
| V$SESSION | 当前会话信息 |
| V$SYSSTAT | 当前系统统计信息 |
表 user_db_link视图当前用户的dblink信息
| 名称 | 列约束 | 返回值类型 | 描述 |
|---|---|---|---|
| DB_LINK | NOT NULL | VARCHAR2(128) | dblink的名称 |
| USERNAME | VARCHAR2(128) | dblink的用户名 | |
| PASSWORD | VARCHAR2(128) | dblink的密码 | |
| HOST | VARCHAR2(2000) | dblink的host | |
| CREATED | NOT NULL | Date | dblink的创建时间 |
| HIDDEN | VARCHAR2(3) | 是否是自用 |
表 all_db_links视图当前用户的dblink信息
| 名称 | 列约束 | 返回值类型 | 描述 |
|---|---|---|---|
| OWNER | NOT NULL | VARCHAR2(128) | dblink的拥有者 |
| DB_LINK | NOT NULL | VARCHAR2(128) | dblink的名称 |
| USERNAME | VARCHAR2(128) | dblink的用户名 | |
| HOST | VARCHAR2(2000) | dblink的host | |
| CREATED | NOT NULL | DATE | dblink的创建时间 |
| HIDDEN | VARCHAR2(3) | 是否是自用 |
表 dba_db_links视图当前用户的dblink信息
| 名称 | 列约束 | 返回值类型 | 描述 |
|---|---|---|---|
| OWNER | NOT NULL | VARCHAR2(128) | dblink的拥有者 |
| DB_LINK | NOT NULL | VARCHAR2(128) | dblink的名称 |
| USERNAME | VARCHAR2(128) | dblink的用户名 | |
| HOST | VARCHAR2(2000) | dblink的host | |
| CREATED | NOT NULL | DATE | dblink的创建时间 |
| HIDDEN | VARCHAR2(3) | 是否是自用 |
注意
查询此视图需要超级用户权限。
表 dba_db_link_source视图当前用户的dblink信息
| 名称 | 列约束 | 返回值类型 | 描述 |
|---|---|---|---|
| SOURCE_ID | NOT NULL | NUMBER | dblink的源ID |
| DB_NAME | NOT NULL | VARCHAR2(256) | dblink的数据库名称 |
| DBID | NOT NULL | NUMBER | 目标数据库的映射ID |
| DB_UNIQUE_NAME | VARCHAR2(256) | 目录数据库的唯一名 | |
| HOST_NAME | VARCHAR2(256) | dblink中的主机名 | |
| IP_ADDRESS | VARCHAR2(128) | dblink所指的IP地址 | |
| PROTOCOL | VARCHAR2(64) | dblink的连接协议 | |
| USERNAME | NOT NULL | VARCHAR2(128) | 当前用户名 |
| USER#(加个双引号) | NOT NULL | NUMBER | 用户的ID |
| FIRST_LOGON_TIME | NOT NULL | TIMESTAMP(6) | 第一次使用dblink的时间 |
| LAST_LOGON_TIME | TIMESTAMP(6) | 最后一次使用dblink的时间 | |
| LOGON_COUNT | NUMBER | dblink的总共使用次数 |
注意
查询此视图需要超级用户权限。
all_arguments
all_arguments视图描述当前用户可以访问的函数和过程的参数。
表 all_arguments的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | CHARACTER VARYING | 对象的拥有者 |
| PACKAGE_NAME | CHARACTER VARYING | 包的名称 |
| OBJECT_NAME | CHARACTER VARYING | 过程或函数的名称 |
| OBJECT_ID | OID | 对象的对象号 |
| POSITION | INTEGER | 此列保存该项在参数列表中的位置,0表示函数返回值 |
| ARGUMENT_NAME | CHARACTER VARYING | 参数名称,空参数名用于表示函数返回 |
| IN_OUT | CHARACTER VARYING | 入参/出参类型 IN OUT IN/OUT |
| TYPE_NAME | CHARACTER VARYING | 实参类型的名称。如果类型是包本地类型(也就是说,它在包规范中声明),则此列显示包的名称 |
| OVERLOAD | CHARACTER VARYING | 指示第n个重载(按其在源中的出现顺序);否则,它是NULL |
| SUBPROGRAM_ID | INTEGER | 唯一子程序标识符 |
| SEQUENCE | INTEGER | 定义参数的顺序。参数序列从1开始。首先是返回类型,然后是每个参数 |
| DATA_LEVEL | INTEGER | 复合类型实参的嵌套深度 |
| DATA_TYPE | CHARACTER VARYING | 参数的数据类型 |
| DEFAULTED | CHARACTER VARYING | 指定参数是否为默认值 |
| DEFAULT_VALUE | TEXT | 保留供将来使用 |
| DEFAULT_LENGTH | INTEGER | 保留供将来使用 |
| DATA_LENGTH | INTEGER | 列长度(以字节为单位) |
| DATA_PRECISION | INTEGER | 十进制数字(NUMBER)或二进制数字(FLOAT)的长度 |
| DATA_SCALE | INTEGER | 小数点右边的数字 |
| RADIX | INTEGER | 一个数字的基数参数 |
| CHARACTER_SET_NAME | CHARACTER VARYING | 参数的字符集名称 |
| TYPE_OWNER | CHARACTER VARYING | 参数类型的所有者 |
| TYPE_SUBNAME | CHARACTER VARYING | 只与包本地类型相关。显示在TYPE_NAME列标识的包中声明的类型的名称 |
| TYPE_LINK | CHARACTER VARYING | 当TYPE_NAME列中标识的包是远程包时,仅与包本地类型相关。此列显示用于引用远程包的数据库链接 |
| TYPE_OBJECT_TYPE | CHARACTER VARYING | 显示由TYPE_OWNER、TYPE_NAME和TYPE_SUBNAME列描述的类型的类型。取值如下所示。 TABLE VIEW PACKAGE TYPE |
| PLS_TYPE | CHARACTER VARYING | 对于数值形参,实参的PL/SQL类型的名称。否则无效 |
| CHAR_LENGTH | INTEGER | 字符串数据类型的字符限制 |
| CHAR_USED | CHARACTER VARYING | 指示字符串的字节限制(B)或字符限制(C)是否正式 |
| ORIGIN_CON_ID | INTEGER | 数据产生的容器的ID。可能的值包括: 0:该值用于非cdb中的行。此值不用于cdb n:该值用于包含起源于容器ID为n的容器的数据的行(如果该行起源于root,则n = 1) |
### all_col_comments
all_col_comments视图描述当前用户可访问的所有序列。
表 all_col_comments的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 对象的拥有者 |
| TABLE_NAME | VARCHAR2(63) | 对象名 |
| COLUMN_NAME | VARCHAR2(63) | 列名 |
| COMMENTS | VARCHAR2(4000) | 描述 |
### all_col_privs
all_col_privs视图描述当前用户下可以查看的所有列级权限。
表 all_col_privs的列
| 名称 | 类型 | 描述 |
|---|---|---|
| GRANTOR | VARCHAR2(63) | 执行授权的用户的名称 |
| OWNER | VARCHAR2(63) | 对象的拥有者 |
| GRANTEE | VARCHAR2(63) | 授予访问权的用户或角色的名称 |
| TABLE_CATALOG | VARCHAR2(63) | 当前的数据库 |
| TABLE_SCHEMA | VARCHAR2(63) | 对象的模式 |
| TABLE_NAME | VARCHAR2(63) | 表名 |
| COLUMN_NAME | VARCHAR2(63) | 列名 |
| PRIVILEGE_TYPE | VARCHAR2(40) | 权限名称 |
| IS_GRANTABLE | VARCHAR2(3) | 允许访问 |
all_cons_columns
all_cons_columns视图描述当前用户可访问的所有约束的列。
表 all_cons_columns的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 兑现的拥有者 |
| CONSTRAINT_NAME | VARCHAR2(63) | 约束名 |
| TABLE_NAME | VARCHAR2(63) | 表名 |
| COLUMN_NAME | VARCHAR2(4000) | 列名 |
| POSITION | NUMERIC | 定义中列的原始位置 |
all_constraints
all_constraints视图描述当前用户可以访问的表上的约束定义。
表 all_constraints的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 对象的拥有者 |
| CONSTRAINT_NAME | VARCHAR2(63) | 约束名 |
| CONSTRAINT_TYPE | VARCHAR2(1) | 约束定义的类型,取值如下所示 C -表上的检查约束 P -主键 U -唯一密钥 R -外键 T -受限触发器 X -排他性约束 |
| TABLE_NAME | VARCHAR2(63) | 表名 |
| SEARCH_CONDITION | TEXT | 检查约束的搜索条件的文本。只有当行起源于当前容器时,此列才返回正确的值 |
| R_OWNER | VARCHAR2(63) | 引用约束中引用的表的所有者 |
| R_CONSTRAINT_NAME | VARCHAR2(63) | 引用表的唯一约束定义的名称 |
| DELETE_RULE | VARCHAR2(9) | 引用约束的删除规则如下所示。 RESTRICT CASCADE NULL SET NULL SET DEFAULT NO ACTION |
| STATUS | VARCHAR2(8) | 约束的实施状态如下所示。 ENABLED DISABLED |
| DEFERRABLE | VARCHAR2(14) | 指示约束是否可延迟(deferrable)或不可延迟(not deferrable) |
| DEFERRED | VARCHAR2(9) | 指示约束最初是否被延迟(deferred) (IMMEDIATE) |
| VALIDATED | VARCHAR2(13) | 当STATUS = ENABLED时,可能的值为: VALIDATED -所有数据都遵守约束(也就是说,当启用约束时,表中的现有数据以及输入到表中的任何后续数据都将得到验证) NOVALIDATED -所有数据都可能不遵守约束(也就是说,当启用约束时,表中现有的数据没有被验证,但是输入到表中的后续数据被验证) |
| GENERATED | VARCHAR2(14) | 指示约束的名称是用户生成(USER name)还是系统生成(GENERATED name) |
| BAD | VARCHAR2(3) | 指示此约束是否以模糊的方式指定世纪(BAD)或否(NULL)。为了避免这种模糊性导致的错误,可以使用带四位数年份的TO_DATE函数重写约束 |
| RELY | VARCHAR2(4) | 当VALIDATED = NOT VALIDATED时,此列表示查询重写(RELY)时是否考虑约束(NULL) |
| LAST_CHANGE | TIMESTAMP(0) WITHOUT TIME ZONE | 约束最后一次启用或禁用的时间 |
| INDEX_OWNER | VARCHAR2(63) | 拥有索引的用户名 |
| INDEX_NAME | VARCHAR2(63) | 索引的名称(仅在唯一和主键约束时显示) |
| INVALID | VARCHAR2(7) | 指示约束是否无效(invalid)或无效(NULL) |
| VIEW_RELATED | VARCHAR2(14) | 指示约束是否依赖于视图(DEPEND on view) (NULL) |
all_ind_columns
all_ind_columns视图描述当前用户所能获取到的表上建有索引的列信息。
表 all_ind_columns的列
| 名称 | 类型 | 描述 |
|---|---|---|
| INDEX_OWNER | VARCHAR2(63) | 对象的拥有者 |
| INDEX_NAME | VARCHAR2(63) | 索引名 |
| TABLE_OWNER | VARCHAR2(63) | 表的拥有者 |
| TABLE_NAME | VARCHAR2(63) | 表名 |
| COLUMN_NAME | VARCHAR2(4000) | 列名 |
| COLUMN_POSITION | SMALLINT | 索引中的列或属性的位置 |
| COLUMN_LENGTH | NUMERIC | 列的索引长度 |
| CHAR_LENGTH | NUMERIC | 列的最大码点长度 |
| DESCEND | VARCHAR2(4) | 列是否按降序排序(Y/N) |
### all_indexes
all_indexes视图描述当前用户可访问的所有约束的列。
表 all_indexes的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 索引的拥有者 |
| INDEX_NAME | VARCHAR2(63) | 索引名 |
| INDEX_TYPE | VARCHAR2(27) | 索引类型 |
| TABLE_OWNER | VARCHAR2(63) | 表的拥有者 |
| TABLE_NAME | VARCHAR2(63) | 表名 |
| TABLE_TYPE | TEXT | 表类型 |
| UNIQUENESS | VARCHAR2(9) | 索引的惟一状态 |
| COMPRESSION | VARCHAR2(8) | 用于索引的压缩类型 |
| PREFIX_LENGTH | NUMERIC | 压缩键前缀中的列数 |
| TABLESPACE_NAME | VARCHAR2(63) | 包含索引的表空间的名称 |
| INI_TRANS | VARCHAR2(7) | 初始交易数量 |
| MAX_TRANS | VARCHAR2(7) | 最大交易数量 |
| INITIAL_EXTENT | VARCHAR2(7) | 初始范围的大小 |
| NEXT_EXTENT | VARCHAR2(7) | 辅助扩展区的大小 |
| MIN_EXTENTS | VARCHAR2(7) | 段中允许的最小范围数 |
| MAX_EXTENTS | VARCHAR2(7) | 段中允许的最大范围数 |
| PCT_INCREASE | VARCHAR2(7) | 区大小增加的百分比 |
| PCT_THRESHOLD | VARCHAR2(7) | 每个索引条目允许的块空间百分比阈值 |
| INCLUDE_COLUMN | VARCHAR2(7) | 要包含在按索引组织的表主键(非溢出)索引中的最后一列的列ID |
| FREELISTS | VARCHAR2(7) | 分配给该段的进程空闲列表数 |
| FREELIST_GROUPS | VARCHAR2(7) | 分配给该段的空闲列表组的数量 |
| PCT_FREE | VARCHAR2(7) | 块中可用空间的最小百分比 |
| LOGGING | VARCHAR2(7) | 指示是否记录对索引的更改: |
| BLEVEL | VARCHAR2(7) | b *-树级别(从其根块到其叶块的索引深度)。深度0表示根块和叶块是相同的 |
| LEAF_BLOCKS | VARCHAR2(7) | 索引中的叶块数 |
| DISTINCT_KEYS | VARCHAR2(7) | 不同索引值的数量。对于强制执行的索引UNIQUE和PRIMARY KEY约束,该值与表中的行数相同(*_TABLES.NUM_ROWS) |
| AVG_LEAF_BLOCKS_PER_KEY | VARCHAR2(7) | 索引中每个不同值出现的叶块数的平均值,四舍五入为最接近的整数。对于强制执行的索引UNIQUE和PRIMARY KEY约束,该值始终为1 |
| AVG_DATA_BLOCKS_PER_KEY | VARCHAR2(7) | 表中由索引中的非重复值指向的平均数据块数,四舍五入为最接近的整数。此统计信息是包含索引列中包含给定值的行的数据块的平均数量 |
| CLUSTERING_FACTOR | VARCHAR2(7) | 根据索引值指示表中行的顺序。如果该值接近块数,则该表非常有序。在这种情况下,单个叶块中的索引条目倾向于指向相同数据块中的行;如果该值接近行数,则该表是随机排序的。在这种情况下,同一叶块中的索引条目不太可能指向同一数据块中的行 |
| STATUS | VARCHAR2(8) | 指示非分区索引是否为VALID或者UNUSABLE |
| NUM_ROWS | VARCHAR2(7) | 索引中的行数。 |
| SAMPLE_SIZE | VARCHAR2(7) | 用于分析指数的样本大小 |
| LAST_ANALYZED | VARCHAR2(20) | 最近分析此索引的日期 |
| DEGREE | VARCHAR2(40) | 每个实例用于扫描索引的线程数,或者DEFAULT |
| INSTANCES | VARCHAR2(40) | 要扫描索引的实例数,或者DEFAULT |
| PARTITIONED | VARCHAR2(3) | 指示索引是否已分区(YES)还是不(NO) |
| TEMPORARY | VARCHAR2(1) | 指示索引是否在临时表上(Y)还是不(N) |
| GENERATED | VARCHAR2(1) | 指示索引的名称是否是系统生成的(Y)还是不(N) |
| SECONDARY | VARCHAR2(1) | 指示该索引是否是由ODCIIndexCreateOracle数据盒式磁带的方法(Y)还是不(N) |
| BUFFER_POOL | VARCHAR2(7) | 用于索引块的缓冲池: |
| USER_STATS | VARCHAR2(3) | 指示统计信息是否由用户直接输入(YES)还是不(NO) |
| DURATION | VARCHAR2(15) | 指示临时表的持续时间: SYS$SESSION-在会话期间保留行 SYS$TRANSACTION-行在以下时间后被删除COMMIT |
| PCT_DIRECT_ACCESS | VARCHAR2(7) | 对于索引组织表上的辅助索引,使用 VALID 猜测的行的百分比 |
| ITYP_OWNER | VARCHAR2(63) | 对于域索引,索引类型的所有者 |
| ITYP_NAME | VARCHAR2(63) | 对于域索引,是索引类型的名称 |
| PARAMETERS | VARCHAR2(1000) | 对于域索引,参数字符串 |
| GLOBAL_STATS | VARCHAR2(3) | 如果收集或增量维护统计信息,则GLOBAL_STATS将为YES,否则将为NO |
| DOMIDX_STATUS | VARCHAR2(12) | 域索引的状态: 空索引不是域索引 VALID- Index是有效的域索引 IDXTYP_INVLD-域索引的Indextype无效 |
| DOMIDX_OPSTATUS | VARCHAR2(6) | 域索引的操作状态: 空索引不是域索引 VALID-操作执行无误 FAILED-操作失败,出现错误 |
| FUNCIDX_STATUS | VARCHAR2(8) | 基于函数的索引的状态: 空索引不是基于函数的索引 ENABLED-启用基于函数的索引 DISABLED-基于函数的索引被禁用 |
| JOIN_INDEX | TEXT | 指示该索引是否是联接索引(YES)还是不(NO) |
| IOT_REDUNDANT_PKEY_ELIM | TEXT | 指示是否从按索引组织的表上的辅助索引中删除了冗余的主键列(YES)还是不(NO) |
| DROPPED | TEXT | 指示该索引是否已被删除并在回收站中(YES)还是不(NO);分区表为空。该视图不返回已被删除的索引的名称 |
all_objects
all_objects视图描述当前用户下可以查看的所有对象。
表 all_objects的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 对象的拥有者 |
| OBJECT_NAME | VARCHAR2(63) | 对象名 |
| SUBOBJECT_NAME | VARCHAR2(63) | 子对象的名称 |
| OBJECT_ID | NUMERIC(38,0) | 对象的对象号 |
| DATA_OBJECT_ID | NUMERIC(38,0) | 包含该对象的段的字典对象号 |
| OBJECT_TYPE | VARCHAR2(19) | 对象类型 |
| CREATED | DATE | 对象创建的时间戳 |
| LAST_DDL_TIME | DATE | 对象和DDL语句产生的依赖对象的最后修改的时间戳(包括授予和撤销) |
| TIMESTAMP | VARCHAR2(20) | 对象规范的时间戳(字符数据) |
| STATUS | VARCHAR2(7) | 对象的状态 |
| TEMPORARY | VARCHAR2(1) | 对象是否是临时的 |
| GENERATED | VARCHAR2(1) | 是否生成此对象系统的名称 |
| SECONDARY | VARCHAR2(1) | 指示这是否是Oracle Data Cartridge的ODCIIndexCreate方法创建的辅助对象 |
| NAMESPACE | NUMERIC(38,0) | 命名空间 |
all_queues
all_queues视图提供任何当前已定义队列的相关信息。
表 all_queues的列
| 名称 | 类型 | 描述 |
|---|---|---|
| owner | CHARACTER VARYING | 队列所有者的用户名 |
| name | NAME | 队列的名称 |
| queue_table | NAME | 队列所在队列表的名称 |
| qid | OID | 队列的系统分配对象ID |
| queue_type | CHARACTER VARYING | 队列类型;当前仅NORMAL_QUEUE |
| max_retries | INT | 出队尝试的最大次数(仅兼容) |
| retrydelay | NUMERIC | 两次重试之间允许的最长时间(仅兼容) |
| enqueue_enabled | CHARACTER VARYING | 如果队列允许入队,则为YES;如果队列不允许入队,则为NO |
| dequeue_enabled | CHARACTER VARYING | 如果队列允许出队,则为 YES;如果队列不允许出队,则为 NO |
| retention | CHARACTER VARYING | 已处理的消息保留在队列中的秒数(仅兼容) |
| user_comment | CHARACTER VARYING | 用户指定的注释 |
| network_name | CHARACTER VARYING | (仅兼容) |
| sharded | CHARACTER VARYING | (仅兼容) |
all_queue_tables
all_queue_tables视图提供数据库中的所有队列表的相关信息。
表 all_queue_tables的列
| 名称 | 类型 | 描述 |
|---|---|---|
| owner | CHARACTER VARYING | 队列表所有者的角色名 |
| queue_table | NAME | 队列表的用户指定名称 |
| type | CHARACTER VARYING | 队列表中存储的数据的类型 |
| object_type | TEXT | 用户定义的有效负载类型 |
| sort_order | CHARACTER VARYING | 队列表的排序顺序(仅兼容) |
| recipients | CHARACTER VARYING | (仅兼容) |
| message_grouping | CHARACTER VARYING | (仅兼容) |
| compatible | CHARACTER VARYING | (仅兼容) |
| primary_instance | NUMERIC | (仅兼容) |
| secondary_instance | NUMERIC | (仅兼容) |
| owner_instance | NUMERIC | (仅兼容) |
| user_comment | CHARACTER VARYING | 创建表时提供的用户注释 |
| secure | CHARACTER VARYING | (仅兼容) |
all_sequences
all_sequences视图描述当前用户可访问的所有约束的列。
表 all_sequences的列
| 名称 | 类型 | 描述 |
|---|---|---|
| SEQUENCE_OWNER | VARCHAR2(63) | 序列的拥有者 |
| SEQUENCE_NAME | VARCHAR2(63) | 序列名 |
| MIN_VALUE | NUMERIC(38,0) | 序列的最小值 |
| MAX_VALUE | NUMERIC(38,0) | 序列的最大值 |
| INCREMENT_BY | NUMERIC(38,0) | 序列按该值递增 |
| CYCLE_FLAG | TEXT | 指示序列在达到极限(Y)时是否换行(N) |
| ORDER_FLAG | VARCHAR2(1) | 指示序列号是否按(Y)的顺序生成(N) |
| CACHE_SIZE | NUMERIC(38,0) | 要缓存的序列号的个数 |
| LAST_NUMERIC | NUMERIC(38,0) | 最后写入磁盘的序列号。如果序列使用缓存,则写入磁盘的数字是序列缓存中的最后一个数字。这个数字很可能大于所使用的最后一个序列号。对于会话序列,应忽略此列中的值 |
all_source
all_source视图描述当前用户可访问的存储对象的文本源。
表 all_source的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 对象的拥有者 |
| NAME | VARCHAR2(63) | 对象名 |
| TYPE | VARCHAR2(12) | 对象类型:FUNCTION, JAVA SOURCE, PACKAGE, PACKAGE BODY, PROCEDURE, TRIGGER, TYPE, TYPE BODY |
| TEXT | CLOB | 存储对象的文本源 |
all_synonyms
描述当前用户所能查看的同义词信息。包括:
- 当前用户的私有同义词
- 所有的public同义词
- 本地同义词(DB_LINK列为空)所指向,或者嵌套指向的对象,当前用户有权限查看
表 all_synonyms的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 同义词的所有者 |
| SYNONYM_NAMESPACE_NAME | VARCHAR2(63) | 同义词的命名空间 |
| SYNONYM_NAME | VARCHAR2(63) | 同义词名 |
| TABLE_OWNER | VARCHAR2(63) | 由同义词引用的对象的所有者 |
| TABLE_NAMESPACE_NAME | VARCHAR2(63) | 表的命名空间 |
| TABLE_NAME | VARCHAR2(63) | 由同义词引用的对象的名称 |
| DBLINK | TEXT | 引用的数据库链接的名称(如果有的话) |
all_tab_cols
all_tab_cols视图描述当前用户可以访问的表,视图的列。
表 all_tab_cols的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 表、视图的拥有者 |
| TABLE_NAME | VARCHAR2(63) | 表、视图的名称 |
| COLUMN_NAME | VARCHAR2(63) | 列名 |
| DATA_TYPE | VARCHAR2(106) | 列的数据类型 |
| DATA_TYPE_MOD | VARCHAR2(3) | 列的数据类型修饰符 |
| DATA_TYPE_OWNER | VARCHAR2(63) | 列的数据类型的所有者 |
| DATA_LENGTH | NUMERIC | 列长度(以字节为单位) |
| DATA_PRECISION | NUMERIC | 数字数据类型的十进制精度;浮点型的二进制精度;所有其他数据类型为空 |
| DATA_SCALE | NUMERIC | 位数:数字中小数点右边的位数 |
| NULLABLE | VARCHAR2(1) | 指示列是否允许为空。如果列上存在非NULL约束或列是主键的一部分,则该值为N |
| COLUMN_ID | NUMERIC | 创建的列的序列号 |
| DEFAULT_LENGTH | NUMERIC | 列的默认值的长度 |
| DATA_DEFAULT | TEXT | 列的默认值 |
| NUM_DISTINCT | NUMERIC | 列中不同值的数目 |
| LOW_VALUE | NUMERIC | 列中的低值 |
| HIGH_VALUE | NUMERIC | 列中的高值 |
| DENSITY | NUMERIC | 如果柱状图在COLUMN_NAME上可用,则此列显示在柱状图中跨越少于2个端点的值的选择性。它不表示跨越2个或多个端点的值的选择性。如果柱状图在COLUMN_NAME上不可用,则该列的值为1/NUM_DISTINCT |
| NUM_NULLS | NUMERIC | 列中空值的数目 |
| NUM_BUCKETS | NUMERIC | 列的直方图中的桶数。注意:直方图中的桶数是在ANALYZE SQL语句的SIZE参数中指定的。然而,Oracle数据库并没有创建一个比样本行数更多的桶的直方图。此外,如果样本中包含任何重复的值,Oracle数据库会创建指定数量的桶,但由于内部压缩算法的原因,这一列显示的值可能更小 |
| LAST_ANALYZED | TIMESTAMP(0) WITHOUT TIME ZONE | 这一栏最近分析的日期 |
| SAMPLE_SIZE | NUMERIC | 用于分析该列的样本量 |
| CHARACTER_SET_NAME | VARCHAR2(44) | 字符集名称:CHAR_CS/NCHAR_CS |
| CHAR_COL_DECL_LENGTH | NUMERIC | 字符类型列的声明长度 |
| GLOBAL_STATS | VARCHAR2(3) | 如果统计信息被收集或增量维护,GLOBAL_STATS将为YES,否则为NO |
| USER_STATS | VARCHAR2(3) | 指示统计信息是否由用户直接输入(YES)或(NO) |
| AVG_COL_LEN | NUMERIC | 列的平均长度(以字节计) |
| CHAR_LENGTH | NUMERIC | 以字符为单位显示列的长度。该值仅适用于以下数据类型: CHAR VARCHAR2 NCHAR NVARCHAR2 |
| CHAR_USED | VARCHAR2(1) | 指示列使用BYTE长度语义(B)或CHAR长度语义(C),或者数据类型不是以下任何一种(NULL): CHAR VARCHAR2 NCHAR NVARCHAR2 |
| V80_FMT_IMAGE | VARCHAR2(3) | 指示列数据是否为8.0版本图像格式(YES)或否(NO) |
| DATA_UPGRADED | VARCHAR2(3) | 指示列数据是否已升级为最新类型版本格式(YES)或(NO) |
| HIDDEN_COLUMN | VARCHAR2(3) | 指示列是否是隐藏列(YES)或不是(NO) |
| VIRTUAL_COLUMN | VARCHAR2(3) | 指示列是否是虚拟列(YES)或不是(NO) |
| SEGMENT_COLUMN_ID | NUMERIC | 段中列的序列号 |
| INTERNAL_COLUMN_ID | NUMERIC | 列的内部序列号 |
| HISTOGRAM | VARCHAR2(15) | 表示直方图的存在/类型: NONE FREQUENCY TOP-FREQUENCY HEIGHT BALANCED HYBRID |
| QUALIFIED_COL_NAME | VARCHAR2(4000) | 限定的列名 |
all_tab_columns
all_tab_columns视图描述当前用户可以访问的表,视图的非隐藏列。
表 all_tab_columns的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | TEXT | 表、视图的拥有者 |
| TABLE_NAME | VARCHAR2(63) | 表、视图的名称 |
| COLUMN_NAME | VARCHAR2(63) | 列名 |
| DATA_TYPE | VARCHAR2(106) | 列的数据类型 |
| DATA_TYPE_MOD | VARCHAR2(3) | 列的数据类型修饰符 |
| DATA_TYPE_OWNER | VARCHAR2(63) | 列的数据类型的所有者 |
| DATA_LENGTH | NUMERIC | 列长度(以字节为单位) |
| DATA_PRECISION | NUMERIC | NUMBER数据类型的十进制精度;FLOAT数据类型的二进制精度;所有其他数据类型为NULL |
| DATA_SCALE | NUMERIC | 小数点右边的数字 |
| NULLABLE | VARCHAR2(1) | 指示列是否允许null。如果列上有NOT NULL约束,或者列是PRIMARY KEY的一部分,则该值为N |
| COLUMN_ID | NUMERIC | 创建的列的序列号 |
| DEFAULT_LENGTH | NUMERIC | 列的默认值的长度 |
| DATA_DEFAULT | TEXT | 列的默认值 |
| NUM_DISTINCT | NUMERIC | 列中不同值的数目 |
| LOW_VALUE | NUMERIC | 列中的低值 |
| HIGH_VALUE | NUMERIC | 列中的高值 |
| DENSITY | NUMERIC | 如果柱状图在COLUMN_NAME上可用,则此列显示在柱状图中跨越少于2个端点的值的选择性。它不表示跨越2个或多个端点的值的选择性。如果柱状图在COLUMN_NAME上不可用,则该列的值为1/NUM_DISTINCT |
| NUM_NULLS | NUMERIC | 列中空值的数目 |
| NUM_BUCKETS | NUMERIC | 列的直方图中的桶数。注意:直方图中的桶数是在ANALYZE SQL语句的SIZE参数中指定的。然而,Oracle数据库并没有创建一个比样本行数更多的桶的直方图。此外,如果样本中包含任何重复的值,Oracle数据库会创建指定数量的桶,但由于内部压缩算法的原因,这一列显示的值可能更小 |
| LAST_ANALYZED | TIMESTAMP(0) WITHOUT TIME ZONE | 这一栏最近分析的日期 |
| SAMPLE_SIZE | NUMERIC | 用于分析该列的样本量 |
| CHARACTER_SET_NAME | VARCHAR2(44) | 字符集名称:CHAR_CS/NCHAR_CS |
| CHAR_COL_DECL_LENGTH | NUMERIC | 字符类型列的声明长度 |
| GLOBAL_STATS | VARCHAR2(3) | 如果统计信息被收集或增量维护,GLOBAL_STATS将为YES,否则为NO |
| USER_STATS | VARCHAR2(3) | 指示统计信息是否由用户直接输入(YES)或(NO) |
| AVG_COL_LEN | NUMERIC | 列的平均长度(以字节计) |
| CHAR_LENGTH | NUMERIC | 以字符为单位显示列的长度。该值仅适用于以下数据类型: CHAR VARCHAR2 NCHAR NVARCHAR2 |
| CHAR_USED | VARCHAR2(1) | 指示列使用BYTE长度语义(B)或CHAR长度语义(C),或者数据类型不是以下任何一种(NULL): CHAR VARCHAR2 NCHAR NVARCHAR2 |
| V80_FMT_IMAGE | VARCHAR2(3) | 指示列数据是否为8.0版本图像格式(YES)或否(NO) |
| DATA_UPGRADED | VARCHAR2(3) | 指示列数据是否已升级为最新类型版本格式(YES)或(NO) |
| HISTOGRAM | VARCHAR2(15) | 表示直方图的存在/类型: NONE FREQUENCY TOP-FREQUENCY HEIGHT BALANCED HYBRID |
all_tab_comments
all_tab_comments视图在当前用户可以访问的表和视图上显示注释。
表 all_tab_comments的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 对象的拥有者 |
| TABLE_NAME | VARCHAR2(63) | 表名 |
| TABLE_TYPE | VARCHAR2(11) | 表类型 |
| COMMENTS | VARCHAR2(4000) | 注释 |
all_tab_privs
all_tab_privs视图描述当前用户,该用户可以是对象的所有者、授予者或者被授予者。
表 all_tab_privs的列
| 名称 | 类型 | 描述 |
|---|---|---|
| GRANTEE | VARCHAR2(63) | 授予访问权的用户或角色的名称 |
| OWNER | VARCHAR2(63) | 对象的所有者 |
| TABLE_NAME | VARCHAR2(63) | 对象名称 |
| GRANTOR | VARCHAR2(63) | 执行授权的用户的名称 |
| PRIVILEGE | VARCHAR2(40) | 对象上的特权 |
| GRANTABLE | VARCHAR2(3) | 指示是否使用 GRANT OPTION (YES)或否(NO)授予特权 |
all_tables
all_tables视图描述当前用户可访问的表。
表 all_tables的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 表的拥有者 |
| TABLE_NAME | VARCHAR2(63) | 表的名称 |
| TABLESPACE_NAME | VARCHAR2(63) | 包含该表的表空间的名称;对于分区表、临时表和按索引组织的表,为NULL |
| CLUSTER_NAME | VARCHAR2(63) | 表所属的集群的名称(如果有) |
| IOT_NAME | VARCHAR2(63) | 溢出或映射表条目所属的按索引组织的表(如果有)的名称。如果IOT_TYPE列不为空,则此列包含基表名 |
| STATUS | VARCHAR2(63) | 如果以前的 DROP TABLE 操作失败,指示表是否不可用(UNUSABLE)或有效(VALID) |
| PCT_FREE | VARCHAR2(63) | 块中可用空间的最小百分比;分区表为空 |
| PCT_USED | INTEGER | 块中已用空间的最小百分比;分区表为空 |
| INI_TRANS | INTEGER | 处理的初始数量;分区表为空 |
| MAX_TRANS | INTEGER | 最大处理数量;分区表为空 |
| INITIAL_EXTENT | INTEGER | 初始范围的大小(以字节为单位);分区表为空 |
| NEXT_EXTENT | INTEGER | 二级区段的大小(以字节为单位);NULL用于分区表 |
| MIN_EXTENTS | INTEGER | 段中允许的最小范围数;分区表为空 |
| MAX_EXTENTS | INTEGER | 段中允许的最大范围数;分区表为空 |
| PCT_INCREASE | INTEGER | 范围大小的增加百分比;分区表为空 |
| FREELISTS | INTEGER | 分配给该段的进程空闲列表数;分区表为空 |
| FREELIST_GROUPS | INTEGER | 分配给该段的空闲列表组的数量;分区表为空 |
| LOGGING | INTEGER | 指示是否记录对表的更改;分区表为空;YES/NO |
| BACKED_UP | VARCHAR2(3) | 指示自最后一次修改(Y)以来是否备份了表(N) |
| NUM_ROWS | VARCHAR2(1) | 表中的行数 |
| BLOCKS | INTEGER | 表中已使用数据块的个数 |
| EMPTY_BLOCKS | INTEGER | 表中空(从未使用过)数据块的数量。只有在使用DBMS_STATS包收集表上的统计信息时,才会填充此列 |
| AVG_SPACE | INTEGER | 分配给表的数据块中的平均可用空间量(以字节为单位) |
| CHAIN_CNT | INTEGER | 表中从一个数据块链接到另一个数据块或已迁移到新块的行数,需要一个链接来保存旧的ROWID |
| AVG_ROW_LEN | INTEGER | 表中一行的平均长度(以字节为单位) |
| AVG_SPACE_FREELIST_BLOCKS | INTEGER | 自由列表中所有块的平均空闲空间 |
| NUM_FREELIST_BLOCKS | INTEGER | 自由列表上的块数 |
| DEGREE | INTEGER | 每个实例用于扫描表的线程数,或默认值 |
| INSTANCES | VARCHAR2(10) | 要扫描表的实例数,或默认值 |
| CACHE | VARCHAR2(5) | 指示是否将表缓存在缓冲区缓存(Y)中(N) |
| TABLE_LOCK | VARCHAR2(8) | 表锁定是启用(enabled)还是禁用(disabled) |
| SAMPLE_SIZE | INTEGER | 用于分析表格的样本量 |
| LAST_ANALYZED | INTEGER | 该表最近被分析的日期 |
| PARTITIONED | DATE | 指示表是否分区(YES)或未分区(NO) |
| IOT_TYPE | VARCHAR2(3) | 如果表是索引组织的表,则IOT_TYPE为IOT、IOT_OVERFLOW或IOT_MAPPING。如果表不是索引组织的表,则IOT_TYPE为NULL |
| TEMPORARY | VARCHAR2(12) | 表是临时的(Y)还是非临时的(N) |
| SECONDARY | VARCHAR2(1) | 说明表是否为Oracle数据盒(Y)的ODCIIndexCreate方法创建的辅助对象(N) |
| NESTED | VARCHAR2(1) | 指示表是嵌套表(是)还是非嵌套表(否) |
| BUFFER_POOL | VARCHAR2(3) | 表的缓冲池;分区表为空 |
| ROW_MOVEMENT | VARCHAR2(7) | 指示分区行移动是启用(enabled)还是禁用(disabled) |
| GLOBAL_STATS | VARCHAR2(8) | 如果统计信息被收集或增量维护,GLOBAL_STATS将为YES,否则为NO |
| USER_STATS | VARCHAR2(3) | 表示统计数据是由用户直接输入的(YES)还是不是(NO) |
| DURATION | VARCHAR2(3) | 临时表的持续时间,取值如下所示。 SYS$SESSION - 行在会话期间保留 SYS$TRANSACTION - 行在提交后被删除 Null - 永久表 |
| SKIP_CORRUPT | VARCHAR2(15) | 指示Oracle数据库是否在表和索引扫描期间忽略标记为损坏的块(启用)或引发错误(禁用)。要启用此特性,请运行DBMS_REPAIR。SKIP_CORRUPT_BLOCKS过程 |
| MONITORING | VARCHAR2(8) | 死元组 |
| CLUSTER_OWNER | VARCHAR2(3) | 表所属集群的所有者(如果有的话) |
| DEPENDENCIES | VARCHAR2(63) | 指示行级依赖项跟踪是启用(启用)还是禁用(禁用) |
| COMPRESSION | VARCHAR2(8) | 表压缩是否启用(启用)或不启用(禁用);对于分区表,为NULL |
| DROPPED | VARCHAR2(8) | 指示表是否已被删除,是否在回收站(YES)或(NO);对于分区表,为NULL,此视图不返回已删除的表的名称 |
| VARCHARBYTE | VARCHAR2(3) | 默认值 |
all_trigger_cols
all_trigger_cols视图描述当前用户可访问的所有触发器的列。
表 all_trigger_cols的列
| 名称 | 类型 | 描述 |
|---|---|---|
| TRIGGER_OWNER | VARCHAR2(63) | 触发器的拥有者 |
| TRIGGER_NAME | VARCHAR2(63) | 触发器名 |
| TABLE_OWNER | VARCHAR2(63) | 表的拥有者 |
| TABLE_NAME | VARCHAR2(63) | 表名 |
| COLUMN_NAME | VARCHAR2(4000) | 列名 |
all_triggers
all_triggers视图描述当前用户可访问的所有触发器。
表 all_triggers的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 对象的拥有者 |
| TRIGGER_NAME | VARCHAR2(63) | 触发器名 |
| TRIGGER_TYPE | VARCHAR2(16) | 触发器类型 |
| TRIGGERING_EVENT | VARCHAR2(216) | 触发触发器的DML、DDL或数据库事件 |
| TABLE_OWNER | VARCHAR2(63) | 表的拥有者 |
| TABLE_NAME | VARCHAR2(63) | 表名 |
| BASE_OBJECT_TYPE | VARCHAR2(16) | 定义触发器的基对象,取值如下所示 TABLE VIEW SCHEMA DATABASE |
| COLUMN_NAME | VARCHAR2(4000) | 列名 |
| REFERENCING_NAMES | VARCHAR2(422) | 用于从触发器中引用OLD和NEW列值的名称 |
| DESCRIPTION | VARCHAR2(4000) | 触发描述;用于重新创建触发器创建语句 |
| STATUS | VARCHAR2(8) | 指示触发器是启用(enabled)还是禁用(disabled);禁用的触发器不会触发 |
| TRIGGER_BODY | TEXT | 触发器触发时执行的语句 |
| WHEN_CLAUSE | TEXT | 触发器触发条件 |
| ACTION_TYPE | VARCHAR2(4) | 触发器体的动作类型(仅支持CALL) |
all_users
all_users视图列出当前用户可见的数据库的所有用户。
表 all_users的列
| 名称 | 类型 | 描述 |
|---|---|---|
| USERNAME | VARCHAR2(63) | 用户名 |
| USER_ID | NUMERIC(38,0) | 用户id |
| CREATED | DATE | 创建用户的时间 |
all_views
all_views视图描述当前用户所能查看的所有的视图信息。
表 all_views的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 视图的拥有者 |
| VIEW_NAME | VARCHAR2(63) | 视图名 |
| TEXT_LENGTH | NUMERIC | 视图文本的长度 |
| TEXT | TEXT | 查看文本。只有当行起源于当前容器时,此列才返回正确的值。在此视图中,BEQUEATH子句不会作为TEXT列的一部分出现 |
| TYPE_TEXT_LENGTH | NUMERIC | 视图的类型子句的长度 |
| TYPE_TEXT | VARCHAR2(4000) | 视图的类型子句 |
| OID_TEXT_LENGTH | NUMERIC | 视图的WITH OID子句的长度 |
| OID_TEXT | VARCHAR2(4000) | 视图的WITH OID子句 |
| VIEW_TYPE_OWNER | VARCHAR2(63) | 如果视图是类型化视图,则为视图类型的所有者 |
| VIEW_TYPE | VARCHAR2(63) | 如果视图是类型化视图,则为视图的类型 |
| SUPERVIEW_NAME | VARCHAR2(63) | 父视图的名称 |
| EDITIONING_VIEW | VARCHAR2(1) | 保留供将来使用 |
| READ_ONLY | VARCHAR2(1) | 指示视图是否只读(Y) (N) |
db_files
db_files视图描述数据库中所有表空间、表空间使用的存储容量及表空间所在存储设备的容量信息。
表 db_files的列
| 名称 | 类型 | 描述 |
|---|---|---|
| NAME | NAME | 命名空间 |
| USED | BIGINT | 使用的百分比 |
| CAPACITY | BIGINT | 总空间 |
| RATIO | NUMERIC | 百分比 |
dba_arguments
dba_arguments视图列出数据库中可用的过程和函数的参数。
表 dba_arguments的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | CHARACTER VARYING | 对象的拥有者 |
| PACKAGE_NAME | CHARACTER VARYING | 包的名称 |
| OBJECT_NAME | CHARACTER VARYING | 过程或函数的名称 |
| OBJECT_ID | OID | 对象的对象号 |
| POSITION | INTEGER | 此列保存该项在参数列表中的位置,0表示函数返回值 |
| ARGUMENT_NAME | CHARACTER VARYING | 参数名称,空参数名用于表示函数返回 |
| IN_OUT | CHARACTER VARYING | 入参/出参类型 IN OUT IN/OUT |
| TYPE_NAME | CHARACTER VARYING | 实参类型的名称。如果类型是包本地类型(也就是说,它在包规范中声明),则此列显示包的名称 |
| OVERLOAD | CHARACTER VARYING | 指示第n个重载(按其在源中的出现顺序);否则,它是NULL |
| SUBPROGRAM_ID | INTEGER | 唯一子程序标识符 |
| SEQUENCE | INTEGER | 定义参数的顺序。参数序列从1开始。首先是返回类型,然后是每个参数 |
| DATA_LEVEL | INTEGER | 复合类型实参的嵌套深度 |
| DATA_TYPE | CHARACTER VARYING | 参数的数据类型 |
| DEFAULTED | CHARACTER VARYING | 指定参数是否为默认值 |
| DEFAULT_VALUE | TEXT | 保留供将来使用 |
| DEFAULT_LENGTH | INTEGER | 保留供将来使用 |
| DATA_LENGTH | INTEGER | 列长度(以字节为单位) |
| DATA_PRECISION | INTEGER | 十进制数字(NUMBER)或二进制数字(FLOAT)的长度 |
| DATA_SCALE | INTEGER | 小数点右边的数字 |
| RADIX | INTEGER | 一个数字的基数参数 |
| CHARACTER_SET_NAME | CHARACTER VARYING | 参数的字符集名称 |
| TYPE_OWNER | CHARACTER VARYING | 参数类型的所有者 |
| TYPE_SUBNAME | CHARACTER VARYING | 只与包本地类型相关。显示在TYPE_NAME列标识的包中声明的类型的名称 |
| TYPE_LINK | CHARACTER VARYING | 当TYPE_NAME列中标识的包是远程包时,仅与包本地类型相关。此列显示用于引用远程包的数据库链接 |
| TYPE_OBJECT_TYPE | CHARACTER VARYING | 显示由TYPE_OWNER、TYPE_NAME和TYPE_SUBNAME列描述的类型的类型。取值包括: TABLE VIEW PACKAGE TYPE |
| PLS_TYPE | CHARACTER VARYING | 对于数值形参,实参的PL/SQL类型的名称。否则无效 |
| CHAR_LENGTH | INTEGER | 字符串数据类型的字符限制 |
| CHAR_USED | CHARACTER VARYING | 指示字符串的字节限制(B)或字符限制(C)是否正式 |
| ORIGIN_CON_ID | INTEGER | 数据产生的容器的ID。可能的值包括: 0:该值用于非cdb中的行。此值不用于cdb n:该值用于包含起源于容器ID为n的容器的数据的行(如果该行起源于root,则n = 1) |
dba_col_comments
dba_col_comments视图在数据库中所有表和视图的列上显示注释。
表 dba_col_comments的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 对象的拥有者 |
| TABLE_NAME | VARCHAR2(63) | 对象名 |
| COLUMN_NAME | VARCHAR2(63) | 列名 |
| COMMENTS | VARCHAR2(4000) | 描述 |
dba_col_privs
dba_col_privs视图描述所有列级权限。
表 dba_col_privs的列
| 名称 | 类型 | 描述 |
|---|---|---|
| GRANTOR | VARCHAR2(63) | 执行授权的用户的名称 |
| OWNER | VARCHAR2(63) | 对象的拥有者 |
| GRANTEE | VARCHAR2(63) | 授予访问权的用户或角色的名称 |
| TABLE_CATALOG | VARCHAR2(63) | 当前的数据库 |
| TABLE_SCHEMA | VARCHAR2(63) | 对象的模式 |
| TABLE_NAME | VARCHAR2(63) | 表名 |
| COLUMN_NAME | VARCHAR2(63) | 列名 |
| PRIVILEGE_TYPE | VARCHAR2(40) | 权限名称 |
| IS_GRANTABLE | VARCHAR2(3) | 允许访问 |
dba_cons_columns
dba_cons_columns视图描述约束中指定的数据库中的所有列。
表 dba_cons_columns的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 兑现的拥有者 |
| CONSTRAINT_NAME | VARCHAR2(63) | 约束名 |
| TABLE_NAME | VARCHAR2(63) | 表名 |
| COLUMN_NAME | VARCHAR2(4000) | 列名 |
| POSITION | NUMERIC | 定义中列的原始位置 |
dba_constraints
dba_constraints视图描述当前用户所拥有的表的所有约束定义。
表 dba_constraints的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 对象的拥有者 |
| CONSTRAINT_NAME | VARCHAR2(63) | 约束名 |
| CONSTRAINT_TYPE | VARCHAR2(1) | 约束定义的类型,如下所示。 C -表上的检查约束 P -主键 U -唯一密钥 R -外键 T -受限触发器 X -排他性约束 |
| TABLE_NAME | VARCHAR2(63) | 表名 |
| SEARCH_CONDITION | TEXT | 检查约束的搜索条件的文本。只有当行起源于当前容器时,此列才返回正确的值 |
| R_OWNER | VARCHAR2(63) | 引用约束中引用的表的所有者 |
| R_CONSTRAINT_NAME | VARCHAR2(63) | 引用表的唯一约束定义的名称 |
| DELETE_RULE | VARCHAR2(9) | 引用约束的删除规则,如下所示。 RESTRICT CASCADE NULL SET NULL SET DEFAULT NO ACTION |
| STATUS | TEXT | 约束的实施状态,如下所示。 ENABLED DISABLED |
| DEFERRABLE | VARCHAR2(14) | 指示约束是否可延迟(deferrable)或不可延迟(not deferrable) |
| DEFERRED | VARCHAR2(9) | 指示约束最初是否被延迟(deferred) (IMMEDIATE) |
| VALIDATED | VARCHAR2(13) | 当STATUS = ENABLED时,可能的取值如下所示。 VALIDATED -所有数据都遵守约束(也就是说,当启用约束时,表中的现有数据以及输入到表中的任何后续数据都将得到验证) NOVALIDATED -所有数据都可能不遵守约束(也就是说,当启用约束时,表中现有的数据没有被验证,但是输入到表中的后续数据被验证) |
| GENERATED | VARCHAR2(14) | 指示约束的名称是用户生成(USER name)还是系统生成(GENERATED name) |
| BAD | VARCHAR2(3) | 指示此约束是否以模糊的方式指定世纪(BAD)或否(NULL)。为了避免这种模糊性导致的错误,可以使用带四位数年份的TO_DATE函数重写约束 |
| RELY | VARCHAR2(4) | 当VALIDATED = NOT VALIDATED时,此列表示查询重写(RELY)时是否考虑约束(NULL) |
| LAST_CHANGE | TIMESTAMP(0) WITHOUT TIME ZONE | 约束最后一次启用或禁用的时间 |
| INDEX_OWNER | VARCHAR2(63) | 拥有索引的用户名 |
| INDEX_NAME | VARCHAR2(63) | 索引的名称(仅在唯一和主键约束时显示) |
| INVALID | VARCHAR2(7) | 指示约束是否无效(invalid)或无效(NULL) |
| VIEW_RELATED | VARCHAR2(14) | 指示约束是否依赖于视图(DEPEND on view) (NULL) |
dba_ind_columns
dba_ind_columns视图描述数据库中所有建有索引的列的信息。
表 dba_ind_columns的列
| 名称 | 类型 | 描述 |
|---|---|---|
| INDEX_OWNER | VARCHAR2(63) | 对象的拥有者 |
| INDEX_NAME | VARCHAR2(63) | 索引名 |
| TABLE_OWNER | VARCHAR2(63) | 表的拥有者 |
| TABLE_NAME | VARCHAR2(63) | 表名 |
| COLUMN_NAME | VARCHAR2(4000) | 列名 |
| COLUMN_POSITION | SMALLINT | 索引中的列或属性的位置 |
| COLUMN_LENGTH | NUMERIC | 列的索引长度 |
| CHAR_LENGTH | NUMERIC | 列的最大码点长度 |
| DESCEND | VARCHAR2(4) | 列是否按降序排序(Y/N) |
dba_indexes
dba_indexes视图描述数据库中所有索引的信息。
表 dba_indexes的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 索引的拥有者 |
| INDEX_NAME | VARCHAR2(63) | 索引名 |
| INDEX_TYPE | VARCHAR2(63) | 索引类型 |
| TABLE_OWNER | VARCHAR2(63) | 表的拥有者 |
| TABLE_NAME | VARCHAR2(63) | 表名 |
| TABLE_TYPE | TEXT | 表类型 |
| UNIQUENESS | VARCHAR2(9) | 索引的惟一状态 |
| COMPRESSION | VARCHAR2(8) | 用于索引的压缩类型 |
| PREFIX_LENGTH | NUMERIC | 压缩键前缀中的列数 |
| TABLESPACE_NAME | VARCHAR2(63) | 包含索引的表空间的名称 |
| INI_TRANS | VARCHAR2(7) | 初始交易数量 |
| MAX_TRANS | VARCHAR2(7) | 最大交易数量 |
| INITIAL_EXTENT | VARCHAR2(7) | 初始范围的大小 |
| NEXT_EXTENT | VARCHAR2(7) | 辅助扩展区的大小 |
| MIN_EXTENTS | VARCHAR2(7) | 段中允许的最小范围数 |
| MAX_EXTENTS | VARCHAR2(7) | 段中允许的最大范围数 |
| PCT_INCREASE | VARCHAR2(7) | 区大小增加的百分比 |
| PCT_THRESHOLD | VARCHAR2(7) | 每个索引条目允许的块空间百分比阈值 |
| INCLUDE_COLUMN | VARCHAR2(7) | 要包含在按索引组织的表主键(非溢出)索引中的最后一列的列ID |
| FREELISTS | VARCHAR2(7) | 分配给该段的进程空闲列表数 |
| FREELIST_GROUPS | VARCHAR2(7) | 分配给该段的空闲列表组的数量 |
| PCT_FREE | VARCHAR2(7) | 块中可用空间的最小百分比 |
| LOGGING | VARCHAR2(7) | 指示是否记录对索引的更改: |
| BLEVEL | VARCHAR2(7) | b *-树级别(从其根块到其叶块的索引深度)。深度0表示根块和叶块是相同的 |
| LEAF_BLOCKS | VARCHAR2(7) | 索引中的叶块数 |
| DISTINCT_KEYS | VARCHAR2(7) | 不同索引值的数量。对于强制执行的索引UNIQUE和PRIMARY KEY约束,该值与表中的行数相同(*_TABLES.NUM_ROWS) |
| AVG_LEAF_BLOCKS_PER_KEY | VARCHAR2(7) | 索引中每个不同值出现的叶块数的平均值,四舍五入为最接近的整数。对于强制执行的索引UNIQUE和PRIMARY KEY约束,该值始终为1 |
| AVG_DATA_BLOCKS_PER_KEY | VARCHAR2(7) | 表中由索引中的非重复值指向的平均数据块数,四舍五入为最接近的整数。此统计信息是包含索引列中包含给定值的行的数据块的平均数量 |
| CLUSTERING_FACTOR | VARCHAR2(7) | 根据索引值指示表中行的顺序。如果该值接近块数,则该表非常有序。在这种情况下,单个叶块中的索引条目倾向于指向相同数据块中的行;如果该值接近行数,则该表是随机排序的。在这种情况下,同一叶块中的索引条目不太可能指向同一数据块中的行 |
| STATUS | VARCHAR2(8) | 指示非分区索引是否为VALID或者UNUSABLE |
| NUM_ROWS | VARCHAR2(7) | 索引中的行数。 |
| SAMPLE_SIZE | VARCHAR2(7) | 用于分析指数的样本大小 |
| LAST_ANALYZED | VARCHAR2(20) | 最近分析此索引的日期 |
| DEGREE | VARCHAR2(40) | 每个实例用于扫描索引的线程数,或者DEFAULT |
| INSTANCES | VARCHAR2(40) | 要扫描索引的实例数,或者DEFAULT |
| PARTITIONED | VARCHAR2(3) | 指示索引是否已分区(YES)还是不(NO) |
| TEMPORARY | VARCHAR2(1) | 指示索引是否在临时表上(Y)还是不(N) |
| GENERATED | VARCHAR2(1) | 指示索引的名称是否是系统生成的(Y)还是不(N) |
| SECONDARY | VARCHAR2(1) | 指示该索引是否是由ODCIIndexCreateOracle数据盒式磁带的方法(Y)还是不(N) |
| BUFFER_POOL | VARCHAR2(7) | 用于索引块的缓冲池: |
| USER_STATS | VARCHAR2(3) | 指示统计信息是否由用户直接输入(YES)还是不(NO) |
| DURATION | VARCHAR2(15) | 指示临时表的持续时间 SYS$SESSION-在会话期间保留行 SYS$TRANSACTION-行在以下时间后被删除COMMIT |
| PCT_DIRECT_ACCESS | VARCHAR2(7) | 对于按索引组织的表上的辅助索引,包含以下内容的行的百分比VALID猜测 |
| ITYP_OWNER | VARCHAR2(63) | 对于域索引,索引类型的所有者 |
| ITYP_NAME | VARCHAR2(63) | 对于域索引,是索引类型的名称 |
| PARAMETERS | VARCHAR2(1000) | 对于域索引,参数字符串 |
| GLOBAL_STATS | VARCHAR2(3) | GLOBAL_STATS将会YES如果统计数据被收集或增量维护,则它将NO |
| DOMIDX_STATUS | VARCHAR2(12) | 域索引的状态,如下所示 空索引不是域索引 VALID- Index是有效的域索引 IDXTYP_INVLD-域索引的Indextype无效 |
| DOMIDX_OPSTATUS | VARCHAR2(6) | 域索引的操作状态,如下所示 空索引不是域索引 VALID-操作执行无误 FAILED-操作失败,出现错误 |
| FUNCIDX_STATUS | VARCHAR2(8) | 基于函数的索引的状态,如下所示 空索引不是基于函数的索引 ENABLED-启用基于函数的索引 DISABLED-基于函数的索引被禁用 |
| JOIN_INDEX | TEXT | 指示该索引是否是联接索引(YES)还是不(NO) |
| IOT_REDUNDANT_PKEY_ELIM | TEXT | 指示是否从按索引组织的表上的辅助索引中删除了冗余的主键列(YES)还是不(NO) |
| DROPPED | TEXT | 指示该索引是否已被删除并在回收站中(YES)还是不(NO);分区表为空。该视图不返回已被删除的索引的名称 |
dba_objects
dba_objects视图描述当前用户下可以查看的所有对象。
表 dba_objects的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 对象的拥有者 |
| OBJECT_NAME | VARCHAR2(63) | 对象名 |
| SUBOBJECT_NAME | VARCHAR2(63) | 子对象的名称 |
| OBJECT_ID | NUMERIC(38,0) | 对象的对象号 |
| DATA_OBJECT_ID | NUMERIC(38,0) | 包含该对象的段的字典对象号 |
| OBJECT_TYPE | VARCHAR2(19) | 对象类型 |
| CREATED | DATE | 对象创建的时间戳 |
| LAST_DDL_TIME | DATE | 对象和DDL语句产生的依赖对象的最后修改的时间戳(包括授予和撤销) |
| TIMESTAMP | VARCHAR2(20) | 对象规范的时间戳(字符数据) |
| STATUS | VARCHAR2(7) | 对象的状态 |
| TEMPORARY | VARCHAR2(1) | 对象是否是临时的 |
| GENERATED | VARCHAR2(1) | 是否生成此对象系统的名称 |
| SECONDARY | VARCHAR2(1) | 指示这是否是Oracle Data Cartridge的ODCIIndexCreate方法创建的辅助对象 |
| NAMESPACE | NUMERIC(38,0) | 命名空间 |
dba_queues
dba_queues视图提供任何当前已定义队列的相关信息。
表 dba_queues的列
| 名称 | 类型 | 描述 |
|---|---|---|
| owner | TCHARACTER VARYING | 队列所有者的用户名 |
| name | NAME | 队列的名称 |
| queue_table | NAME | 队列所在队列表的名称 |
| qid | OID | 队列的系统分配对象ID |
| queue_type | CHARACTER VARYING | 队列类型;当前仅NORMAL_QUEUE |
| max_retries | NUMERIC | 出队尝试的最大次数(仅兼容) |
| retrydelay | NUMERIC | 两次重试之间允许的最长时间(仅兼容) |
| enqueue_enabled | CHARACTER VARYING | 如果队列允许入队,则为 YES;如果队列不允许入队,则为 NO。 |
| dequeue_enabled | CHARACTER VARYING | 如果队列允许出队,则为 YES;如果队列不允许出队,则为 NO。 |
| retention | CHARACTER VARYING | 已处理的消息保留在队列中的秒数(仅兼容) |
| user_comment | CHARACTER VARYING | 用户指定的注释 |
| network_name | CHARACTER VARYING | (仅兼容) |
| sharded | CHARACTER VARYING | (仅兼容) |
dba_queue_tables
dba_queue_tables视图提供数据库中的所有队列表的相关信息。
表 dba_queue_tables的列
| 名称 | 类型 | 描述 |
|---|---|---|
| owner | CHARACTER VARYING | 队列表所有者的角色名 |
| queue_table | NAME | 队列表的用户指定名称 |
| type | CHARACTER VARYING | 队列表中存储的数据的类型 |
| object_type | TEXT | 用户定义的有效负载类型 |
| sort_order | CHARACTER VARYING | 队列表的排序顺序(仅兼容) |
| recipients | CHARACTER VARYING | (仅兼容) |
| message_grouping | CHARACTER VARYING | (仅兼容) |
| compatible | CHARACTER VARYING | (仅兼容) |
| primary_instance | NUMERIC | (仅兼容) |
| secondary_instance | NUMERIC | (仅兼容) |
| owner_instance | NUMERIC | (仅兼容) |
| user_comment | CHARACTER VARYING | 创建表时提供的用户注释 |
| secure | CHARACTER VARYING | (仅兼容) |
dba_role_privs
dba_role_privs视图描述授予所有用户的角色以及数据库中的角色。
表 dba_role_privs的列
| 名称 | 类型 | 描述 |
|---|---|---|
| GRANTEE | VARCHAR2(63) | 接收授权的用户或角色的名称 |
| GRANTED_ROLE | VARCHAR2(63) | 授予的角色名 |
| ADMIN_OPTION | VARCHAR2(3) | 指示授予是否带有管理选项(YES)或否(NO) |
| DEFAULT_ROLE | VARCHAR2(3) | 指示角色是否被指定为用户的默认角色(YES)或否(NO) |
dba_roles
dba_roles视图列出数据库中存在的所有角色。
表 dba_roles的列
| 名称 | 类型 | 描述 |
|---|---|---|
| ROLE | VARCHAR2(63) | 角色名称 |
| PASSWORD_REQUIRED | VARCHAR2(28) | 密码 |
dba_sequences
dba_sequences视图描述数据库中所有的序列。
表 dba_sequences的列
| 名称 | 类型 | 描述 |
|---|---|---|
| SEQUENCE_OWNER | VARCHAR2(63) | 序列的拥有者 |
| SEQUENCE_NAME | VARCHAR2(63) | 序列名 |
| MIN_VALUE | NUMERIC(38,0) | 序列的最小值 |
| MAX_VALUE | NUMERIC(38,0) | 序列的最大值 |
| INCREMENT_BY | NUMERIC(38,0) | 序列按该值递增 |
| CYCLE_FLAG | VARCHAR2(1) | 指示序列在达到极限(Y)时是否换行(N) |
| ORDER_FLAG | VARCHAR2(1) | 指示序列号是否按(Y)的顺序生成(N) |
| CACHE_SIZE | NUMERIC(38,0) | 要缓存的序列号的个数 |
| LAST_NUMERIC | NUMERIC(38,0) | 最后写入磁盘的序列号。如果序列使用缓存,则写入磁盘的数字是序列缓存中的最后一个数字。这个数字很可能大于所使用的最后一个序列号。对于会话序列,应忽略此列中的值 |
dba_source
dba_source视图描述数据库中所有存储对象的文本源。
表 dba_source的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 对象的拥有者 |
| NAME | VARCHAR2(63) | 对象名 |
| TYPE | VARCHAR2(12) | 对象类型:FUNCTION, JAVA SOURCE, PACKAGE, PACKAGE BODY, PROCEDURE, TRIGGER, TYPE, TYPE BODY |
| TEXT | VARCHAR2(4000) | 存储对象的文本源 |
dba_synonyms
dba_synonyms视图描述数据库中所有同义词的信息。
表 dba_synonyms的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 同义词的所有者 |
| SYNONYM_NAMESPACE_NAME | VARCHAR2(63) | 同义词的命名空间 |
| SYNONYM_NAME | VARCHAR2(63) | 同义词名 |
| TABLE_OWNER | VARCHAR2(63) | 由同义词引用的对象的所有者 |
| TABLE_NAMESPACE_NAME | VARCHAR2(63) | 表的命名空间 |
| TABLE_NAME | VARCHAR2(63) | 由同义词引用的对象的名称 |
| DBLINK | TEXT | 引用的数据库链接的名称(如果有的话) |
dba_tab_cols
dba_tab_cols视图描述当前所在数据库中,所有的表、视图的列信息。
表 dba_tab_cols的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 表、视图的拥有者 |
| TABLE_NAME | VARCHAR2(63) | 表、视图的名称 |
| COLUMN_NAME | VARCHAR2(63) | 列名 |
| DATA_TYPE | VARCHAR2(106) | 列的数据类型 |
| DATA_TYPE_MOD | VARCHAR2(3) | 列的数据类型修饰符 |
| DATA_TYPE_OWNER | VARCHAR2(63) | 列的数据类型的所有者 |
| DATA_LENGTH | NUMERIC | 列长度(以字节为单位) |
| DATA_PRECISION | NUMERIC | 数字数据类型的十进制精度;浮点型的二进制精度;所有其他数据类型为空 |
| DATA_SCALE | NUMERIC | 位数:数字中小数点右边的位数 |
| NULLABLE | VARCHAR2(1) | 指示列是否允许为空。如果列上存在非NULL约束或列是主键的一部分,则该值为N |
| COLUMN_ID | NUMERIC | 创建的列的序列号 |
| DEFAULT_LENGTH | NUMERIC | 列的默认值的长度 |
| DATA_DEFAULT | text | 列的默认值 |
| NUM_DISTINCT | NUMERIC | 列中不同值的数目 |
| LOW_VALUE | NUMERIC | 列中的低值 |
| HIGH_VALUE | NUMERIC | 列中的高值 |
| DENSITY | NUMERIC | 如果柱状图在COLUMN_NAME上可用,则此列显示在柱状图中跨越少于2个端点的值的选择性。它不表示跨越2个或多个端点的值的选择性。如果柱状图在COLUMN_NAME上不可用,则该列的值为1/NUM_DISTINCT |
| NUM_NULLS | NUMERIC | 列中空值的数目 |
| NUM_BUCKETS | NUMERIC | 列的直方图中的桶数。注意:直方图中的桶数是在ANALYZE SQL语句的SIZE参数中指定的。然而,Oracle数据库并没有创建一个比样本行数更多的桶的直方图。此外,如果样本中包含任何重复的值,Oracle数据库会创建指定数量的桶,但由于内部压缩算法的原因,这一列显示的值可能更小 |
| LAST_ANALYZED | TIMESTAMP(0) WITHOUT TIME ZONE | 这一栏最近分析的日期 |
| SAMPLE_SIZE | NUMERIC | 用于分析该列的样本量 |
| CHARACTER_SET_NAME | VARCHAR2(44) | 字符集名称:CHAR_CS/NCHAR_CS |
| CHAR_COL_DECL_LENGTH | NUMERIC | 字符类型列的声明长度 |
| GLOBAL_STATS | VARCHAR2(3) | 如果统计信息被收集或增量维护,GLOBAL_STATS将为YES,否则为NO |
| USER_STATS | VARCHAR2(3) | 指示统计信息是否由用户直接输入(YES)或(NO) |
| AVG_COL_LEN | NUMERIC | 列的平均长度(以字节计) |
| CHAR_LENGTH | NUMERIC | 以字符为单位显示列的长度。该值仅适用于以下数据类型。 CHAR VARCHAR2 NCHAR NVARCHAR2 |
| CHAR_USED | VARCHAR2(1) | 指示列使用BYTE长度语义(B)或CHAR长度语义(C),或者数据类型不是以下任何一种(NULL)。 CHAR VARCHAR2 NCHAR NVARCHAR2 |
| V80_FMT_IMAGE | VARCHAR2(3) | 指示列数据是否为8.0版本图像格式(YES)或否(NO) |
| DATA_UPGRADED | VARCHAR2(3) | 指示列数据是否已升级为最新类型版本格式(YES)或(NO) |
| HIDDEN_COLUMN | VARCHAR2(3) | 指示列是否是隐藏列(YES)或不是(NO) |
| VIRTUAL_COLUMN | VARCHAR2(3) | 指示列是否是虚拟列(YES)或不是(NO) |
| SEGMENT_COLUMN_ID | NUMERIC | 段中列的序列号 |
| INTERNAL_COLUMN_ID | NUMERIC | 列的内部序列号 |
| HISTOGRAM | VARCHAR2(15) | 表示直方图的存在/类型。取值如下所示。 NONE FREQUENCY TOP-FREQUENCY HEIGHT BALANCED HYBRID |
| QUALIFIED_COL_NAME | VARCHAR2(4000) | 限定的列名 |
dba_tab_columns
dba_tab_columns视图描述当前所在数据库中,所有的表、视图的非隐藏列信息。
表 dba_tab_columns的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 表的拥有者 |
| TABLE_NAME | VARCHAR2(63) | 表、视图的名称 |
| COLUMN_NAME | VARCHAR2(63) | 列名 |
| DATA_TYPE | VARCHAR2(106) | 列的数据类型 |
| DATA_TYPE_MOD | VARCHAR2(3) | 列的数据类型修饰符 |
| DATA_TYPE_OWNER | VARCHAR2(63) | 列的数据类型的所有者 |
| DATA_LENGTH | NUMERIC | 列长度(以字节为单位) |
| DATA_PRECISION | NUMERIC | 数字数据类型的十进制精度;浮点型的二进制精度;所有其他数据类型为空 |
| DATA_SCALE | NUMERIC | 位数:数字中小数点右边的位数 |
| NULLABLE | VARCHAR2(1) | 指示列是否允许为空。如果列上存在非NULL约束或列是主键的一部分,则该值为N |
| COLUMN_ID | NUMERIC | 创建的列的序列号 |
| DEFAULT_LENGTH | NUMERIC | 列的默认值的长度 |
| DATA_DEFAULT | TEXT | 列的默认值 |
| NUM_DISTINCT | NUMERIC | 列中不同值的数目 |
| LOW_VALUE | NUMERIC | 列中的低值 |
| HIGH_VALUE | NUMERIC | 列中的高值 |
| DENSITY | NUMERIC | 如果柱状图在COLUMN_NAME上可用,则此列显示在柱状图中跨越少于2个端点的值的选择性。它不表示跨越2个或多个端点的值的选择性。如果柱状图在COLUMN_NAME上不可用,则该列的值为1/NUM_DISTINCT |
| NUM_NULLS | NUMERIC | 列中空值的数目 |
| NUM_BUCKETS | NUMERIC | 列的直方图中的桶数。注意:直方图中的桶数是在ANALYZE SQL语句的SIZE参数中指定的。然而,Oracle数据库并没有创建一个比样本行数更多的桶的直方图。此外,如果样本中包含任何重复的值,Oracle数据库会创建指定数量的桶,但由于内部压缩算法的原因,这一列显示的值可能更小 |
| LAST_ANALYZED | TIMESTAMP(0) WITHOUT TIME ZONE | 这一栏最近分析的日期 |
| SAMPLE_SIZE | NUMERIC | 用于分析该列的样本量 |
| CHARACTER_SET_NAME | VARCHAR2(44) | 字符集名称:CHAR_CS/NCHAR_CS |
| CHAR_COL_DECL_LENGTH | NUMERIC | 字符类型列的声明长度 |
| GLOBAL_STATS | VARCHAR2(3) | 如果统计信息被收集或增量维护,GLOBAL_STATS将为YES,否则为NO |
| USER_STATS | VARCHAR2(3) | 指示统计信息是否由用户直接输入(YES)或(NO) |
| AVG_COL_LEN | NUMERIC | 列的平均长度(以字节计) |
| CHAR_LENGTH | NUMERIC | 以字符为单位显示列的长度。该值仅适用于以下数据类型。 CHAR VARCHAR2 NCHAR NVARCHAR2 |
| CHAR_USED | VARCHAR2(1) | 指示列使用BYTE长度语义(B)或CHAR长度语义(C),或者数据类型不是以下任何一种(NULL)。 CHAR VARCHAR2 NCHAR NVARCHAR2 |
| V80_FMT_IMAGE | VARCHAR2(3) | 指示列数据是否为8.0版本图像格式(YES)或否(NO) |
| DATA_UPGRADED | VARCHAR2(3) | 指示列数据是否已升级为最新类型版本格式(YES)或(NO) |
| HISTOGRAM | VARCHAR2(15) | 表示直方图的存在/类型。取值如下所示。 NONE FREQUENCY TOP-FREQUENCY HEIGHT BALANCED HYBRID |
dba_tab_comments
dba_tab_comments视图显示数据库中所有表和视图的注释。
表 dba_tab_comments的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 对象的拥有者 |
| TABLE_NAME | VARCHAR2(63) | 表名 |
| TABLE_TYPE | VARCHAR2(11) | 表类型 |
| COMMENTS | VARCHAR2(4000) | 注释 |
dba_tab_privs
dba_tab_privs视图描述数据库中的所有对象授予。
表 dba_tab_privs的列
| 名称 | 类型 | 描述 |
|---|---|---|
| GRANTEE | VARCHAR2(63) | 授予访问权的用户或角色的名称 |
| OWNER | VARCHAR2(63) | 对象的所有者 |
| TABLE_NAME | VARCHAR2(63) | 对象名称 |
| GRANTOR | VARCHAR2(63) | 执行授权的用户的名称 |
| PRIVILEGE | VARCHAR2(40) | 对象上的特权 |
| GRANTABLE | VARCHAR2(3) | 指示是否使用 GRANT OPTION (YES)或否(NO)授予特权 |
dba_tables
dba_tables视图描述数据库中的所有表。
表 dba_tables的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 表的拥有者 |
| TABLE_NAME | VARCHAR2(63) | 表的名称 |
| TABLESPACE_NAME | VARCHAR2(63) | 包含该表的表空间的名称;对于分区表、临时表和按索引组织的表,为NULL |
| CLUSTER_NAME | VARCHAR2(63) | 表所属的集群的名称(如果有) |
| IOT_NAME | VARCHAR2(63) | 溢出或映射表条目所属的按索引组织的表(如果有)的名称。如果IOT_TYPE列不为空,则此列包含基表名 |
| STATUS | VARCHAR2(63) | 如果以前的 DROP TABLE 操作失败,指示表是否不可用(UNUSABLE)或有效(VALID) |
| PCT_FREE | INTEGER | 块中可用空间的最小百分比;分区表为空 |
| PCT_USED | INTEGER | 块中已用空间的最小百分比;分区表为空 |
| INI_TRANS | INTEGER | 处理的初始数量;分区表为空 |
| MAX_TRANS | INTEGER | 最大处理数量;分区表为空 |
| INITIAL_EXTENT | INTEGER | 初始范围的大小(以字节为单位);分区表为空 |
| NEXT_EXTENT | INTEGER | 二级区段的大小(以字节为单位);NULL用于分区表 |
| MIN_EXTENTS | INTEGER | 段中允许的最小范围数;分区表为空 |
| MAX_EXTENTS | INTEGER | 段中允许的最大范围数;分区表为空 |
| PCT_INCREASE | INTEGER | 范围大小的增加百分比;分区表为空 |
| FREELISTS | INTEGER | 分配给该段的进程空闲列表数;分区表为空 |
| FREELIST_GROUPS | INTEGER | 分配给该段的空闲列表组的数量;分区表为空 |
| LOGGING | VARCHAR2(3) | 指示是否记录对表的更改;分区表为空;YES/NO |
| BACKED_UP | VARCHAR2(1) | 指示自最后一次修改(Y)以来是否备份了表(N) |
| NUM_ROWS | INTEGER | 表中的行数 |
| BLOCKS | INTEGER | 表中已使用数据块的个数 |
| EMPTY_BLOCKS | INTEGER | 表中空(从未使用过)数据块的数量。只有在使用DBMS_STATS包收集表上的统计信息时,才会填充此列 |
| AVG_SPACE | INTEGER | 分配给表的数据块中的平均可用空间量(以字节为单位) |
| CHAIN_CNT | INTEGER | 表中从一个数据块链接到另一个数据块或已迁移到新块的行数,需要一个链接来保存旧的ROWID |
| AVG_ROW_LEN | INTEGER | 表中一行的平均长度(以字节为单位) |
| AVG_SPACE_FREELIST_BLOCKS | INTEGER | 自由列表中所有块的平均空闲空间 |
| NUM_FREELIST_BLOCKS | INTEGER | 自由列表上的块数 |
| DEGREE | VARCHAR2(10) | 每个实例用于扫描表的线程数,或默认值 |
| INSTANCES | VARCHAR2(10) | 要扫描表的实例数,或默认值 |
| CACHE | VARCHAR2(5) | 指示是否将表缓存在缓冲区缓存(Y)中(N) |
| TABLE_LOCK | VARCHAR2(8) | 表锁定是启用(enabled)还是禁用(disabled) |
| SAMPLE_SIZE | INTEGER | 用于分析表格的样本量 |
| LAST_ANALYZED | DATE | 该表最近被分析的日期 |
| PARTITIONED | VARCHAR2(3) | 指示表是否分区(YES)或未分区(NO) |
| IOT_TYPE | VARCHAR2(12) | 如果表是索引组织的表,则IOT_TYPE为IOT、IOT_OVERFLOW或IOT_MAPPING。如果表不是索引组织的表,则IOT_TYPE为NULL |
| TEMPORARY | VARCHAR2(1) | 表是临时的(Y)还是非临时的(N) |
| SECONDARY | VARCHAR2(1) | 说明表是否为Oracle数据盒(Y)的ODCIIndexCreate方法创建的辅助对象(N) |
| NESTED | VARCHAR2(3) | 指示表是嵌套表(是)还是非嵌套表(否) |
| BUFFER_POOL | VARCHAR2(7) | 表的缓冲池;分区表为空 |
| ROW_MOVEMENT | VARCHAR2(8) | 指示分区行移动是启用(enabled)还是禁用(disabled) |
| GLOBAL_STATS | VARCHAR2(3) | 如果统计信息被收集或增量维护,GLOBAL_STATS将为YES,否则为NO |
| USER_STATS | VARCHAR2(3) | 表示统计数据是由用户直接输入的(YES)还是不是(NO) |
| DURATION | VARCHAR2(15) | 临时表的持续时间,取值如下所示。 SYS$SESSION - 行在会话期间保留 SYS$TRANSACTION - 行在提交后被删除 Null - 永久表 |
| SKIP_CORRUPT | VARCHAR2(8) | 指示Oracle数据库是否在表和索引扫描期间忽略标记为损坏的块(启用)或引发错误(禁用)。要启用此特性,请运行DBMS_REPAIR。SKIP_CORRUPT_BLOCKS过程 |
| MONITORING | VARCHAR2(3) | 死元组 |
| CLUSTER_OWNER | VARCHAR2(63) | 表所属集群的所有者(如果有的话) |
| DEPENDENCIES | VARCHAR2(8) | 指示行级依赖项跟踪是启用(启用)还是禁用(禁用) |
| COMPRESSION | VARCHAR2(8) | 表压缩是否启用(启用)或不启用(禁用);对于分区表,为NULL |
| DROPPED | VARCHAR2(3) | 指示表是否已被删除,是否在回收站(YES)或(NO);对于分区表,为NULL,此视图不返回已删除的表的名称 |
dba_tablespace
dba_tablespace视图描述数据库中的表空间。
表 dba_tablespace的列
| 名称 | 类型 | 描述 |
|---|---|---|
| TABLESPACE_NAME | VARCHAR2(63) | 命名空间名 |
| INITIAL_EXTENT | NUMERIC | 默认的初始区段大小(以字节为单位) |
| NEXT_EXTENT | NUMERIC | 默认的增量区段大小(以字节为单位) |
| MIN_EXTENTS | NUMERIC | 默认的最小区段数 |
| MAX_EXTENTS | NUMERIC | 默认的最大区段数 |
| PCT_INCREASE | NUMERIC | 区段大小的默认增加百分比 |
| MIN_EXTLEN | NUMERIC | 此表空间的最小区段大小(以字节为单位) |
| STATUS | VARCHAR2(9) | 状态,取值如下所示。 ONLINE OFFLINE READ ONLY |
| CONTENTS | VARCHAR2(9) | 内容:PERMANENT |
| LOGGING | VARCHAR2(9) | 默认日志属性 |
| EXTENT_MANAGEMENT | VARCHAR2(10) | 指示表空间中的区段是字典管理的(dictionary)还是本地管理的(LOCAL) |
| ALLOCATION_TYPE | VARCHAR2(9) | 表空间有效的区段分配类型 |
| PLUGGED_IN | VARCHAR2(3) | 指示表空间是否已插入(YES)或(NO) |
dba_tablespaces
dba_tablespaces视图描述数据库中的所有表空间。
表 dba_tablespaces的列
| 名称 | 类型 | 描述 |
|---|---|---|
| TABLESPACE_NAME | VARCHAR2(63) | 命名空间名 |
| INITIAL_EXTENT | NUMERIC | 默认的初始区段大小(以字节为单位) |
| NEXT_EXTENT | NUMERIC | 默认的增量区段大小(以字节为单位) |
| MIN_EXTENTS | NUMERIC | 默认的最小区段数 |
| MAX_EXTENTS | NUMERIC | 默认的最大区段数 |
| PCT_INCREASE | NUMERIC | 区段大小的默认增加百分比 |
| MIN_EXTLEN | NUMERIC | 此表空间的最小区段大小(以字节为单位) |
| STATUS | VARCHAR2(9) | 状态,取值如下所示。 ONLINE OFFLINE READ ONLY |
| CONTENTS | VARCHAR2(9) | 内容:PERMANENT |
| LOGGING | VARCHAR2(9) | 默认日志属性 |
| EXTENT_MANAGEMENT | VARCHAR2(10) | 指示表空间中的区段是字典管理的(dictionary)还是本地管理的(LOCAL) |
| ALLOCATION_TYPE | VARCHAR2(9) | 表空间有效的区段分配类型 |
| PLUGGED_IN | VARCHAR2(3) | 指示表空间是否已插入(YES)或(NO) |
dba_trigger_cols
dba_trigger_cols视图描述数据库中所有触发器的列。
表 dba_trigger_cols的列
| 名称 | 类型 | 描述 |
|---|---|---|
| TRIGGER_OWNER | VARCHAR2(63) | 触发器的拥有者 |
| TRIGGER_NAME | VARCHAR2(63) | 触发器名 |
| TABLE_OWNER | VARCHAR2(63) | 表的拥有者 |
| TABLE_NAME | VARCHAR2(63) | 表名 |
| COLUMN_NAME | VARCHAR2(4000) | 列名 |
dba_triggers
dba_triggers视图描述数据库中所有的触发器。
表 dba_triggers的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 对象的拥有者 |
| TRIGGER_NAME | VARCHAR2(63) | 触发器名 |
| TRIGGER_TYPE | VARCHAR2(16) | 触发器类型 |
| TRIGGERING_EVENT | VARCHAR2(216) | 触发触发器的DML、DDL或数据库事件 |
| TABLE_OWNER | VARCHAR2(63) | 表的拥有者 |
| TABLE_NAME | VARCHAR2(63) | 表名 |
| BASE_OBJECT_TYPE | VARCHAR2(16) | 定义触发器的基对象,取值如下所示 TABLE VIEW SCHEMA DATABASE |
| COLUMN_NAME | VARCHAR2(4000) | 列名 |
| REFERENCING_NAMES | VARCHAR2(422) | 用于从触发器中引用OLD和NEW列值的名称 |
| DESCRIPTION | VARCHAR2(4000) | 触发描述;用于重新创建触发器创建语句 |
| STATUS | VARCHAR2(8) | 指示触发器是启用(enabled)还是禁用(disabled);禁用的触发器不会触发 |
| TRIGGER_BODY | TEXT | 触发器触发时执行的语句 |
| WHEN_CLAUSE | TEXT | 触发器触发条件 |
| ACTION_TYPE | VARCHAR2(4) | 触发器体的动作类型(仅支持CALL) |
dba_users
dba_users视图描述数据库中所有用户的信息。
表 dba_users的列
| 名称 | 类型 | 描述 |
|---|---|---|
| USERNAME | VARCHAR2(63) | 用户名 |
| USER_ID | NUMERIC(38,0) | 用户id |
| PASSWORD | VARCHAR2(63) | 密码 |
| ACCOUNT_STATUS | VARCHAR2(32) | 状态,如下所示 OPEN EXPIRED |
| LOCK_DATE | DATE | 当用户状态为锁定时,用户被锁定的日期 |
| EXPIRY_DATE | DATE | 用户的到期日期 |
| DEFAULT_TABLESPACE | VARCHAR2(63) | 默认数据表空间 |
| TEMPORARY_TABLESPACE | VARCHAR2(63) | 临时表的默认表空间名称或表空间组名称 |
| CREATED | DATE | 用户创建的时间 |
| PROFILE | VARCHAR2(63) | 用户资源配置文件名称 |
| INITIAL_RSRC_CONSUMER_GROUP | VARCHAR2(63) | 用户的初始资源消费组 |
| EXTERNAL_NAME | VARCHAR2(4000) | 用户外部名称。对于集中管理的用户,如果数据库用户映射是一个独占映射,那么这将是用户的目录服务DN。如果这个数据库用户是一个共享模式,它将是一个组的DN |
| PASSWORD_VERSIONS | VARCHAR2(8) | 版本号 eg:2.1.1.5B |
| EDITIONS_ENABLED | VARCHAR2(1) | 指示是否为相应的用户(Y)启用了版本(N) |
dba_views
dba_views视图描述当前用户的所有视图的信息。
表 dba_views的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 视图的拥有者 |
| VIEW_NAME | VARCHAR2(63) | 视图名 |
| TEXT_LENGTH | NUMERIC | 视图文本的长度 |
| TEXT | TEXT | 查看文本。只有当行起源于当前容器时,此列才返回正确的值。在此视图中,BEQUEATH子句不会作为TEXT列的一部分出现 |
| TYPE_TEXT_LENGTH | NUMERIC | 视图的类型子句的长度 |
| TYPE_TEXT | VARCHAR2(4000) | 视图的类型子句 |
| OID_TEXT_LENGTH | NUMERIC | 视图的WITH OID子句的长度 |
| OID_TEXT | VARCHAR2(4000) | 视图的WITH OID子句 |
| VIEW_TYPE_OWNER | VARCHAR2(63) | 如果视图是类型化视图,则为视图类型的所有者 |
| VIEW_TYPE | VARCHAR2(63) | 如果视图是类型化视图,则为视图的类型 |
| SUPERVIEW_NAME | VARCHAR2(63) | 父视图的名称 |
| EDITIONING_VIEW | VARCHAR2(1) | 保留供将来使用 |
| READ_ONLY | VARCHAR2(1) | 指示视图是否只读(Y) (N) |
user_arguments
user_arguments视图描述当前用户拥有的过程和函数的参数。
表 user_arguments的列
| 名称 | 类型 | 描述 |
|---|---|---|
| PACKAGE_NAME | CHARACTER VARYING | 包的名称 |
| OBJECT_NAME | CHARACTER VARYING | 过程或函数的名称 |
| OBJECT_ID | OID | 对象的对象号 |
| POSITION | INTEGER | 此列保存该项在参数列表中的位置,0表示函数返回值 |
| ARGUMENT_NAME | CHARACTER VARYING | 参数名称,空参数名用于表示函数返回 |
| IN_OUT | CHARACTER VARYING | 入参/出参类型 IN OUT IN/OUT |
| TYPE_NAME | CHARACTER VARYING | 实参类型的名称。如果类型是包本地类型(也就是说,它在包规范中声明),则此列显示包的名称 |
| OVERLOAD | CHARACTER VARYING | 指示第n个重载(按其在源中的出现顺序);否则,它是NULL |
| SUBPROGRAM_ID | INTEGER | 唯一子程序标识符 |
| SEQUENCE | INTEGER | 定义参数的顺序。参数序列从1开始。首先是返回类型,然后是每个参数 |
| DATA_LEVEL | INTEGER | 复合类型实参的嵌套深度 |
| DATA_TYPE | CHARACTER VARYING | 参数的数据类型 |
| DEFAULTED | CHARACTER VARYING | 指定参数是否为默认值 |
| DEFAULT_VALUE | TEXT | 保留供将来使用 |
| DEFAULT_LENGTH | INTEGER | 保留供将来使用 |
| DATA_LENGTH | INTEGER | 列长度(以字节为单位) |
| DATA_PRECISION | INTEGER | 十进制数字(NUMBER)或二进制数字(FLOAT)的长度 |
| DATA_SCALE | INTEGER | 小数点右边的数字 |
| RADIX | INTEGER | 一个数字的基数参数 |
| CHARACTER_SET_NAME | CHARACTER VARYING | 参数的字符集名称 |
| TYPE_OWNER | CHARACTER VARYING | 参数类型的所有者 |
| TYPE_SUBNAME | CHARACTER VARYING | 只与包本地类型相关。显示在TYPE_NAME列标识的包中声明的类型的名称 |
| TYPE_LINK | CHARACTER VARYING | 当TYPE_NAME列中标识的包是远程包时,仅与包本地类型相关。此列显示用于引用远程包的数据库链接 |
| TYPE_OBJECT_TYPE | CHARACTER VARYING | 显示由TYPE_OWNER、TYPE_NAME和TYPE_SUBNAME列描述的类型的类型。取值如下所示。 TABLE VIEW PACKAGE TYPE |
| PLS_TYPE | CHARACTER VARYING | 对于数值形参,实参的PL/SQL类型的名称。否则无效 |
| CHAR_LENGTH | INTEGER | 字符串数据类型的字符限制 |
| CHAR_USED | CHARACTER VARYING | 指示字符串的字节限制(B)或字符限制(C)是否正式 |
| ORIGIN_CON_ID | INTEGER | 数据产生的容器的ID。可能的值包括: 0:该值用于非cdb中的行。此值不用于cdb n:该值用于包含起源于容器ID为n的容器的数据的行(如果该行起源于root,则n = 1) |
user_col_comments
user_col_comments视图在当前用户拥有的表和视图的列上注释。
表 user_col_comments的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 对象的拥有者 |
| TABLE_NAME | VARCHAR2(63) | 对象名 |
| COLUMN_NAME | VARCHAR2(63) | 列名 |
| COMMENTS | VARCHAR2(4000) | 描述 |
user_col_privs
user_col_privs视图描述当前用户下的列级权限表。
表 user_col_privs的列
| 名称 | 类型 | 描述 |
|---|---|---|
| GRANTOR | VARCHAR2(63) | 执行授权的用户的名称 |
| OWNER | VARCHAR2(63) | 对象的拥有者 |
| GRANTEE | VARCHAR2(63) | 授予访问权的用户或角色的名称 |
| TABLE_CATALOG | VARCHAR2(63) | 当前的数据库 |
| TABLE_SCHEMA | VARCHAR2(63) | 对象的模式 |
| TABLE_NAME | VARCHAR2(63) | 表名 |
| COLUMN_NAME | VARCHAR2(63) | 列名 |
| PRIVILEGE_TYPE | VARCHAR2(40) | 权限名称 |
| IS_GRANTABLE | VARCHAR2(3) | 允许访问 |
user_cons_columns
user_cons_columns视图描述当前用户拥有并在约束中指定的列。
表 user_cons_columns的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 兑现的拥有者 |
| CONSTRAINT_NAME | VARCHAR2(63) | 约束名 |
| TABLE_NAME | VARCHAR2(63) | 表名 |
| COLUMN_NAME | VARCHAR2(4000) | 列名 |
| POSITION | NUMERIC | 定义中列的原始位置 |
user_constraints
user_constraints视图描述当前用户所拥有的表的所有约束定义。
表 user_constraints的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 对象的拥有者 |
| CONSTRAINT_NAME | VARCHAR2(63) | 约束名 |
| CONSTRAINT_TYPE | VARCHAR2(1) | 约束定义的类型,取值如下所示 C -表上的检查约束 P -主键 U -唯一密钥 R -外键 T -受限触发器 X -排他性约束 |
| TABLE_NAME | VARCHAR2(63) | 表名 |
| SEARCH_CONDITION | text | 检查约束的搜索条件的文本。只有当行起源于当前容器时,此列才返回正确的值 |
| R_OWNER | VARCHAR2(63) | 引用约束中引用的表的所有者 |
| R_CONSTRAINT_NAME | VARCHAR2(63) | 引用表的唯一约束定义的名称 |
| DELETE_RULE | VARCHAR2(9) | 引用约束的删除规则如下所示。 RESTRICT CASCADE NULL SET NULL SET DEFAULT NO ACTION |
| STATUS | VARCHAR2(8) | 约束的实施状态如下所示。 ENABLED DISABLED |
| DEFERRABLE | VARCHAR2(14) | 指示约束是否可延迟(deferrable)或不可延迟(not deferrable) |
| DEFERRED | VARCHAR2(9) | 指示约束最初是否被延迟(deferred) (IMMEDIATE) |
| VALIDATED | VARCHAR2(13) | 当STATUS = ENABLED时,可能的值为: VALIDATED -所有数据都遵守约束(也就是说,当启用约束时,表中的现有数据以及输入到表中的任何后续数据都将得到验证) NOVALIDATED -所有数据都可能不遵守约束(也就是说,当启用约束时,表中现有的数据没有被验证,但是输入到表中的后续数据被验证) |
| GENERATED | VARCHAR2(14) | 指示约束的名称是用户生成(USER name)还是系统生成(GENERATED name) |
| BAD | VARCHAR2(3) | 指示此约束是否以模糊的方式指定世纪(BAD)或否(NULL)。为了避免这种模糊性导致的错误,可以使用带四位数年份的TO_DATE函数重写约束 |
| RELY | VARCHAR2(4) | 当VALIDATED = NOT VALIDATED时,此列表示查询重写(RELY)时是否考虑约束(NULL) |
| LAST_CHANGE | TIMESTAMP(0) WITHOUT TIME ZONE | 约束最后一次启用或禁用的时间 |
| INDEX_OWNER | VARCHAR2(63) | 拥有索引的用户名 |
| INDEX_NAME | VARCHAR2(63) | 索引的名称(仅在唯一和主键约束时显示) |
| INVALID | VARCHAR2(7) | 指示约束是否无效(invalid)或无效(NULL) |
| VIEW_RELATED | VARCHAR2(14) | 指示约束是否依赖于视图(DEPEND on view) (NULL) |
user_ind_columns
user_ind_columns视图描述数据库中所有建有索引的列的信息。
表 user_ind_columns的列
| 名称 | 类型 | 描述 |
|---|---|---|
| INDEX_NAME | VARCHAR2(63) | 索引名 |
| TABLE_OWNER | VARCHAR2(63) | 表的拥有者 |
| TABLE_NAME | VARCHAR2(63) | 表名 |
| COLUMN_NAME | VARCHAR2(4000) | 列名 |
| COLUMN_POSITION | SMALLINT | 索引中的列或属性的位置 |
| COLUMN_LENGTH | NUMERIC | 列的索引长度 |
| CHAR_LENGTH | NUMERIC | 列的最大码点长度 |
| DESCEND | VARCHAR2(4) | 列是否按降序排序(Y/N) |
user_indexes
user_indexes视图描述当前用户拥有的所有索引信息。
表 user_indexes的列
| 名称 | 类型 | 描述 |
|---|---|---|
| INDEX_NAME | VARCHAR2(63) | 索引名 |
| INDEX_TYPE | VARCHAR2(27) | 索引类型 |
| TABLE_OWNER | VARCHAR2(63) | 表的拥有者 |
| TABLE_NAME | VARCHAR2(63) | 表名 |
| TABLE_TYPE | TEXT | 表类型 |
| UNIQUENESS | VARCHAR2(9) | 索引的惟一状态 |
| COMPRESSION | VARCHAR2(8) | 用于索引的压缩类型 |
| PREFIX_LENGTH | NUMERIC | 压缩键前缀中的列数 |
| TABLESPACE_NAME | VARCHAR2(63) | 包含索引的表空间的名称 |
| INI_TRANS | VARCHAR2(7) | 初始交易数量 |
| MAX_TRANS | VARCHAR2(7) | 最大交易数量 |
| INITIAL_EXTENT | VARCHAR2(7) | 初始范围的大小 |
| NEXT_EXTENT | VARCHAR2(7) | 辅助扩展区的大小 |
| MIN_EXTENTS | VARCHAR2(7) | 段中允许的最小范围数 |
| MAX_EXTENTS | VARCHAR2(7) | 段中允许的最大范围数 |
| PCT_INCREASE | VARCHAR2(7) | 区大小增加的百分比 |
| PCT_THRESHOLD | VARCHAR2(7) | 每个索引条目允许的块空间百分比阈值 |
| INCLUDE_COLUMN | VARCHAR2(7) | 要包含在按索引组织的表主键(非溢出)索引中的最后一列的列ID |
| FREELISTS | VARCHAR2(7) | 分配给该段的进程空闲列表数 |
| FREELIST_GROUPS | VARCHAR2(7) | 分配给该段的空闲列表组的数量 |
| PCT_FREE | VARCHAR2(7) | 块中可用空间的最小百分比 |
| LOGGING | VARCHAR2(7) | 指示是否记录对索引的更改: |
| BLEVEL | VARCHAR2(7) | b *-树级别(从其根块到其叶块的索引深度)。深度0表示根块和叶块是相同的 |
| LEAF_BLOCKS | VARCHAR2(7) | 索引中的叶块数 |
| DISTINCT_KEYS | VARCHAR2(7) | 不同索引值的数量。对于强制执行的索引UNIQUE和PRIMARY KEY约束,该值与表中的行数相同(*_TABLES.NUM_ROWS) |
| AVG_LEAF_BLOCKS_PER_KEY | VARCHAR2(7) | 索引中每个不同值出现的叶块数的平均值,四舍五入为最接近的整数。对于强制执行的索引UNIQUE和PRIMARY KEY约束,该值始终为1 |
| AVG_DATA_BLOCKS_PER_KEY | VARCHAR2(7) | 表中由索引中的非重复值指向的平均数据块数,四舍五入为最接近的整数。此统计信息是包含索引列中包含给定值的行的数据块的平均数量 |
| CLUSTERING_FACTOR | VARCHAR2(7) | 根据索引值指示表中行的顺序。如果该值接近块数,则该表非常有序。在这种情况下,单个叶块中的索引条目倾向于指向相同数据块中的行;如果该值接近行数,则该表是随机排序的。在这种情况下,同一叶块中的索引条目不太可能指向同一数据块中的行 |
| STATUS | VARCHAR2(8) | 指示非分区索引是否为VALID或者UNUSABLE |
| NUM_ROWS | VARCHAR2(7) | 索引中的行数。 |
| SAMPLE_SIZE | VARCHAR2(7) | 用于分析指数的样本大小 |
| LAST_ANALYZED | VARCHAR2(20) | 最近分析此索引的日期 |
| DEGREE | VARCHAR2(40) | 每个实例用于扫描索引的线程数,或者DEFAULT |
| INSTANCES | VARCHAR2(40) | 要扫描索引的实例数,或者DEFAULT |
| PARTITIONED | VARCHAR2(3) | 指示索引是否已分区(YES)还是不(NO) |
| TEMPORARY | VARCHAR2(1) | 指示索引是否在临时表上(Y)还是不(N) |
| GENERATED | VARCHAR2(1) | 指示索引的名称是否是系统生成的(Y)还是不(N) |
| SECONDARY | VARCHAR2(1) | 指示该索引是否是由ODCIIndexCreateOracle数据盒式磁带的方法(Y)还是不(N) |
| BUFFER_POOL | VARCHAR2(7) | 用于索引块的缓冲池: |
| USER_STATS | VARCHAR2(3) | 指示统计信息是否由用户直接输入(YES)还是不(NO) |
| DURATION | VARCHAR2(15) | 指示临时表的持续时间: SYS$SESSION-在会话期间保留行 SYS$TRANSACTION-行在以下时间后被删除COMMIT |
| PCT_DIRECT_ACCESS | VARCHAR2(7) | 对于索引组织表上的辅助索引,使用 VALID 猜测的行的百分比 |
| ITYP_OWNER | VARCHAR2(63) | 对于域索引,索引类型的所有者 |
| ITYP_NAME | VARCHAR2(63) | 对于域索引,是索引类型的名称 |
| PARAMETERS | VARCHAR2(1000) | 对于域索引,参数字符串 |
| GLOBAL_STATS | VARCHAR2(3) | 如果收集或增量维护统计信息,则GLOBAL_STATS将为YES,否则将为NO |
| DOMIDX_STATUS | VARCHAR2(12) | 域索引的状态: 空索引不是域索引 VALID- Index是有效的域索引 IDXTYP_INVLD-域索引的Indextype无效 |
| DOMIDX_OPSTATUS | VARCHAR2(6) | 域索引的操作状态: 空索引不是域索引 VALID-操作执行无误 FAILED-操作失败,出现错误 |
| FUNCIDX_STATUS | VARCHAR2(8) | 基于函数的索引的状态: 空索引不是基于函数的索引 ENABLED-启用基于函数的索引 DISABLED-基于函数的索引被禁用 |
| JOIN_INDEX | TEXT | 指示该索引是否是联接索引(YES)还是不(NO) |
| IOT_REDUNDANT_PKEY_ELIM | TEXT | 指示是否从按索引组织的表上的辅助索引中删除了冗余的主键列(YES)还是不(NO) |
| DROPPED | TEXT | 指示该索引是否已被删除并在回收站中(YES)还是不(NO);分区表为空。该视图不返回已被删除的索引的名称 |
user_objects
user_objects视图描述当前用户拥有的所有对象。
表 user_objects的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OBJECT_NAME | VARCHAR2(63) | 对象名 |
| SUBOBJECT_NAME | VARCHAR2(63) | 子对象的名称 |
| OBJECT_ID | NUMERIC(38,0) | 对象的对象号 |
| DATA_OBJECT_ID | NUMERIC(38,0) | 包含该对象的段的字典对象号 |
| OBJECT_TYPE | VARCHAR2(19) | 对象类型 |
| CREATED | DATE | 对象创建的时间戳 |
| LAST_DDL_TIME | DATE | 对象和DDL语句产生的依赖对象的最后修改的时间戳(包括授予和撤销) |
| TIMESTAMP | VARCHAR2(20) | 对象规范的时间戳(字符数据) |
| STATUS | VARCHAR2(7) | 对象的状态 |
| TEMPORARY | VARCHAR2(1) | 对象是否是临时的 |
| GENERATED | VARCHAR2(1) | 是否生成此对象系统的名称 |
| SECONDARY | VARCHAR2(1) | 指示这是否是Oracle Data Cartridge的ODCIIndexCreate方法创建的辅助对象 |
| NAMESPACE | NUMERIC(38,0) | 命名空间 |
user_queues
user_queues视图提供当前用户拥有使用特权的任何队列的信息。
表 user_queues的列
| 名称 | 类型 | 描述 |
|---|---|---|
| name | NAME | 队列的名称 |
| queue_table | NAME | 队列所在队列表的名称 |
| qid | OID | 队列的系统分配对象ID |
| queue_type | CHARACTER VARYING | 队列类型;当前仅NORMAL_QUEUE |
| max_retries | INT | 出队尝试的最大次数(仅兼容) |
| retrydelay | DOUBLE PRECISION | 两次重试之间允许的最长时间(仅兼容) |
| enqueue_enabled | CHARACTER VARYING | 如果队列允许入队,则为YES;如果队列不允许入队,则为 NO。 |
| dequeue_enabled | CHARACTER VARYING | 如果队列允许出队,则为YES;如果队列不允许出队,则为 NO。 |
| retention | CHARACTER VARYING | 已处理的消息保留在队列中的秒数(仅兼容) |
| user_comment | CHARACTER VARYING | 用户指定的注释 |
| network_name | CHARACTER VARYING | (仅兼容) |
| sharded | CHARACTER VARYING | (仅兼容) |
user_queue_tables
user_queue_tables视图提供当前用户可访问的所有队列表的信息。
表 user_queue_tables的列
| 名称 | 类型 | 描述 |
|---|---|---|
| queue_table | NAME | 队列表的用户指定名称 |
| type | type CHARACTER VARYING | 队列表中存储的数据的类型 |
| object_type | TEXT | 用户定义的有效负载类型 |
| sort_order | CHARACTER VARYING | 队列表的排序顺序(仅兼容) |
| recipients | CHARACTER VARYING | (仅兼容) |
| message_grouping | CHARACTER VARYING | (仅兼容) |
| compatible | CHARACTER VARYING | (仅兼容) |
| primary_instance | NUMERIC | (仅兼容) |
| secondary_instance | NUMERIC | (仅兼容) |
| owner_instance | NUMERIC | (仅兼容) |
| user_comment | CHARACTER VARYING | 创建表时提供的用户注释 |
| secure | CHARACTER VARYING | (仅兼容) |
user_role_privs
user_role_privs视图描述了授予当前用户的角色。
表 user_role_privs的列
| 名称 | 类型 | 描述 |
|---|---|---|
| USERNAME | VARCHAR2(63) | 接收授权的用户或角色的名称 |
| GRANTED_ROLE | VARCHAR2(63) | 授予的角色名 |
| ADMIN_OPTION | VARCHAR2(3) | 指示授予是否带有管理选项(YES)或否(NO) |
| DEFAULT_ROLE | VARCHAR2(3) | 指示角色是否被指定为用户的默认角色(YES)或否(NO) |
user_sequences
user_sequences视图描述当前用户的所有序列的信息。
表 user_sequences的列
| 名称 | 类型 | 描述 |
|---|---|---|
| SEQUENCE_OWNER | VARCHAR2(63) | 序列的拥有者 |
| SEQUENCE_NAME | VARCHAR2(63) | 序列名 |
| MIN_VALUE | NUMERIC(38,0) | 序列的最小值 |
| MAX_VALUE | NUMERIC(38,0) | 序列的最大值 |
| INCREMENT_BY | NUMERIC(38,0) | 序列按该值递增 |
| CYCLE_FLAG | TEXT | 指示序列在达到极限(Y)时是否换行(N) |
| ORDER_FLAG | VARCHAR2(1) | 指示序列号是否按(Y)的顺序生成(N) |
| CACHE_SIZE | NUMERIC(38,0) | 要缓存的序列号的个数 |
| LAST_NUMERIC | NUMERIC(38,0) | 最后写入磁盘的序列号。如果序列使用缓存,则写入磁盘的数字是序列缓存中的最后一个数字。这个数字很可能大于所使用的最后一个序列号。对于会话序列,应忽略此列中的值 |
user_source
user_source视图描述当前用户的所有程序源的信息。
表 user_source的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 对象的拥有者 |
| NAME | VARCHAR2(63) | 对象名 |
| TYPE | VARCHAR2(12) | 对象类型:FUNCTION, JAVA SOURCE, PACKAGE, PACKAGE BODY, PROCEDURE, TRIGGER, TYPE, TYPE BODY |
| TEXT | VARCHAR2(4000) | 存储对象的文本源 |
user_synonyms
user_synonyms视图描述数据库中用户所有同义词的信息。
表 user_synonyms的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 同义词的所有者 |
| SYNONYM_NAMESPACE_NAME | VARCHAR2(63) | 同义词的命名空间 |
| SYNONYM_NAME | VARCHAR2(63) | 同义词名 |
| TABLE_OWNER | VARCHAR2(63) | 由同义词引用的对象的所有者 |
| TABLE_NAMESPACE_NAME | VARCHAR2(63) | 表的命名空间 |
| TABLE_NAME | VARCHAR2(63) | 由同义词引用的对象的名称 |
| DBLINK | TEXT | 引用的数据库链接的名称(如果有的话) |
user_tab_cols
user_tab_cols视图描述当前用户可以访问的表,视图的列。
表 user_tab_cols的列
| 名称 | 类型 | 描述 |
|---|---|---|
| TABLE_NAME | VARCHAR2(63) | 表、视图的名称 |
| COLUMN_NAME | VARCHAR2(63) | 列名 |
| DATA_TYPE | VARCHAR2(106) | 列的数据类型 |
| DATA_TYPE_MOD | VARCHAR2(3) | 列的数据类型修饰符 |
| DATA_TYPE_OWNER | VARCHAR2(63) | 列的数据类型的所有者 |
| DATA_LENGTH | NUMERIC | 列长度(以字节为单位) |
| DATA_PRECISION | NUMERIC | 数字数据类型的十进制精度;浮点型的二进制精度;所有其他数据类型为空 |
| DATA_SCALE | NUMERIC | 位数:数字中小数点右边的位数 |
| NULLABLE | VARCHAR2(1) | 指示列是否允许为空。如果列上存在非NULL约束或列是主键的一部分,则该值为N |
| COLUMN_ID | NUMERIC | 创建的列的序列号 |
| DEFAULT_LENGTH | NUMERIC | 列的默认值的长度 |
| DATA_DEFAULT | TEXT | 列的默认值 |
| NUM_DISTINCT | NUMERIC | 列中不同值的数目 |
| LOW_VALUE | NUMERIC | 列中的低值 |
| HIGH_VALUE | NUMERIC | 列中的高值 |
| DENSITY | NUMERIC | 如果柱状图在COLUMN_NAME上可用,则此列显示在柱状图中跨越少于2个端点的值的选择性。它不表示跨越2个或多个端点的值的选择性。如果柱状图在COLUMN_NAME上不可用,则该列的值为1/NUM_DISTINCT |
| NUM_NULLS | NUMERIC | 列中空值的数目 |
| NUM_BUCKETS | NUMERIC | 列的直方图中的桶数。注意:直方图中的桶数是在ANALYZE SQL语句的SIZE参数中指定的。然而,Oracle数据库并没有创建一个比样本行数更多的桶的直方图。此外,如果样本中包含任何重复的值,Oracle数据库会创建指定数量的桶,但由于内部压缩算法的原因,这一列显示的值可能更小 |
| LAST_ANALYZED | TIMESTAMP(0) WITHOUT TIME ZONE | 这一栏最近分析的日期 |
| SAMPLE_SIZE | NUMERIC | 用于分析该列的样本量 |
| CHARACTER_SET_NAME | VARCHAR2(44) | 字符集名称:CHAR_CS/NCHAR_CS |
| CHAR_COL_DECL_LENGTH | NUMERIC | 字符类型列的声明长度 |
| GLOBAL_STATS | VARCHAR2(3) | 如果统计信息被收集或增量维护,GLOBAL_STATS将为YES,否则为NO |
| USER_STATS | VARCHAR2(3) | 指示统计信息是否由用户直接输入(YES)或(NO) |
| AVG_COL_LEN | NUMERIC | 列的平均长度(以字节计) |
| CHAR_LENGTH | NUMERIC | 以字符为单位显示列的长度。该值仅适用于以下数据类型。 CHAR VARCHAR2 NCHAR NVARCHAR2 |
| CHAR_USED | VARCHAR2(1) | 指示列使用BYTE长度语义(B)或CHAR长度语义(C),或者数据类型不是以下任何一种(NULL)。 CHAR VARCHAR2 NCHAR NVARCHAR2 |
| V80_FMT_IMAGE | VARCHAR2(3) | 指示列数据是否为8.0版本图像格式(YES)或否(NO) |
| DATA_UPGRADED | VARCHAR2(3) | 指示列数据是否已升级为最新类型版本格式(YES)或(NO) |
| HIDDEN_COLUMN | VARCHAR2(3) | 指示列是否是隐藏列(YES)或不是(NO) |
| VIRTUAL_COLUMN | VARCHAR2(3) | 指示列是否是虚拟列(YES)或不是(NO) |
| SEGMENT_COLUMN_ID | NUMERIC | 段中列的序列号 |
| INTERNAL_COLUMN_ID | NUMERIC | 列的内部序列号 |
| HISTOGRAM | VARCHAR2(15) | 表示直方图的存在/类型。取值如下所示 NONE FREQUENCY TOP-FREQUENCY HEIGHT BALANCED HYBRID |
| QUALIFIED_COL_NAME | VARCHAR2(4000) | 限定的列名 |
user_tab_columns
user_tab_columns视图描述数据库中所有表列的信息。
表 user_tab_columns的列
| 名称 | 类型 | 描述 |
|---|---|---|
| TABLE_NAME | VARCHAR2(63) | 表、视图的名称 |
| COLUMN_NAME | VARCHAR2(63) | 列名 |
| DATA_TYPE | VARCHAR2(106) | 列的数据类型 |
| DATA_TYPE_MOD | VARCHAR2(3) | 列的数据类型修饰符 |
| DATA_TYPE_OWNER | VARCHAR2(63) | 列的数据类型的所有者 |
| DATA_LENGTH | NUMERIC | 列长度(以字节为单位) |
| DATA_PRECISION | NUMERIC | 数字数据类型的十进制精度;浮点型的二进制精度;所有其他数据类型为空 |
| DATA_SCALE | NUMERIC | 位数:数字中小数点右边的位数 |
| NULLABLE | VARCHAR2(1) | 指示列是否允许为空。如果列上存在非NULL约束或列是主键的一部分,则该值为N |
| COLUMN_ID | NUMERIC | 创建的列的序列号 |
| DEFAULT_LENGTH | NUMERIC | 列的默认值的长度 |
| DATA_DEFAULT | TEXT | 列的默认值 |
| NUM_DISTINCT | NUMERIC | 列中不同值的数目 |
| LOW_VALUE | NUMERIC | 列中的低值 |
| HIGH_VALUE | NUMERIC | 列中的高值 |
| DENSITY | NUMERIC | 如果柱状图在COLUMN_NAME上可用,则此列显示在柱状图中跨越少于2个端点的值的选择性。它不表示跨越2个或多个端点的值的选择性。如果柱状图在COLUMN_NAME上不可用,则该列的值为1/NUM_DISTINCT |
| NUM_NULLS | NUMERIC | 列中空值的数目 |
| NUM_BUCKETS | NUMERIC | 列的直方图中的桶数。注意:直方图中的桶数是在ANALYZE SQL语句的SIZE参数中指定的。然而,Oracle数据库并没有创建一个比样本行数更多的桶的直方图。此外,如果样本中包含任何重复的值,Oracle数据库会创建指定数量的桶,但由于内部压缩算法的原因,这一列显示的值可能更小 |
| LAST_ANALYZED | TIMESTAMP(0) WITHOUT TIME ZONE | 这一栏最近分析的日期 |
| SAMPLE_SIZE | NUMERIC | 用于分析该列的样本量 |
| CHARACTER_SET_NAME | VARCHAR2(44) | 字符集名称:CHAR_CS/NCHAR_CS |
| CHAR_COL_DECL_LENGTH | NUMERIC | 字符类型列的声明长度 |
| GLOBAL_STATS | VARCHAR2(3) | 如果统计信息被收集或增量维护,GLOBAL_STATS将为YES,否则为NO |
| USER_STATS | VARCHAR2(3) | 指示统计信息是否由用户直接输入(YES)或(NO) |
| AVG_COL_LEN | NUMERIC | 列的平均长度(以字节计) |
| CHAR_LENGTH | NUMERIC | 以字符为单位显示列的长度。该值仅适用于以下数据类型。 CHAR VARCHAR2 NCHAR NVARCHAR2 |
| CHAR_USED | VARCHAR2(1) | 指示列使用BYTE长度语义(B)或CHAR长度语义(C),或者数据类型不是以下任何一种(NULL)。 CHAR VARCHAR2 NCHAR NVARCHAR2 |
| V80_FMT_IMAGE | VARCHAR2(3) | 指示列数据是否为8.0版本图像格式(YES)或否(NO) |
| DATA_UPGRADED | VARCHAR2(3) | 指示列数据是否已升级为最新类型版本格式(YES)或(NO) |
| HISTOGRAM | VARCHAR2(15) | 表示直方图的存在/类型。取值如下所示。 NONE FREQUENCY TOP-FREQUENCY HEIGHT BALANCED HYBRID |
user_tab_comments
user_tab_comments视图描述当前用户拥有的表和视图上的注释。
表 user_tab_comments的列
| 名称 | 类型 | 描述 |
|---|---|---|
| OWNER | VARCHAR2(63) | 对象的拥有者 |
| TABLE_NAME | VARCHAR2(63) | 表名 |
| TABLE_TYPE | VARCHAR2(11) | 表类型 |
| COMMENTS | VARCHAR2(4000) | 注释 |
user_tab_privs
user_tab_privs视图描述当前用户的对象权限,该用户可以是对象的所有者、授予者或者被授予者。
表 user_tab_privs的列
| 名称 | 类型 | 描述 |
|---|---|---|
| GRANTEE | VARCHAR2(63) | 授予访问权的用户或角色的名称 |
| OWNER | VARCHAR2(63) | 对象的所有者 |
| TABLE_NAME | VARCHAR2(63) | 对象名称 |
| GRANTOR | VARCHAR2(63) | 执行授权的用户的名称 |
| PRIVILEGE | VARCHAR2(40) | 对象上的特权 |
| GRANTABLE | VARCHAR2(3) | 指示是否使用 GRANT OPTION (YES)或否(NO)授予特权 |
user_tables
user_tables视图描述当前用户的所有表的信息。
表 user_tables的列
| 名称 | 类型 | 描述 |
|---|---|---|
| TABLE_NAME | VARCHAR2(63) | 表的名称 |
| TABLESPACE_NAME | VARCHAR2(63) | 包含该表的表空间的名称;对于分区表、临时表和按索引组织的表,为NULL |
| CLUSTER_NAME | VARCHAR2(63) | 表所属的集群的名称(如果有) |
| IOT_NAME | VARCHAR2(63) | 溢出或映射表条目所属的按索引组织的表(如果有)的名称。如果IOT_TYPE列不为空,则此列包含基表名 |
| STATUS | VARCHAR2(63) | 如果以前的DROP TABLE操作失败,指示表是否不可用(UNUSABLE)或有效(VALID) |
| PCT_FREE | INTEGER | 块中可用空间的最小百分比;分区表为空 |
| PCT_USED | INTEGER | 块中已用空间的最小百分比;分区表为空 |
| INI_TRANS | INTEGER | 处理的初始数量;分区表为空 |
| MAX_TRANS | INTEGER | 最大处理数量;分区表为空 |
| INITIAL_EXTENT | INTEGER | 初始范围的大小(以字节为单位);分区表为空 |
| NEXT_EXTENT | INTEGER | 二级区段的大小(以字节为单位);NULL用于分区表 |
| MIN_EXTENTS | INTEGER | 段中允许的最小范围数;分区表为空 |
| MAX_EXTENTS | INTEGER | 段中允许的最大范围数;分区表为空 |
| PCT_INCREASE | INTEGER | 范围大小的增加百分比;分区表为空 |
| FREELISTS | INTEGER | 分配给该段的进程空闲列表数;分区表为空 |
| FREELIST_GROUPS | INTEGER | 分配给该段的空闲列表组的数量;分区表为空 |
| LOGGING | VARCHAR2(3) | 指示是否记录对表的更改;分区表为空;YES/NO |
| BACKED_UP | VARCHAR2(1) | 指示自最后一次修改(Y)以来是否备份了表(N) |
| NUM_ROWS | INTEGER | 表中的行数 |
| BLOCKS | INTEGER | 表中已使用数据块的个数 |
| EMPTY_BLOCKS | INTEGER | 表中空(从未使用过)数据块的数量。只有在使用DBMS_STATS包收集表上的统计信息时,才会填充此列 |
| AVG_SPACE | INTEGER | 分配给表的数据块中的平均可用空间量(以字节为单位) |
| CHAIN_CNT | INTEGER | 表中从一个数据块链接到另一个数据块或已迁移到新块的行数,需要一个链接来保存旧的ROWID |
| AVG_ROW_LEN | INTEGER | 表中一行的平均长度(以字节为单位) |
| AVG_SPACE_FREELIST_BLOCKS | INTEGER | 自由列表中所有块的平均空闲空间 |
| NUM_FREELIST_BLOCKS | INTEGER | 自由列表上的块数 |
| DEGREE | VARCHAR2(10) | 每个实例用于扫描表的线程数,或默认值 |
| INSTANCES | VARCHAR2(10) | 要扫描表的实例数,或默认值 |
| CACHE | VARCHAR2(5) | 指示是否将表缓存在缓冲区缓存(Y)中(N) |
| TABLE_LOCK | VARCHAR2(8) | 表锁定是启用(enabled)还是禁用(disabled) |
| SAMPLE_SIZE | INTEGER | 用于分析表格的样本量 |
| LAST_ANALYZED | DATE | 该表最近被分析的日期 |
| PARTITIONED | VARCHAR2(3) | 指示表是否分区(YES)或未分区(NO) |
| IOT_TYPE | VARCHAR2(12) | 如果表是索引组织的表,则IOT_TYPE为IOT、IOT_OVERFLOW或IOT_MAPPING。如果表不是索引组织的表,则IOT_TYPE为NULL |
| TEMPORARY | VARCHAR2(1) | 表是临时的(Y)还是非临时的(N) |
| SECONDARY | VARCHAR2(1) | 说明表是否为Oracle数据盒(Y)的ODCIIndexCreate方法创建的辅助对象(N) |
| NESTED | VARCHAR2(3) | 指示表是嵌套表(是)还是非嵌套表(否) |
| BUFFER_POOL | VARCHAR2(7) | 表的缓冲池;分区表为空 |
| ROW_MOVEMENT | VARCHAR2(8) | 指示分区行移动是启用(enabled)还是禁用(disabled) |
| GLOBAL_STATS | VARCHAR2(3) | 如果统计信息被收集或增量维护,GLOBAL_STATS将为YES,否则为NO |
| USER_STATS | VARCHAR2(3) | 表示统计数据是由用户直接输入的(YES)还是不是(NO) |
| DURATION | VARCHAR2(15) | 临时表的持续时间,取值如下所示。 SYS$SESSION - 行在会话期间保留 SYS$TRANSACTION - 行在提交后被删除 Null - 永久表 |
| SKIP_CORRUPT | VARCHAR2(8) | 指示Oracle数据库是否在表和索引扫描期间忽略标记为损坏的块(启用)或引发错误(禁用)。要启用此特性,请运行DBMS_REPAIR。SKIP_CORRUPT_BLOCKS过程 |
| MONITORING | VARCHAR2(3) | 死元组 |
| CLUSTER_OWNER | VARCHAR2(63) | 表所属集群的所有者(如果有的话) |
| DEPENDENCIES | VARCHAR2(8) | 指示行级依赖项跟踪是启用(启用)还是禁用(禁用) |
| COMPRESSION | VARCHAR2(8) | 表压缩是否启用(启用)或不启用(禁用);对于分区表,为NULL |
| DROPPED | VARCHAR2(3) | 指示表是否已被删除,是否在回收站(YES)或(NO);对于分区表,为NULL,此视图不返回已删除的表的名称 |
user_tablespace
user_tablespace视图描述当前用户可访问的表空间。
表 user_tablespace的列
| 名称 | 类型 | 描述 |
|---|---|---|
| TABLESPACE_NAME | VARCHAR2(63) | 命名空间名 |
| INITIAL_EXTENT | NUMERIC | 默认的初始区段大小(以字节为单位) |
| NEXT_EXTENT | NUMERIC | 默认的增量区段大小(以字节为单位) |
| MIN_EXTENTS | NUMERIC | 默认的最小区段数 |
| MAX_EXTENTS | NUMERIC | 默认的最大区段数 |
| PCT_INCREASE | NUMERIC | 区段大小的默认增加百分比 |
| MIN_EXTLEN | NUMERIC | 此表空间的最小区段大小(以字节为单位) |
| STATUS | VARCHAR2(9) | 状态,取值如下所示。 ONLINE OFFLINE READ ONLY |
| CONTENTS | VARCHAR2(9) | 内容:PERMANENT |
| LOGGING | VARCHAR2(9) | 默认日志属性 |
| EXTENT_MANAGEMENT | VARCHAR2(10) | 指示表空间中的区段是字典管理的(dictionary)还是本地管理的(LOCAL) |
| ALLOCATION_TYPE | VARCHAR2(9) | 表空间有效的区段分配类型 |
user_tablespaces
user_tablespaces视图描述当前用户可访问的表空间。
表 user_tablespaces的列
| 名称 | 类型 | 描述 |
|---|---|---|
| TABLESPACE_NAME | VARCHAR2(63) | 命名空间名 |
| INITIAL_EXTENT | NUMERIC | 默认的初始区段大小(以字节为单位) |
| NEXT_EXTENT | NUMERIC | 默认的增量区段大小(以字节为单位) |
| MIN_EXTENTS | NUMERIC | 默认的最小区段数 |
| MAX_EXTENTS | NUMERIC | 默认的最大区段数 |
| PCT_INCREASE | NUMERIC | 区段大小的默认增加百分比 |
| MIN_EXTLEN | NUMERIC | 此表空间的最小区段大小(以字节为单位) |
| STATUS | VARCHAR2(9) | 状态,取值如下所示。 ONLINE OFFLINE READ ONLY |
| CONTENTS | VARCHAR2(9) | 内容:PERMANENT |
| LOGGING | VARCHAR2(9) | 默认日志属性 |
| EXTENT_MANAGEMENT | VARCHAR2(10) | 指示表空间中的区段是字典管理的(dictionary)还是本地管理的(LOCAL) |
| ALLOCATION_TYPE | VARCHAR2(9) | 表空间有效的区段分配类型 |
user_trigger_cols
user_trigger_cols视图描述当前用户用的所有触发器的列信息。
表 user_trigger_cols的列
| 名称 | 类型 | 描述 |
|---|---|---|
| TRIGGER_OWNER | VARCHAR2(63) | 触发器的拥有者 |
| TRIGGER_NAME | VARCHAR2(63) | 触发器名 |
| TABLE_OWNER | VARCHAR2(63) | 表的拥有者 |
| TABLE_NAME | VARCHAR2(63) | 表名 |
| COLUMN_NAME | VARCHAR2(4000) | 列名 |
user_triggers
user_triggers视图描述当前用户的所有触发器的信息。
表 user_triggers的列
| 名称 | 类型 | 描述 |
|---|---|---|
| TRIGGER_NAME | VARCHAR2(63) | 触发器名 |
| TRIGGER_TYPE | VARCHAR2(16) | 触发器类型 |
| TRIGGERING_EVENT | VARCHAR2(216) | 触发触发器的DML、DDL或数据库事件 |
| TABLE_OWNER | VARCHAR2(63) | 表的拥有者 |
| TABLE_NAME | VARCHAR2(63) | 表名 |
| BASE_OBJECT_TYPE | VARCHAR2(16) | 定义触发器的基对象,取值如下所示 TABLE VIEW SCHEMA DATABASE |
| COLUMN_NAME | VARCHAR2(4000) | 列名 |
| REFERENCING_NAMES | VARCHAR2(422) | 用于从触发器中引用OLD和NEW列值的名称 |
| DESCRIPTION | VARCHAR2(4000) | 触发描述;用于重新创建触发器创建语句 |
| STATUS | VARCHAR2(8) | 指示触发器是启用(enabled)还是禁用(disabled);禁用的触发器不会触发 |
| TRIGGER_BODY | TEXT | 触发器触发时执行的语句 |
| WHEN_CLAUSE | TEXT | 触发器触发条件 |
| ACTION_TYPE | VARCHAR2(4) | 触发器体的动作类型(仅支持CALL) |
user_users
user_users视图描述当前用户。
表 user_users的列
| 名称 | 类型 | 描述 |
|---|---|---|
| USERNAME | VARCHAR2(63) | 用户名 |
| USER_ID | NUMERIC(38,0) | 用户id |
| ACCOUNT_STATUS | VARCHAR2(32) | 状态,取值如下所示 OPEN EXPIRED |
| LOCK_DATE | DATE | 当用户状态为锁定时,用户被锁定的日期 |
| EXPIRY_DATE | DATE | 用户的到期日期 |
| DEFAULT_TABLESPACE | VARCHAR2(63) | 默认数据表空间 |
| TEMPORARY_TABLESPACE | VARCHAR2(63) | 临时表的默认表空间名称或表空间组名称 |
| CREATED | DATE | 用户创建的时间 |
| INITIAL_RSRC_CONSUMER_GROUP | VARCHAR2(63) | 用户的初始资源消费组 |
| EXTERNAL_NAME | VARCHAR2(63) | 用户外部名称。对于集中管理的用户,如果数据库用户映射是一个独占映射,那么这将是用户的目录服务DN。如果这个数据库用户是一个共享模式,它将是一个组的DN |
user_views
user_views视图描述当前用户的所有视图的信息。
表 user_views的列
| 名称 | 类型 | 描述 |
|---|---|---|
| VIEW_NAME | VARCHAR2(63) | 视图名 |
| TEXT_LENGTH | NUMERIC | 视图文本的长度 |
| TEXT | TEXT | 查看文本。只有当行起源于当前容器时,此列才返回正确的值。在此视图中,BEQUEATH子句不会作为TEXT列的一部分出现 |
| TYPE_TEXT_LENGTH | NUMERIC | 视图的类型子句的长度 |
| TYPE_TEXT | VARCHAR2(4000) | 视图的类型子句 |
| OID_TEXT_LENGTH | NUMERIC | 视图的WITH OID子句的长度 |
| OID_TEXT | VARCHAR2(4000) | 视图的WITH OID子句 |
| VIEW_TYPE_OWNER | VARCHAR2(63) | 如果视图是类型化视图,则为视图类型的所有者 |
| VIEW_TYPE | VARCHAR2(63) | 如果视图是类型化视图,则为视图的类型 |
| SUPERVIEW_NAME | VARCHAR2(63) | 父视图的名称 |
| EDITIONING_VIEW | VARCHAR2(1) | 保留供将来使用 |
| READ_ONLY | VARCHAR2(1) | 指示视图是否只读(Y) (N) |
V$DATABASE
V$DATABASE视图描述当前数据库信息。
表 V$DATABASE的列
| 名称 | 类型 | 描述 |
|---|---|---|
| DBID | NUMERIC(38,0) | 在创建数据库并存储在所有文件头中时计算的数据库标识符 |
| NAME | VARCHAR2(63) | 数据库名 |
| CREATED | DATE | 数据库的创建日期。如果使用CREATE CONTROLFILE语句重新创建了控件文件,那么此列将显示重新创建控件文件的日期 |
| LOG_MODE | VARCHAR2(12) | 存档日志模式,取值如下所示 NOARCHIVELOG ARCHIVELOG |
| CHECKPOINT_CHANGE | NUMERIC | 最后一个SCN检查点 |
| CONTROLFILE_TIME | DATE | 备份控制文件中的最后时间戳;如果控制文件不是备份,则为空 |
| OPEN_MODE | VARCHAR2(10) | 打开模式信息:READ WRITE |
| ARCHIVELOG_CHANGE | NUMERIC | 存档日志的最高NEXT_CHANGE#(来自V$ARCHIVED_LOG视图) |
| CURRENT_SCN | NUMERIC | 当前的视交叉上核;如果数据库当前未打开,则为空。对于一个备用数据库,它是在媒体恢复期间挂载的物理备用数据库的检查点SCN,总是小于V$RECOVERY_PROGRESS中跟踪的最后一个应用SCN |
| MAX_SIZE | NUMERIC(38,0) | 最大值 |
| TOTAL_SIZE | NUMERIC(38,0) | 总值 |
| STATUS$ | VARCHAR2(10) | 状态 |
V$INSTANCE
V$INSTANCE视图描述当前实例信息。
表 V$INSTANCE的列
| 名称 | 类型 | 描述 |
|---|---|---|
| INSTANCE_NAME | VARCHAR2(16) | 用于实例注册的实例号(对应于INSTANCE_NUMBER初始化参数) |
| HOST_NAME | VARCHAR2(64) | 主机的名称 |
| VERSION | VARCHAR2(17) | 数据库版本号 |
| STARTUP_TIME | DATE | 实例启动的时间 |
| STATUS | VARCHAR2(12) | 实例的STARTED状态 |
| ARCHIVER | VARCHAR2(7) | 自动归档状态“STOPPED” |
| LOGIN | VARCHAR2(10) | 指示实例是否处于无限制模式(允许所有用户登录)(允许,还是处于受限模式(只允许数据库管理员登录)(restricted) |
| SHUTDOWN_PENDING | VARCHAR2(3) | 指示关闭是否挂起(YES)或(NO) |
| DATABASE_STATUS | VARCHAR2(17) | 数据库的“ONLINE”状态 |
| INSTANCE_ROLE | VARCHAR2(18) | 指示实例是活动的实例(PRIMARY_INSTANCE)还是不活动的辅助实例(SECONDARY_INSTANCE),如果实例已启动但未挂载,则指示该实例是未知的 |
| ACTIVE_STATE | VARCHAR2(9) | 实例的静默状态:NORMAL |
| BLOCKED | VARCHAR2(3) | 指示是否阻塞所有服务(YES)或(NO) |
V$LOCK
V$LOCK视图列出数据库当前持有的锁以及对锁的未完成请求。
表 V$LOCK的列
| 名称 | 类型 | 描述 |
|---|---|---|
| ADDR | VARCHAR2(16) | 锁状态对象的地址 |
| KADDR | VARCHAR2(16) | 锁的地址 |
| SID | NUMERIC | 会话持有或获取锁的标识符 |
| TYPE | VARCHAR2(2) | 用户或系统锁的类型,TM/TX/UL等 |
| LMODE | NUMERIC | 会话持有锁的锁模式,取值如下所示 0 - none 1 - null (NULL) 2 - row-S (SS) 3 - row-X (SX) 4 - share (S) 5 - S/Row-X (SSX) 6 - exclusive (X) |
| REQUEST | NUMERIC | 进程请求锁的锁模式,取值如下所示 0 - none 1 - null (NULL) 2 - row-S (SS) 3 - row-X (SX) 4 - share (S) 5 - S/Row-X (SSX) 6 - exclusive (X) |
| CTIME | NUMERIC | 自授予当前模式以来的时间 |
| BLOCK | NUMERIC | 指示有问题的锁是否正在阻塞其他进程。取值如下所示 0 -锁没有阻塞任何其他进程 1 -锁正在阻塞其他进程 2 -锁没有阻塞本地节点上任何被阻塞的进程,但可能会阻塞远程节点上的进程,也可能不会阻塞。该值只在Oracle RAC (Real Application Clusters, Oracle RAC)配置中使用(不用于单实例配置) |
V$LOCKED_OBJECT
V$LOCKED_OBJECT视图描述当前被锁定的对象。
表 V$LOCKED_OBJECT的列
| 名称 | 类型 | 描述 |
|---|---|---|
| XIDUSN | NUMERIC | Undo号 |
| XIDSLOT | NUMERIC | 槽数 |
| XIDSQN | NUMERIC | 序列号 |
| OBJECT_ID | NUMERIC | 对象ID被锁定 |
| SESSION_ID | NUMERIC | 会话ID |
| ORACLE_USERNAME | VARCHAR2(63) | 用户名 |
| OS_USER_NAME | VARCHAR2(63) | 操作系统用户名 |
| PROCESS | VARCHAR2(63) | 操作系统进程ID |
| LOCKED_MODE | NUMERIC | 锁定模式。这一列的数值映射到表锁的锁定模式的文本值: 0 - NONE:请求但尚未获得锁 1 - 空 2 - ROWS_S (SS):行共享锁 3 - ROW_X (SX):行独占表锁 4 - SHARE (S):共享表锁定 5 - S/ Row - x (SSX):共享行独占表锁 6 - 排他(X):排他表锁 |
V$PARAMETER
V$PARAMETER视图列出影响当前会话的初始化参数信息。
表 V$PARAMETER的列
| 名称 | 类型 | 描述 |
|---|---|---|
| NUM | NUMERIC | 参数数量 |
| NAME | VARCHAR2(80) | 参数名 |
| TYPE | NUMERIC | 参数类型,如下所示 1 - Boolean 2 - String 3 - Integer 4 - Parameter file 5 - Reserved 6 - Big integer |
| VALUE | VARCHAR2(512) | 会话的参数值(如果在会话中修改);否则为实例范围的参数值 |
| DISPLAY_VALUE | VARCHAR2(512) | 用户友好的格式。例如,如果VALUE列显示一个大整数参数的值262144,那么DISPLAY_VALUE列将显示值256K |
| ISSES_MODIFIABLE | VARCHAR2(5) | 指示是否可以使用 ALTER SESSION (TRUE)更改参数(FALSE) |
| ISPG_MODIFIALBE | VARCHAR2(9) | 指示是否可以在PDB内部修改参数(TRUE) (FALSE) |
| ISMODIFIED | VARCHAR2(10) | 指示该参数在实例启动后是否被修改 MODIFIED -参数已被 ALTER SESSION 修改 SYSTEM_MOD—使用 ALTER SYSTEM 修改了参数(这会导致当前登录的所有会话的值都被修改) FALSE -实例启动后参数未被修改 |
| DESCRIPTION | VARCHAR2(255) | 参数说明 |
V$SESSION
V$SESSION视图描述当前会话信息。
表 V$SESSION的列
| 名称 | 类型 | 描述 |
|---|---|---|
| SADDR | VARCHAR2(20) | 会话地址 |
| SID | NUMERIC | 会话标识符 |
| SERIAL# | NUMERIC | 会话序列号。用于唯一标识会话的对象。确保在会话结束而另一个会话开始时使用相同的会话ID时,将会话级别的命令应用到正确的会话对象 |
| AUDSID | NUMERIC | 审计会话ID 如果数据库配置为统一审计,则此列显示统一审计会话ID 如果将数据库配置为混合模式审计,那么此列将显示传统的审计会话ID |
| PADDR | VARCHAR2(20) | 拥有会话的进程的地址 |
| USER# | NUMERIC(38,0) | 用户标识符 |
| USERNAME | VARCHAR2(63) | 用户名 |
| COMMAND | NUMERIC | 命令正在执行(最后一条语句已解析)。该COMMAND列的值为0表示该命令没有记录在V$SESSION中 |
| OWNERID | NUMERIC | 拥有可迁移会话的用户标识符;如果该值为2147483644,则列内容无效;对于使用Parallel slave的操作,将此值解释为一个4字节的值。低阶2字节表示会话号,高阶字节表示查询协调器的实例ID |
| TADDR | VARCHAR2(20) | 事务状态对象的地址 |
| LOCKWAIT | VARCHAR2(8) | 会话正在等待的锁的地址;如果没有则为NULL |
| STATUS | VARCHAR2(8) | 会话状态,取值如下所示 ACTIVE -当前执行SQL的会话 INACTIVE — 未激活的会话,没有配置的限制或尚未超过配置的限制 KILLED - 被标记为被终止的会话 CACHED - Oracle*XA使用的临时缓存会话 SNIPED -个已超过某些配置限制(例如,为资源管理器消费组指定的资源限制或在用户配置文件中指定的idle_time)的非活动会话。这样的会话将不被允许再次激活 |
| SERVER | VARCHAR2(9) | 服务器类型,取值如下所示 DEDICATED SHARED PSEUDO POOLED NONE |
| SCHEMA# | NUMERIC(38,0) | 模式用户标识符 |
| SCHEMANAME | VARCHAR2(63) | 模式用户名 |
| OSUSER | VARCHAR2(63) | 操作系统客户端用户名 |
| PROCESS | VARCHAR2(12) | 操作系统客户端进程ID |
| MACHINE | VARCHAR2(64) | 操作系统机器名称 |
| TERMINAL | VARCHAR2(63) | 操作系统终端名称 |
| PROGRAM | VARCHAR2(48) | 操作系统程序名称 |
| TYPE | VARCHAR2(10) | 会话类型 |
| SQL_ADDRESS | VARCHAR2(20) | 与SQL_HASH_VALUE一起使用,以标识当前正在执行的SQL语句 |
| SQL_HASH_VALUE | NUMERIC | 与SQL_ADDRESS一起使用,标识当前正在执行的SQL语句 |
| SQL_ID | VARCHAR2(13) | 当前正在执行的SQL语句的SQL标识符 |
| SQL_CHILD_NUMBER | NUMERIC | 当前正在执行的SQL语句的子编号 |
| PREV_SQL_ADDR | VARCHAR2(20) | 与PREV_HASH_VALUE一起使用,以标识最后执行的SQL语句 |
| PREV_HASH_VALUE | NUMERIC | 与SQL_HASH_VALUE一起使用,标识最后执行的SQL语句 |
| PREV_SQL_ID | VARCHAR2(13) | 最后执行的SQL语句的SQL标识符 |
| PREV_CHILD_NUMBER | NUMERIC | 最后执行的SQL语句的子编号 |
| MODULE | VARCHAR2(48) | 通过调用DBMS_APPLICATION_INFO设置的当前执行模块的名称。SET_MODULE过程 |
| MODULE_HASH | NUMERIC | MODULE列的哈希值 |
| ACTION | VARCHAR2(32) | 通过调用DBMS_APPLICATION_INFO设置的当前执行操作的名称。SET_ACTION过程 |
| ACTION_HASH | NUMERIC | ACTION列的哈希值 |
| CLIENT_INFO | VARCHAR2(64) | 由DBMS_APPLICATION_INFO. conf设置的信息。SET_CLIENT_INFO过程 |
| FIXED_TABLE_SEQUENCE | NUMERIC | 它包含一个数字,每次会话完成对数据库的调用,并且从动态性能表进行中间选择时,该数字都会增加。性能监视器可使用此列监视数据库中的统计信息。每次性能监控器查看数据库时,它只需要查看当前活动的会话或此列中的值高于性能监控器上次看到的最大值的会话。自性能监控器最后一次查看数据库以来,所有其他会话都处于空闲状态 |
| ROW_WAIT_OBJ# | NUMERIC | 包含row_wait_row#中指定的行的表的对象ID |
| ROW_WAIT_FILE# | NUMERIC | 包含row_wait_row#中指定的行的数据文件的标识符。只有当会话当前正在等待另一个事务提交且row_wait_obj#的值不是-1时,此列才有效 |
| ROW_WAIT_BLOCK# | NUMERIC | 包含row_wait_row#中指定的行的块的标识符。只有当会话当前正在等待另一个事务提交且row_wait_obj#的值不是-1时,此列才有效 |
| ROW_WAIT_ROW# | NUMERIC | 当前行被锁定。只有当会话当前正在等待另一个事务提交且row_wait_obj#的值不是-1时,此列才有效 |
| LOGON_TIME | DATE | 登录时间 |
| LAST_CALL_ET | NUMERIC | 如果会话STATUS当前为ACTIVE,则该值表示自会话变为活动状态以来经过的时间(以秒为单位)。如果会话STATUS当前为INACTIVE,则该值表示自会话变为非激活状态以来经过的时间(以秒为单位) |
| PDML_ENABLED | VARCHAR2(3) | 此列已被PDML_STATUS列取代 |
| FAILOVER_TYPE | VARCHAR2(13) | 指示是否以及在多大程度上为会话启用透明应用程序故障转移(TAF),取值如下所示 NONE -此会话禁用故障转移 SESSION - 客户端可以在断开连接后对其会话进行故障转移 SELECT - 客户端也可以对正在进行的查询进行故障转移 |
| FAILOVER_METHOD | VARCHAR2(10) | 指示会话的透明应用程序故障转移方法,取值如下所示 NONE - 此会话禁用故障转移 BASIC - 客户端本身在断开连接后重新连接 PRECONNECT - 备份实例可以支持来自它所备份的每个实例的所有连接 |
| FAILED_OVER | VARCHAR2(3) | 指示会话是否以故障转移模式运行,是否发生了故障转移(YES) (NO) |
| RESOURCE_CONSUMER_GROUP | VARCHAR2(32) | 会话的当前资源使用者组的名称 |
| PDML_STATUS | VARCHAR2(8) | 如果ENABLED,则会话处于PARALLEL DML启用模式。如果DISABLED,则会话不支持PARALLEL DML启用模式。如果FORCED,则会话已更改为强制PARALLEL DML |
| PDDL_STATUS | VARCHAR2(8) | 如果ENABLED,会话处于PARALLEL DDL启用模式。如果DISABLED,则会话不支持PARALLEL DDL启用模式。如果FORCED,则会话已被更改为强制PARALLEL DDL |
| PQ_STATUS | VARCHAR2(8) | 如果ENABLED,会话处于PARALLEL QUERY启用模式。如果DISABLED,则会话不支持PARALLEL QUERY启用模式。如果FORCED,则会话已被更改为强制PARALLEL QUERY |
| CURRENT_QUEUE_DURATION | NUMERIC | 如果排队(1),则表示当前会话已排队的时间。如果当前没有排队,则该值为0 |
| CLIENT_IDENTIFIER | VARCHAR2(64) | 会话的客户端标识符 |
| BLOCKING_SESSION_STATUS | VARCHAR2(11) | 这一列提供了关于是否存在阻塞会话的详细信息,取值如下所示 VALID - 有一个阻塞会话,它在BLOCKING_INSTANCE和BLOCKING_SESSION列中标识 NO HOLDER - 没有会话阻塞这个会话 NOT IN WAIT - 此会话不在等待状态 UNKNOWN - 阻塞会话未知 |
| BLOCKING_INSTANCE | NUMERIC | 阻塞会话的实例标识符。只有BLOCKING_SESSION_STATUS的值为valid时,此列才有效 |
| BLOCKING_SESSION | NUMERIC | 阻断会话的会话标识。只有BLOCKING_SESSION_STATUS的值为valid时,此列才有效 |
| SEQ# | NUMERIC | 唯一标识当前或最后一次等待的数字(每次等待递增) |
| EVENT# | NUMERIC | 如果会话当前正在等待,则表示会话正在等待的资源或事件的编号。如果会话不在等待中,则为会话最近等待的资源或事件的编号 |
| EVENT | VARCHAR2(64) | 如果会话当前正在等待,则会话正在等待的资源或事件。如果会话不在等待中,则会话最近等待的资源或事件 |
| P1TEXT | VARCHAR2(64) | 第一个等待事件参数的描述 |
| P1 | NUMERIC | 第一个等待事件参数(十进制) |
| P1RAW | VARCHAR2(20) | 第一个等待事件参数(十六进制) P1RAW列显示的值与P1列相同,只是数字以十六进制形式显示 |
| P2TEXT | VARCHAR2(64) | 第二个等待事件参数的描述 |
| P2 | NUMERIC | 第二个等待事件参数(十进制) |
| P2RAW | VARCHAR2(20) | 第二个等待事件参数(十六进制),P2RAW列显示的值与P2列相同,只是数字以十六进制形式显示 |
| P3TEXT | VARCHAR2(64) | 第三个等待事件参数的描述 |
| P3 | NUMERIC | 第三个等待事件参数(十进制) |
| P3RAW | VARCHAR2(20) | 第三个等待事件参数(十六进制) “P3RAW”列显示的值与“P3”列相同,不同之处在于数值以十六进制形式显示 |
| WAIT_CLASS_ID | NUMERIC | 等待事件类的标识符 |
| WAIT_CLASS# | NUMERIC | 等待事件的类的编号 |
| WAIT_CLASS | VARCHAR2(64) | 等待事件的类的名称 |
| WAIT_TIME | NUMERIC | 如果会话当前处于等待状态,则该值为0。如果会话没有处于等待状态,则取值如下所示 > 0 - 值是最后一次等待的持续时间,以百分之一秒为单位 -1 - 最后一次等待的持续时间小于百分之一秒 -2 - 参数TIMED_STATISTICS设置为false 该列已被弃用,取而代之的是WAIT_TIME_MICRO和STATE列 |
| SECONDS_IN_WAIT | NUMERIC | 如果会话当前正在等待,则该值为当前等待的等待时间。如果会话没有处于等待状态,则该值是自上次等待开始以来的时间。 该列已被弃用,取而代之的是WAIT_TIME_MICRO和TIME_SINCE_LAST_WAIT_MICRO |
| STATE | VARCHAR2(19) | 等待状态,取值如下所示 WAITING - 会话当前正在等待 waiting UNKNOWN TIME - 最后一次等待的持续时间未知;这是参数TIMED_STATISTICS设置为false时的值 WAITED SHORT TIME - 上次等待不到百分之一秒 waiting KNOWN TIME -最后一次等待的时间在WAIT_TIME列中指定 |
| SERVICE_NAME | NUMERIC | 会话的服务名称 |
| SQL_TRACE | VARCHAR2(8) | 指示SQL跟踪是启用(enabled)还是禁用(disabled) |
| SQL_TRACE_WAITS | VARCHAR2(5) | 指示是否启用等待跟踪(TRUE)或不启用(FALSE) |
| SQL_TRACE_BINDS | VARCHAR2(5) | 指示是否启用绑定跟踪(TRUE)或不启用(FALSE) |
V$SYSSTAT
V$SYSSTAT视图描述当前系统统计信息。
表 V$SYSSTAT的列
| 名称 | 类型 | 描述 |
|---|---|---|
| STATISTIC# | NUMBER | 统计数字,注意:统计数字不能保证从一个版本到另一个版本保持不变。因此,在您的应用程序中,您应该依赖统计名称而不是统计数字 |
| NAME | VARCHAR2(63) | 统计的名字。你可以通过查询V$STATNAME视图得到一个完整的统计名称列表 |
| VALUE | NUMBER | 统计值 |
4.数据目录
在做任何事情之前,必须先初始化磁盘上的数据存储区,叫作数据库集群。一个数据库集群是一系列数据库的集合,这些数据库可以通过单个数据库服务器的实例管理。在初始化后,一个数据库集群将包含一个叫uxdb的数据库,这个库是给工具、用户和第三方程序使用的缺省数据库。数据库服务器本身并不要求uxdb数据库的存在,但是很多外部工具假设它存在。另外一个在每个集群初始化过程中创建的数据库叫template1。正如其名一样,这个数据库将作为随后创建的数据库的模版;在实际工作中不应该使用这个库。用文件系统的术语来说,一个数据库集群是一个目录,所有数据都将存放在这个目录中,称做数据目录或数据区。数据存放在哪里完全取决于用户的选择,没有缺省值。初始化一个数据库集群,可以使用initdb命令,这个命令与UXDB一起安装。UXDB的数据目录可以用-D 选项指定为本地目录,也可以通过-Z选项指定为分布式文件系统中的目录。数据库集群所需要的配置和数据文件都存储在集群的数据目录里,该数据目录通常记录在环境变量UXDATA中。
UXDATA目录包含几个子目录以及一些控制文件, 如下表所示。除了这些必要的东西之外,集群的配置文件uxsinodb.conf、ux_hba.conf和ux_ident.conf通常都存储在UXDATA中,不过可以把它们放在其他位置。
表 UXDATA的内容
| 项 | 描述 |
|---|---|
| UX_VERSION | 一个包含 UXDB 主版本号的文件 |
| base | 包含每个数据库对应的子目录的子目录 |
| current_logfiles | 记录日志记录收集器当前写入的日志文件 |
| global | 包含集群范围的表的子目录,比如 ux_database |
| ux_commit_ts | 包含事务提交时间戳数据的子目录 |
| ux_dynshmem | 包含被动态共享内存子系统所使用的文件的子目录 |
| ux_logical | 包含用于逻辑复制的状态数据的子目录 |
| ux_multixact | 包含多事务(multi-transaction)状态数据的子目录(用于共享的行锁) |
| ux_notify | 包含LISTEN/NOTIFY状态数据的子目录 |
| ux_replslot | 包含复制槽数据的子目录 |
| ux_serial | 包含已提交的可序列化事务信息的子目录 |
| ux_snapshots | 包含导出的快照的子目录 |
| ux_stat | 包含用于统计子系统的永久文件的子目录 |
| ux_stat_tmp | 包含用于统计信息子系统的临时文件的子目录 |
| ux_subtrans | 包含子事务状态数据的子目录 |
| ux_tblspc | 包含指向表空间的符号链接的子目录 |
| ux_twophase | 包含用于预备事务状态文件的子目录 |
| ux_wal | 包含 WAL (预写日志)文件的子目录 |
| ux_xact | 包含事务提交状态数据的子目录 |
| uxsinodb.auto.conf | 一个用于存储由 ALTER SYSTEM 设置的配置参数的文件 |
| uxmaster.opts | 一个记录服务器最后一次启动时使用的命令行参数的文件 |
| uxmaster.pid | 一个锁文件,记录着当前的 uxmaster 进程ID(PID)、集群数据目录路径、uxmaster启动时间戳、端口号、Unix域套接字目录路径(Windows上为空)、第一个可用的listen_address(IP地址或者 * ,或者为空表示不在TCP上监听)以及共享内存段ID(服务器关闭后该文件不存在) |
5.日志文件
5.1.ux_log
ux_log是数据库活动日志。在$UXDATA/uxsinodb.conf中可以对日志进行相应的修改。下面介绍常用的日志配置。
表 ux_log常用日志配置
| 参数 | 默认值 | 描述 |
|---|---|---|
| logging_collector | on | 是否将日志重定向至文件中,DB启动过程中会将日志重定向$UXDATA/ux_log中。该配置修改后,需要重启DB服务 |
| log_directory | UXDATA的相对路径,即$UXDATA/ux_log | 日志文件目录,可以修改为绝对路径。例如将此配置修改为/var/log/ux_log下,必须先创建此目录,并修改权限。 |
| log_filename | UXDB-%Y-%m-%d_%H%M%S.log | 日志文件命名形式,使用默认即可。 |
| log_rotation_age | 1d | 单个日志文件的生存期,默认1天,在日志文件大小没有达到log_rotation_size时,一天只生成一个日志文件。 |
| log_rotation_size | 10MB | 单个日志文件的大小,如果时间没有超过log_rotation_age,一个日志文件最大只能到10M,否则将新生成一个日志文件。 |
| log_truncate_on_rotation | off | 当日志文件已存在时,该配置如果为off,新生成的日志将在文件尾部追加,如果为on,则会覆盖原来的日志。 |
| log_lock_waits | off | 控制当一个会话等待时间超过deadlock_timeout而被锁时是否产生一个日志信息。在判断一个锁等待是否会影响性能时是有用的。 |
| log_statement | none | 控制记录哪些SQL语句。 none:不记录; ddl:记录所有数据定义命令,比如 CREATE 、 ALTER 和 DROP 语句; mod:记录所有ddl语句,加上数据修改语句 INSERT 、 UPDATE 等; all:记录所有执行的语句,跟踪整个数据库执行的SQL语句。 |
| log_duration | off | 记录每条SQL语句执行完成消耗的时间,将此配置设置为on,用于统计哪些SQL语句耗时较长。 |
| log_min_duration_statement | -1 | -1:不可用;0:将记录所有SQL语句和它们的耗时;>0:只记录那些耗时超过(或等于)这个值(ms)的SQL语句。适用于跟踪耗时较长,可能存在性能问题的SQL语句。使用log_statement和log_duration也能够统计SQL语句及耗时,但是SQL语句和耗时统计结果可能相差很多行,或在不同的文件中,但是log_min_duration_statement会将SQL语句和耗时在同一行记录,更方便阅读。 |
| log_connections | off | 是否记录连接日志。 |
| log_disconnections | off | 是否记录连接断开日志。 |
| log_line_prefix | %m %p %u %d %r | 日志输出格式。配置文件解释%m,%p的实际意义。能够记录时间,用户名称,数据库名称,客户端IP和端口,方便定位问题。 |
| log_timezone | Asia/Shanghai | 日志时区,最好和服务器设置同一个时区,方便问题定位。 |
5.2.ux_xlog
ux_xlog记录UXDB的WAL信息,也就是事务日志信息,默认单个大小是16M。这些信息通常记录在名称类似'000000010000000000000013'这样的文件中,这些日志会在定时回滚恢复(PITR),流复制(Replication Stream)以及归档时被用到。这些日志是非常重要的,记录着数据库发生的各种事务信息,不得随意删除或者移动这类日志文件,否则数据库会有无法恢复的风险。当归档或者流复制发生异常时,事务日志会不断地生成,有可能会造成磁盘空间被塞满,最终导致UXDB挂掉或者无法正常启动。遇到这种情况,可以先关闭归档或者流复制功能;备份ux_xlog日志到其他路径,但不要删除;删除较早时间的的ux_xlog,有一定空间后再试着启动UXDB。
5.2.1.设置
wal_level (enum)
wal_level决定多少信息写入到 WAL 中。默认值是replica,它写入足够的数据以支持WAL归档和复制,包括在备用服务器上运行只读查询。minimal删除除了从崩溃或立即关闭中恢复所需的信息之外的所有日志记录。最后,logical会增加支持逻辑解码所需的信息。每个层次包括所有更低层次记录的信息。这个参数只能在服务器启动时设置。
在minimal级别中,某些批量操作的 WAL 日志可以被安全地跳过,这可以使那些操作更快。这种优化可以应用的操作包括:
CREATE TABLE AS
CREATE INDEX
CLUSTER
COPY 到在同一个事务中被创建或清空的表中
但最少的 WAL 不会包括足够的信息来从基础备份和 WAL 日志中重建数据,因此,要启用 WAL 归档archive_mode和流复制,必须使用replica或更高级别。
在logical层,与replica相同的信息会被记录,外加上允许从 WAL 抽取逻辑修改集所需的信息。使用级别logical将增加 WAL 容量,特别是如果为了REPLICA IDENTITY FULL配置了很多表并且执行了很多UPDATE和DELETE语句时。
此参数还允许值archive和hot_standby。这些仍然被接受,但映射到replica。
fsync (boolean)
如果打开这个参数,UXDB服务器将尝试确保更新被物理地写入到磁盘,做法是发出fsync()系统调用或者使用多种等价的方法(见wal_sync_method)。这保证了数据库集群在一次操作系统或者硬件崩溃后能恢复到一个一致的状态。
虽然关闭fsync常常可以得到性能上的收益,但当发生断电或系统崩溃时可能造成不可恢复的数据损坏。因此,只有在能很容易地从外部数据中重建整个数据库时才建议关闭fsync。
能安全关闭fsync的环境的例子包括从一个备份文件中初始加载一个新数据库集群、使用一个数据库集群来在数据库被删掉并重建之后处理一批数据,或者一个被经常重建并却不用于失效备援的只读数据库克隆。单独的高质量硬件不足以成为关闭fsync的理由。
当把fsync从关闭改成打开时,为了可靠的恢复,需要强制在内核中的所有被修改的缓冲区进入持久化存储。这可以在多个时机来完成:在集群被关闭时或在fsync因为运行initdb --sync-only而打开时、运行sync时、卸载文件系统时或者重启服务器时。
在很多情况下,为不重要的事务关闭synchronous_commit可以提供很多关闭fsync的潜在性能收益,并不会有的同时, 关闭fsync可以提供很多潜在的性能优势,而不会有伴随着的数据损坏风险。
fsync只能在uxsinodb.conf文件中或在服务器命令行上设置。如果关闭这个参数,请也考虑关闭full_page_writes。
synchronous_commit (enum)
指定在命令返回“success”指示给客户端之前,一个事务是否需要等待 WAL 记录被写入磁盘。合法的值是on、remote_apply、remote_write、local和off。默认的并且安全的设置是on。当设置为off时,在向客户端报告成功和真正保证事务不会被服务器崩溃威胁之间会有延迟(最大的延迟是wal_writer_delay的三倍)。不同于fsync,将这个参数设置为off不会产生数据库不一致性的风险:一个操作系统或数据库崩溃可能会造成一些最近据说已提交的事务丢失,但数据库状态是一致的,就像这些事务已经被中止。因此,当性能比完全确保事务的持久性更重要时,关闭synchronous_commit可以作为一个有效的代替手段。
如果synchronous_standby_names为非空,这个参数也控制事务提交是否将等待事务的 WAL 记录被复制到后备服务器上。当这个参数被设置为on时,直到来自于当前同步的后备服务器的回复指示该后备服务器已经收到了事务的提交记录并将其刷入了磁盘,主服务器上的事务才会提交。这保证事务将不会被丢失,除非主服务器和后备服务器都遭受到了数据库存储损坏的问题。 当设置为remote_apply时,提交将等待, 直到来自当前同步备用数据库的回复表明它们已收到事务的提交记录并应用该事务, 以便它对备用数据库上的查询可见。 当这个参数被设置为remote_write时,提交将等待,直到来自当前同步的后备服务器的回复指示该服务器已经收到了该事务的提交记录并且已经把该记录写出到后备服务器的操作系统,这种设置足以保证数据在后备服务器的UXDB实例崩溃时得以保存,但是不能保证后备服务器遭受操作系统级别崩溃时数据能被保存,因为数据不一定必须要在后备机上达到稳定存储。最后,设置local会导致提交等待本地刷写到磁盘而不是复制完成。使用同步复制时通常不能达到想要的效果,但是为了完整性,仍然提供了该选项。
如果synchronous_standby_names为空,设置on、remote_apply、remote_write和local都提供了同样的同步级别:事务提交只等待本地刷写磁盘。
这个参数可以随时被修改;任何一个事务的行为由其提交时生效的设置决定。因此,可以同步提交一些事务,同时异步提交其他事务。例如,当默认是相反时,实现一个单一多语句事务的异步提交,在事务中发出SET LOCAL synchronous_commit TO OFF。
wal_sync_method (enum)
用来向强制 WAL 更新到磁盘的方法。如果fsync是关闭的,那么这个设置就不相关,因为 WAL 文件更新将根本不会被强制。可能的值是:
-
open_datasync(用open()选项O_DSYNC写 WAL 文件)
-
fdatasync(在每次提交时调用fdatasync())
-
fsync(在每次提交时调用fsync())
-
fsync_writethrough(在每次提交时调用fsync(),强制任何磁盘写高速缓存的直通写)
-
open_sync(用open()选项O_SYNC写 WAL 文件)
open_* 选项也可以使用O_DIRECT(如果可用)。不是在所有平台上都能使用所有这些选择。默认值是列表中第一个被平台支持的那个,不过fdatasync是 Linux 中的默认值。默认值不一定是最理想的;有可能需要修改这个设置或系统配置的其他方面来创建一个崩溃-安全的配置,或达到最佳性能。这个参数只能在uxsinodb.conf文件中或在服务器命令行上设置。
full_page_writes (boolean)
当这个参数为打开时,UXDB服务器在一个检查点之后的页面的第一次修改期间将每个页面的全部内容写到 WAL 中。这么做是因为在操作系统崩溃期间正在处理的一次页写入可能只有部分完成,从而导致在一个磁盘页面中混合有新旧数据。在崩溃后的恢复期间,通常存储在WAL中的行级改变数据不足以完全恢复这样一个页面。存储完整的页面映像可以保证页面被正确存储,但代价是增加了必须被写入WAL的数据量(因为WAL重放总是从一个检查点开始,所以在检查点后每个页面的第一次改变时这样做就够了。因此,一种减小全页面写开销的方法是增加检查点间隔参数值)。
把这个参数关闭会加快正常操作,但是在系统失败后可能导致不可恢复的数据损坏,或者静默的数据损坏。其风险类似于关闭fsync, 但是风险较小。并且只有在可关闭fsync的情况下才应该关闭它。
关闭这个选项并不影响用于时间点恢复(PITR)的WAL归档使用。
这个参数只能在uxsinodb.conf文件中或在服务器命令行上设置。默认值是on。
wal_log_hints (boolean)
当这个参数为on时,UXDB服务器一个检查点之后页面被第一次修改期间把该磁盘页面的整个内容都写入 WAL,即使对所谓的提示位做非关键修改也会这样做。
如果启用了数据校验和,提示位更新总是会被 WAL 记录并且这个设置会被忽略。你可以使用这个 设置测试如果你的数据库启用了数据校验和,会有多少额外的 WAL 记录发生。
这个参数只能在服务器启动时设置。默认值是off。
wal_compression (boolean)
当这个参数为on,如果full_page_writes为打开或者处于基础备份期间,UXDB服务器会压缩写入到WAL中的完整页面镜像。压缩页面镜像将在 WAL 重放时被解压。默认值为off。只有超级用户可以更改这个设置。
打开这个参数可以减小 WAL 所占的空间且无需承受不可恢复的数据损坏风险, 但是代价是需要额外的 CPU 开销以便在 WAL 记录期间进行压缩以及在 WAL 重放时解压。
wal_buffers (integer)
用于还未写入磁盘的WAL数据的共享内存量。默认值 -1 选择等于shared_buffers的1/32的尺寸(大约3%),但是不小于64kB也不大于WAL段的尺寸(通常为16MB)。如果自动的选择太大或太小可以手工设置该值,但是任何小于32kB的正值都将被当作32kB。 如果指定值时没有单位,则以WAL块作为单位,即为XLOG_BLCKSZ字节,通常为8kB。这个参数只能在服务器启动时设置。
在每次事务提交时,WAL缓冲区的内容被写出到磁盘,因此极大的值不可能提供显著的收益。不过,把这个值设置为几个兆字节可以在一个繁忙的服务器(其中很多客户端会在同一时间提交)上提高写性能。由默认设置-1选择的自动调节将在大部分情况下得到合理的结果。
wal_writer_delay (integer)
指定WAL写入器刷写WAL的频繁程度,以时间为单位。在刷写WAL之后,写入器将根据wal_writer_delay所给出的时间长度进行睡眠,除非被一个异步提交的事务提前唤醒。 如果最近的刷写发生在wal_writer_delay之前,并且小于 wal_writer_flush_after WAL的值产生之后,那么WAL只会被写入操作系统,而不会被刷写到磁盘。如果指定值时没有单位,则以毫秒作为单位。默认值是200毫秒(200ms)。注意在很多系统上,有效的睡眠延迟粒度是10毫秒,把wal_writer_delay设置为一个不是10的倍数的值,其效果和把它设置为大于该值的下一个10的倍数产生的效果相同。这个参数只能在uxsinodb.conf文件中或在服务器命令行上设置。
wal_writer_flush_after (integer)
指定WAL写入器刷写WAL的频繁程度,以卷为单位。 如果最近的刷写发生在wal_writer_delay之前,并且小于wal_writer_flush_afterWAL的值产生之后,那么WAL只会被写入操作系统,而不会被刷写到磁盘。如果wal_writer_flush_after被设置为0,则WAL数据总是会被立即刷写。 如果指定值时没有单位,则以WAL块作为单位,即为XLOG_BLCKSZ字节,通常为8kB。默认是1MB。这个参数只能在uxsinodb.conf文件中或者服务器命令行上设置。
commit_delay (integer)
在一次WAL刷写被发起之前,commit_delay增加一个时间延迟。如果系统负载足够高,使得在一个给定间隔内有额外的事务准备好提交,那么通过允许更多事务通过一个单次WAL刷写来提交能够提高组提交的吞吐量。但是,它也把每次WAL刷写的潜伏期增加到了最多commit_delay。因为如果没有其他事务准备好提交,就会浪费一次延迟,只有在当一次刷写将要被发起时有至少commit_siblings个其他活动事务时,才会执行一次延迟。另外,如果fsync被禁用,则将不会执行任何延迟。如果指定值时没有单位,则以微秒作为单位。默认的commit_delay是零(无延迟)。只有超级用户才能修改这个设置。
第一个准备好刷写的进程会等待配置的间隔,而后续的进程只等到领先者完成刷写操作。
commit_siblings (integer)
在执行commit_delay延迟时,要求的并发活动事务的最小数目。大一些的值会导致在延迟间隔期间更可能有至少另外一个事务准备好提交。默认值是五个事务。
5.2.2.检查点
checkpoint_timeout (integer)
自动WAL检查点之间的最长时间。如果指定值时没有单位,则以秒为单位。合理的范围在30秒和1天之间。默认是5分钟(5min)。增加这个参数的值会增加崩溃恢复所需的时间。这个参数只能在uxsinodb.conf文件中或在服务器命令行上设置。
checkpoint_completion_target (floating point)
指定检查点完成的目标,作为检查点之间总时间的一部分。默认是0.5。这个参数只能在uxsinodb.conf文件中或在服务器命令行上设置。
checkpoint_flush_after (integer)
当执行检查点时写入的数据量超过此数量时,就尝试强制OS把这些写发送到底层存储。 这样做将会限制内核页面高速缓存中的脏数据数量,降低在检查点末尾发出fsync或者OS在后台大批量写回数据时被卡住的可能性。那常常会导致大幅度压缩的事务延迟,但是也有一些情况(特别是负载超过shared_buffers但小于OS页面高速缓存)的性能会降低。这种设置可能会在某些平台上没有效果。 如果指定值时没有单位,则以块为单位,即为BLCKSZ字节,通常为8kB。合法的范围在0(禁用强制写回)和2MB之间。Linux 上的默认值是256kB,其他平台上是0(如果BLCKSZ不是8kB,则默认值和最大值会按比例缩放到它)。这个参数只能在uxsinodb.conf文件中或者服务器命令行上设置。
checkpoint_warning (integer)
如果由于填充WAL段文件导致的检查点之间的间隔低于这个参数表示的时间量,那么就向服务器日志写一个消息(它建议增加max_wal_size的值)。如果指定值时没有单位,则以秒为单位。默认值是30秒(30s)。零则关闭警告。如果checkpoint_timeout低于checkpoint_warning,则不会有警告产生。这个参数只能在uxsinodb.conf文件中或在服务器命令行上设置。
max_wal_size (integer)
在自动WAL检查点之间允许WAL增长到的最大尺寸。这是一个软限制,在特殊的情况下WAL尺寸可能会超过max_wal_size,例如在重度负荷下、archive_command失败或者高的wal_keep_segments的设置。如果指定值时没有单位,则以兆字节为单位。默认为1GB。增加这个参数 可能导致崩溃恢复所需的时间。这个参数只能在uxsinodb.conf文件或者服务器命令行上设置。
min_wal_size (integer)
只要WAL磁盘用量保持在这个设置之下,在检查点时旧的WAL文件总是被回收以便未来使用,而不是直接被删除。这可以被用来确保有足够的WAL空间被保留来应付WAL使用的高峰,例如运行大型的批处理任务。 如果指定值时没有单位,则以兆字节为单位。默认是80MB。这个参数只能在uxsinodb.conf文件或者服务器命令行上设置。
5.2.3.归档
archive_mode (enum)
当启用archive_mode时,可以通过设置archive_command命令将完成的WAL段发送到归档存储。除用于禁用的off之外,还有两种模式on和always。在普通操作期间,这两种模式之间 没有区别,但是当设置为always时,WAL归档器在归档恢复或者后备模式下也会被启用。在always模式下,所有从归档恢复 的或者用流复制传来的文件将被(再次)归档。
archive_mode和archive_command是独立的变量,这样可以在不影响归档模式的前提下修改archive_command。这个参数只能在服务器启动时设置。当wal_level被设置为minimal时,archive_mode不能被启用。
archive_command (string)
本地shell命令被执行来归档一个完成的WAL文件段。字符串中的任何%p被替换成要被归档的文件的路径名, 而%f只被文件名替换(路径名是相对于服务器的工作目录, 即集群的数据目录)。如果要在命令里嵌入一个真正的%字符,可以使用%%。该命令只在成功时返回一个零作为退出状态。
这个参数只能在uxsinodb.conf文件中或在服务器命令行上设置。除非服务器启动时启用了archive_mode,否则它会被忽略。如果archive_mode被启用时,archive_command是一个空字符串(默认),WAL 归档会被临时禁用,但服务器仍会继续累计WAL段文件,期待着一个命令被提供。将archive_command设置为一个只返回真但不做任何事的命令(例如/bin/true或 Windows 上的REM)实际上会禁用归档,也会打破归档恢复所需的 WAL 文件链,因此只有在极少数情况下才能用。
archive_timeout (integer)
archive_command仅在已完成的WAL段上调用。因此,如果服务器只产生很少的WAL流量(或产生流量的周期很长),那么在事务完成和它被安全地记录到归档存储之间将有一个很长的延迟。为了限制未归档数据存在的时间,可以设置archive_timeout来强制服务器来周期性地切换到一个新的WAL段文件。当这个参数被设置为大于零时,只要从上次段文件切换后过了参数所设置的时间量,并且已经有过任何数据库活动(包括一个单一检查点),服务器将切换到一个新的段文件(如果没有数据库活动则会跳过检查点)。 注意,由于强制切换而提早关闭的被归档文件仍然与完整的归档文件长度相同。因此,使用非常短的archive_timeout是不明智的—它将占用巨大的归档存储。一分钟左右的archive_timeout设置通常比较合理。如果希望数据能被更快地从主服务器上复制下来,应该考虑使用流复制而不是归档。如果指定值时没有单位,则以秒为单位。这个参数只能在uxsinodb.conf文件中或在服务器命令行上设置。
5.3.ux_clog
ux_clog文件也是事务日志文件,但与ux_xlog不同的是它记录的是事务的元数据(metadata),记录哪些事务已经完成,哪些事务没有完成。这个日志文件一般非常小,但重要性相当高,不得随意删除或者对其更改信息。