一张非分区表,由于数据量很大,且在不断地增加,导致查询速度越来越慢,现想把此表改为分区表,而且之前的数据要保留,除了我把表expdp之后,重建为分区表后,并把数据impdp进去外,还有别的什么好方法吗? 谢谢!

解决方案 »

  1.   

    比较笨的方法:
    建一张分区表(表名与原表名不同), 然后将原表的数据插入到新表对应的分区。
    然后删除原表(或rename成其他名字),最后将新表rename为原表名.
      

  2.   

    你这种方法跟我所说的expdp数据后,drop掉表,再重建为分区表后,把数据impdp进去,大同小异吧!
      

  3.   

    新建一张分区表,把原表数据通过交换分区的方式插入到分区表中,然后rename。
      

  4.   

    假如原表位A,新建分区表为b 直接alter table a exchange b吗?
    应该不可以吧, 
      

  5.   

    原表为A,先建一个分区表B,然后
    insert /*+ append */ into b select * from a nologging;
    rename a to c;
    rename b to a;
    create index ........on a(...);