oracle 分区表的操作,Oracle分区表常见操作

Oracle分区表常用于业务中大表使用,如历史交易记录表等,提高表记录查询效率。本文主要描述范围分区表的创建、新增以及索引创建。

Oracle操作分区表相关信息

显示数据库所有分区表的信息:DBA_PART_TABLES

SQL> select owner,table_name,partitioning_type,partition_count,partitioning_key_count,status from dba_part_tables;

显示当前用户可访问的所有分区表信息:ALL_PART_TABLES

显示当前用户所有分区表的信息:USER_PART_TABLES

显示表分区信息 显示数据库所有分区表的详细分区信息:DBA_TAB_PARTITIONS

显示当前用户可访问的所有分区表的详细分区信息:ALL_TAB_PARTITIONS

显示当前用户所有分区表的详细分区信息:USER_TAB_PARTITIONS

显示子分区信息 显示数据库所有组合分区表的子分区信息:DBA_TAB_SUBPARTITIONS

显示当前用户可访问的所有组合分区表的子分区信息:ALL_TAB_SUBPARTITIONS

显示当前用户所有组合分区表的子分区信息:USER_TAB_SUBPARTITIONS

显示分区列 显示数据库所有分区表的分区列信息:DBA_PART_KEY_COLUMNS

显示当前用户可访问的所有分区表的分区列信息:ALL_PART_KEY_COLUMNS

显示当前用户所有分区表的分区列信息:USER_PART_KEY_COLUMNS

显示子分区列 显示数据库所有分区表的子分区列信息:DBA_SUBPART_KEY_COLUMNS

显示当前用户可访问的所有分区表的子分区列信息:ALL_SUBPART_KEY_COLUMNS

显示当前用户所有分区表的子分区列信息:USER_SUBPART_KEY_COLUMNS

1、分区表创建

CREATE TABLE range_example(

range_key_column DATE,

DATA VARCHAR2(20),

ID integer

) PARTITION BY RANGE(range_key_column)

(

PARTITION part_20171101 VALUES LESS THAN (TO_DATE('2017-11-01 00:00:00','yyyy-mm-dd hh24:mi:ss')),

PARTITION part_20171102 VALUES LESS THAN (TO_DATE('2017-11-02 00:00:00','yyyy-mm-dd hh24:mi:ss')),

PARTITION part_20171103 VALUES LESS THAN (TO_DATE('2017-11-03 00:00:00','yyyy-mm-dd hh24:mi:ss'))

);

说明:如果是已创建的分区表,可以通过PL/SQL查看分区表创建语句。判断分区表类型。

2、新增分区表

ALTER TABLE range_example ADD PARTITION part_20171101 VALUES LESS THAN (TO_DATE('2017-11-01 00:00:00','yyyy-mm-dd hh24:mi:ss'));

3、删除分区表

ALTER TABLE range_example DROP PARTITION part_20171103;

4、查看分区表记录数

1,先生成各个分区的查询语句:

select 'select count(*) from TABLENAME partition('||partition_name||');' from (select * from user_tab_partitions where table_name='TABLENAME');

2,然后:

select (select count(*) from TABLENAME partition(PART1)) p1,

(select count(*) from TABLENAME partition(PART2)) p2,

(select count(*) from TABLENAME partition(PART3)) p3,

(select count(*) from TABLENAME partition(PART4)) p4,

(select count(*) from TABLENAME partition(PART5)) p5,

(select count(*) from TABLENAME partition(PART6)) p6,

(select count(*) from TABLENAME partition(PART7)) p7,

(select count(*) from TABLENAME partition(PART8)) p8,

(select count(*) from TABLENAME partition(PART9)) p9,

(select count(*) from TABLENAME partition(PART10)) p10

from dual;

作者:Beng Dou

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值