天天看点

oracle和db2分区表操作比较及简要分析

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