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);
浙公网安备 33010602011771号