11g新增的表分区的类型--

1,引用分区:基于由外键引用的父表的分区的方法,它依赖已有的父表子表的关系,子表通过外键关联到父表,进而继承了父表的分区方式而不需要自己创建,子表还继承了父表的维护操作

1-1,主表是范围分区,子表是引用分区

1-2,主表是列表分区,子表是引用分区

1-3,主表是散列分区,子表是引用分区

2,间隔分区:可以完全自动的根据间隔阈值创建范围分区,它是范围分区的扩展。在数据仓库中有广泛的应用。例:

create table sale_detail(sale_detail_id number, product_id number, quantity number, sale_date date)

partition by range(sale_date)

interval ( numtoyminterval (1,'MONTH'))     --表示每隔一个月划分一个分区

(

  partition p_201006 values less than (to_date('20100601', 'yyyymmdd'))   --创建一个初始分区,表示小于6月1号的数据都放入这个分区

);

查询表有多少分区 select * from user_tab_partitions u where u.table_name in('表名');

查询一个表分区内的数据:select * from 表名 partition(分区名);

3,基于虚拟列的分区:把分区建立在某个虚拟列上,即建立在函数或表达式的计算结果上,来完成某种任务;例:

create table sale(sale_id number primary key, product_id number, price number, quantity number, sale_date date, total_price as (price*quantity) virtual) --红色列表式的就是虚拟列

partition by range(total_price)

(

  partition p_1000 values less than(1000),

  partition p_2000 values less than(2000),

  partition p_max values less than(maxvalue)

);

4,系统分区:不指定分区列,由ORACLE来完成分区的控制和管理,它没有了范围分区或列表分区的界限。例:

create table person(id number, name varchar2(20), address varchar2(20))

partition by system

(partition p1, partition p2, partition p3);

说明:在已分区的表中插入数据与操作普通表完全相同,Oracle会自动将数据保存到对应的分区;查询、修改和删除分区表时可以显式指定要操作的分区

5,维护分区

5-1,添加分区:在最后一个分区之后添加新分区

ALTER TABLE 表名 ADD PARTITION 分区名 VALUES LESS THAN(数据插入的条件);

5-2,删除分区:删除一个指定的分区,分区的数据也随之删除

ALTER TABLE 表名 DROP PARTITION 分区名;

5-3,截断分区:删除指定分区中的所有记录

ALTER TABLE 表名 TRUNCATE PARTITION 分区名;

5-4,合并分区:将范围分区或复合分区的两个相邻分区连接起来

ALTER TABLE 表名 MERGE PARTITIONS 分区名1,分区名2 INTO PARTITION 分区名1或分区名2;

5-5,拆分分区:将一个大分区中的记录拆分到两个分区中

ALTER TABLE 表名 SPLIT PARTITION 分区名 AT (指定的拆分点) INTO (PARTITION 新分区名1,PARTITION 新分区名2);

posted on 2018-12-06 10:19  独自的独行  阅读(112)  评论(0)    收藏  举报