systables
GBase 8s V8.7 安全数据库 SQL 参考指南
南大通用数据技术股份有限公司 -74-
s systables 系统目录表对在数据库(包括系统目录的表和视图)中定义的每
个表对象(表、视图、同义词或 GBase 8s 中的序列)包含一行。
表 1 SYSTABLES 表列描述
列 类型 解释
tabname VARCHAR(128) 表、视图、同义词或序列的名称
owner CHAR(32) 表的所有者(系统目录表的用户 e GBase 和
数据库表的 username)
partnum INTEGER 物理存储位置代码
tabid SERIAL 系统指定的顺序标识编号
rowsize SMALLINT 最大行大小,以字节计 ( < 32,768)
ncols SMALLINT 表中的列数
nindexes SMALLINT 表的索引数
nrows FLOAT 表中的行数
created DATE 创建或上次修改表时的日期
version INTEGER 改变表时更改的数字
tabtype CHAR(1) 指示表对象类型的代码:
T = 表
E = 外部表
V = 视图
Q = 序列
P = 专用同义词
S = 公共同义词
(类型 S 在符合 ANSI 标准的数据库中
不可用。)
locklevel CHAR(1) 表的锁定方式:
GBase 8s V8.7 安全数据库 SQL 参考指南
南大通用数据技术股份有限公司 -75-
列 类型 解释
B = 页面和行级别
P = 页面级别
R = 行级别
npused FLOAT 数据库服务器曾经在 tablespace 中启动
过的数据页数
fextsize INTEGER 初始扩展数据块的大小 (KB)
nextsize INTEGER 所有后续扩展数据块的大小 (KB)
flags SMALLINT 用于对永久表分类的代码:
ROWID
1 - 已定义行标识列
UNDER
2 - 在超表之下创建的表
VIEWREMOTE
4 - 视图基于远程表
CDR
8 - 已定义 CDRCOLS
RAW
16 - (GBase) RAW 表
EXTERNAL
32- 外部表
AUDIT
64 - 审计表属性 - FGA
AQT
128 - 视图是用于卸载 DWA 的 AQT
VIRTAQT
256 - 视图是虚拟 AQT
GBase 8s V8.7 安全数据库 SQL 参考指南
南大通用数据技术股份有限公司 -76-
列 类型 解释
site VARCHAR(128) 保留供将来使用
dbname VARCHAR(128) 保留供将来使用
type_xid INTEGER d sysxtdtypes.extended_id 中的代码(对于
类型表),或者 0(对于无类型表)
am_id INTEGER 访问方法代码(s sysams 表的关键字)
NULL 或 0 表示内置存储管理器
ustlowts DATETIME YEAR
TO FRACTION (5)
上次记录表、行和页计数统计信息的时间
secpolicyid INTEGER 已与表连接的安全策略的标识。 NULL 表
示不受保护的表
protgranularity CHAR(1) LBAC 粒度级别:
R:行级别粒度
C:列级别粒度
B:行和列的粒度
“空白”表示不受保护的表
statlevel CHAR(1) 统计信息级别
T = 表
F = 分段
A = 自动
statchange SMALLINT 仅供内部使用
为 systables 表中记录的每个表、视图、序列和同义词指定 tabid,它是系
统指定的、唯一标识该对象的 SERIAL 值。保留前 99 个 tabid 值用于系统目
录。数据库中第一个用户定义的表对象的 tabid 始终为 100。
对 tabid 列建立了索引,且该列只包含唯一值。tabname 和 owner 列的
组合索引也需要唯一值。
GBase 8s V8.7 安全数据库 SQL 参考指南
南大通用数据技术股份有限公司 -77-
version 列包含创建新表时存储在 systables 中的已编码数字。当对表执行
数据定义的语句(例如,ALTER INDEX、ALTER TABLE、DROP INDEX 和 CREATE
INDEX)时,此值的一部分会增大。
在 flags 列中,ST_RAW 表示支持事务日志记录的数据库中的非日志记录
永久表。
SQL_LOGICAL_CHAR 参数的设置会编码到描述 VERSION 表的行中的
systables.flags 列值。注意此由系统生成的表的标识中有一个前导空格。
要 确 定 数 据 库 是 否 启 用 可 将 逻 辑 字 符 语 义 应 用 到 字 符 列 声 明 的
SQL_LOGICAL_CHAR 配置参数,您可以执行以下查询:
SELECT flags INTO $value FROM 'GBase'.systables WHERE tabname = '
VERSION';
由于 SQL_LOGICAL_CHAR 设置以“VERSION.flags”值的两个最不重要数
位编码,因此您可以依据以下公式从返回的 flags 值计算其设置:
SQL_LOGICAL_CHAR = (value & 0x03) + 1
此处的 & 是位 AND 运算符。任何大于 1 的 SQL_LOGICAL_CHAR 设
置表示创建数据库时已启用 SQL_LOGICAL_CHAR,且字符列的显式或缺省最
大大小规范将乘以该设置。
当执行引用数据库表的预编译语句时,会检查版本值以确保自预编译语句
以来没有进行任何更改。如果修改了表模式的 DDL 操作更改了版本值并且
SET ENVIRONMENT 语句的 IFX_AUTO_REPREPARE 设置已禁用了自动重新
编译,那么不会执行预编译语句,并且必须再次预编译该语句。
npused 列既不反映用于 BYTE 或 TEXT 数据的页数,也不反映 DELETE
或 TRUNCATE 操作中释放的页数。
nrows 列和 npused 列可能无法准确反映由外部表使用的行数和数据页
数,除非在创建外部表时指定了 NUMROWS 子句。请参阅《 GBase 8s V8.5 管
理员手册》以获取更多信息。
systables 表有两行用来存储有关数据库语言环境的信息:GL_COLLATE
GBase 8s V8.7 安全数据库 SQL 参考指南
南大通用数据技术股份有限公司 -78-
(其 tabid 为 90)和 GL_CTYPE(其 tabid 为 91)。要查看这些行,请输入
以下 SELECT 语句:
SELECT * FROM systables WHERE tabid=90 OR tabid=91;
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞0
添加新评论0 条评论