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


    分区表的分区键和分区类型都可以通过获取创建该分区表的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个视图:
    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';
  • 相关阅读:
    JavaScript变量和作用域
    遥感专业词汇
    linux修改文件所属用户和用户组
    当singleton Bean依赖propotype Bean,可以使用在配置Bean添加look-method来解决
    linux中的目录和文件的统计
    linux命令在文件中根据命令查找
    走进ELK原理
    nohub和重定向文件
    HashMap与TreeMap按照key和value排序
    List自定义排序
  • 原文地址:https://www.cnblogs.com/macleanoracle/p/2967545.html
Copyright © 2020-2023  润新知