Chinaunix首页 | 论坛 | 博客
  • 博客访问: 650769
  • 博文数量: 168
  • 博客积分: 2928
  • 博客等级: 中校
  • 技术积分: 1904
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-04 09:56
文章分类

全部博文(168)

文章存档

2010年(168)

我的朋友

分类: Oracle

2010-01-19 12:08:26

Oracle 插入大量数据 收藏
1. 采用高速的存储设备,提高读写能力,如:EMC 和NetApp,
2. 假如tab1表中的没有数据的话
DROP   TABLE   TAB1;
CREATE   TABLE   TAB1   AS   SELECT   *   FROM   TAB2;
然后在创建索引
3. 用Hint 提示减少操作时间
    INSERT   /*+Append*/   INTO     tab1
                SELECT   *   FROM   tab2;
4. 采用不写日志及使用Hint提示减少数据操作的时间。
建议方案是先修改表为不写日志:
sql> alter   table   table_name   NOLOGGING;
插入数据:
INSERT   /*+Append*/   INTO     tab1
      SELECT   *   FROM   tab2;
插入完数据后,再修改表写日志:
sql> alter   table   table_name   LOGGING;
这里的区别就在于如果插入数据的同时又写日志,尤其是大数据量的insert操作,需要耗费较长的时间。
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)

 
阅读(14603) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~