Oracle篇—分区表和分区索引常用检查语句(第四篇,总共五篇)

☘️博主介绍☘️

✨又是一天没白过,我是奈斯,DBA一名✨

✌️擅长Oracle、MySQL、SQLserver、Linux,也在积极的扩展IT方向的其他知识面✌️

❣️❣️❣️大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注❣️❣️❣️

    新的一周,新的开始。今天将继续探讨分区表和分区索引。在前三篇中,详细介绍了分区表和分区索引的基本概念、创建方法和分区索引的重建和管理。而今天,我将聚焦于分区表和分区索引的常用检查语句。掌握它们,不仅能帮助我们更好地了解现有分区表和分区索引的具体情况,更能为后续的维护工作提供有力的支持,以便我们进行针对性的优化。

    这篇文章只介绍分区表和分区索引的常用检查语句,所以涉及到的内容不多,需要了解分区表和分区索引的基本概念、创建方法和分区索引的重建和管理的小伙伴,请参考之前的文章哦。

    因为分区技术需要介绍的太多,那么我将分成五篇来进行介绍,以便大家因为篇幅过长而感到阅读疲惫。五篇的内容分别如下:

第一篇:分区表和分区索引的介绍和分类

第二篇:分区表的管理

第三篇:分区索引的重建和管理

第四篇:分区表和分区索引常用的检查语句(当前篇)

第五篇:普通表迁移到分区表


Oracle篇—分区表和分区索引常用检查语句(第四篇,总共五篇)_第1张图片

    

查看用户下所有分区的表:

方式一:SQL> select * from dba_part_tables where owner='用户';

方式二:SQL> select * from dba_tables where owner='用户' and partitioned='YES';

   

查询表是否分区,有多少分区,按哪个字段分区:

SQL> select * from dba_part_tables where table_name='表名';             ---表是否分区

间隔分区:interval字段确定是不是间隔范围分区;PARTITION_COUNT字段对于间隔分区表,此列的值总是1048575

SQL> select * from dba_tab_partitions where table_name='表名';          ---表的分区信息

SQL> select * from dba_tab_subpartitions where table_name='表名';    ---表的子分区信息

SQL> select * from DBA_PART_KEY_COLUMNS where NAME='表名';             ---查询分区表以哪个列分区

SQL> select * from DBA_SUBPART_KEY_COLUMNS where NAME='表名';      ---查询子分区表以哪个列分区

    

查询表中某个分区、子分区的数据、分区表的大小

SQL> select * from table_name partition(分区名);

SQL> select * from table_name subpartition(子分区名);   

SQL> select sum(bytes)/1024/1024/1024 ||'G' from dba_segments where owner='用户' and segment_name='表名';   ---分区表的总大小

SQL> select segment_name,partition_name,segment_type,bytes/1024/1024/1024 ||'G' from dba_segments where owner='用户' and segment_name='表名';      ---分区表每个分区的大小

    

查看表是否有分区索引,分区索引的类型,分区:

SQL> select * from dba_part_indexes where table_name='表名';                  ---表是否有分区索引(普通索引用dba_indexes)

间隔分区:interval字段确定是不是间隔范围分区;PARTITION_COUNT字段对于间隔分区表,此列的值总是1048575

SQL> select * from dba_ind_partitions where index_name='分区索引名';        ---表的分区索引信息

SQL> select * from dba_ind_subpartitions where index_name='分区索引名';  ---表的子分区索引信息

SQL> select segment_name,partition_name, segment_type, bytes/1024/1024/1024 || 'G' from dba_segments where segment_name in (select index_name from dba_part_indexes where table_name='表名');      ---分区索引的大小

    

分区表索引及各个索引的索引列

SQL> select * from dba_ind_columns where index_name in (select index_name from dba_part_indexes where table_name ='表名');

你可能感兴趣的:(Oracle,oracle,数据库,运维)