本文主要是介绍Oracle篇—分区表和分区索引常用检查语句(第四篇,总共五篇),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
☘️博主介绍☘️:
✨又是一天没白过,我是奈斯,DBA一名✨
✌✌️擅长Oracle、MySQL、SQLserver、Linux,也在积极的扩展IT方向的其他知识面✌✌️
❣️❣️❣️大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注❣️❣️❣️
新的一周,新的开始。今天将继续探讨分区表和分区索引。在前三篇中,详细介绍了分区表和分区索引的基本概念、创建方法和分区索引的重建和管理。而今天,我将聚焦于分区表和分区索引的常用检查语句。掌握它们,不仅能帮助我们更好地了解现有分区表和分区索引的具体情况,更能为后续的维护工作提供有力的支持,以便我们进行针对性的优化。
这篇文章只介绍分区表和分区索引的常用检查语句,所以涉及到的内容不多,需要了解分区表和分区索引的基本概念、创建方法和分区索引的重建和管理的小伙伴,请参考之前的文章哦。
因为分区技术需要介绍的太多,那么我将分成五篇来进行介绍,以便大家因为篇幅过长而感到阅读疲惫。五篇的内容分别如下:
第一篇:分区表和分区索引的介绍和分类
第二篇:分区表的管理
第三篇:分区索引的重建和管理
第四篇:分区表和分区索引常用的检查语句(当前篇)
第五篇:普通表迁移到分区表
查看用户下所有分区的表:
方式一: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篇—分区表和分区索引常用检查语句(第四篇,总共五篇)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!