oracle同时查询多个分区_详解Oracle数据库分区常用的维护命令及相关查询

概述

前面已经对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类型的分区进行拆分。

ALTER TABLE SALES SBLIT PARTITION P2 AT(TO_DATE('2003-02-01','YYYY-MM-DD')) INTO (PARTITION P21,PARTITION P22);

接合分区(coalesca)

结合分区是将散列分区中的数据接合到其它分区中,当散列分区中的数据比较大时,可以增加散列分区,然后进行接合,值得注意的是,接合分区只能用于散列分区中。

接合分区:

ALTER TABLE SALES COALESCA PARTITION;

重命名表分区

将P21更改为P2

ALTER TABLE SALES RENAME PARTITION P21 TO P2;

相关查询

1、跨分区查询

select sum( *) from(select count(*) cn from t_table_SS PARTITION (P200709_1)union allselect count(*) cn from t_table_SS PARTITION (P200709_2));

2、查询表上有多少分区

SELECT * FROM useR_TAB_PARTITIONS WHERE TABLE_NAME='tableName'
50078acc8caa601370b2d0d24decfcd1.png

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;
dc934e83d990282283bf4e33f5de98b4.png

4、显示分区表信息

--显示数据库所有分区表的信息select * from DBA_PART_TABLES--显示当前用户可访问的所有分区表信息select * from ALL_PART_TABLES--显示当前用户所有分区表的信息select * from USER_PART_TABLES
40268987340000b5870485bb668ca4b8.png

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
71508342c39f38483a6d211c2e87d887.png

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方面内容,感兴趣的朋友可以关注下!

d44601b86e268da072b599685c38b38a.png
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值