Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


表-SYS_TABLES

📄字数 5.4K
👁️阅读量 加载中...

功能描述

SYS_TABLES系统表用于存储系统库和用户库中的所有表信息。

字段说明

序号字段名类型说明V11V12
0DB_IDINTEGER库ID
1USER_IDINTEGER拥有者的用户ID
2SCHEMA_IDINTEGER模式ID
3TABLE_IDINTEGER表ID
4TABLE_NAMEVARCHAR表名
5TABLE_TYPEINTEGER表类型(0:堆表;1:IOT表;2:外部文件表;3:虚拟表;4:函数表;5:远程表)
6TEMP_TYPEINTEGER临时类型(0:非临时;1:局部临时表;2:全局临时表)
7FIELD_NUMINTEGER字段数
8PARTI_TYPEINTEGER分区类型(1:range分区;2:list分区;3:hash分区;4:spatial分区)
9PARTI_NUMINTEGER分区数
10PARTI_KEYVARCHAR分区键
11AUTO_PARTI_TYPEINTEGER自动分区的类型(0:无;1:按年;2:按月;3:按天;4:按小时)
12AUTO_PARTI_SPANINTEGER时段自动分区的时段长度
13SUBPARTI_TYPEINTEGER子分区类型(1:range分区;2:list分区;3:hash分区;4:spatial分区)
14SUBPARTI_NUMINTEGER子分区数
15SUBPARTI_KEYVARCHAR子分区键
16GSTO_NOINTEGER全局存储号
17COPY_NUMINTEGER副本数
18BLOCK_SIZEINTEGER块大小(单位:K)
19CHUNK_SIZEINTEGER存贮单元大小(单位:M)
20RECORD_NUMBIGINT记录数
21PCTFREEINTEGER块的预留置空间比例
22HOTSPOT_NUMINTEGER插入操作的热点个数
23USE_CACHEBOOLEAN该表的块是否使用高速缓存
24ONLINEBOOLEAN表是否允许在线修改
25IS_SYSBOOLEAN是否系统内建
26IS_ENCRYBOOLEAN是否是加密表
27SLOW_MODIFYBOOLEAN是否缓变
28XLS_PIDINTEGER安全策略ID
29XLS_COL_NOINTEGER安全策略字段
30XLS_COL_OPTINTEGER安全字段属性(0:不隐藏; 1:隐藏)
31ON_COMMIT_DELBOOLEAN是否在事务结束时删除数据
32ENA_TRANSBOOLEAN是否事务支持
33ENA_LOGGINGBOOLEAN是否记redo日志
34REG_MODIFYBOOLEAN是否记载变更日志
35VALIDBOOLEAN是否有效
36ACL_MASKINTEGER权限掩码
37AUTO_PARTI_NOINTEGER时段自动分区的扩展基点分区号
38CREATE_TIMEDATETIME创建时间
39COMMENTSVARCHAR注释信息
40ANA_POLICYINTEGER分析策略(默认为1)
41ANA_PERIODINTEGER分析周期(默认为null,[30,1440])
42ANA_THRESHOLDINTEGER分析阈值(默认为null,[1,100])
43ANA_LEVELINTEGER采样层级(默认为null,[1,6])
44ENCRY_IDINTEGER密钥ID×
45STO_ZONEINTEGER存储域编号 ×
46CACHE_HASH_KEYVARCHARHASH缓存键×
47COMPRESS_LEVELINTEGER压缩等级(0:禁用数据压缩(默认);1:启用数据压缩)×
48RESERVED5VARCHAR保留字段

ACL_MASK

存储标志位字段值(十进制)权限
0x11读取字段权限
0x22更改字段权限
0x44添加字段权限
0x88删除字段权限
0x1016引用权限
0x2032执行权限
0x4064索引创建权限
0x80128对象结构修改权限
0x100256对象删除权限
0x200512触发器创建权限
0x4001024多余空间清除权限
0x7df2015所有表(字段)级权限
0x1a0416所有函数或过程级权限
0x18f399所有视图级权限
0x1a0416所有程序包级权限
0x183387所有序列级权限
0x1a0416所有UDT级权限

提示

可同时拥有多个权限,例如字段值为15时,即同时拥有读取、更改、添加和删除权限。
具体说明详见《权限管理

ANA_POLICY
可通过以下系统包函数进行设置:
DBMS_STAT.SET_ANALYZE_SCHEME的第二个参数
DBMS_STAT.SET_ANALYZE_OPTIMIZE的第三个参数
DBMS_STAT.SET_ANALYZE_PARAM的第二个参数

  • 通过SET_ANALYZE_SCHEME设置
sql
SQL> CREATE TABLE tab_ana_sch(c1 INT);

SQL> EXEC DBMS_STAT.SET_ANALYZE_SCHEME('SYSDBA.TAB_ANA_SCH', 'TIME', TRUE);

SQL> SELECT table_name, ana_policy FROM SYS_TABLES WHERE table_name='TAB_ANA_SCH';
+-------------+------------+
| TABLE_NAME  | ANA_POLICY |
+-------------+------------+
| TAB_ANA_SCH | 1          |
+-------------+------------+

SQL> EXEC DBMS_STAT.SET_ANALYZE_SCHEME('SYSDBA.TAB_ANA_SCH', 'IMME', TRUE);

SQL> SELECT table_name, ana_policy FROM SYS_TABLES WHERE table_name='TAB_ANA_SCH';
+-------------+------------+
| TABLE_NAME  | ANA_POLICY |
+-------------+------------+
| TAB_ANA_SCH | 3          |
+-------------+------------+

SQL> EXEC DBMS_STAT.SET_ANALYZE_SCHEME('SYSDBA.TAB_ANA_SCH', 'OPTI', TRUE);

SQL> SELECT table_name, ana_policy FROM SYS_TABLES WHERE table_name='TAB_ANA_SCH';
+-------------+------------+
| TABLE_NAME  | ANA_POLICY |
+-------------+------------+
| TAB_ANA_SCH | 7          |
+-------------+------------+
  • 通过SET_ANALYZE_OPTIMIZE设置
sql
SQL> CREATE TABLE tab_ana_opt(c1 INT);

SQL> EXEC DBMS_STAT.SET_ANALYZE_OPTIMIZE('SYSDBA.TAB_ANA_OPT', 40, 1);

SQL> SELECT table_name, ana_policy FROM SYS_TABLES WHERE table_name='TAB_ANA_OPT';
+-------------+------------+
| TABLE_NAME  | ANA_POLICY |
+-------------+------------+
| TAB_ANA_OPT | 33         |
+-------------+------------+

SQL> EXEC DBMS_STAT.SET_ANALYZE_OPTIMIZE('SYSDBA.TAB_ANA_OPT', 40, 2);

SQL> SELECT table_name, ana_policy FROM SYS_TABLES WHERE table_name='TAB_ANA_OPT';
+-------------+------------+
| TABLE_NAME  | ANA_POLICY |
+-------------+------------+
| TAB_ANA_OPT | 66         |
+-------------+------------+

SQL> EXEC DBMS_STAT.SET_ANALYZE_OPTIMIZE('SYSDBA.TAB_ANA_OPT', 40, 3);

SQL> SELECT table_name, ana_policy FROM SYS_TABLES WHERE table_name='TAB_ANA_OPT';
+-------------+------------+
| TABLE_NAME  | ANA_POLICY |
+-------------+------------+
| TAB_ANA_OPT | 132        |
+-------------+------------+
  • 通过SET_ANALYZE_PARAM设置
sql
SQL>  CREATE TABLE tab_ana_par(c1 INT);

SQL> EXEC DBMS_STAT.SET_ANALYZE_PARAM('SYSDBA.TAB_ANA_PAR',1,1,1);

SQL> SELECT table_name, ana_policy FROM SYS_TABLES WHERE table_name='TAB_ANA_PAR';
+-------------+------------+
| TABLE_NAME  | ANA_POLICY |
+-------------+------------+
| TAB_ANA_PAR | 9          |
+-------------+------------+

SQL> EXEC DBMS_STAT.SET_ANALYZE_PARAM('SYSDBA.TAB_ANA_PAR',2,1,1);

SQL> SELECT table_name, ana_policy FROM SYS_TABLES WHERE table_name='TAB_ANA_PAR';
+-------------+------------+
| TABLE_NAME  | ANA_POLICY |
+-------------+------------+
| TAB_ANA_PAR | 17         |
+-------------+------------+

ANA_PERIOD
通过DBMS_STAT.SET_ANALYZE_OPTIMIZE的第二个参数设置

sql
SQL> EXEC DBMS_STAT.SET_ANALYZE_OPTIMIZE('SYSDBA.TAB_ANA_PER', 40, 2);

SQL> SELECT table_name, ANA_PERIOD FROM SYS_TABLES WHERE table_name='TAB_ANA_PER';
+-------------+------------+
| TABLE_NAME  | ANA_PERIOD |
+-------------+------------+
| TAB_ANA_PER | 40         |
+-------------+------------+

ANA_THRESHOLD
通过EXEC DBMS_STAT.SET_ANALYZE_PARAM的第三个参数设置

sql
SQL> CREATE TABLE tab_ana_thr(c1 INT);

SQL> EXEC DBMS_STAT.SET_ANALYZE_PARAM('SYSDBA.TAB_ANA_THR',1,10,1);

SQL> SELECT table_name, ANA_THRESHOLD FROM SYS_TABLES WHERE table_name='TAB_ANA_THR';
+-------------+---------------+
| TABLE_NAME  | ANA_THRESHOLD |
+-------------+---------------+
| TAB_ANA_THR | 10            |
+-------------+---------------+

ANA_LEVEL
通过DBMS_STAT.SET_ANALYZE_PARAM的第四个参数设置

sql
SQL> CREATE TABLE tab_ana_lev(c1 INT);

SQL> EXEC DBMS_STAT.SET_ANALYZE_PARAM('SYSDBA.TAB_ANA_LEV',1,1,5);

SQL> SELECT table_name, ANA_LEVEL FROM SYS_TABLES WHERE table_name='TAB_ANA_LEV';
+-------------+-----------+
| TABLE_NAME  | ANA_LEVEL |
+-------------+-----------+
| TAB_ANA_LEV | 5         |
+-------------+-----------+

应用举例

  • 查询表类型
sql
SQL> CREATE TABLE tab_heap(id INT);

-- 局部临时表信息不会被记载
SQL> CREATE TEMP TABLE tab_local_temp(id INT);

SQL> CREATE GLOBAL TEMP TABLE tab_global_temp(id INT);

SQL> SELECT table_name, table_type, temp_type FROM SYS_TABLES;
+-----------------+------------+-----------+
|   TABLE_NAME    | TABLE_TYPE | TEMP_TYPE |
+-----------------+------------+-----------+
| TAB_HEAP        | 0          | 0         |
| TAB_GLOBAL_TEMP | 0          | 2         |
+-----------------+------------+-----------+
  • 查询表所属库
sql
SQL> SELECT table_name,db_id,db_name FROM SYS_TABLES st JOIN SYS_DATABASES sd ON st.db_id=sd.db_id WHERE table_name='TAB_HEAP';
+------------+-------+---------+
| TABLE_NAME | DB_ID | DB_NAME |
+------------+-------+---------+
| TAB_HEAP   | 1     | SYSTEM  |
+------------+-------+---------+
  • 查询表所属者
sql
SQL> SELECT table_name,user_id,user_name FROM SYS_TABLES st JOIN SYS_USERS su ON st.db_id=su.db_id AND st.user_id=su.user_id WHERE table_name='TAB_HEAP';
+------------+---------+-----------+
| TABLE_NAME | USER_ID | USER_NAME |
+------------+---------+-----------+
| TAB_HEAP   | 1       | SYSDBA    |
+------------+---------+-----------+
  • 根据库名、模式名分组统计表个数(结果依据库实际情况而定)
sql
SQL> SELECT COUNT(*),db_name,schema_name FROM SYS_TABLES st JOIN SYS_DATABASES sd ON st.db_id=sd.db_id JOIN SYS_SCHEMAS ss ON sd.db_id=ss.db_id GROUP BY db_name,schema_name;
+-------+---------+-------------+
| EXPR1 | DB_NAME | SCHEMA_NAME |
+-------+---------+-------------+
| 3     | SYSTEM  | GUEST       |
| 3     | SYSTEM  | SYSSSO      |
| 3     | SYSTEM  | SYSDBA      |
| 3     | SYSTEM  | SYSAUDITOR  |
+-------+---------+-------------+
  • 是否开启变更记载
sql
SQL> SELECT table_name,reg_modify FROM SYS_TABLES WHERE table_name='TAB_HEAP';
+------------+------------+
| TABLE_NAME | REG_MODIFY |
+------------+------------+
| TAB_HEAP   | <NULL>     |
+------------+------------+
  • slow_modify字段举例
sql
SQL> CREATE TABLE tab_slow_modify(C1 INT);

SQL> SELECT slow_modify FROM SYS_TABLES WHERE table_name='tab_slow_modify';
+-------------+
| SLOW_MODIFY |
+-------------+
| <NULL>      |
+-------------+

SQL> ALTER TABLE tab_slow_modify SET SLOW MODIFY ON NOWAIT;

SQL> SELECT slow_modify FROM SYS_TABLES WHERE table_name='tab_slow_modify';
+-------------+
| SLOW_MODIFY |
+-------------+
| T           |
+-------------+
  • PCTFREE字段举例
sql
-- 创表的时候设置表默认块空度为1%
SQL> CREATE TABLE tab_pctfree(A int,B varchar) PCTFREE 1;

SQL> SELECT PCTFREE FROM SYS_TABLES WHERE table_name='tab_pctfree';
+---------+
| PCTFREE |
+---------+
| 1       |
+---------+
  • COMPRESS_LEVEL字段举例
sql
-- 创建默认的不压缩表
SQL> CREATE TABLE tab_nocompress(c1 INT);

SQL> SELECT table_name, compress_level FROM SYS_TABLES WHERE table_name='tab_nocompress';
+----------------+----------------+
|   TABLE_NAME   | COMPRESS_LEVEL |
+----------------+----------------+
| TAB_NOCOMPRESS | 0              |
+----------------+----------------+

-- 创建压缩表
SQL> CREATE TABLE tab_compress(c1 INT) COMPRESS;

SQL> SELECT table_name, compress_level FROM SYS_TABLES WHERE table_name='tab_compress';
+--------------+----------------+
|  TABLE_NAME  | COMPRESS_LEVEL |
+--------------+----------------+
| TAB_COMPRESS | 1              |
+--------------+----------------+

提示

在数据量很大的情况下,不压缩的表所用存储数大于压缩表所用存储数,可通过select count(*) from sys_gstores查看。

相关系统表