db2分区表的创建及分区索引创建可参考:
http://blog.csdn.net/yunxiu2804/article/details/38090677
在使用分区表时,会经常对分区表进行操作,包括删除分区、增加分区、清空分区数据等操作,下面对oracle和db2分区操作情况作了下比较,供大家参考:
1、删除一个分区
(1)、oralce中删除分区 part_201407
alter table dw_dep_acct_detail_history drop partition part_201407;
(2)、db2中删除分区 part_201407
在db2中删除需要两步
1)、分离分区到其他表中
alter table table_name detach partition part_201407 into temp_dw_dep_acct_detail_history;
注意:这里的表temp_dw_dep_acct_detail_history不需要创建。
2)、删除暂存分区数据的表
drop table temp_dw_dep_acct_detail_history;
2、新增一个分区:
(1)、oracle中新增分区part_201408
alter table dw_dep_acct_detail_history add partition part_201408 values less than ('20140831') tablespace sidy;
(2)、db2中新增分区part_201408
ALTER TABLE dw_dep_acct_detail_history ADD PARTITION part_201408 STARTING FROM ('20140801') INCLUSIVE ENDING AT ('20140831') EXCLUSIVE;
3、快速清空分区数据
(1)、oracle中清空分区part_201408数据
alter table dw_dep_acct_detail_history truncate partition part_201408; delete from dw_dep_acct_detail_history partition(part_201408) ;
truncate和delete都是清空分区表数据,区别是delete是dml操作,可回滚,truncate是ddl操作不可回滚。truncate的速度较快,但是会锁表,不能进行并发操作,也就是不能同时删除两个分区。
(2)、db2中清空分区part_201408数据
对于db2清空某个分区数据时比较复杂,需要三步。
1)、分离要删除的分区
alter table table_name detach partition part_201407 into temp_dw_dep_acct_detail_history;
注意:这里的表temp_dw_dep_acct_detail_history不需要创建。
2)、重建分区
ALTER TABLE dw_dep_acct_detail_histroy ADD PARTITION part_201408 STARTING FROM ('20140801') INCLUSIVE ENDING AT ('20140831') EXCLUSIVE;
3)、删除暂存分区数据的表
drop table temp_dw_dep_acct_detail_history;
由此看来,oracle的分区表处理起来还是比较简便高效的。
db2分区表的创建及分区索引创建可参考:
http://blog.csdn.net/yunxiu2804/article/details/38090677