oracle如何使用分区(史上最全的Oracle分区维护操作和查询命令总结)
oracle如何使用分区(史上最全的Oracle分区维护操作和查询命令总结)1、截断分区:截断某个分区是指删除某个分区中的数据,并不会删除分区,也不会删除其它分区中的数据。当表中即使只有一个分区时,也可以截断该分区。ALTER TABLE SALES MODIFY PARTITION P3 ADD SUBPARTITION P3SUB1 VALUES('COMPLETE'); 删除分区 1、删除了P3表分区:ALTER TABLE SALES DROP PARTITION P3; 2、删除了P4SUB1子分区:ALTER TABLE SALES DROP SUBPARTITION P4SUB1; 注意:如果删除的分区是表中唯一的分区,那么此分区将不能被删除,要想删除此分区,必须删除表。
概述前面已经对Oracle数据库分区方面一些概念性东西做了一些介绍,所以今天就不多讲概念性东西了,主要分享一些表分区常用的维护命令。
添加分区
1、给SALES表添加一个P3分区
ALTER TABLE SALES ADD PARTITION P3 VALUES LESS THAN(TO_DATE('2003-06-01' 'YYYY-MM-DD'));
注意:以上添加的分区界限应该高于最后一个分区界限。
2、给SALES表的P3分区添加了一个P3SUB1子分区
ALTER TABLE SALES MODIFY PARTITION P3 ADD SUBPARTITION P3SUB1 VALUES('COMPLETE');
删除分区
1、删除了P3表分区:
ALTER TABLE SALES DROP PARTITION P3;
2、删除了P4SUB1子分区:
ALTER TABLE SALES DROP SUBPARTITION P4SUB1;
注意:如果删除的分区是表中唯一的分区,那么此分区将不能被删除,要想删除此分区,必须删除表。
截断分区
截断某个分区是指删除某个分区中的数据,并不会删除分区,也不会删除其它分区中的数据。当表中即使只有一个分区时,也可以截断该分区。
1、截断分区:
ALTER TABLE SALES TRUNCATE PARTITION P2;
2、截断子分区:
ALTER TABLE SALES TRUNCATE SUBPARTITION P2SUB2;
合并分区
合并分区是将相邻的分区合并成一个分区,结果分区将采用较高分区的界限,值得注意的是,不能将分区合并到界限较低的分区。
实现P1 P2分区的合并:
ALTER TABLE SALES MERGE PARTITIONS P1 P2 INTO PARTITION P2;
拆分分区
拆分分区将一个分区拆分两个新分区,拆分后原来分区不再存在。注意不能对HASH类型的分区进行拆分。
3、查询索引信息
select object_name object_type tablespace_name sum(value) from v$segment_statistics where statistic_name IN ('physical reads' 'physical write' 'logical reads') and object_type = 'INDEX' group by object_name object_type tablespace_name order by 4 desc;
4、显示分区表信息
--显示数据库所有分区表的信息 select * from DBA_PART_TABLES --显示当前用户可访问的所有分区表信息 select * from ALL_PART_TABLES --显示当前用户所有分区表的信息 select * from USER_PART_TABLES
5、显示表分区信息
-- 显示数据库所有分区表的详细分区信息 select * from DBA_TAB_PARTITIONS --显示当前用户可访问的所有分区表的详细分区信息: select * from ALL_TAB_PARTITIONS --显示当前用户所有分区表的详细分区信息: select * from USER_TAB_PARTITIONS
6、显示子分区信息
--显示子分区信息 显示数据库所有组合分区表的子分区信息: select * from DBA_TAB_SUBPARTITIONS --显示当前用户可访问的所有组合分区表的子分区信息: select * from ALL_TAB_SUBPARTITIONS --显示当前用户所有组合分区表的子分区信息: select * from USER_TAB_SUBPARTITIONS
7、显示分区列
-- 显示数据库所有分区表的分区列信息: select * from DBA_PART_KEY_COLUMNS --显示当前用户可访问的所有分区表的分区列信息: select * from ALL_PART_KEY_COLUMNS --显示当前用户所有分区表的分区列信息: select * from USER_PART_KEY_COLUMNS
8、显示子分区列
--显示数据库所有分区表的子分区列信息: select * from DBA_SUBPART_KEY_COLUMNS --显示当前用户可访问的所有分区表的子分区列信息: select * from ALL_SUBPART_KEY_COLUMNS --显示当前用户所有分区表的子分区列信息: select * from USER_SUBPART_KEY_COLUMNS
Oracle分区大致的命令就这些了,大家有需要也可以自己测试一下。
后面会分享更多DBA方面内容,感兴趣的朋友可以关注下!