业务背景为
t_r(数据量非常大,500万左右) 是原始表,向 hrk.t同步数据。由于业务改造,t_r表数据发生巨大变化,需要重新导一份到t表(t_r可能是一个dmp 导入到库的,真实环境)
其中,hrk.t是一个涉及到许多业务的表,有许多增删改查操作,现在要把t表的truncate掉,然后重新从t_r同步一份。
如果直接
insert into t
select * from t_r
这样会很慢,现在要求快速的完成.现步骤如下:
我们的目标是:
让t暂时让一个空表代替,然后同步表t_r到一个t的临时表 t_2中,最后把t_2的名字替换成t
create table t_1 as select * from t where 1=0;
rename test to test_2;
rename test_1 to test;
truncate table test_2;
alter table test_2 nologging;
insert /*+append*/ test_2
select * from t_r;
alter table test_1 logging;
rename test_2 to test;
完成!
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27072447/viewspace-733026/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/27072447/viewspace-733026/