表分区-sys_partis
功能描述
sys_partis系统表用于存储、管理系统库和用户库中的所有表分区信息。
字段说明
序号 | 字段名 | 类型 | 说明 |
---|---|---|---|
0 | DB_ID | OID_TYPE | 库ID |
1 | TABLE_ID | OID_TYPE | 表ID |
2 | PARTI_NO | INTEGER | 分区号 |
3 | PARTI_NAME | VARCHAR | 分区名 |
4 | PARTI_VAL | VARCHAR | 分区条件值 |
5 | GSTO_NOS | INTEGER | 全局存贮号 |
6 | ONLINE | BOOLEAN | 是否在线 |
7 | RESERVED1 | VARCHAR | 保留字段 |
8 | RESERVED2 | INTEGER | VARCHAR |
示例
- 查询一级分区表的分区情况sql
SQL> CREATE TABLE part_info(id INT,name VARCHAR(30))PARTITION BY HASH(id) PARTITIONS 3; SQL> SELECT sp.* FROM sys_partis sp JOIN sys_tables st ON sp.db_id=st.db_id AND sp.table_id=st.table_id WHERE table_name='PART_INFO'; DB_ID | TABLE_ID | PARTI_NO | PARTI_NAME | PARTI_VAL | GSTO_NOS | ONLINE | RESERVED1 | RESERVED2 | ------------------------------------------------------------------------------ 1 | 1048581 | 0 | PART1| 0| 2822 | T | <NULL>| <NULL>| 1 | 1048581 | 1 | PART2| 1| 2823 | T | <NULL>| <NULL>| 1 | 1048581 | 2 | PART3| 2| 2824 | T | <NULL>| <NULL>|
- 查询二级分区表的分区情况
sql
SQL> CREATE TABLE t1(c1 INTEGER, c2 INTEGER) PARTITION BY RANGE(c1) PARTITIONS((100),(200))
SUBPARTITION BY RANGE(C2) SUBPARTITIONS((1000),(2000),(3000));
二级分区表的全局存储号信息在系统表中常以一个不可读取的魔数(即在代码中出现但没有解释的数字常量)表示,需要由数据库内部系统函数format_gsto_nos来进行格式化展示。format_gsto_nos有以下两种重载形式。
接受1个参数,输出结果为逗号分隔的全局存储号字符串。
sqlSQL> SELECT format_gsto_nos(gsto_nos) AS gsto_nos FROM dba_partis WHERE table_id=(SELECT table_id FROM dba_tables WHERE table_name='T1'); GSTO_NOS ------------------------------------------- 201,202,203 204,205,206
接受2个参数,分别是全局存储号的魔数和子分区号,输出结果为全局存储号魔数中子分区号指定的全局存储号数值。
sqlSQL> SELECT parti_no, subparti_no, format_gsto_nos(gsto_nos, subparti_no) AS gsto_no FROM dba_partis a , dba_subpartis b WHERE a.table_id = (SELECT table_id FROM dba_tables WHERE table_name='T1'); PARTI_NO | SUBPARTI_NO | GSTO_NO ------------------------------------------ 0 | 0 | 201 0 | 1 | 202 0 | 2 | 203 1 | 0 | 204 1 | 1 | 205 1 | 2 | 206
查询表所在库
查询表所有者
相关系统表
- sys_databases
- sys_schemas
- sys_tables