广告位联系
返回顶部
分享到

ORACLE大批量插入数据的详细介绍

oracle 来源:互联网 作者:佚名 发布时间:2024-02-12 23:04:36 人浏览
摘要

最近有几张表随着时间不断的增长,表中的数据量也越来越大,想把原来的表改成分区表,需要两个步骤:一:建立分区表,二:把源表的数据迁移到分区表中

最近有几张表随着时间不断的增长,表中的数据量也越来越大,想把原来的表改成分区表,需要两个步骤:

一:建立分区表

二:把源表的数据迁移到分区表中

但是源表的数据量是1亿的数据量,按照最普遍的方式 INSERT INTO 效率太低了

 

尝试了一下几种方式:

 

一.关闭日志,数据追加模式

1.关闭表日志功能

1

ALTER  TABLE  TABLE_NAME  NOLOGGING;

comments: 必须要关掉,不然生成的日志可能会把数据给撑爆掉

 2. 插入方式以追加的方式

1

2

INSERT  /*+ APPEND  */ INTO TABLE_NEW 

SELECT  * FROM  TABLE_ORI ;

3.COMMIT 提交 

4.开启表日志功能

1

ALTER TABLE  TABLE_NAME LOGGING;

说明:这种方式只能按照串行的方式进行,如果有多个任务在同时进行,会导致进程等待,反而会影响传输的效率。

 

二:PARALLEL模式(并行进程数要谨慎 )

此模式有4种方式,

1.插入PARALLEL 

1

INSERT  /*+  PARALLEL(N)   */    INTO TABLE_NEW  SELECT  *  FROM  TABLE_ORI ;

这种是采用INSERT 并发,适用于 查询快,插入慢的场景。

2.查询PARALLEL

1

INSERT INTO TABLE_NEW  SELECT  /*+  PARALLEL(N)   */  *  FROM  TABLE_ORI ;

这种采用查询并发,适用于插入快,查询慢的应用场景。 

3.插入和查询PARALLEL

1

2

        INSERT  /*+  ENABLE_PARALLEL_DML    parallel( T  N)*/   INTO TABLE_NEW T

        SELECT  * FROM   TABLE_ORI;

注: ENABLE_PARALLEL_DML 是启动DML语句并行的作用。

这种采用DML并发,适用于执行DML语句慢的应用场景。

4.Session并发

1

2

3

        ALTER SESSION ENABLE PARALLEL DML;

         INSERT INTO TABLE_NEW  SELECT  /*+  PARALLEL(N)   */  *  FROM  TABLE_ORI ;

         ALTER SESSION DISABLE PARALLEL DML;

注: 这种模式其实跟第三种差不多,只不过这种是会话级别的。

这种也是采用DML并发,适用于执行DML语句慢的应用场景。但是这种更适用于那种应用场     景复杂的情况。


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • Oracle数据库数据迁移完整教程

    Oracle数据库数据迁移完整教程
    oracle数据库的所有表结构、数据、索引等需要需从测试库迁移到正式库。 解决步骤: oracle数据库迁移,主要通过expdp从测试库所在的源服务
  • ORACLE大批量插入数据的详细介绍

    ORACLE大批量插入数据的详细介绍
    最近有几张表随着时间不断的增长,表中的数据量也越来越大,想把原来的表改成分区表,需要两个步骤:一:建立分区表,二:把源表的数据
  • Oracle查询执行计划
    执行计划(Execution Plan)也叫查询计划(Query Plan),它是数据库执行SQL语句的具体步骤和过程。SQL查询语句的执行计划主要包括: ● 访问表
  • Oracle数据库如何获取多条结果集中的第一条或某
    这是sql 1 2 3 4 5 6 --获取多条结果集中的第一条,通常会排下序之类的,随你方便,如果你不排序直接用括号里的就行 select * from (select * fro
  • Oracle怎么清除一个用户下的所有表(谨慎操作!)

    Oracle怎么清除一个用户下的所有表(谨慎操作!)
    执行该操作要慎重,不然可能会造成很严重的后果! 使用工具: plsqldeveloper Oracle数据库 前段时间部署程序的时候导入数据有问题,需要重新
  • oracle删除数据但表空间占用率没有减小的情况
    oracle删除数据但表空间占用率没有减小 使用delete删除数据表空间使用率并没有减少; 如果只保留少数数据可以使用这个方法: 先将要保留
  • 关于oracle数据库表空间扩容的问题

    关于oracle数据库表空间扩容的问题
    1.查看表空间使用率 1 2 3 4 5 6 7 8 9 10 SELECT B.FILE_NAME 物理文件名, B.TABLESPACE_NAME 表空间名称, B.BYTES/1024/1024 大小M, (B.BYTES-SUM(NVL(A.BYTES,0)))/1024/
  • Oracle中的Dual系统表介绍

    Oracle中的Dual系统表介绍
    这几天一直在研究Oracle,常常会用到Dual这个系统表,Dual表到底是一个什么表?带着疑问baidu了一下: Dual表是Oracle提供的最小的工作表(其
  • Oracle删除大量表记录操作介绍
    删除表数据操作 清空所有表记录: 1 TRUNCATE TABLE your_table_name; 或者批量删除满足条件的表记录: 1 2 3 4 5 6 7 BEGIN LOOP DELETE FROM your_table_name W
  • ORACLE中常用的几种正则表达式介绍

    ORACLE中常用的几种正则表达式介绍
    ORACLE正则表达式我基本用到的就一下几种,前四种最长用到 REGEXP_LIKE(source_char, pattern, match_parameter) REGEXP_SUBSTR(source_char, pattern, position, occur
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计