各位高手,小弟碰到一个难题:
现在有个分区表,里边数据量特别大,大概有1000万行以上,此表上的业务量也比较大。现在想在这个表上加一列,varchar2类型,在sqldeveloper中增加完后,好几个小时都没有反应。
请问这种情况下,有什么好的方法,能尽量小得影响业务,还能完成增加一列。
多谢各位高人。。

解决方案 »

  1.   

    drop index 
    add column
      

  2.   

    可以考虑先创建一个临时表,然后把原表数据导入到临时表里,使用
    insert /*+append*/ into A as select * from B然后添加字段,最后再把数据倒回来。
      

  3.   

    楼上的给出答案了,不过要来回折腾两次
    先建个 table_new,就是你加上字段的新表,可以采用跟原来一样的分区,
    将 table_old 中的数据转到table_new中
    insert /*+append*/ into table_new nologging as select * from table_old;
    commit;
    rename table_old to table_mid;--一般的情况下都直接drop了,但为了安全,rename好点
    rename table_new to table_old;--将新表更名为原来的老表
    这个方法比较快,数据只要折腾一次