签到成功

知道了

CNDBA社区CNDBA社区

Oracle 插入大量数据

2016-11-25 15:57 1398 0 原创 Oracle 11g
作者: dave

 

1. 采用高速的存储设备,提高读写能力,如:EMC 和NetApp,http://www.cndba.cn/Dave/article/1249

 http://www.cndba.cn/Dave/article/1249

2. 假如tab1表中的没有数据的话 
DROP   TABLE   TAB1;
CREATE   TABLE   TAB1   AS   SELECT   *   FROM   TAB2;
然后在创建索引

 

3. 用Hint 提示减少操作时间http://www.cndba.cn/Dave/article/1249

    INSERT   /*+Append*/   INTO     tab1
                SELECT   *   FROM   tab2;http://www.cndba.cn/Dave/article/1249

 

4. 采用不写日志及使用Hint提示减少数据操作的时间。

建议方案是先修改表为不写日志:
sql> alter   table   table_name   NOLOGGING; http://www.cndba.cn/Dave/article/1249

插入数据:

http://www.cndba.cn/Dave/article/1249

INSERT   /*+Append*/   INTO     tab1
      SELECT   *   FROM   tab2;http://www.cndba.cn/Dave/article/1249

插入完数据后,再修改表写日志:
sql> alter   table   table_name   LOGGING;

http://www.cndba.cn/Dave/article/1249

这里的区别就在于如果插入数据的同时又写日志,尤其是大数据量的insert操作,需要耗费较长的时间。

 http://www.cndba.cn/Dave/article/1249

http://www.cndba.cn/Dave/article/1249

5. 用EXP/IMP 处理大量数据

(1)给当前的两个表分别改名
alter   table   tab1   rename   to   tab11;
alter   table   tab2   rename   to   tab1;
(2)导出改名前的tab2
exp   user/pwd@...   file=...   log=...   tables=(tab1)
(3)把名字改回来
alter   table   tab1   rename   to   tab2;
alter   table   tab11   rename   to   tab1;
(4)导入数据
imp   user/pwd@...   file=...   log=...   fromuser=user   touser=user   tables=(tab1)

版权声明:本文为博主原创文章,未经博主允许不得转载。

oracle 11g

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2239
    原创
  • 3
    翻译
  • 547
    转载
  • 186
    评论
  • 访问:6620657次
  • 积分:4249
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ