我一直以为在非归档模式下,insert into操作会产生很少的redo,今天做数据库迁移后,对一个非分区表分区,执行了下面的语句:
insert into 分区表 select * from 原来非分区表
原来的非分区表有500万数据,大小是1G,上面有5个索引,这个操作产生了5G的redo,搞了50分钟没搞完。
表是logging的,难道跟这个有关?
测试:
表创建时先不要创建索引,等insert into 完成后再create index
取消表的logging:
alter table HC_DATASET nologging;
取消表空间的logggin:
alter tablespace JKK_DATASET nologging;
alter tablespace IDX_JKK nologging;
alter tablespace IDX_JKK nologging;
这时是产生的redo极少。
创建索引:
产生的redo也极少。
这样,原来50分钟完成不了的,产生5G的redo操作,设置了表和表空间的nologging后,索引在数据插入完成后再创建,15分钟就完成了,而且只产生了极少的redo。
后记:
只需要设置表空间的nologging就可以了,不必设置表的nologging
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/263455/viewspace-758324/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/263455/viewspace-758324/