`问题:
一张有1000W行数据的table表需要复制到另一张表中,如何高效的复制?`

方法一:
insert插入语句使用append+nologging和parallel并发执行。
Tips:parallel并发数和硬件软件有关,效率需要测试

insert /*+APPEND parallel (degree 2) */ into tmp nologging select * from table;

方法二:
使用Create table … as 创建unrecoverable临时表
Tips:CTAS因为减少I/O所以比较快,unrecoverable能减少建表时间,同时减少资源占用

Create Table tmp
  tablespace USERS
  pctfree 10
  pctused 40
  initrans 1
  maxtrans 255
  storage
(
  initial 1M
  next 1M
  minextents 1
  maxextents unlimited
  pctincrease 0
) unrecoverable
parallel (degree 2) as select * from table nologging;

扩展阅读:

日志记录模式:LOGGING 、FORCE LOGGING 、NOLOGGING
Oracle大表复制