天天看點

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