从视图查询表分区的相关信息

简介:
分区表的分区键和分区类型都可以通过获取创建该分区表的DDL定义语句来了解,那么可不可以直接查询字典视图来获取这些信息呢?常用的dba_tab_partitions视图并没有包含我们想要的分区属性信息;这里我们可以用到dba_part_key_columns(describes the partitioning key columns for all partitioned objects in the database. Its columns are the same as those in  ALL_PART_KEY_COLUMNS)和 dba_part_tables(displays the object-level partitioning information for all partitioned tables in the database. Its columns are the same as those in  ALL_PART_TABLES )这2个视图:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
SQL>  select  from  v$version;
BANNER
--------------------------------------------------------------------------------
Oracle  Database  11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
PL/SQL Release 11.2.0.2.0 - Production
CORE    11.2.0.2.0      Production
TNS  for  Linux: Version 11.2.0.2.0 - Production
NLSRTL Version 11.2.0.2.0 - Production
 
SQL>  desc  dba_part_tables;
  Name                                       Null ?    Type
  ----------------------------------------- -------- ----------------------------
  OWNER                                              VARCHAR2(30)
  TABLE_NAME                                         VARCHAR2(30)
  PARTITIONING_TYPE                                  VARCHAR2(9)
  SUBPARTITIONING_TYPE                               VARCHAR2(9)
  PARTITION_COUNT                                    NUMBER
  DEF_SUBPARTITION_COUNT                             NUMBER
  PARTITIONING_KEY_COUNT                             NUMBER
  SUBPARTITIONING_KEY_COUNT                          NUMBER
  STATUS                                             VARCHAR2(8)
  DEF_TABLESPACE_NAME                                VARCHAR2(30)
  DEF_PCT_FREE                                       NUMBER
  DEF_PCT_USED                                       NUMBER
  DEF_INI_TRANS                                      NUMBER
  DEF_MAX_TRANS                                      NUMBER
  DEF_INITIAL_EXTENT                                 VARCHAR2(40)
  DEF_NEXT_EXTENT                                    VARCHAR2(40)
  DEF_MIN_EXTENTS                                    VARCHAR2(40)
  DEF_MAX_EXTENTS                                    VARCHAR2(40)
  DEF_MAX_SIZE                                       VARCHAR2(40)
  DEF_PCT_INCREASE                                   VARCHAR2(40)
  DEF_FREELISTS                                      NUMBER
  DEF_FREELIST_GROUPS                                NUMBER
  DEF_LOGGING                                        VARCHAR2(7)
  DEF_COMPRESSION                                    VARCHAR2(8)
  DEF_COMPRESS_FOR                                   VARCHAR2(12)
  DEF_BUFFER_POOL                                    VARCHAR2(7)
  DEF_FLASH_CACHE                                    VARCHAR2(7)
  DEF_CELL_FLASH_CACHE                               VARCHAR2(7)
  REF_PTN_CONSTRAINT_NAME                            VARCHAR2(30)
  INTERVAL                                           VARCHAR2(1000)
  IS_NESTED                                          VARCHAR2(3)
  DEF_SEGMENT_CREATION                               VARCHAR2(4)
 
SQL>  desc  dba_part_key_columns;
  Name                                       Null ?    Type
  ----------------------------------------- -------- ----------------------------
  OWNER                                              VARCHAR2(30)
  NAME                                                VARCHAR2(30)
  OBJECT_TYPE                                         CHAR (5)
  COLUMN_NAME                                        VARCHAR2(4000)
  COLUMN_POSITION                                    NUMBER
 
SQL> col table_name  for  a20
SQL> col column_name  for  a20
SQL> col partition  for  a20
 
SQL>  select  t.table_name, kc.column_name, t.partitioning_type
   2     from  dba_part_key_columns kc, dba_part_tables t
   3    where  kc.owner = t.owner
   4      and  kc. name  = t.table_name
   5      and  t.table_name= 'COSTS' ;
 
TABLE_NAME           COLUMN_NAME          PARTITION
-------------------- -------------------- ---------
COSTS                TIME_ID              RANGE
 
/* 针对存在子分区的表,需要用到dba_subpart_key_columns视图 */
 
SQL>  select  t.table_name, kc.column_name, t.partitioning_type
   2     from  dba_part_key_columns kc, dba_part_tables t
   3    where  kc.owner = t.owner
   4      and  kc. name  = t.table_name
   5      and  t.table_name= 'PRODUCTS'
   6    union  all
   7   select  u.table_name,skc.column_name,u.subpartitioning_type
   8     from  dba_subpart_key_columns skc,dba_part_tables u
   9    where  skc.owner=u.owner
  10    and  skc. name =u.table_name
  11    and  u.subpartitioning_type!= 'NONE'
  12    and  u.table_name= 'PRODUCTS' ;
 
TABLE_NAME           COLUMN_NAME          PARTITION
-------------------- -------------------- ---------
PRODUCTS             T1                   RANGE
PRODUCTS             T2                   HASH
 
Script:
 
select  t.table_name, kc.column_name, t.partitioning_type
   from  dba_part_key_columns kc, dba_part_tables t
  where  kc.owner = t.owner
    and  kc. name  = t.table_name
    and  t.table_name =  '&TABNAME'
    and  t.owner =  '&OWNAME'
union  all
select  u.table_name, skc.column_name, u.subpartitioning_type
   from  dba_subpart_key_columns skc, dba_part_tables u
  where  skc.owner = u.owner
    and  skc. name  = u.table_name
    and  u.subpartitioning_type !=  'NONE'
    and  u.table_name =  '&TABNAME'
    and  u.owner =  '&OWNAME' ;



本文转自maclean_007 51CTO博客,原文链接:http://blog.51cto.com/maclean/1277567
相关文章
|
6月前
|
存储 前端开发 Oracle
物化视图添加删除列测试
物化视图添加删除列测试
50 2
|
Oracle 关系型数据库 MySQL
根据一张表更新另一张表
根据一张表更新另一张表
|
SQL Oracle 关系型数据库
数据库——查询所有表及其数据总条数
数据库——查询所有表及其数据总条数
|
6月前
|
算法 Oracle 关系型数据库
数据库等值查询与统计信息
简介: 统计信息是为优化器的 cost 估算提供数据支撑,其中很重要的一点需求便是等值查询(EQUALS, IN 等) 场景下的基数估算。
110 0
数据库等值查询与统计信息
|
存储 SQL Java
Mysql数据库表字段设计优化(状态列)
初始状态码(java int 32 long 64),int 可以表示31种(除去0000),long可以表示63种(除去0000),当然不可能将0000赋值给初始状态,一般来讲,选择int还是long是根据具体业务需求来决定的。
590 0
Mysql数据库表字段设计优化(状态列)
|
数据库
Oralce 数据库 - 查询数据库所有的表和视图实例演示,查询指定用户下所有表和视图方法
Oralce 数据库 - 查询数据库所有的表和视图实例演示,查询指定用户下所有表和视图方法
330 0
Oralce 数据库 - 查询数据库所有的表和视图实例演示,查询指定用户下所有表和视图方法
|
SQL 关系型数据库 MySQL
MySQL查询数据表中数据记录(包括多表查询)
MySQL查询数据表中数据记录(包括多表查询)
387 0
|
SQL
SAP利用内表删除多条数据(自定义表)
之前博文提到了使用abap中的sql语句删除某一条自定义表中的记录。下面ji介绍一下,如何通过内表,一次性删除多行记录。自定义表的结构 FUNCTION ZFM_FI_ZFIT00200. *"----------------------------------------------------.
3307 0
下一篇
无影云桌面