各位高手,小弟碰到一个难题:
现在有个分区表,里边数据量特别大,大概有1000万行以上,此表上的业务量也比较大。现在想在这个表上加一列,varchar2类型,在sqldeveloper中增加完后,好几个小时都没有反应。
请问这种情况下,有什么好的方法,能尽量小得影响业务,还能完成增加一列。
多谢各位高人。。
现在有个分区表,里边数据量特别大,大概有1000万行以上,此表上的业务量也比较大。现在想在这个表上加一列,varchar2类型,在sqldeveloper中增加完后,好几个小时都没有反应。
请问这种情况下,有什么好的方法,能尽量小得影响业务,还能完成增加一列。
多谢各位高人。。
add column
insert /*+append*/ into A as select * from B然后添加字段,最后再把数据倒回来。
先建个 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;--将新表更名为原来的老表
这个方法比较快,数据只要折腾一次